From cf65f5c777f8907d9039abb9058312aefc750ee7 Mon Sep 17 00:00:00 2001 From: tools4origins Date: Sun, 18 Oct 2020 10:21:00 +0200 Subject: [PATCH 1/4] Add Antl4r as dependency --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4de225fe4..38b6d04a3 100644 --- a/setup.py +++ b/setup.py @@ -29,7 +29,8 @@ 'future>=0.15', 'requests>=2.6.0', 'pytz>=2019.3', - 'python-dateutil>=2.8.0' + 'python-dateutil>=2.8.0', + 'antlr4-python3-runtime==4.7.1' ], extras_require={ 'hdfs': ['hdfs>=2.0.0'], From ca637083ddbf70b4ec7728148590c53943a631fd Mon Sep 17 00:00:00 2001 From: tools4origins Date: Sun, 18 Oct 2020 10:16:24 +0200 Subject: [PATCH 2/4] Add SQL grammar definition --- pysparkling/sql/ast/grammar/SqlBase.g4 | 1829 ++++++++++++++++++++++++ 1 file changed, 1829 insertions(+) create mode 100644 pysparkling/sql/ast/grammar/SqlBase.g4 diff --git a/pysparkling/sql/ast/grammar/SqlBase.g4 b/pysparkling/sql/ast/grammar/SqlBase.g4 new file mode 100644 index 000000000..4ed997959 --- /dev/null +++ b/pysparkling/sql/ast/grammar/SqlBase.g4 @@ -0,0 +1,1829 @@ +/* + * 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. + * + * This file is an adaptation of Presto's presto-parser/src/main/antlr4/com/facebook/presto/sql/parser/SqlBase.g4 grammar. + */ + +grammar SqlBase; + +@members { +""" +When false, INTERSECT is given the greater precedence over the other set +operations (UNION, EXCEPT and MINUS) as per the SQL standard. +""" +legacy_setops_precedence_enbled = False + +""" +When false, a literal with an exponent would be converted into +double type rather than decimal type. +""" +legacy_exponent_literal_as_decimal_enabled = False + +""" +When false, CREATE TABLE syntax without a provider will use +the value of spark.sql.sources.default as its provider. +""" +legacy_create_hive_table_by_default_enabled = False + +""" +When true, the behavior of keywords follows ANSI SQL standard. +""" +SQL_standard_keyword_behavior = False + +def isValidDecimal(self): + """ + Verify whether current token is a valid decimal token (which contains dot). + Returns true if the character that follows the token is not a digit or letter or underscore. + + For example: + For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. + For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. + For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. + For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed + by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' + which is not a digit or letter or underscore. + """ + nextChar = self._input.LA(1) + if 'A' <= nextChar <= 'Z' or '0' <= nextChar <= '9' or nextChar == '_': + return False + else: + return True + +def isHint(self): + """ + This method will be called when we see '/*' and try to match it as a bracketed comment. + If the next character is '+', it should be parsed as hint later, and we cannot match + it as a bracketed comment. + + Returns true if the next character is '+'. + """ + nextChar = self._input.LA(1) + if nextChar == '+': + return True + else: + return False +} + +singleStatement + : statement ';'* EOF + ; + +singleExpression + : namedExpression EOF + ; + +singleTableIdentifier + : tableIdentifier EOF + ; + +singleMultipartIdentifier + : multipartIdentifier EOF + ; + +singleFunctionIdentifier + : functionIdentifier EOF + ; + +singleDataType + : dataType EOF + ; + +singleTableSchema + : colTypeList EOF + ; + +statement + : query #statementDefault + | ctes? dmlStatementNoWith #dmlStatement + | USE NAMESPACE? multipartIdentifier #use + | CREATE namespace (IF NOT EXISTS)? multipartIdentifier + (commentSpec | + locationSpec | + (WITH (DBPROPERTIES | PROPERTIES) tablePropertyList))* #createNamespace + | ALTER namespace multipartIdentifier + SET (DBPROPERTIES | PROPERTIES) tablePropertyList #setNamespaceProperties + | ALTER namespace multipartIdentifier + SET locationSpec #setNamespaceLocation + | DROP namespace (IF EXISTS)? multipartIdentifier + (RESTRICT | CASCADE)? #dropNamespace + | SHOW (DATABASES | NAMESPACES) ((FROM | IN) multipartIdentifier)? + (LIKE? pattern=STRING)? #showNamespaces + | {not self.legacy_create_hive_table_by_default_enabled}? + createTableHeader ('(' colTypeList ')')? tableProvider? + createTableClauses + (AS? query)? #createTable + | {self.legacy_create_hive_table_by_default_enabled}? + createTableHeader ('(' colTypeList ')')? tableProvider + createTableClauses + (AS? query)? #createTable + | createTableHeader ('(' columns=colTypeList ')')? + (commentSpec | + (PARTITIONED BY '(' partitionColumns=colTypeList ')' | + PARTITIONED BY partitionColumnNames=identifierList) | + bucketSpec | + skewSpec | + rowFormat | + createFileFormat | + locationSpec | + (TBLPROPERTIES tableProps=tablePropertyList))* + (AS? query)? #createHiveTable + | CREATE TABLE (IF NOT EXISTS)? target=tableIdentifier + LIKE source=tableIdentifier + (tableProvider | + rowFormat | + createFileFormat | + locationSpec | + (TBLPROPERTIES tableProps=tablePropertyList))* #createTableLike + | replaceTableHeader ('(' colTypeList ')')? tableProvider + createTableClauses + (AS? query)? #replaceTable + | ANALYZE TABLE multipartIdentifier partitionSpec? COMPUTE STATISTICS + (identifier | FOR COLUMNS identifierSeq | FOR ALL COLUMNS)? #analyze + | ALTER TABLE multipartIdentifier + ADD (COLUMN | COLUMNS) + columns=qualifiedColTypeWithPositionList #addTableColumns + | ALTER TABLE multipartIdentifier + ADD (COLUMN | COLUMNS) + '(' columns=qualifiedColTypeWithPositionList ')' #addTableColumns + | ALTER TABLE table=multipartIdentifier + RENAME COLUMN + from_=multipartIdentifier TO to=errorCapturingIdentifier #renameTableColumn + | ALTER TABLE multipartIdentifier + DROP (COLUMN | COLUMNS) + '(' columns=multipartIdentifierList ')' #dropTableColumns + | ALTER TABLE multipartIdentifier + DROP (COLUMN | COLUMNS) columns=multipartIdentifierList #dropTableColumns + | ALTER (TABLE | VIEW) from_=multipartIdentifier + RENAME TO to=multipartIdentifier #renameTable + | ALTER (TABLE | VIEW) multipartIdentifier + SET TBLPROPERTIES tablePropertyList #setTableProperties + | ALTER (TABLE | VIEW) multipartIdentifier + UNSET TBLPROPERTIES (IF EXISTS)? tablePropertyList #unsetTableProperties + | ALTER TABLE table=multipartIdentifier + (ALTER | CHANGE) COLUMN? column=multipartIdentifier + alterColumnAction? #alterTableAlterColumn + | ALTER TABLE table=multipartIdentifier partitionSpec? + CHANGE COLUMN? + colName=multipartIdentifier colType colPosition? #hiveChangeColumn + | ALTER TABLE table=multipartIdentifier partitionSpec? + REPLACE COLUMNS + '(' columns=qualifiedColTypeWithPositionList ')' #hiveReplaceColumns + | ALTER TABLE multipartIdentifier (partitionSpec)? + SET SERDE STRING (WITH SERDEPROPERTIES tablePropertyList)? #setTableSerDe + | ALTER TABLE multipartIdentifier (partitionSpec)? + SET SERDEPROPERTIES tablePropertyList #setTableSerDe + | ALTER (TABLE | VIEW) multipartIdentifier ADD (IF NOT EXISTS)? + partitionSpecLocation+ #addTablePartition + | ALTER TABLE multipartIdentifier + from_=partitionSpec RENAME TO to=partitionSpec #renameTablePartition + | ALTER (TABLE | VIEW) multipartIdentifier + DROP (IF EXISTS)? partitionSpec (',' partitionSpec)* PURGE? #dropTablePartitions + | ALTER TABLE multipartIdentifier + (partitionSpec)? SET locationSpec #setTableLocation + | ALTER TABLE multipartIdentifier RECOVER PARTITIONS #recoverPartitions + | DROP TABLE (IF EXISTS)? multipartIdentifier PURGE? #dropTable + | DROP VIEW (IF EXISTS)? multipartIdentifier #dropView + | CREATE (OR REPLACE)? (GLOBAL? TEMPORARY)? + VIEW (IF NOT EXISTS)? multipartIdentifier + identifierCommentList? + (commentSpec | + (PARTITIONED ON identifierList) | + (TBLPROPERTIES tablePropertyList))* + AS query #createView + | CREATE (OR REPLACE)? GLOBAL? TEMPORARY VIEW + tableIdentifier ('(' colTypeList ')')? tableProvider + (OPTIONS tablePropertyList)? #createTempViewUsing + | ALTER VIEW multipartIdentifier AS? query #alterViewQuery + | CREATE (OR REPLACE)? TEMPORARY? FUNCTION (IF NOT EXISTS)? + multipartIdentifier AS className=STRING + (USING resource (',' resource)*)? #createFunction + | DROP TEMPORARY? FUNCTION (IF EXISTS)? multipartIdentifier #dropFunction + | EXPLAIN (LOGICAL | FORMATTED | EXTENDED | CODEGEN | COST)? + statement #explain + | SHOW TABLES ((FROM | IN) multipartIdentifier)? + (LIKE? pattern=STRING)? #showTables + | SHOW TABLE EXTENDED ((FROM | IN) ns=multipartIdentifier)? + LIKE pattern=STRING partitionSpec? #showTable + | SHOW TBLPROPERTIES table=multipartIdentifier + ('(' key=tablePropertyKey ')')? #showTblProperties + | SHOW COLUMNS (FROM | IN) table=multipartIdentifier + ((FROM | IN) ns=multipartIdentifier)? #showColumns + | SHOW VIEWS ((FROM | IN) multipartIdentifier)? + (LIKE? pattern=STRING)? #showViews + | SHOW PARTITIONS multipartIdentifier partitionSpec? #showPartitions + | SHOW identifier? FUNCTIONS + (LIKE? (multipartIdentifier | pattern=STRING))? #showFunctions + | SHOW CREATE TABLE multipartIdentifier (AS SERDE)? #showCreateTable + | SHOW CURRENT NAMESPACE #showCurrentNamespace + | (DESC | DESCRIBE) FUNCTION EXTENDED? describeFuncName #describeFunction + | (DESC | DESCRIBE) namespace EXTENDED? + multipartIdentifier #describeNamespace + | (DESC | DESCRIBE) TABLE? option=(EXTENDED | FORMATTED)? + multipartIdentifier partitionSpec? describeColName? #describeRelation + | (DESC | DESCRIBE) QUERY? query #describeQuery + | COMMENT ON namespace multipartIdentifier IS + comment=(STRING | NULL) #commentNamespace + | COMMENT ON TABLE multipartIdentifier IS comment=(STRING | NULL) #commentTable + | REFRESH TABLE multipartIdentifier #refreshTable + | REFRESH (STRING | .*?) #refreshResource + | CACHE LAZY? TABLE multipartIdentifier + (OPTIONS options=tablePropertyList)? (AS? query)? #cacheTable + | UNCACHE TABLE (IF EXISTS)? multipartIdentifier #uncacheTable + | CLEAR CACHE #clearCache + | LOAD DATA LOCAL? INPATH path=STRING OVERWRITE? INTO TABLE + multipartIdentifier partitionSpec? #loadData + | TRUNCATE TABLE multipartIdentifier partitionSpec? #truncateTable + | MSCK REPAIR TABLE multipartIdentifier #repairTable + | op=(ADD | LIST) identifier (STRING | .*?) #manageResource + | SET ROLE .*? #failNativeCommand + | SET .*? #setConfiguration + | RESET #resetConfiguration + | unsupportedHiveNativeCommands .*? #failNativeCommand + ; + +unsupportedHiveNativeCommands + : kw1=CREATE kw2=ROLE + | kw1=DROP kw2=ROLE + | kw1=GRANT kw2=ROLE? + | kw1=REVOKE kw2=ROLE? + | kw1=SHOW kw2=GRANT + | kw1=SHOW kw2=ROLE kw3=GRANT? + | kw1=SHOW kw2=PRINCIPALS + | kw1=SHOW kw2=ROLES + | kw1=SHOW kw2=CURRENT kw3=ROLES + | kw1=EXPORT kw2=TABLE + | kw1=IMPORT kw2=TABLE + | kw1=SHOW kw2=COMPACTIONS + | kw1=SHOW kw2=CREATE kw3=TABLE + | kw1=SHOW kw2=TRANSACTIONS + | kw1=SHOW kw2=INDEXES + | kw1=SHOW kw2=LOCKS + | kw1=CREATE kw2=INDEX + | kw1=DROP kw2=INDEX + | kw1=ALTER kw2=INDEX + | kw1=LOCK kw2=TABLE + | kw1=LOCK kw2=DATABASE + | kw1=UNLOCK kw2=TABLE + | kw1=UNLOCK kw2=DATABASE + | kw1=CREATE kw2=TEMPORARY kw3=MACRO + | kw1=DROP kw2=TEMPORARY kw3=MACRO + | kw1=ALTER kw2=TABLE tableIdentifier kw3=NOT kw4=CLUSTERED + | kw1=ALTER kw2=TABLE tableIdentifier kw3=CLUSTERED kw4=BY + | kw1=ALTER kw2=TABLE tableIdentifier kw3=NOT kw4=SORTED + | kw1=ALTER kw2=TABLE tableIdentifier kw3=SKEWED kw4=BY + | kw1=ALTER kw2=TABLE tableIdentifier kw3=NOT kw4=SKEWED + | kw1=ALTER kw2=TABLE tableIdentifier kw3=NOT kw4=STORED kw5=AS kw6=DIRECTORIES + | kw1=ALTER kw2=TABLE tableIdentifier kw3=SET kw4=SKEWED kw5=LOCATION + | kw1=ALTER kw2=TABLE tableIdentifier kw3=EXCHANGE kw4=PARTITION + | kw1=ALTER kw2=TABLE tableIdentifier kw3=ARCHIVE kw4=PARTITION + | kw1=ALTER kw2=TABLE tableIdentifier kw3=UNARCHIVE kw4=PARTITION + | kw1=ALTER kw2=TABLE tableIdentifier kw3=TOUCH + | kw1=ALTER kw2=TABLE tableIdentifier partitionSpec? kw3=COMPACT + | kw1=ALTER kw2=TABLE tableIdentifier partitionSpec? kw3=CONCATENATE + | kw1=ALTER kw2=TABLE tableIdentifier partitionSpec? kw3=SET kw4=FILEFORMAT + | kw1=ALTER kw2=TABLE tableIdentifier partitionSpec? kw3=REPLACE kw4=COLUMNS + | kw1=START kw2=TRANSACTION + | kw1=COMMIT + | kw1=ROLLBACK + | kw1=DFS + ; + +createTableHeader + : CREATE TEMPORARY? EXTERNAL? TABLE (IF NOT EXISTS)? multipartIdentifier + ; + +replaceTableHeader + : (CREATE OR)? REPLACE TABLE multipartIdentifier + ; + +bucketSpec + : CLUSTERED BY identifierList + (SORTED BY orderedIdentifierList)? + INTO INTEGER_VALUE BUCKETS + ; + +skewSpec + : SKEWED BY identifierList + ON (constantList | nestedConstantList) + (STORED AS DIRECTORIES)? + ; + +locationSpec + : LOCATION STRING + ; + +commentSpec + : COMMENT STRING + ; + +query + : ctes? queryTerm queryOrganization + ; + +insertInto + : INSERT OVERWRITE TABLE? multipartIdentifier (partitionSpec (IF NOT EXISTS)?)? #insertOverwriteTable + | INSERT INTO TABLE? multipartIdentifier partitionSpec? (IF NOT EXISTS)? #insertIntoTable + | INSERT OVERWRITE LOCAL? DIRECTORY path=STRING rowFormat? createFileFormat? #insertOverwriteHiveDir + | INSERT OVERWRITE LOCAL? DIRECTORY (path=STRING)? tableProvider (OPTIONS options=tablePropertyList)? #insertOverwriteDir + ; + +partitionSpecLocation + : partitionSpec locationSpec? + ; + +partitionSpec + : PARTITION '(' partitionVal (',' partitionVal)* ')' + ; + +partitionVal + : identifier (EQ constant)? + ; + +namespace + : NAMESPACE + | DATABASE + | SCHEMA + ; + +describeFuncName + : qualifiedName + | STRING + | comparisonOperator + | arithmeticOperator + | predicateOperator + ; + +describeColName + : nameParts+=identifier ('.' nameParts+=identifier)* + ; + +ctes + : WITH namedQuery (',' namedQuery)* + ; + +namedQuery + : name=errorCapturingIdentifier (columnAliases=identifierList)? AS? '(' query ')' + ; + +tableProvider + : USING multipartIdentifier + ; + +createTableClauses + :((OPTIONS options=tablePropertyList) | + (PARTITIONED BY partitioning=transformList) | + bucketSpec | + locationSpec | + commentSpec | + (TBLPROPERTIES tableProps=tablePropertyList))* + ; + +tablePropertyList + : '(' tableProperty (',' tableProperty)* ')' + ; + +tableProperty + : key=tablePropertyKey (EQ? value=tablePropertyValue)? + ; + +tablePropertyKey + : identifier ('.' identifier)* + | STRING + ; + +tablePropertyValue + : INTEGER_VALUE + | DECIMAL_VALUE + | booleanValue + | STRING + ; + +constantList + : '(' constant (',' constant)* ')' + ; + +nestedConstantList + : '(' constantList (',' constantList)* ')' + ; + +createFileFormat + : STORED AS fileFormat + | STORED BY storageHandler + ; + +fileFormat + : INPUTFORMAT inFmt=STRING OUTPUTFORMAT outFmt=STRING #tableFileFormat + | identifier #genericFileFormat + ; + +storageHandler + : STRING (WITH SERDEPROPERTIES tablePropertyList)? + ; + +resource + : identifier STRING + ; + +dmlStatementNoWith + : insertInto queryTerm queryOrganization #singleInsertQuery + | fromClause multiInsertQueryBody+ #multiInsertQuery + | DELETE FROM multipartIdentifier tableAlias whereClause? #deleteFromTable + | UPDATE multipartIdentifier tableAlias setClause whereClause? #updateTable + | MERGE INTO target=multipartIdentifier targetAlias=tableAlias + USING (source=multipartIdentifier | + '(' sourceQuery=query')') sourceAlias=tableAlias + ON mergeCondition=booleanExpression + matchedClause* + notMatchedClause* #mergeIntoTable + ; + +queryOrganization + : (ORDER BY order+=sortItem (',' order+=sortItem)*)? + (CLUSTER BY clusterBy+=expression (',' clusterBy+=expression)*)? + (DISTRIBUTE BY distributeBy+=expression (',' distributeBy+=expression)*)? + (SORT BY sort+=sortItem (',' sort+=sortItem)*)? + windowClause? + (LIMIT (ALL | limit=expression))? + ; + +multiInsertQueryBody + : insertInto fromStatementBody + ; + +queryTerm + : queryPrimary #queryTermDefault + | left=queryTerm {self.legacy_setops_precedence_enbled}? + operator=(INTERSECT | UNION | EXCEPT | SETMINUS) setQuantifier? right=queryTerm #setOperation + | left=queryTerm {not self.legacy_setops_precedence_enbled}? + operator=INTERSECT setQuantifier? right=queryTerm #setOperation + | left=queryTerm {not self.legacy_setops_precedence_enbled}? + operator=(UNION | EXCEPT | SETMINUS) setQuantifier? right=queryTerm #setOperation + ; + +queryPrimary + : querySpecification #queryPrimaryDefault + | fromStatement #fromStmt + | TABLE multipartIdentifier #table + | inlineTable #inlineTableDefault1 + | '(' query ')' #subquery + ; + +sortItem + : expression ordering=(ASC | DESC)? (NULLS nullOrder=(LAST | FIRST))? + ; + +fromStatement + : fromClause fromStatementBody+ + ; + +fromStatementBody + : transformClause + whereClause? + queryOrganization + | selectClause + lateralView* + whereClause? + aggregationClause? + havingClause? + windowClause? + queryOrganization + ; + +querySpecification + : transformClause + fromClause? + whereClause? #transformQuerySpecification + | selectClause + fromClause? + lateralView* + whereClause? + aggregationClause? + havingClause? + windowClause? #regularQuerySpecification + ; + +transformClause + : (SELECT kind=TRANSFORM '(' namedExpressionSeq ')' + | kind=MAP namedExpressionSeq + | kind=REDUCE namedExpressionSeq) + inRowFormat=rowFormat? + (RECORDWRITER recordWriter=STRING)? + USING script=STRING + (AS (identifierSeq | colTypeList | ('(' (identifierSeq | colTypeList) ')')))? + outRowFormat=rowFormat? + (RECORDREADER recordReader=STRING)? + ; + +selectClause + : SELECT (hints+=hint)* setQuantifier? namedExpressionSeq + ; + +setClause + : SET assignmentList + ; + +matchedClause + : WHEN MATCHED (AND matchedCond=booleanExpression)? THEN matchedAction + ; +notMatchedClause + : WHEN NOT MATCHED (AND notMatchedCond=booleanExpression)? THEN notMatchedAction + ; + +matchedAction + : DELETE + | UPDATE SET ASTERISK + | UPDATE SET assignmentList + ; + +notMatchedAction + : INSERT ASTERISK + | INSERT '(' columns=multipartIdentifierList ')' + VALUES '(' expression (',' expression)* ')' + ; + +assignmentList + : assignment (',' assignment)* + ; + +assignment + : key=multipartIdentifier EQ value=expression + ; + +whereClause + : WHERE booleanExpression + ; + +havingClause + : HAVING booleanExpression + ; + +hint + : '/*+' hintStatements+=hintStatement (','? hintStatements+=hintStatement)* '*/' + ; + +hintStatement + : hintName=identifier + | hintName=identifier '(' parameters+=primaryExpression (',' parameters+=primaryExpression)* ')' + ; + +fromClause + : FROM relation (',' relation)* lateralView* pivotClause? + ; + +aggregationClause + : GROUP BY groupingExpressions+=expression (',' groupingExpressions+=expression)* ( + WITH kind=ROLLUP + | WITH kind=CUBE + | kind=GROUPING SETS '(' groupingSet (',' groupingSet)* ')')? + | GROUP BY kind=GROUPING SETS '(' groupingSet (',' groupingSet)* ')' + ; + +groupingSet + : '(' (expression (',' expression)*)? ')' + | expression + ; + +pivotClause + : PIVOT '(' aggregates=namedExpressionSeq FOR pivotColumn IN '(' pivotValues+=pivotValue (',' pivotValues+=pivotValue)* ')' ')' + ; + +pivotColumn + : identifiers+=identifier + | '(' identifiers+=identifier (',' identifiers+=identifier)* ')' + ; + +pivotValue + : expression (AS? identifier)? + ; + +lateralView + : LATERAL VIEW (OUTER)? qualifiedName '(' (expression (',' expression)*)? ')' tblName=identifier (AS? colName+=identifier (',' colName+=identifier)*)? + ; + +setQuantifier + : DISTINCT + | ALL + ; + +relation + : relationPrimary joinRelation* + ; + +joinRelation + : (joinType) JOIN right=relationPrimary joinCriteria? + | NATURAL joinType JOIN right=relationPrimary + ; + +joinType + : INNER? + | CROSS + | LEFT OUTER? + | LEFT? SEMI + | RIGHT OUTER? + | FULL OUTER? + | LEFT? ANTI + ; + +joinCriteria + : ON booleanExpression + | USING identifierList + ; + +sample + : TABLESAMPLE '(' sampleMethod? ')' + ; + +sampleMethod + : negativeSign=MINUS? percentage=(INTEGER_VALUE | DECIMAL_VALUE) PERCENTLIT #sampleByPercentile + | expression ROWS #sampleByRows + | sampleType=BUCKET numerator=INTEGER_VALUE OUT OF denominator=INTEGER_VALUE + (ON (identifier | qualifiedName '(' ')'))? #sampleByBucket + | bytes=expression #sampleByBytes + ; + +identifierList + : '(' identifierSeq ')' + ; + +identifierSeq + : ident+=errorCapturingIdentifier (',' ident+=errorCapturingIdentifier)* + ; + +orderedIdentifierList + : '(' orderedIdentifier (',' orderedIdentifier)* ')' + ; + +orderedIdentifier + : ident=errorCapturingIdentifier ordering=(ASC | DESC)? + ; + +identifierCommentList + : '(' identifierComment (',' identifierComment)* ')' + ; + +identifierComment + : identifier commentSpec? + ; + +relationPrimary + : multipartIdentifier sample? tableAlias #tableName + | '(' query ')' sample? tableAlias #aliasedQuery + | '(' relation ')' sample? tableAlias #aliasedRelation + | inlineTable #inlineTableDefault2 + | functionTable #tableValuedFunction + ; + +inlineTable + : VALUES expression (',' expression)* tableAlias + ; + +functionTable + : funcName=errorCapturingIdentifier '(' (expression (',' expression)*)? ')' tableAlias + ; + +tableAlias + : (AS? strictIdentifier identifierList?)? + ; + +rowFormat + : ROW FORMAT SERDE name=STRING (WITH SERDEPROPERTIES props=tablePropertyList)? #rowFormatSerde + | ROW FORMAT DELIMITED + (FIELDS TERMINATED BY fieldsTerminatedBy=STRING (ESCAPED BY escapedBy=STRING)?)? + (COLLECTION ITEMS TERMINATED BY collectionItemsTerminatedBy=STRING)? + (MAP KEYS TERMINATED BY keysTerminatedBy=STRING)? + (LINES TERMINATED BY linesSeparatedBy=STRING)? + (NULL DEFINED AS nullDefinedAs=STRING)? #rowFormatDelimited + ; + +multipartIdentifierList + : multipartIdentifier (',' multipartIdentifier)* + ; + +multipartIdentifier + : parts+=errorCapturingIdentifier ('.' parts+=errorCapturingIdentifier)* + ; + +tableIdentifier + : (db=errorCapturingIdentifier '.')? table=errorCapturingIdentifier + ; + +functionIdentifier + : (db=errorCapturingIdentifier '.')? function=errorCapturingIdentifier + ; + +namedExpression + : expression (AS? (name=errorCapturingIdentifier | identifierList))? + ; + +namedExpressionSeq + : namedExpression (',' namedExpression)* + ; + +transformList + : '(' transforms+=transform (',' transforms+=transform)* ')' + ; + +transform + : qualifiedName #identityTransform + | transformName=identifier + '(' argument+=transformArgument (',' argument+=transformArgument)* ')' #applyTransform + ; + +transformArgument + : qualifiedName + | constant + ; + +expression + : booleanExpression + ; + +booleanExpression + : NOT booleanExpression #logicalNot + | EXISTS '(' query ')' #exists + | valueExpression predicate? #predicated + | left=booleanExpression operator=AND right=booleanExpression #logicalBinary + | left=booleanExpression operator=OR right=booleanExpression #logicalBinary + ; + +predicate + : NOT? kind=BETWEEN lower=valueExpression AND upper=valueExpression + | NOT? kind=IN '(' expression (',' expression)* ')' + | NOT? kind=IN '(' query ')' + | NOT? kind=RLIKE pattern=valueExpression + | NOT? kind=LIKE quantifier=(ANY | SOME | ALL) ('('')' | '(' expression (',' expression)* ')') + | NOT? kind=LIKE pattern=valueExpression (ESCAPE escapeChar=STRING)? + | IS NOT? kind=NULL + | IS NOT? kind=(TRUE | FALSE | UNKNOWN) + | IS NOT? kind=DISTINCT FROM right=valueExpression + ; + +valueExpression + : primaryExpression #valueExpressionDefault + | operator=(MINUS | PLUS | TILDE) valueExpression #arithmeticUnary + | left=valueExpression operator=(ASTERISK | SLASH | PERCENT | DIV) right=valueExpression #arithmeticBinary + | left=valueExpression operator=(PLUS | MINUS | CONCAT_PIPE) right=valueExpression #arithmeticBinary + | left=valueExpression operator=AMPERSAND right=valueExpression #arithmeticBinary + | left=valueExpression operator=HAT right=valueExpression #arithmeticBinary + | left=valueExpression operator=PIPE right=valueExpression #arithmeticBinary + | left=valueExpression comparisonOperator right=valueExpression #comparison + ; + +primaryExpression + : name=(CURRENT_DATE | CURRENT_TIMESTAMP) #currentDatetime + | CASE whenClause+ (ELSE elseExpression=expression)? END #searchedCase + | CASE value=expression whenClause+ (ELSE elseExpression=expression)? END #simpleCase + | CAST '(' expression AS dataType ')' #cast + | STRUCT '(' (argument+=namedExpression (',' argument+=namedExpression)*)? ')' #struct + | FIRST '(' expression (IGNORE NULLS)? ')' #first + | LAST '(' expression (IGNORE NULLS)? ')' #last + | POSITION '(' substr=valueExpression IN str=valueExpression ')' #position + | constant #constantDefault + | ASTERISK #star + | qualifiedName '.' ASTERISK #star + | '(' namedExpression (',' namedExpression)+ ')' #rowConstructor + | '(' query ')' #subqueryExpression + | functionName '(' (setQuantifier? argument+=expression (',' argument+=expression)*)? ')' + (FILTER '(' WHERE where=booleanExpression ')')? (OVER windowSpec)? #functionCall + | identifier '->' expression #lambda + | '(' identifier (',' identifier)+ ')' '->' expression #lambda + | value=primaryExpression '[' index=valueExpression ']' #subscript + | identifier #columnReference + | base=primaryExpression '.' fieldName=identifier #dereference + | '(' expression ')' #parenthesizedExpression + | EXTRACT '(' field=identifier FROM source=valueExpression ')' #extract + | (SUBSTR | SUBSTRING) '(' str=valueExpression (FROM | ',') pos=valueExpression + ((FOR | ',') len=valueExpression)? ')' #substring + | TRIM '(' trimOption=(BOTH | LEADING | TRAILING)? (trimStr=valueExpression)? + FROM srcStr=valueExpression ')' #trim + | OVERLAY '(' input=valueExpression PLACING replace=valueExpression + FROM position=valueExpression (FOR length=valueExpression)? ')' #overlay + ; + +constant + : NULL #nullLiteral + | interval #intervalLiteral + | identifier STRING #typeConstructor + | number #numericLiteral + | booleanValue #booleanLiteral + | STRING+ #stringLiteral + ; + +comparisonOperator + : EQ | NEQ | NEQJ | LT | LTE | GT | GTE | NSEQ + ; + +arithmeticOperator + : PLUS | MINUS | ASTERISK | SLASH | PERCENT | DIV | TILDE | AMPERSAND | PIPE | CONCAT_PIPE | HAT + ; + +predicateOperator + : OR | AND | IN | NOT + ; + +booleanValue + : TRUE | FALSE + ; + +interval + : INTERVAL (errorCapturingMultiUnitsInterval | errorCapturingUnitToUnitInterval)? + ; + +errorCapturingMultiUnitsInterval + : multiUnitsInterval unitToUnitInterval? + ; + +multiUnitsInterval + : (intervalValue intervalUnit)+ + ; + +errorCapturingUnitToUnitInterval + : body=unitToUnitInterval (error1=multiUnitsInterval | error2=unitToUnitInterval)? + ; + +unitToUnitInterval + : value=intervalValue from_=intervalUnit TO to=intervalUnit + ; + +intervalValue + : (PLUS | MINUS)? (INTEGER_VALUE | DECIMAL_VALUE) + | STRING + ; + +intervalUnit + : DAY + | HOUR + | MINUTE + | MONTH + | SECOND + | YEAR + | identifier + ; + +colPosition + : position=FIRST | position=AFTER afterCol=errorCapturingIdentifier + ; + +dataType + : complex=ARRAY '<' dataType '>' #complexDataType + | complex=MAP '<' dataType ',' dataType '>' #complexDataType + | complex=STRUCT ('<' complexColTypeList? '>' | NEQ) #complexDataType + | identifier ('(' INTEGER_VALUE (',' INTEGER_VALUE)* ')')? #primitiveDataType + ; + +qualifiedColTypeWithPositionList + : qualifiedColTypeWithPosition (',' qualifiedColTypeWithPosition)* + ; + +qualifiedColTypeWithPosition + : name=multipartIdentifier dataType (NOT NULL)? commentSpec? colPosition? + ; + +colTypeList + : colType (',' colType)* + ; + +colType + : colName=errorCapturingIdentifier dataType (NOT NULL)? commentSpec? + ; + +complexColTypeList + : complexColType (',' complexColType)* + ; + +complexColType + : identifier ':' dataType (NOT NULL)? commentSpec? + ; + +whenClause + : WHEN condition=expression THEN result=expression + ; + +windowClause + : WINDOW namedWindow (',' namedWindow)* + ; + +namedWindow + : name=errorCapturingIdentifier AS windowSpec + ; + +windowSpec + : name=errorCapturingIdentifier #windowRef + | '('name=errorCapturingIdentifier')' #windowRef + | '(' + ( CLUSTER BY partition+=expression (',' partition+=expression)* + | ((PARTITION | DISTRIBUTE) BY partition+=expression (',' partition+=expression)*)? + ((ORDER | SORT) BY sortItem (',' sortItem)*)?) + windowFrame? + ')' #windowDef + ; + +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 | FOLLOWING) + | boundType=CURRENT ROW + | expression boundType=(PRECEDING | FOLLOWING) + ; + +qualifiedNameList + : qualifiedName (',' qualifiedName)* + ; + +functionName + : qualifiedName + | FILTER + | LEFT + | RIGHT + ; + +qualifiedName + : identifier ('.' identifier)* + ; + +// this rule is used for explicitly capturing wrong identifiers such as test-table, which should actually be `test-table` +// replace identifier with errorCapturingIdentifier where the immediate follow symbol is not an expression, otherwise +// valid expressions such as "a-b" can be recognized as an identifier +errorCapturingIdentifier + : identifier errorCapturingIdentifierExtra + ; + +// extra left-factoring grammar +errorCapturingIdentifierExtra + : (MINUS identifier)+ #errorIdent + | #realIdent + ; + +identifier + : strictIdentifier + | {not self.SQL_standard_keyword_behavior}? strictNonReserved + ; + +strictIdentifier + : IDENTIFIER #unquotedIdentifier + | quotedIdentifier #quotedIdentifierAlternative + | {self.SQL_standard_keyword_behavior}? ansiNonReserved #unquotedIdentifier + | {not self.SQL_standard_keyword_behavior}? nonReserved #unquotedIdentifier + ; + +quotedIdentifier + : BACKQUOTED_IDENTIFIER + ; + +number + : {not self.legacy_exponent_literal_as_decimal_enabled}? MINUS? EXPONENT_VALUE #exponentLiteral + | {not self.legacy_exponent_literal_as_decimal_enabled}? MINUS? DECIMAL_VALUE #decimalLiteral + | {self.legacy_exponent_literal_as_decimal_enabled}? MINUS? (EXPONENT_VALUE | DECIMAL_VALUE) #legacyDecimalLiteral + | MINUS? INTEGER_VALUE #integerLiteral + | MINUS? BIGINT_LITERAL #bigIntLiteral + | MINUS? SMALLINT_LITERAL #smallIntLiteral + | MINUS? TINYINT_LITERAL #tinyIntLiteral + | MINUS? DOUBLE_LITERAL #doubleLiteral + | MINUS? BIGDECIMAL_LITERAL #bigDecimalLiteral + ; + +alterColumnAction + : TYPE dataType + | commentSpec + | colPosition + | setOrDrop=(SET | DROP) NOT NULL + ; + +// When `SQL_standard_keyword_behavior=true`, there are 2 kinds of keywords in Spark SQL. +// - Reserved keywords: +// Keywords that are reserved and can't be used as identifiers for table, view, column, +// function, alias, etc. +// - Non-reserved keywords: +// Keywords that have a special meaning only in particular contexts and can be used as +// identifiers in other contexts. For example, `EXPLAIN SELECT ...` is a command, but EXPLAIN +// can be used as identifiers in other places. +// You can find the full keywords list by searching "Start of the keywords list" in this file. +// The non-reserved keywords are listed below. Keywords not in this list are reserved keywords. +ansiNonReserved + : ADD + | AFTER + | ALTER + | ANALYZE + | ARCHIVE + | ARRAY + | ASC + | AT + | BETWEEN + | BUCKET + | BUCKETS + | BY + | CACHE + | CASCADE + | CHANGE + | CLEAR + | CLUSTER + | CLUSTERED + | CODEGEN + | COLLECTION + | COLUMNS + | COMMENT + | COMMIT + | COMPACT + | COMPACTIONS + | COMPUTE + | CONCATENATE + | COST + | CUBE + | CURRENT + | DATA + | DATABASE + | DATABASES + | DBPROPERTIES + | DEFINED + | DELETE + | DELIMITED + | DESC + | DESCRIBE + | DFS + | DIRECTORIES + | DIRECTORY + | DISTRIBUTE + | DIV + | DROP + | ESCAPED + | EXCHANGE + | EXISTS + | EXPLAIN + | EXPORT + | EXTENDED + | EXTERNAL + | EXTRACT + | FIELDS + | FILEFORMAT + | FIRST + | FOLLOWING + | FORMAT + | FORMATTED + | FUNCTION + | FUNCTIONS + | GLOBAL + | GROUPING + | IF + | IGNORE + | IMPORT + | INDEX + | INDEXES + | INPATH + | INPUTFORMAT + | INSERT + | INTERVAL + | ITEMS + | KEYS + | LAST + | LATERAL + | LAZY + | LIKE + | LIMIT + | LINES + | LIST + | LOAD + | LOCAL + | LOCATION + | LOCK + | LOCKS + | LOGICAL + | MACRO + | MAP + | MATCHED + | MERGE + | MSCK + | NAMESPACE + | NAMESPACES + | NO + | NULLS + | OF + | OPTION + | OPTIONS + | OUT + | OUTPUTFORMAT + | OVER + | OVERLAY + | OVERWRITE + | PARTITION + | PARTITIONED + | PARTITIONS + | PERCENTLIT + | PIVOT + | PLACING + | POSITION + | PRECEDING + | PRINCIPALS + | PROPERTIES + | PURGE + | QUERY + | RANGE + | RECORDREADER + | RECORDWRITER + | RECOVER + | REDUCE + | REFRESH + | RENAME + | REPAIR + | REPLACE + | RESET + | RESTRICT + | REVOKE + | RLIKE + | ROLE + | ROLES + | ROLLBACK + | ROLLUP + | ROW + | ROWS + | SCHEMA + | SEPARATED + | SERDE + | SERDEPROPERTIES + | SET + | SETS + | SHOW + | SKEWED + | SORT + | SORTED + | START + | STATISTICS + | STORED + | STRATIFY + | STRUCT + | SUBSTR + | SUBSTRING + | TABLES + | TABLESAMPLE + | TBLPROPERTIES + | TEMPORARY + | TERMINATED + | TOUCH + | TRANSACTION + | TRANSACTIONS + | TRANSFORM + | TRIM + | TRUE + | TRUNCATE + | UNARCHIVE + | UNBOUNDED + | UNCACHE + | UNLOCK + | UNSET + | UPDATE + | USE + | VALUES + | VIEW + | VIEWS + | WINDOW + ; + +// When `SQL_standard_keyword_behavior=false`, there are 2 kinds of keywords in Spark SQL. +// - Non-reserved keywords: +// Same definition as the one when `SQL_standard_keyword_behavior=true`. +// - Strict-non-reserved keywords: +// A strict version of non-reserved keywords, which can not be used as table alias. +// You can find the full keywords list by searching "Start of the keywords list" in this file. +// The strict-non-reserved keywords are listed in `strictNonReserved`. +// The non-reserved keywords are listed in `nonReserved`. +// These 2 together contain all the keywords. +strictNonReserved + : ANTI + | CROSS + | EXCEPT + | FULL + | INNER + | INTERSECT + | JOIN + | LEFT + | NATURAL + | ON + | RIGHT + | SEMI + | SETMINUS + | UNION + | USING + ; + +nonReserved + : ADD + | AFTER + | ALL + | ALTER + | ANALYZE + | AND + | ANY + | ARCHIVE + | ARRAY + | AS + | ASC + | AT + | AUTHORIZATION + | BETWEEN + | BOTH + | BUCKET + | BUCKETS + | BY + | CACHE + | CASCADE + | CASE + | CAST + | CHANGE + | CHECK + | CLEAR + | CLUSTER + | CLUSTERED + | CODEGEN + | COLLATE + | COLLECTION + | COLUMN + | COLUMNS + | COMMENT + | COMMIT + | COMPACT + | COMPACTIONS + | COMPUTE + | CONCATENATE + | CONSTRAINT + | COST + | CREATE + | CUBE + | CURRENT + | CURRENT_DATE + | CURRENT_TIME + | CURRENT_TIMESTAMP + | CURRENT_USER + | DATA + | DATABASE + | DATABASES + | DAY + | DBPROPERTIES + | DEFINED + | DELETE + | DELIMITED + | DESC + | DESCRIBE + | DFS + | DIRECTORIES + | DIRECTORY + | DISTINCT + | DISTRIBUTE + | DIV + | DROP + | ELSE + | END + | ESCAPE + | ESCAPED + | EXCHANGE + | EXISTS + | EXPLAIN + | EXPORT + | EXTENDED + | EXTERNAL + | EXTRACT + | FALSE + | FETCH + | FILTER + | FIELDS + | FILEFORMAT + | FIRST + | FOLLOWING + | FOR + | FOREIGN + | FORMAT + | FORMATTED + | FROM + | FUNCTION + | FUNCTIONS + | GLOBAL + | GRANT + | GROUP + | GROUPING + | HAVING + | HOUR + | IF + | IGNORE + | IMPORT + | IN + | INDEX + | INDEXES + | INPATH + | INPUTFORMAT + | INSERT + | INTERVAL + | INTO + | IS + | ITEMS + | KEYS + | LAST + | LATERAL + | LAZY + | LEADING + | LIKE + | LIMIT + | LINES + | LIST + | LOAD + | LOCAL + | LOCATION + | LOCK + | LOCKS + | LOGICAL + | MACRO + | MAP + | MATCHED + | MERGE + | MINUTE + | MONTH + | MSCK + | NAMESPACE + | NAMESPACES + | NO + | NOT + | NULL + | NULLS + | OF + | ONLY + | OPTION + | OPTIONS + | OR + | ORDER + | OUT + | OUTER + | OUTPUTFORMAT + | OVER + | OVERLAPS + | OVERLAY + | OVERWRITE + | PARTITION + | PARTITIONED + | PARTITIONS + | PERCENTLIT + | PIVOT + | PLACING + | POSITION + | PRECEDING + | PRIMARY + | PRINCIPALS + | PROPERTIES + | PURGE + | QUERY + | RANGE + | RECORDREADER + | RECORDWRITER + | RECOVER + | REDUCE + | REFERENCES + | REFRESH + | RENAME + | REPAIR + | REPLACE + | RESET + | RESTRICT + | REVOKE + | RLIKE + | ROLE + | ROLES + | ROLLBACK + | ROLLUP + | ROW + | ROWS + | SCHEMA + | SECOND + | SELECT + | SEPARATED + | SERDE + | SERDEPROPERTIES + | SESSION_USER + | SET + | SETS + | SHOW + | SKEWED + | SOME + | SORT + | SORTED + | START + | STATISTICS + | STORED + | STRATIFY + | STRUCT + | SUBSTR + | SUBSTRING + | TABLE + | TABLES + | TABLESAMPLE + | TBLPROPERTIES + | TEMPORARY + | TERMINATED + | THEN + | TO + | TOUCH + | TRAILING + | TRANSACTION + | TRANSACTIONS + | TRANSFORM + | TRIM + | TRUE + | TRUNCATE + | TYPE + | UNARCHIVE + | UNBOUNDED + | UNCACHE + | UNIQUE + | UNKNOWN + | UNLOCK + | UNSET + | UPDATE + | USE + | USER + | VALUES + | VIEW + | VIEWS + | WHEN + | WHERE + | WINDOW + | WITH + | YEAR + ; + +// NOTE: If you add a new token in the list below, you should update the list of keywords +// in `docs/sql-keywords.md`. If the token is a non-reserved keyword, +// please update `ansiNonReserved` and `nonReserved` as well. + +//============================ +// Start of the keywords list +//============================ +ADD: 'ADD'; +AFTER: 'AFTER'; +ALL: 'ALL'; +ALTER: 'ALTER'; +ANALYZE: 'ANALYZE'; +AND: 'AND'; +ANTI: 'ANTI'; +ANY: 'ANY'; +ARCHIVE: 'ARCHIVE'; +ARRAY: 'ARRAY'; +AS: 'AS'; +ASC: 'ASC'; +AT: 'AT'; +AUTHORIZATION: 'AUTHORIZATION'; +BETWEEN: 'BETWEEN'; +BOTH: 'BOTH'; +BUCKET: 'BUCKET'; +BUCKETS: 'BUCKETS'; +BY: 'BY'; +CACHE: 'CACHE'; +CASCADE: 'CASCADE'; +CASE: 'CASE'; +CAST: 'CAST'; +CHANGE: 'CHANGE'; +CHECK: 'CHECK'; +CLEAR: 'CLEAR'; +CLUSTER: 'CLUSTER'; +CLUSTERED: 'CLUSTERED'; +CODEGEN: 'CODEGEN'; +COLLATE: 'COLLATE'; +COLLECTION: 'COLLECTION'; +COLUMN: 'COLUMN'; +COLUMNS: 'COLUMNS'; +COMMENT: 'COMMENT'; +COMMIT: 'COMMIT'; +COMPACT: 'COMPACT'; +COMPACTIONS: 'COMPACTIONS'; +COMPUTE: 'COMPUTE'; +CONCATENATE: 'CONCATENATE'; +CONSTRAINT: 'CONSTRAINT'; +COST: 'COST'; +CREATE: 'CREATE'; +CROSS: 'CROSS'; +CUBE: 'CUBE'; +CURRENT: 'CURRENT'; +CURRENT_DATE: 'CURRENT_DATE'; +CURRENT_TIME: 'CURRENT_TIME'; +CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; +CURRENT_USER: 'CURRENT_USER'; +DATA: 'DATA'; +DATABASE: 'DATABASE'; +DATABASES: 'DATABASES' | 'SCHEMAS'; +DAY: 'DAY'; +DBPROPERTIES: 'DBPROPERTIES'; +DEFINED: 'DEFINED'; +DELETE: 'DELETE'; +DELIMITED: 'DELIMITED'; +DESC: 'DESC'; +DESCRIBE: 'DESCRIBE'; +DFS: 'DFS'; +DIRECTORIES: 'DIRECTORIES'; +DIRECTORY: 'DIRECTORY'; +DISTINCT: 'DISTINCT'; +DISTRIBUTE: 'DISTRIBUTE'; +DROP: 'DROP'; +ELSE: 'ELSE'; +END: 'END'; +ESCAPE: 'ESCAPE'; +ESCAPED: 'ESCAPED'; +EXCEPT: 'EXCEPT'; +EXCHANGE: 'EXCHANGE'; +EXISTS: 'EXISTS'; +EXPLAIN: 'EXPLAIN'; +EXPORT: 'EXPORT'; +EXTENDED: 'EXTENDED'; +EXTERNAL: 'EXTERNAL'; +EXTRACT: 'EXTRACT'; +FALSE: 'FALSE'; +FETCH: 'FETCH'; +FIELDS: 'FIELDS'; +FILTER: 'FILTER'; +FILEFORMAT: 'FILEFORMAT'; +FIRST: 'FIRST'; +FOLLOWING: 'FOLLOWING'; +FOR: 'FOR'; +FOREIGN: 'FOREIGN'; +FORMAT: 'FORMAT'; +FORMATTED: 'FORMATTED'; +FROM: 'FROM'; +FULL: 'FULL'; +FUNCTION: 'FUNCTION'; +FUNCTIONS: 'FUNCTIONS'; +GLOBAL: 'GLOBAL'; +GRANT: 'GRANT'; +GROUP: 'GROUP'; +GROUPING: 'GROUPING'; +HAVING: 'HAVING'; +HOUR: 'HOUR'; +IF: 'IF'; +IGNORE: 'IGNORE'; +IMPORT: 'IMPORT'; +IN: 'IN'; +INDEX: 'INDEX'; +INDEXES: 'INDEXES'; +INNER: 'INNER'; +INPATH: 'INPATH'; +INPUTFORMAT: 'INPUTFORMAT'; +INSERT: 'INSERT'; +INTERSECT: 'INTERSECT'; +INTERVAL: 'INTERVAL'; +INTO: 'INTO'; +IS: 'IS'; +ITEMS: 'ITEMS'; +JOIN: 'JOIN'; +KEYS: 'KEYS'; +LAST: 'LAST'; +LATERAL: 'LATERAL'; +LAZY: 'LAZY'; +LEADING: 'LEADING'; +LEFT: 'LEFT'; +LIKE: 'LIKE'; +LIMIT: 'LIMIT'; +LINES: 'LINES'; +LIST: 'LIST'; +LOAD: 'LOAD'; +LOCAL: 'LOCAL'; +LOCATION: 'LOCATION'; +LOCK: 'LOCK'; +LOCKS: 'LOCKS'; +LOGICAL: 'LOGICAL'; +MACRO: 'MACRO'; +MAP: 'MAP'; +MATCHED: 'MATCHED'; +MERGE: 'MERGE'; +MINUTE: 'MINUTE'; +MONTH: 'MONTH'; +MSCK: 'MSCK'; +NAMESPACE: 'NAMESPACE'; +NAMESPACES: 'NAMESPACES'; +NATURAL: 'NATURAL'; +NO: 'NO'; +NOT: 'NOT' | '!'; +NULL: 'NULL'; +NULLS: 'NULLS'; +OF: 'OF'; +ON: 'ON'; +ONLY: 'ONLY'; +OPTION: 'OPTION'; +OPTIONS: 'OPTIONS'; +OR: 'OR'; +ORDER: 'ORDER'; +OUT: 'OUT'; +OUTER: 'OUTER'; +OUTPUTFORMAT: 'OUTPUTFORMAT'; +OVER: 'OVER'; +OVERLAPS: 'OVERLAPS'; +OVERLAY: 'OVERLAY'; +OVERWRITE: 'OVERWRITE'; +PARTITION: 'PARTITION'; +PARTITIONED: 'PARTITIONED'; +PARTITIONS: 'PARTITIONS'; +PERCENTLIT: 'PERCENT'; +PIVOT: 'PIVOT'; +PLACING: 'PLACING'; +POSITION: 'POSITION'; +PRECEDING: 'PRECEDING'; +PRIMARY: 'PRIMARY'; +PRINCIPALS: 'PRINCIPALS'; +PROPERTIES: 'PROPERTIES'; +PURGE: 'PURGE'; +QUERY: 'QUERY'; +RANGE: 'RANGE'; +RECORDREADER: 'RECORDREADER'; +RECORDWRITER: 'RECORDWRITER'; +RECOVER: 'RECOVER'; +REDUCE: 'REDUCE'; +REFERENCES: 'REFERENCES'; +REFRESH: 'REFRESH'; +RENAME: 'RENAME'; +REPAIR: 'REPAIR'; +REPLACE: 'REPLACE'; +RESET: 'RESET'; +RESTRICT: 'RESTRICT'; +REVOKE: 'REVOKE'; +RIGHT: 'RIGHT'; +RLIKE: 'RLIKE' | 'REGEXP'; +ROLE: 'ROLE'; +ROLES: 'ROLES'; +ROLLBACK: 'ROLLBACK'; +ROLLUP: 'ROLLUP'; +ROW: 'ROW'; +ROWS: 'ROWS'; +SCHEMA: 'SCHEMA'; +SECOND: 'SECOND'; +SELECT: 'SELECT'; +SEMI: 'SEMI'; +SEPARATED: 'SEPARATED'; +SERDE: 'SERDE'; +SERDEPROPERTIES: 'SERDEPROPERTIES'; +SESSION_USER: 'SESSION_USER'; +SET: 'SET'; +SETMINUS: 'MINUS'; +SETS: 'SETS'; +SHOW: 'SHOW'; +SKEWED: 'SKEWED'; +SOME: 'SOME'; +SORT: 'SORT'; +SORTED: 'SORTED'; +START: 'START'; +STATISTICS: 'STATISTICS'; +STORED: 'STORED'; +STRATIFY: 'STRATIFY'; +STRUCT: 'STRUCT'; +SUBSTR: 'SUBSTR'; +SUBSTRING: 'SUBSTRING'; +TABLE: 'TABLE'; +TABLES: 'TABLES'; +TABLESAMPLE: 'TABLESAMPLE'; +TBLPROPERTIES: 'TBLPROPERTIES'; +TEMPORARY: 'TEMPORARY' | 'TEMP'; +TERMINATED: 'TERMINATED'; +THEN: 'THEN'; +TO: 'TO'; +TOUCH: 'TOUCH'; +TRAILING: 'TRAILING'; +TRANSACTION: 'TRANSACTION'; +TRANSACTIONS: 'TRANSACTIONS'; +TRANSFORM: 'TRANSFORM'; +TRIM: 'TRIM'; +TRUE: 'TRUE'; +TRUNCATE: 'TRUNCATE'; +TYPE: 'TYPE'; +UNARCHIVE: 'UNARCHIVE'; +UNBOUNDED: 'UNBOUNDED'; +UNCACHE: 'UNCACHE'; +UNION: 'UNION'; +UNIQUE: 'UNIQUE'; +UNKNOWN: 'UNKNOWN'; +UNLOCK: 'UNLOCK'; +UNSET: 'UNSET'; +UPDATE: 'UPDATE'; +USE: 'USE'; +USER: 'USER'; +USING: 'USING'; +VALUES: 'VALUES'; +VIEW: 'VIEW'; +VIEWS: 'VIEWS'; +WHEN: 'WHEN'; +WHERE: 'WHERE'; +WINDOW: 'WINDOW'; +WITH: 'WITH'; +YEAR: 'YEAR'; +//============================ +// End of the keywords list +//============================ + +EQ : '=' | '=='; +NSEQ: '<=>'; +NEQ : '<>'; +NEQJ: '!='; +LT : '<'; +LTE : '<=' | '!>'; +GT : '>'; +GTE : '>=' | '!<'; + +PLUS: '+'; +MINUS: '-'; +ASTERISK: '*'; +SLASH: '/'; +PERCENT: '%'; +DIV: 'DIV'; +TILDE: '~'; +AMPERSAND: '&'; +PIPE: '|'; +CONCAT_PIPE: '||'; +HAT: '^'; + +STRING + : '\'' ( ~('\''|'\\') | ('\\' .) )* '\'' + | '"' ( ~('"'|'\\') | ('\\' .) )* '"' + ; + +BIGINT_LITERAL + : DIGIT+ 'L' + ; + +SMALLINT_LITERAL + : DIGIT+ 'S' + ; + +TINYINT_LITERAL + : DIGIT+ 'Y' + ; + +INTEGER_VALUE + : DIGIT+ + ; + +EXPONENT_VALUE + : DIGIT+ EXPONENT + | DECIMAL_DIGITS EXPONENT {self.isValidDecimal()}? + ; + +DECIMAL_VALUE + : DECIMAL_DIGITS {self.isValidDecimal()}? + ; + +DOUBLE_LITERAL + : DIGIT+ EXPONENT? 'D' + | DECIMAL_DIGITS EXPONENT? 'D' {self.isValidDecimal()}? + ; + +BIGDECIMAL_LITERAL + : DIGIT+ EXPONENT? 'BD' + | DECIMAL_DIGITS EXPONENT? 'BD' {self.isValidDecimal()}? + ; + +IDENTIFIER + : (LETTER | DIGIT | '_')+ + ; + +BACKQUOTED_IDENTIFIER + : '`' ( ~'`' | '``' )* '`' + ; + +fragment DECIMAL_DIGITS + : DIGIT+ '.' DIGIT* + | '.' DIGIT+ + ; + +fragment EXPONENT + : 'E' [+-]? DIGIT+ + ; + +fragment DIGIT + : [0-9] + ; + +fragment LETTER + : [A-Z] + ; + +SIMPLE_COMMENT + : '--' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN) + ; + +BRACKETED_COMMENT + : '/*' {not self.isHint()}? (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 + : . + ; From b43004d00a3c0cd40734abd46c9ea192f0b2465c Mon Sep 17 00:00:00 2001 From: tools4origins Date: Sun, 18 Oct 2020 10:18:15 +0200 Subject: [PATCH 3/4] Temporarily add generated files to VCS --- pysparkling/sql/ast/generated/SqlBase.interp | 742 + pysparkling/sql/ast/generated/SqlBase.tokens | 572 + .../ast/generated/SqlBaseBaseListener.java | 3230 +++ .../sql/ast/generated/SqlBaseLexer.interp | 912 + .../sql/ast/generated/SqlBaseLexer.java | 1418 ++ .../sql/ast/generated/SqlBaseLexer.tokens | 572 + .../sql/ast/generated/SqlBaseListener.java | 2967 +++ .../sql/ast/generated/SqlBaseParser.java | 20067 ++++++++++++++++ 8 files changed, 30480 insertions(+) create mode 100644 pysparkling/sql/ast/generated/SqlBase.interp create mode 100644 pysparkling/sql/ast/generated/SqlBase.tokens create mode 100644 pysparkling/sql/ast/generated/SqlBaseBaseListener.java create mode 100644 pysparkling/sql/ast/generated/SqlBaseLexer.interp create mode 100644 pysparkling/sql/ast/generated/SqlBaseLexer.java create mode 100644 pysparkling/sql/ast/generated/SqlBaseLexer.tokens create mode 100644 pysparkling/sql/ast/generated/SqlBaseListener.java create mode 100644 pysparkling/sql/ast/generated/SqlBaseParser.java diff --git a/pysparkling/sql/ast/generated/SqlBase.interp b/pysparkling/sql/ast/generated/SqlBase.interp new file mode 100644 index 000000000..216d07eac --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBase.interp @@ -0,0 +1,742 @@ +token literal names: +null +';' +'(' +')' +',' +'.' +'/*+' +'*/' +'->' +'[' +']' +':' +'ADD' +'AFTER' +'ALL' +'ALTER' +'ANALYZE' +'AND' +'ANTI' +'ANY' +'ARCHIVE' +'ARRAY' +'AS' +'ASC' +'AT' +'AUTHORIZATION' +'BETWEEN' +'BOTH' +'BUCKET' +'BUCKETS' +'BY' +'CACHE' +'CASCADE' +'CASE' +'CAST' +'CHANGE' +'CHECK' +'CLEAR' +'CLUSTER' +'CLUSTERED' +'CODEGEN' +'COLLATE' +'COLLECTION' +'COLUMN' +'COLUMNS' +'COMMENT' +'COMMIT' +'COMPACT' +'COMPACTIONS' +'COMPUTE' +'CONCATENATE' +'CONSTRAINT' +'COST' +'CREATE' +'CROSS' +'CUBE' +'CURRENT' +'CURRENT_DATE' +'CURRENT_TIME' +'CURRENT_TIMESTAMP' +'CURRENT_USER' +'DATA' +'DATABASE' +null +'DAY' +'DBPROPERTIES' +'DEFINED' +'DELETE' +'DELIMITED' +'DESC' +'DESCRIBE' +'DFS' +'DIRECTORIES' +'DIRECTORY' +'DISTINCT' +'DISTRIBUTE' +'DROP' +'ELSE' +'END' +'ESCAPE' +'ESCAPED' +'EXCEPT' +'EXCHANGE' +'EXISTS' +'EXPLAIN' +'EXPORT' +'EXTENDED' +'EXTERNAL' +'EXTRACT' +'FALSE' +'FETCH' +'FIELDS' +'FILTER' +'FILEFORMAT' +'FIRST' +'FOLLOWING' +'FOR' +'FOREIGN' +'FORMAT' +'FORMATTED' +'FROM' +'FULL' +'FUNCTION' +'FUNCTIONS' +'GLOBAL' +'GRANT' +'GROUP' +'GROUPING' +'HAVING' +'HOUR' +'IF' +'IGNORE' +'IMPORT' +'IN' +'INDEX' +'INDEXES' +'INNER' +'INPATH' +'INPUTFORMAT' +'INSERT' +'INTERSECT' +'INTERVAL' +'INTO' +'IS' +'ITEMS' +'JOIN' +'KEYS' +'LAST' +'LATERAL' +'LAZY' +'LEADING' +'LEFT' +'LIKE' +'LIMIT' +'LINES' +'LIST' +'LOAD' +'LOCAL' +'LOCATION' +'LOCK' +'LOCKS' +'LOGICAL' +'MACRO' +'MAP' +'MATCHED' +'MERGE' +'MINUTE' +'MONTH' +'MSCK' +'NAMESPACE' +'NAMESPACES' +'NATURAL' +'NO' +null +'NULL' +'NULLS' +'OF' +'ON' +'ONLY' +'OPTION' +'OPTIONS' +'OR' +'ORDER' +'OUT' +'OUTER' +'OUTPUTFORMAT' +'OVER' +'OVERLAPS' +'OVERLAY' +'OVERWRITE' +'PARTITION' +'PARTITIONED' +'PARTITIONS' +'PERCENT' +'PIVOT' +'PLACING' +'POSITION' +'PRECEDING' +'PRIMARY' +'PRINCIPALS' +'PROPERTIES' +'PURGE' +'QUERY' +'RANGE' +'RECORDREADER' +'RECORDWRITER' +'RECOVER' +'REDUCE' +'REFERENCES' +'REFRESH' +'RENAME' +'REPAIR' +'REPLACE' +'RESET' +'RESTRICT' +'REVOKE' +'RIGHT' +null +'ROLE' +'ROLES' +'ROLLBACK' +'ROLLUP' +'ROW' +'ROWS' +'SCHEMA' +'SECOND' +'SELECT' +'SEMI' +'SEPARATED' +'SERDE' +'SERDEPROPERTIES' +'SESSION_USER' +'SET' +'MINUS' +'SETS' +'SHOW' +'SKEWED' +'SOME' +'SORT' +'SORTED' +'START' +'STATISTICS' +'STORED' +'STRATIFY' +'STRUCT' +'SUBSTR' +'SUBSTRING' +'TABLE' +'TABLES' +'TABLESAMPLE' +'TBLPROPERTIES' +null +'TERMINATED' +'THEN' +'TO' +'TOUCH' +'TRAILING' +'TRANSACTION' +'TRANSACTIONS' +'TRANSFORM' +'TRIM' +'TRUE' +'TRUNCATE' +'TYPE' +'UNARCHIVE' +'UNBOUNDED' +'UNCACHE' +'UNION' +'UNIQUE' +'UNKNOWN' +'UNLOCK' +'UNSET' +'UPDATE' +'USE' +'USER' +'USING' +'VALUES' +'VIEW' +'VIEWS' +'WHEN' +'WHERE' +'WINDOW' +'WITH' +'YEAR' +null +'<=>' +'<>' +'!=' +'<' +null +'>' +null +'+' +'-' +'*' +'/' +'%' +'DIV' +'~' +'&' +'|' +'||' +'^' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +ADD +AFTER +ALL +ALTER +ANALYZE +AND +ANTI +ANY +ARCHIVE +ARRAY +AS +ASC +AT +AUTHORIZATION +BETWEEN +BOTH +BUCKET +BUCKETS +BY +CACHE +CASCADE +CASE +CAST +CHANGE +CHECK +CLEAR +CLUSTER +CLUSTERED +CODEGEN +COLLATE +COLLECTION +COLUMN +COLUMNS +COMMENT +COMMIT +COMPACT +COMPACTIONS +COMPUTE +CONCATENATE +CONSTRAINT +COST +CREATE +CROSS +CUBE +CURRENT +CURRENT_DATE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DATA +DATABASE +DATABASES +DAY +DBPROPERTIES +DEFINED +DELETE +DELIMITED +DESC +DESCRIBE +DFS +DIRECTORIES +DIRECTORY +DISTINCT +DISTRIBUTE +DROP +ELSE +END +ESCAPE +ESCAPED +EXCEPT +EXCHANGE +EXISTS +EXPLAIN +EXPORT +EXTENDED +EXTERNAL +EXTRACT +FALSE +FETCH +FIELDS +FILTER +FILEFORMAT +FIRST +FOLLOWING +FOR +FOREIGN +FORMAT +FORMATTED +FROM +FULL +FUNCTION +FUNCTIONS +GLOBAL +GRANT +GROUP +GROUPING +HAVING +HOUR +IF +IGNORE +IMPORT +IN +INDEX +INDEXES +INNER +INPATH +INPUTFORMAT +INSERT +INTERSECT +INTERVAL +INTO +IS +ITEMS +JOIN +KEYS +LAST +LATERAL +LAZY +LEADING +LEFT +LIKE +LIMIT +LINES +LIST +LOAD +LOCAL +LOCATION +LOCK +LOCKS +LOGICAL +MACRO +MAP +MATCHED +MERGE +MINUTE +MONTH +MSCK +NAMESPACE +NAMESPACES +NATURAL +NO +NOT +NULL +NULLS +OF +ON +ONLY +OPTION +OPTIONS +OR +ORDER +OUT +OUTER +OUTPUTFORMAT +OVER +OVERLAPS +OVERLAY +OVERWRITE +PARTITION +PARTITIONED +PARTITIONS +PERCENTLIT +PIVOT +PLACING +POSITION +PRECEDING +PRIMARY +PRINCIPALS +PROPERTIES +PURGE +QUERY +RANGE +RECORDREADER +RECORDWRITER +RECOVER +REDUCE +REFERENCES +REFRESH +RENAME +REPAIR +REPLACE +RESET +RESTRICT +REVOKE +RIGHT +RLIKE +ROLE +ROLES +ROLLBACK +ROLLUP +ROW +ROWS +SCHEMA +SECOND +SELECT +SEMI +SEPARATED +SERDE +SERDEPROPERTIES +SESSION_USER +SET +SETMINUS +SETS +SHOW +SKEWED +SOME +SORT +SORTED +START +STATISTICS +STORED +STRATIFY +STRUCT +SUBSTR +SUBSTRING +TABLE +TABLES +TABLESAMPLE +TBLPROPERTIES +TEMPORARY +TERMINATED +THEN +TO +TOUCH +TRAILING +TRANSACTION +TRANSACTIONS +TRANSFORM +TRIM +TRUE +TRUNCATE +TYPE +UNARCHIVE +UNBOUNDED +UNCACHE +UNION +UNIQUE +UNKNOWN +UNLOCK +UNSET +UPDATE +USE +USER +USING +VALUES +VIEW +VIEWS +WHEN +WHERE +WINDOW +WITH +YEAR +EQ +NSEQ +NEQ +NEQJ +LT +LTE +GT +GTE +PLUS +MINUS +ASTERISK +SLASH +PERCENT +DIV +TILDE +AMPERSAND +PIPE +CONCAT_PIPE +HAT +STRING +BIGINT_LITERAL +SMALLINT_LITERAL +TINYINT_LITERAL +INTEGER_VALUE +EXPONENT_VALUE +DECIMAL_VALUE +DOUBLE_LITERAL +BIGDECIMAL_LITERAL +IDENTIFIER +BACKQUOTED_IDENTIFIER +SIMPLE_COMMENT +BRACKETED_COMMENT +WS +UNRECOGNIZED + +rule names: +singleStatement +singleExpression +singleTableIdentifier +singleMultipartIdentifier +singleFunctionIdentifier +singleDataType +singleTableSchema +statement +unsupportedHiveNativeCommands +createTableHeader +replaceTableHeader +bucketSpec +skewSpec +locationSpec +commentSpec +query +insertInto +partitionSpecLocation +partitionSpec +partitionVal +namespace +describeFuncName +describeColName +ctes +namedQuery +tableProvider +createTableClauses +tablePropertyList +tableProperty +tablePropertyKey +tablePropertyValue +constantList +nestedConstantList +createFileFormat +fileFormat +storageHandler +resource +dmlStatementNoWith +queryOrganization +multiInsertQueryBody +queryTerm +queryPrimary +sortItem +fromStatement +fromStatementBody +querySpecification +transformClause +selectClause +setClause +matchedClause +notMatchedClause +matchedAction +notMatchedAction +assignmentList +assignment +whereClause +havingClause +hint +hintStatement +fromClause +aggregationClause +groupingSet +pivotClause +pivotColumn +pivotValue +lateralView +setQuantifier +relation +joinRelation +joinType +joinCriteria +sample +sampleMethod +identifierList +identifierSeq +orderedIdentifierList +orderedIdentifier +identifierCommentList +identifierComment +relationPrimary +inlineTable +functionTable +tableAlias +rowFormat +multipartIdentifierList +multipartIdentifier +tableIdentifier +functionIdentifier +namedExpression +namedExpressionSeq +transformList +transform +transformArgument +expression +booleanExpression +predicate +valueExpression +primaryExpression +constant +comparisonOperator +arithmeticOperator +predicateOperator +booleanValue +interval +errorCapturingMultiUnitsInterval +multiUnitsInterval +errorCapturingUnitToUnitInterval +unitToUnitInterval +intervalValue +intervalUnit +colPosition +dataType +qualifiedColTypeWithPositionList +qualifiedColTypeWithPosition +colTypeList +colType +complexColTypeList +complexColType +whenClause +windowClause +namedWindow +windowSpec +windowFrame +frameBound +qualifiedNameList +functionName +qualifiedName +errorCapturingIdentifier +errorCapturingIdentifierExtra +identifier +strictIdentifier +quotedIdentifier +number +alterColumnAction +ansiNonReserved +strictNonReserved +nonReserved + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 299, 3020, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 3, 2, 3, 2, 7, 2, 279, 10, 2, 12, 2, 14, 2, 282, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 5, 9, 306, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 311, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 319, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 327, 10, 9, 12, 9, 14, 9, 330, 11, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 349, 10, 9, 3, 9, 3, 9, 5, 9, 353, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 359, 10, 9, 3, 9, 5, 9, 362, 10, 9, 3, 9, 5, 9, 365, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 373, 10, 9, 3, 9, 5, 9, 376, 10, 9, 3, 9, 3, 9, 5, 9, 380, 10, 9, 3, 9, 5, 9, 383, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 391, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 396, 10, 9, 3, 9, 5, 9, 399, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 406, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 418, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 427, 10, 9, 12, 9, 14, 9, 430, 11, 9, 3, 9, 5, 9, 433, 10, 9, 3, 9, 5, 9, 436, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 443, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 454, 10, 9, 12, 9, 14, 9, 457, 11, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 464, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 469, 10, 9, 3, 9, 5, 9, 472, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 478, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 489, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 553, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 562, 10, 9, 3, 9, 3, 9, 5, 9, 566, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 572, 10, 9, 3, 9, 3, 9, 5, 9, 576, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 581, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 587, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 599, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 607, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 613, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 626, 10, 9, 3, 9, 6, 9, 629, 10, 9, 13, 9, 14, 9, 630, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 647, 10, 9, 3, 9, 3, 9, 3, 9, 7, 9, 652, 10, 9, 12, 9, 14, 9, 655, 11, 9, 3, 9, 5, 9, 658, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 664, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 679, 10, 9, 3, 9, 3, 9, 5, 9, 683, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 689, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 695, 10, 9, 3, 9, 5, 9, 698, 10, 9, 3, 9, 5, 9, 701, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 707, 10, 9, 3, 9, 3, 9, 5, 9, 711, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 719, 10, 9, 12, 9, 14, 9, 722, 11, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 730, 10, 9, 3, 9, 5, 9, 733, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 742, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 747, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 753, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 760, 10, 9, 3, 9, 5, 9, 763, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 769, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 778, 10, 9, 12, 9, 14, 9, 781, 11, 9, 5, 9, 783, 10, 9, 3, 9, 3, 9, 5, 9, 787, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 792, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 797, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 804, 10, 9, 3, 9, 5, 9, 807, 10, 9, 3, 9, 5, 9, 810, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 817, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 822, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 831, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 839, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 845, 10, 9, 3, 9, 5, 9, 848, 10, 9, 3, 9, 5, 9, 851, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 857, 10, 9, 3, 9, 3, 9, 5, 9, 861, 10, 9, 3, 9, 3, 9, 5, 9, 865, 10, 9, 3, 9, 3, 9, 5, 9, 869, 10, 9, 5, 9, 871, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 879, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 887, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 893, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 899, 10, 9, 3, 9, 5, 9, 902, 10, 9, 3, 9, 3, 9, 5, 9, 906, 10, 9, 3, 9, 5, 9, 909, 10, 9, 3, 9, 3, 9, 5, 9, 913, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 936, 10, 9, 12, 9, 14, 9, 939, 11, 9, 5, 9, 941, 10, 9, 3, 9, 3, 9, 5, 9, 945, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 951, 10, 9, 3, 9, 5, 9, 954, 10, 9, 3, 9, 5, 9, 957, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 963, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 971, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 976, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 982, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 988, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 998, 10, 9, 12, 9, 14, 9, 1001, 11, 9, 5, 9, 1003, 10, 9, 3, 9, 3, 9, 3, 9, 7, 9, 1008, 10, 9, 12, 9, 14, 9, 1011, 11, 9, 3, 9, 3, 9, 7, 9, 1015, 10, 9, 12, 9, 14, 9, 1018, 11, 9, 3, 9, 3, 9, 3, 9, 7, 9, 1023, 10, 9, 12, 9, 14, 9, 1026, 11, 9, 5, 9, 1028, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 1036, 10, 10, 3, 10, 3, 10, 5, 10, 1040, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 1047, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 1163, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 1171, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 1179, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 1188, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 1198, 10, 10, 3, 11, 3, 11, 5, 11, 1202, 10, 11, 3, 11, 5, 11, 1205, 10, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 1211, 10, 11, 3, 11, 3, 11, 3, 12, 3, 12, 5, 12, 1217, 10, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 1229, 10, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 1241, 10, 14, 3, 14, 3, 14, 3, 14, 5, 14, 1246, 10, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 17, 5, 17, 1255, 10, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 5, 18, 1263, 10, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 1270, 10, 18, 5, 18, 1272, 10, 18, 3, 18, 3, 18, 3, 18, 5, 18, 1277, 10, 18, 3, 18, 3, 18, 5, 18, 1281, 10, 18, 3, 18, 3, 18, 3, 18, 5, 18, 1286, 10, 18, 3, 18, 3, 18, 3, 18, 5, 18, 1291, 10, 18, 3, 18, 3, 18, 3, 18, 5, 18, 1296, 10, 18, 3, 18, 5, 18, 1299, 10, 18, 3, 18, 3, 18, 3, 18, 5, 18, 1304, 10, 18, 3, 18, 3, 18, 5, 18, 1308, 10, 18, 3, 18, 3, 18, 3, 18, 5, 18, 1313, 10, 18, 5, 18, 1315, 10, 18, 3, 19, 3, 19, 5, 19, 1319, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 1326, 10, 20, 12, 20, 14, 20, 1329, 11, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 5, 21, 1336, 10, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 1345, 10, 23, 3, 24, 3, 24, 3, 24, 7, 24, 1350, 10, 24, 12, 24, 14, 24, 1353, 11, 24, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 1359, 10, 25, 12, 25, 14, 25, 1362, 11, 25, 3, 26, 3, 26, 5, 26, 1366, 10, 26, 3, 26, 5, 26, 1369, 10, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 1388, 10, 28, 12, 28, 14, 28, 1391, 11, 28, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 1397, 10, 29, 12, 29, 14, 29, 1400, 11, 29, 3, 29, 3, 29, 3, 30, 3, 30, 5, 30, 1406, 10, 30, 3, 30, 5, 30, 1409, 10, 30, 3, 31, 3, 31, 3, 31, 7, 31, 1414, 10, 31, 12, 31, 14, 31, 1417, 11, 31, 3, 31, 5, 31, 1420, 10, 31, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 1426, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 1432, 10, 33, 12, 33, 14, 33, 1435, 11, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 1443, 10, 34, 12, 34, 14, 34, 1446, 11, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 5, 35, 1456, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 1463, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1469, 10, 37, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 6, 39, 1480, 10, 39, 13, 39, 14, 39, 1481, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 1489, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 1496, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 1508, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1514, 10, 39, 12, 39, 14, 39, 1517, 11, 39, 3, 39, 7, 39, 1520, 10, 39, 12, 39, 14, 39, 1523, 11, 39, 5, 39, 1525, 10, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 1532, 10, 40, 12, 40, 14, 40, 1535, 11, 40, 5, 40, 1537, 10, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 1544, 10, 40, 12, 40, 14, 40, 1547, 11, 40, 5, 40, 1549, 10, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 1556, 10, 40, 12, 40, 14, 40, 1559, 11, 40, 5, 40, 1561, 10, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 1568, 10, 40, 12, 40, 14, 40, 1571, 11, 40, 5, 40, 1573, 10, 40, 3, 40, 5, 40, 1576, 10, 40, 3, 40, 3, 40, 3, 40, 5, 40, 1581, 10, 40, 5, 40, 1583, 10, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 1595, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 1602, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 1609, 10, 42, 3, 42, 7, 42, 1612, 10, 42, 12, 42, 14, 42, 1615, 11, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1626, 10, 43, 3, 44, 3, 44, 5, 44, 1630, 10, 44, 3, 44, 3, 44, 5, 44, 1634, 10, 44, 3, 45, 3, 45, 6, 45, 1638, 10, 45, 13, 45, 14, 45, 1639, 3, 46, 3, 46, 5, 46, 1644, 10, 46, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 1650, 10, 46, 12, 46, 14, 46, 1653, 11, 46, 3, 46, 5, 46, 1656, 10, 46, 3, 46, 5, 46, 1659, 10, 46, 3, 46, 5, 46, 1662, 10, 46, 3, 46, 5, 46, 1665, 10, 46, 3, 46, 3, 46, 5, 46, 1669, 10, 46, 3, 47, 3, 47, 5, 47, 1673, 10, 47, 3, 47, 5, 47, 1676, 10, 47, 3, 47, 3, 47, 5, 47, 1680, 10, 47, 3, 47, 7, 47, 1683, 10, 47, 12, 47, 14, 47, 1686, 11, 47, 3, 47, 5, 47, 1689, 10, 47, 3, 47, 5, 47, 1692, 10, 47, 3, 47, 5, 47, 1695, 10, 47, 3, 47, 5, 47, 1698, 10, 47, 5, 47, 1700, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1712, 10, 48, 3, 48, 5, 48, 1715, 10, 48, 3, 48, 3, 48, 5, 48, 1719, 10, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1729, 10, 48, 3, 48, 3, 48, 5, 48, 1733, 10, 48, 5, 48, 1735, 10, 48, 3, 48, 5, 48, 1738, 10, 48, 3, 48, 3, 48, 5, 48, 1742, 10, 48, 3, 49, 3, 49, 7, 49, 1746, 10, 49, 12, 49, 14, 49, 1749, 11, 49, 3, 49, 5, 49, 1752, 10, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1763, 10, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1773, 10, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1785, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 7, 54, 1798, 10, 54, 12, 54, 14, 54, 1801, 11, 54, 3, 54, 3, 54, 5, 54, 1805, 10, 54, 3, 55, 3, 55, 3, 55, 7, 55, 1810, 10, 55, 12, 55, 14, 55, 1813, 11, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 5, 59, 1828, 10, 59, 3, 59, 7, 59, 1831, 10, 59, 12, 59, 14, 59, 1834, 11, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 7, 60, 1844, 10, 60, 12, 60, 14, 60, 1847, 11, 60, 3, 60, 3, 60, 5, 60, 1851, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 7, 61, 1857, 10, 61, 12, 61, 14, 61, 1860, 11, 61, 3, 61, 7, 61, 1863, 10, 61, 12, 61, 14, 61, 1866, 11, 61, 3, 61, 5, 61, 1869, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 7, 62, 1876, 10, 62, 12, 62, 14, 62, 1879, 11, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 7, 62, 1891, 10, 62, 12, 62, 14, 62, 1894, 11, 62, 3, 62, 3, 62, 5, 62, 1898, 10, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 7, 62, 1908, 10, 62, 12, 62, 14, 62, 1911, 11, 62, 3, 62, 3, 62, 5, 62, 1915, 10, 62, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 1921, 10, 63, 12, 63, 14, 63, 1924, 11, 63, 5, 63, 1926, 10, 63, 3, 63, 3, 63, 5, 63, 1930, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 1942, 10, 64, 12, 64, 14, 64, 1945, 11, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 7, 65, 1955, 10, 65, 12, 65, 14, 65, 1958, 11, 65, 3, 65, 3, 65, 5, 65, 1962, 10, 65, 3, 66, 3, 66, 5, 66, 1966, 10, 66, 3, 66, 5, 66, 1969, 10, 66, 3, 67, 3, 67, 3, 67, 5, 67, 1974, 10, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 7, 67, 1981, 10, 67, 12, 67, 14, 67, 1984, 11, 67, 5, 67, 1986, 10, 67, 3, 67, 3, 67, 3, 67, 5, 67, 1991, 10, 67, 3, 67, 3, 67, 3, 67, 7, 67, 1996, 10, 67, 12, 67, 14, 67, 1999, 11, 67, 5, 67, 2001, 10, 67, 3, 68, 3, 68, 3, 69, 3, 69, 7, 69, 2007, 10, 69, 12, 69, 14, 69, 2010, 11, 69, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2016, 10, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2023, 10, 70, 3, 71, 5, 71, 2026, 10, 71, 3, 71, 3, 71, 3, 71, 5, 71, 2031, 10, 71, 3, 71, 5, 71, 2034, 10, 71, 3, 71, 3, 71, 3, 71, 5, 71, 2039, 10, 71, 3, 71, 3, 71, 5, 71, 2043, 10, 71, 3, 71, 5, 71, 2046, 10, 71, 3, 71, 5, 71, 2049, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 2055, 10, 72, 3, 73, 3, 73, 3, 73, 5, 73, 2060, 10, 73, 3, 73, 3, 73, 3, 74, 5, 74, 2065, 10, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 2083, 10, 74, 5, 74, 2085, 10, 74, 3, 74, 5, 74, 2088, 10, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 7, 76, 2097, 10, 76, 12, 76, 14, 76, 2100, 11, 76, 3, 77, 3, 77, 3, 77, 3, 77, 7, 77, 2106, 10, 77, 12, 77, 14, 77, 2109, 11, 77, 3, 77, 3, 77, 3, 78, 3, 78, 5, 78, 2115, 10, 78, 3, 79, 3, 79, 3, 79, 3, 79, 7, 79, 2121, 10, 79, 12, 79, 14, 79, 2124, 11, 79, 3, 79, 3, 79, 3, 80, 3, 80, 5, 80, 2130, 10, 80, 3, 81, 3, 81, 5, 81, 2134, 10, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 2142, 10, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 2150, 10, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 2156, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 7, 82, 2162, 10, 82, 12, 82, 14, 82, 2165, 11, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 7, 83, 2174, 10, 83, 12, 83, 14, 83, 2177, 11, 83, 5, 83, 2179, 10, 83, 3, 83, 3, 83, 3, 83, 3, 84, 5, 84, 2185, 10, 84, 3, 84, 3, 84, 5, 84, 2189, 10, 84, 5, 84, 2191, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 2200, 10, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 2212, 10, 85, 5, 85, 2214, 10, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 2221, 10, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 2228, 10, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 2234, 10, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 2240, 10, 85, 5, 85, 2242, 10, 85, 3, 86, 3, 86, 3, 86, 7, 86, 2247, 10, 86, 12, 86, 14, 86, 2250, 11, 86, 3, 87, 3, 87, 3, 87, 7, 87, 2255, 10, 87, 12, 87, 14, 87, 2258, 11, 87, 3, 88, 3, 88, 3, 88, 5, 88, 2263, 10, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 5, 89, 2270, 10, 89, 3, 89, 3, 89, 3, 90, 3, 90, 5, 90, 2276, 10, 90, 3, 90, 3, 90, 5, 90, 2280, 10, 90, 5, 90, 2282, 10, 90, 3, 91, 3, 91, 3, 91, 7, 91, 2287, 10, 91, 12, 91, 14, 91, 2290, 11, 91, 3, 92, 3, 92, 3, 92, 3, 92, 7, 92, 2296, 10, 92, 12, 92, 14, 92, 2299, 11, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 7, 93, 2309, 10, 93, 12, 93, 14, 93, 2312, 11, 93, 3, 93, 3, 93, 5, 93, 2316, 10, 93, 3, 94, 3, 94, 5, 94, 2320, 10, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 5, 96, 2334, 10, 96, 5, 96, 2336, 10, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 7, 96, 2344, 10, 96, 12, 96, 14, 96, 2347, 11, 96, 3, 97, 5, 97, 2350, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2358, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 7, 97, 2365, 10, 97, 12, 97, 14, 97, 2368, 11, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2373, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2381, 10, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2386, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 7, 97, 2396, 10, 97, 12, 97, 14, 97, 2399, 11, 97, 3, 97, 3, 97, 5, 97, 2403, 10, 97, 3, 97, 5, 97, 2406, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2412, 10, 97, 3, 97, 3, 97, 5, 97, 2416, 10, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2421, 10, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2426, 10, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2431, 10, 97, 3, 98, 3, 98, 3, 98, 3, 98, 5, 98, 2437, 10, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 7, 98, 2458, 10, 98, 12, 98, 14, 98, 2461, 11, 98, 3, 99, 3, 99, 3, 99, 3, 99, 6, 99, 2467, 10, 99, 13, 99, 14, 99, 2468, 3, 99, 3, 99, 5, 99, 2473, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 6, 99, 2480, 10, 99, 13, 99, 14, 99, 2481, 3, 99, 3, 99, 5, 99, 2486, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 7, 99, 2502, 10, 99, 12, 99, 14, 99, 2505, 11, 99, 5, 99, 2507, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2515, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2524, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 6, 99, 2545, 10, 99, 13, 99, 14, 99, 2546, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2558, 10, 99, 3, 99, 3, 99, 3, 99, 7, 99, 2563, 10, 99, 12, 99, 14, 99, 2566, 11, 99, 5, 99, 2568, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2577, 10, 99, 3, 99, 3, 99, 5, 99, 2581, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 6, 99, 2591, 10, 99, 13, 99, 14, 99, 2592, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2618, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2625, 10, 99, 3, 99, 5, 99, 2628, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2643, 10, 99, 3, 99, 3, 99, 5, 99, 2647, 10, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 7, 99, 2657, 10, 99, 12, 99, 14, 99, 2660, 11, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 6, 100, 2670, 10, 100, 13, 100, 14, 100, 2671, 5, 100, 2674, 10, 100, 3, 101, 3, 101, 3, 102, 3, 102, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 5, 105, 2687, 10, 105, 3, 106, 3, 106, 5, 106, 2691, 10, 106, 3, 107, 3, 107, 3, 107, 6, 107, 2696, 10, 107, 13, 107, 14, 107, 2697, 3, 108, 3, 108, 3, 108, 5, 108, 2703, 10, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 5, 110, 2711, 10, 110, 3, 110, 3, 110, 5, 110, 2715, 10, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 5, 111, 2724, 10, 111, 3, 112, 3, 112, 3, 112, 5, 112, 2729, 10, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 2746, 10, 113, 3, 113, 3, 113, 5, 113, 2750, 10, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 7, 113, 2757, 10, 113, 12, 113, 14, 113, 2760, 11, 113, 3, 113, 5, 113, 2763, 10, 113, 5, 113, 2765, 10, 113, 3, 114, 3, 114, 3, 114, 7, 114, 2770, 10, 114, 12, 114, 14, 114, 2773, 11, 114, 3, 115, 3, 115, 3, 115, 3, 115, 5, 115, 2779, 10, 115, 3, 115, 5, 115, 2782, 10, 115, 3, 115, 5, 115, 2785, 10, 115, 3, 116, 3, 116, 3, 116, 7, 116, 2790, 10, 116, 12, 116, 14, 116, 2793, 11, 116, 3, 117, 3, 117, 3, 117, 3, 117, 5, 117, 2799, 10, 117, 3, 117, 5, 117, 2802, 10, 117, 3, 118, 3, 118, 3, 118, 7, 118, 2807, 10, 118, 12, 118, 14, 118, 2810, 11, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 5, 119, 2817, 10, 119, 3, 119, 5, 119, 2820, 10, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 7, 121, 2831, 10, 121, 12, 121, 14, 121, 2834, 11, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 7, 123, 2851, 10, 123, 12, 123, 14, 123, 2854, 11, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 7, 123, 2861, 10, 123, 12, 123, 14, 123, 2864, 11, 123, 5, 123, 2866, 10, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 7, 123, 2873, 10, 123, 12, 123, 14, 123, 2876, 11, 123, 5, 123, 2878, 10, 123, 5, 123, 2880, 10, 123, 3, 123, 5, 123, 2883, 10, 123, 3, 123, 5, 123, 2886, 10, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 5, 124, 2904, 10, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 5, 125, 2913, 10, 125, 3, 126, 3, 126, 3, 126, 7, 126, 2918, 10, 126, 12, 126, 14, 126, 2921, 11, 126, 3, 127, 3, 127, 3, 127, 3, 127, 5, 127, 2927, 10, 127, 3, 128, 3, 128, 3, 128, 7, 128, 2932, 10, 128, 12, 128, 14, 128, 2935, 11, 128, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 6, 130, 2942, 10, 130, 13, 130, 14, 130, 2943, 3, 130, 5, 130, 2947, 10, 130, 3, 131, 3, 131, 3, 131, 5, 131, 2952, 10, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 5, 132, 2960, 10, 132, 3, 133, 3, 133, 3, 134, 3, 134, 5, 134, 2966, 10, 134, 3, 134, 3, 134, 3, 134, 5, 134, 2971, 10, 134, 3, 134, 3, 134, 3, 134, 5, 134, 2976, 10, 134, 3, 134, 3, 134, 5, 134, 2980, 10, 134, 3, 134, 3, 134, 5, 134, 2984, 10, 134, 3, 134, 3, 134, 5, 134, 2988, 10, 134, 3, 134, 3, 134, 5, 134, 2992, 10, 134, 3, 134, 3, 134, 5, 134, 2996, 10, 134, 3, 134, 3, 134, 5, 134, 3000, 10, 134, 3, 134, 5, 134, 3003, 10, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 5, 135, 3012, 10, 135, 3, 136, 3, 136, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 7, 937, 999, 1009, 1016, 1024, 6, 82, 190, 194, 196, 139, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 2, 44, 4, 2, 67, 67, 182, 182, 4, 2, 34, 34, 196, 196, 4, 2, 65, 65, 152, 152, 4, 2, 102, 102, 115, 115, 3, 2, 45, 46, 4, 2, 229, 229, 259, 259, 4, 2, 17, 17, 37, 37, 7, 2, 42, 42, 54, 54, 88, 88, 101, 101, 143, 143, 3, 2, 71, 72, 4, 2, 88, 88, 101, 101, 4, 2, 156, 156, 285, 285, 4, 2, 14, 14, 137, 137, 5, 2, 64, 64, 151, 151, 206, 206, 6, 2, 83, 83, 122, 122, 215, 215, 249, 249, 5, 2, 83, 83, 215, 215, 249, 249, 4, 2, 25, 25, 71, 71, 4, 2, 96, 96, 129, 129, 4, 2, 16, 16, 76, 76, 4, 2, 289, 289, 291, 291, 5, 2, 16, 16, 21, 21, 219, 219, 5, 2, 91, 91, 243, 243, 251, 251, 4, 2, 274, 275, 280, 280, 3, 2, 276, 279, 4, 2, 274, 275, 283, 283, 4, 2, 59, 59, 61, 61, 3, 2, 227, 228, 4, 2, 6, 6, 102, 102, 4, 2, 6, 6, 98, 98, 5, 2, 29, 29, 132, 132, 238, 238, 3, 2, 266, 273, 3, 2, 274, 284, 6, 2, 19, 19, 115, 115, 155, 155, 163, 163, 4, 2, 91, 91, 243, 243, 3, 2, 274, 275, 4, 2, 77, 77, 172, 172, 4, 2, 164, 164, 220, 220, 4, 2, 97, 97, 179, 179, 3, 2, 290, 291, 4, 2, 78, 78, 214, 214, 53, 2, 14, 15, 17, 18, 22, 23, 25, 26, 28, 28, 30, 34, 37, 37, 39, 42, 44, 44, 46, 52, 54, 54, 57, 58, 63, 65, 67, 75, 77, 78, 82, 82, 84, 90, 93, 93, 95, 97, 100, 101, 104, 106, 109, 109, 112, 114, 116, 117, 119, 121, 123, 123, 126, 126, 128, 131, 134, 147, 150, 152, 154, 154, 157, 158, 161, 162, 165, 165, 167, 168, 170, 179, 181, 189, 191, 197, 199, 206, 210, 212, 214, 214, 216, 218, 220, 228, 230, 234, 237, 237, 239, 244, 246, 248, 252, 255, 258, 260, 263, 263, 279, 279, 17, 2, 20, 20, 56, 56, 83, 83, 103, 103, 118, 118, 122, 122, 127, 127, 133, 133, 153, 153, 159, 159, 198, 198, 209, 209, 215, 215, 249, 249, 257, 257, 19, 2, 14, 19, 21, 55, 57, 82, 84, 102, 104, 117, 119, 121, 123, 126, 128, 132, 134, 152, 154, 158, 160, 197, 199, 208, 210, 214, 216, 248, 250, 256, 258, 265, 279, 279, 2, 3492, 2, 276, 3, 2, 2, 2, 4, 285, 3, 2, 2, 2, 6, 288, 3, 2, 2, 2, 8, 291, 3, 2, 2, 2, 10, 294, 3, 2, 2, 2, 12, 297, 3, 2, 2, 2, 14, 300, 3, 2, 2, 2, 16, 1027, 3, 2, 2, 2, 18, 1197, 3, 2, 2, 2, 20, 1199, 3, 2, 2, 2, 22, 1216, 3, 2, 2, 2, 24, 1222, 3, 2, 2, 2, 26, 1234, 3, 2, 2, 2, 28, 1247, 3, 2, 2, 2, 30, 1250, 3, 2, 2, 2, 32, 1254, 3, 2, 2, 2, 34, 1314, 3, 2, 2, 2, 36, 1316, 3, 2, 2, 2, 38, 1320, 3, 2, 2, 2, 40, 1332, 3, 2, 2, 2, 42, 1337, 3, 2, 2, 2, 44, 1344, 3, 2, 2, 2, 46, 1346, 3, 2, 2, 2, 48, 1354, 3, 2, 2, 2, 50, 1363, 3, 2, 2, 2, 52, 1374, 3, 2, 2, 2, 54, 1389, 3, 2, 2, 2, 56, 1392, 3, 2, 2, 2, 58, 1403, 3, 2, 2, 2, 60, 1419, 3, 2, 2, 2, 62, 1425, 3, 2, 2, 2, 64, 1427, 3, 2, 2, 2, 66, 1438, 3, 2, 2, 2, 68, 1455, 3, 2, 2, 2, 70, 1462, 3, 2, 2, 2, 72, 1464, 3, 2, 2, 2, 74, 1470, 3, 2, 2, 2, 76, 1524, 3, 2, 2, 2, 78, 1536, 3, 2, 2, 2, 80, 1584, 3, 2, 2, 2, 82, 1587, 3, 2, 2, 2, 84, 1625, 3, 2, 2, 2, 86, 1627, 3, 2, 2, 2, 88, 1635, 3, 2, 2, 2, 90, 1668, 3, 2, 2, 2, 92, 1699, 3, 2, 2, 2, 94, 1711, 3, 2, 2, 2, 96, 1743, 3, 2, 2, 2, 98, 1755, 3, 2, 2, 2, 100, 1758, 3, 2, 2, 2, 102, 1767, 3, 2, 2, 2, 104, 1784, 3, 2, 2, 2, 106, 1804, 3, 2, 2, 2, 108, 1806, 3, 2, 2, 2, 110, 1814, 3, 2, 2, 2, 112, 1818, 3, 2, 2, 2, 114, 1821, 3, 2, 2, 2, 116, 1824, 3, 2, 2, 2, 118, 1850, 3, 2, 2, 2, 120, 1852, 3, 2, 2, 2, 122, 1914, 3, 2, 2, 2, 124, 1929, 3, 2, 2, 2, 126, 1931, 3, 2, 2, 2, 128, 1961, 3, 2, 2, 2, 130, 1963, 3, 2, 2, 2, 132, 1970, 3, 2, 2, 2, 134, 2002, 3, 2, 2, 2, 136, 2004, 3, 2, 2, 2, 138, 2022, 3, 2, 2, 2, 140, 2048, 3, 2, 2, 2, 142, 2054, 3, 2, 2, 2, 144, 2056, 3, 2, 2, 2, 146, 2087, 3, 2, 2, 2, 148, 2089, 3, 2, 2, 2, 150, 2093, 3, 2, 2, 2, 152, 2101, 3, 2, 2, 2, 154, 2112, 3, 2, 2, 2, 156, 2116, 3, 2, 2, 2, 158, 2127, 3, 2, 2, 2, 160, 2155, 3, 2, 2, 2, 162, 2157, 3, 2, 2, 2, 164, 2168, 3, 2, 2, 2, 166, 2190, 3, 2, 2, 2, 168, 2241, 3, 2, 2, 2, 170, 2243, 3, 2, 2, 2, 172, 2251, 3, 2, 2, 2, 174, 2262, 3, 2, 2, 2, 176, 2269, 3, 2, 2, 2, 178, 2273, 3, 2, 2, 2, 180, 2283, 3, 2, 2, 2, 182, 2291, 3, 2, 2, 2, 184, 2315, 3, 2, 2, 2, 186, 2319, 3, 2, 2, 2, 188, 2321, 3, 2, 2, 2, 190, 2335, 3, 2, 2, 2, 192, 2430, 3, 2, 2, 2, 194, 2436, 3, 2, 2, 2, 196, 2646, 3, 2, 2, 2, 198, 2673, 3, 2, 2, 2, 200, 2675, 3, 2, 2, 2, 202, 2677, 3, 2, 2, 2, 204, 2679, 3, 2, 2, 2, 206, 2681, 3, 2, 2, 2, 208, 2683, 3, 2, 2, 2, 210, 2688, 3, 2, 2, 2, 212, 2695, 3, 2, 2, 2, 214, 2699, 3, 2, 2, 2, 216, 2704, 3, 2, 2, 2, 218, 2714, 3, 2, 2, 2, 220, 2723, 3, 2, 2, 2, 222, 2728, 3, 2, 2, 2, 224, 2764, 3, 2, 2, 2, 226, 2766, 3, 2, 2, 2, 228, 2774, 3, 2, 2, 2, 230, 2786, 3, 2, 2, 2, 232, 2794, 3, 2, 2, 2, 234, 2803, 3, 2, 2, 2, 236, 2811, 3, 2, 2, 2, 238, 2821, 3, 2, 2, 2, 240, 2826, 3, 2, 2, 2, 242, 2835, 3, 2, 2, 2, 244, 2885, 3, 2, 2, 2, 246, 2903, 3, 2, 2, 2, 248, 2912, 3, 2, 2, 2, 250, 2914, 3, 2, 2, 2, 252, 2926, 3, 2, 2, 2, 254, 2928, 3, 2, 2, 2, 256, 2936, 3, 2, 2, 2, 258, 2946, 3, 2, 2, 2, 260, 2951, 3, 2, 2, 2, 262, 2959, 3, 2, 2, 2, 264, 2961, 3, 2, 2, 2, 266, 3002, 3, 2, 2, 2, 268, 3011, 3, 2, 2, 2, 270, 3013, 3, 2, 2, 2, 272, 3015, 3, 2, 2, 2, 274, 3017, 3, 2, 2, 2, 276, 280, 5, 16, 9, 2, 277, 279, 7, 3, 2, 2, 278, 277, 3, 2, 2, 2, 279, 282, 3, 2, 2, 2, 280, 278, 3, 2, 2, 2, 280, 281, 3, 2, 2, 2, 281, 283, 3, 2, 2, 2, 282, 280, 3, 2, 2, 2, 283, 284, 7, 2, 2, 3, 284, 3, 3, 2, 2, 2, 285, 286, 5, 178, 90, 2, 286, 287, 7, 2, 2, 3, 287, 5, 3, 2, 2, 2, 288, 289, 5, 174, 88, 2, 289, 290, 7, 2, 2, 3, 290, 7, 3, 2, 2, 2, 291, 292, 5, 172, 87, 2, 292, 293, 7, 2, 2, 3, 293, 9, 3, 2, 2, 2, 294, 295, 5, 176, 89, 2, 295, 296, 7, 2, 2, 3, 296, 11, 3, 2, 2, 2, 297, 298, 5, 224, 113, 2, 298, 299, 7, 2, 2, 3, 299, 13, 3, 2, 2, 2, 300, 301, 5, 230, 116, 2, 301, 302, 7, 2, 2, 3, 302, 15, 3, 2, 2, 2, 303, 1028, 5, 32, 17, 2, 304, 306, 5, 48, 25, 2, 305, 304, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 307, 3, 2, 2, 2, 307, 1028, 5, 76, 39, 2, 308, 310, 7, 255, 2, 2, 309, 311, 7, 151, 2, 2, 310, 309, 3, 2, 2, 2, 310, 311, 3, 2, 2, 2, 311, 312, 3, 2, 2, 2, 312, 1028, 5, 172, 87, 2, 313, 314, 7, 55, 2, 2, 314, 318, 5, 42, 22, 2, 315, 316, 7, 112, 2, 2, 316, 317, 7, 155, 2, 2, 317, 319, 7, 85, 2, 2, 318, 315, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 328, 5, 172, 87, 2, 321, 327, 5, 30, 16, 2, 322, 327, 5, 28, 15, 2, 323, 324, 7, 264, 2, 2, 324, 325, 9, 2, 2, 2, 325, 327, 5, 56, 29, 2, 326, 321, 3, 2, 2, 2, 326, 322, 3, 2, 2, 2, 326, 323, 3, 2, 2, 2, 327, 330, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 328, 329, 3, 2, 2, 2, 329, 1028, 3, 2, 2, 2, 330, 328, 3, 2, 2, 2, 331, 332, 7, 17, 2, 2, 332, 333, 5, 42, 22, 2, 333, 334, 5, 172, 87, 2, 334, 335, 7, 214, 2, 2, 335, 336, 9, 2, 2, 2, 336, 337, 5, 56, 29, 2, 337, 1028, 3, 2, 2, 2, 338, 339, 7, 17, 2, 2, 339, 340, 5, 42, 22, 2, 340, 341, 5, 172, 87, 2, 341, 342, 7, 214, 2, 2, 342, 343, 5, 28, 15, 2, 343, 1028, 3, 2, 2, 2, 344, 345, 7, 78, 2, 2, 345, 348, 5, 42, 22, 2, 346, 347, 7, 112, 2, 2, 347, 349, 7, 85, 2, 2, 348, 346, 3, 2, 2, 2, 348, 349, 3, 2, 2, 2, 349, 350, 3, 2, 2, 2, 350, 352, 5, 172, 87, 2, 351, 353, 9, 3, 2, 2, 352, 351, 3, 2, 2, 2, 352, 353, 3, 2, 2, 2, 353, 1028, 3, 2, 2, 2, 354, 355, 7, 217, 2, 2, 355, 358, 9, 4, 2, 2, 356, 357, 9, 5, 2, 2, 357, 359, 5, 172, 87, 2, 358, 356, 3, 2, 2, 2, 358, 359, 3, 2, 2, 2, 359, 364, 3, 2, 2, 2, 360, 362, 7, 134, 2, 2, 361, 360, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 363, 3, 2, 2, 2, 363, 365, 7, 285, 2, 2, 364, 361, 3, 2, 2, 2, 364, 365, 3, 2, 2, 2, 365, 1028, 3, 2, 2, 2, 366, 367, 6, 9, 2, 2, 367, 372, 5, 20, 11, 2, 368, 369, 7, 4, 2, 2, 369, 370, 5, 230, 116, 2, 370, 371, 7, 5, 2, 2, 371, 373, 3, 2, 2, 2, 372, 368, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 376, 5, 52, 27, 2, 375, 374, 3, 2, 2, 2, 375, 376, 3, 2, 2, 2, 376, 377, 3, 2, 2, 2, 377, 382, 5, 54, 28, 2, 378, 380, 7, 24, 2, 2, 379, 378, 3, 2, 2, 2, 379, 380, 3, 2, 2, 2, 380, 381, 3, 2, 2, 2, 381, 383, 5, 32, 17, 2, 382, 379, 3, 2, 2, 2, 382, 383, 3, 2, 2, 2, 383, 1028, 3, 2, 2, 2, 384, 385, 6, 9, 3, 2, 385, 390, 5, 20, 11, 2, 386, 387, 7, 4, 2, 2, 387, 388, 5, 230, 116, 2, 388, 389, 7, 5, 2, 2, 389, 391, 3, 2, 2, 2, 390, 386, 3, 2, 2, 2, 390, 391, 3, 2, 2, 2, 391, 392, 3, 2, 2, 2, 392, 393, 5, 52, 27, 2, 393, 398, 5, 54, 28, 2, 394, 396, 7, 24, 2, 2, 395, 394, 3, 2, 2, 2, 395, 396, 3, 2, 2, 2, 396, 397, 3, 2, 2, 2, 397, 399, 5, 32, 17, 2, 398, 395, 3, 2, 2, 2, 398, 399, 3, 2, 2, 2, 399, 1028, 3, 2, 2, 2, 400, 405, 5, 20, 11, 2, 401, 402, 7, 4, 2, 2, 402, 403, 5, 230, 116, 2, 403, 404, 7, 5, 2, 2, 404, 406, 3, 2, 2, 2, 405, 401, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 428, 3, 2, 2, 2, 407, 427, 5, 30, 16, 2, 408, 409, 7, 173, 2, 2, 409, 410, 7, 32, 2, 2, 410, 411, 7, 4, 2, 2, 411, 412, 5, 230, 116, 2, 412, 413, 7, 5, 2, 2, 413, 418, 3, 2, 2, 2, 414, 415, 7, 173, 2, 2, 415, 416, 7, 32, 2, 2, 416, 418, 5, 148, 75, 2, 417, 408, 3, 2, 2, 2, 417, 414, 3, 2, 2, 2, 418, 427, 3, 2, 2, 2, 419, 427, 5, 24, 13, 2, 420, 427, 5, 26, 14, 2, 421, 427, 5, 168, 85, 2, 422, 427, 5, 68, 35, 2, 423, 427, 5, 28, 15, 2, 424, 425, 7, 232, 2, 2, 425, 427, 5, 56, 29, 2, 426, 407, 3, 2, 2, 2, 426, 417, 3, 2, 2, 2, 426, 419, 3, 2, 2, 2, 426, 420, 3, 2, 2, 2, 426, 421, 3, 2, 2, 2, 426, 422, 3, 2, 2, 2, 426, 423, 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 427, 430, 3, 2, 2, 2, 428, 426, 3, 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 435, 3, 2, 2, 2, 430, 428, 3, 2, 2, 2, 431, 433, 7, 24, 2, 2, 432, 431, 3, 2, 2, 2, 432, 433, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, 436, 5, 32, 17, 2, 435, 432, 3, 2, 2, 2, 435, 436, 3, 2, 2, 2, 436, 1028, 3, 2, 2, 2, 437, 438, 7, 55, 2, 2, 438, 442, 7, 229, 2, 2, 439, 440, 7, 112, 2, 2, 440, 441, 7, 155, 2, 2, 441, 443, 7, 85, 2, 2, 442, 439, 3, 2, 2, 2, 442, 443, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 445, 5, 174, 88, 2, 445, 446, 7, 134, 2, 2, 446, 455, 5, 174, 88, 2, 447, 454, 5, 52, 27, 2, 448, 454, 5, 168, 85, 2, 449, 454, 5, 68, 35, 2, 450, 454, 5, 28, 15, 2, 451, 452, 7, 232, 2, 2, 452, 454, 5, 56, 29, 2, 453, 447, 3, 2, 2, 2, 453, 448, 3, 2, 2, 2, 453, 449, 3, 2, 2, 2, 453, 450, 3, 2, 2, 2, 453, 451, 3, 2, 2, 2, 454, 457, 3, 2, 2, 2, 455, 453, 3, 2, 2, 2, 455, 456, 3, 2, 2, 2, 456, 1028, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 458, 463, 5, 22, 12, 2, 459, 460, 7, 4, 2, 2, 460, 461, 5, 230, 116, 2, 461, 462, 7, 5, 2, 2, 462, 464, 3, 2, 2, 2, 463, 459, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 466, 5, 52, 27, 2, 466, 471, 5, 54, 28, 2, 467, 469, 7, 24, 2, 2, 468, 467, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 470, 3, 2, 2, 2, 470, 472, 5, 32, 17, 2, 471, 468, 3, 2, 2, 2, 471, 472, 3, 2, 2, 2, 472, 1028, 3, 2, 2, 2, 473, 474, 7, 18, 2, 2, 474, 475, 7, 229, 2, 2, 475, 477, 5, 172, 87, 2, 476, 478, 5, 38, 20, 2, 477, 476, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 480, 7, 51, 2, 2, 480, 488, 7, 223, 2, 2, 481, 489, 5, 260, 131, 2, 482, 483, 7, 98, 2, 2, 483, 484, 7, 46, 2, 2, 484, 489, 5, 150, 76, 2, 485, 486, 7, 98, 2, 2, 486, 487, 7, 16, 2, 2, 487, 489, 7, 46, 2, 2, 488, 481, 3, 2, 2, 2, 488, 482, 3, 2, 2, 2, 488, 485, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 1028, 3, 2, 2, 2, 490, 491, 7, 17, 2, 2, 491, 492, 7, 229, 2, 2, 492, 493, 5, 172, 87, 2, 493, 494, 7, 14, 2, 2, 494, 495, 9, 6, 2, 2, 495, 496, 5, 226, 114, 2, 496, 1028, 3, 2, 2, 2, 497, 498, 7, 17, 2, 2, 498, 499, 7, 229, 2, 2, 499, 500, 5, 172, 87, 2, 500, 501, 7, 14, 2, 2, 501, 502, 9, 6, 2, 2, 502, 503, 7, 4, 2, 2, 503, 504, 5, 226, 114, 2, 504, 505, 7, 5, 2, 2, 505, 1028, 3, 2, 2, 2, 506, 507, 7, 17, 2, 2, 507, 508, 7, 229, 2, 2, 508, 509, 5, 172, 87, 2, 509, 510, 7, 192, 2, 2, 510, 511, 7, 45, 2, 2, 511, 512, 5, 172, 87, 2, 512, 513, 7, 236, 2, 2, 513, 514, 5, 256, 129, 2, 514, 1028, 3, 2, 2, 2, 515, 516, 7, 17, 2, 2, 516, 517, 7, 229, 2, 2, 517, 518, 5, 172, 87, 2, 518, 519, 7, 78, 2, 2, 519, 520, 9, 6, 2, 2, 520, 521, 7, 4, 2, 2, 521, 522, 5, 170, 86, 2, 522, 523, 7, 5, 2, 2, 523, 1028, 3, 2, 2, 2, 524, 525, 7, 17, 2, 2, 525, 526, 7, 229, 2, 2, 526, 527, 5, 172, 87, 2, 527, 528, 7, 78, 2, 2, 528, 529, 9, 6, 2, 2, 529, 530, 5, 170, 86, 2, 530, 1028, 3, 2, 2, 2, 531, 532, 7, 17, 2, 2, 532, 533, 9, 7, 2, 2, 533, 534, 5, 172, 87, 2, 534, 535, 7, 192, 2, 2, 535, 536, 7, 236, 2, 2, 536, 537, 5, 172, 87, 2, 537, 1028, 3, 2, 2, 2, 538, 539, 7, 17, 2, 2, 539, 540, 9, 7, 2, 2, 540, 541, 5, 172, 87, 2, 541, 542, 7, 214, 2, 2, 542, 543, 7, 232, 2, 2, 543, 544, 5, 56, 29, 2, 544, 1028, 3, 2, 2, 2, 545, 546, 7, 17, 2, 2, 546, 547, 9, 7, 2, 2, 547, 548, 5, 172, 87, 2, 548, 549, 7, 253, 2, 2, 549, 552, 7, 232, 2, 2, 550, 551, 7, 112, 2, 2, 551, 553, 7, 85, 2, 2, 552, 550, 3, 2, 2, 2, 552, 553, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 555, 5, 56, 29, 2, 555, 1028, 3, 2, 2, 2, 556, 557, 7, 17, 2, 2, 557, 558, 7, 229, 2, 2, 558, 559, 5, 172, 87, 2, 559, 561, 9, 8, 2, 2, 560, 562, 7, 45, 2, 2, 561, 560, 3, 2, 2, 2, 561, 562, 3, 2, 2, 2, 562, 563, 3, 2, 2, 2, 563, 565, 5, 172, 87, 2, 564, 566, 5, 268, 135, 2, 565, 564, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 1028, 3, 2, 2, 2, 567, 568, 7, 17, 2, 2, 568, 569, 7, 229, 2, 2, 569, 571, 5, 172, 87, 2, 570, 572, 5, 38, 20, 2, 571, 570, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 575, 7, 37, 2, 2, 574, 576, 7, 45, 2, 2, 575, 574, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 578, 5, 172, 87, 2, 578, 580, 5, 232, 117, 2, 579, 581, 5, 222, 112, 2, 580, 579, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 1028, 3, 2, 2, 2, 582, 583, 7, 17, 2, 2, 583, 584, 7, 229, 2, 2, 584, 586, 5, 172, 87, 2, 585, 587, 5, 38, 20, 2, 586, 585, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 589, 7, 194, 2, 2, 589, 590, 7, 46, 2, 2, 590, 591, 7, 4, 2, 2, 591, 592, 5, 226, 114, 2, 592, 593, 7, 5, 2, 2, 593, 1028, 3, 2, 2, 2, 594, 595, 7, 17, 2, 2, 595, 596, 7, 229, 2, 2, 596, 598, 5, 172, 87, 2, 597, 599, 5, 38, 20, 2, 598, 597, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 601, 7, 214, 2, 2, 601, 602, 7, 211, 2, 2, 602, 606, 7, 285, 2, 2, 603, 604, 7, 264, 2, 2, 604, 605, 7, 212, 2, 2, 605, 607, 5, 56, 29, 2, 606, 603, 3, 2, 2, 2, 606, 607, 3, 2, 2, 2, 607, 1028, 3, 2, 2, 2, 608, 609, 7, 17, 2, 2, 609, 610, 7, 229, 2, 2, 610, 612, 5, 172, 87, 2, 611, 613, 5, 38, 20, 2, 612, 611, 3, 2, 2, 2, 612, 613, 3, 2, 2, 2, 613, 614, 3, 2, 2, 2, 614, 615, 7, 214, 2, 2, 615, 616, 7, 212, 2, 2, 616, 617, 5, 56, 29, 2, 617, 1028, 3, 2, 2, 2, 618, 619, 7, 17, 2, 2, 619, 620, 9, 7, 2, 2, 620, 621, 5, 172, 87, 2, 621, 625, 7, 14, 2, 2, 622, 623, 7, 112, 2, 2, 623, 624, 7, 155, 2, 2, 624, 626, 7, 85, 2, 2, 625, 622, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 626, 628, 3, 2, 2, 2, 627, 629, 5, 36, 19, 2, 628, 627, 3, 2, 2, 2, 629, 630, 3, 2, 2, 2, 630, 628, 3, 2, 2, 2, 630, 631, 3, 2, 2, 2, 631, 1028, 3, 2, 2, 2, 632, 633, 7, 17, 2, 2, 633, 634, 7, 229, 2, 2, 634, 635, 5, 172, 87, 2, 635, 636, 5, 38, 20, 2, 636, 637, 7, 192, 2, 2, 637, 638, 7, 236, 2, 2, 638, 639, 5, 38, 20, 2, 639, 1028, 3, 2, 2, 2, 640, 641, 7, 17, 2, 2, 641, 642, 9, 7, 2, 2, 642, 643, 5, 172, 87, 2, 643, 646, 7, 78, 2, 2, 644, 645, 7, 112, 2, 2, 645, 647, 7, 85, 2, 2, 646, 644, 3, 2, 2, 2, 646, 647, 3, 2, 2, 2, 647, 648, 3, 2, 2, 2, 648, 653, 5, 38, 20, 2, 649, 650, 7, 6, 2, 2, 650, 652, 5, 38, 20, 2, 651, 649, 3, 2, 2, 2, 652, 655, 3, 2, 2, 2, 653, 651, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 657, 3, 2, 2, 2, 655, 653, 3, 2, 2, 2, 656, 658, 7, 183, 2, 2, 657, 656, 3, 2, 2, 2, 657, 658, 3, 2, 2, 2, 658, 1028, 3, 2, 2, 2, 659, 660, 7, 17, 2, 2, 660, 661, 7, 229, 2, 2, 661, 663, 5, 172, 87, 2, 662, 664, 5, 38, 20, 2, 663, 662, 3, 2, 2, 2, 663, 664, 3, 2, 2, 2, 664, 665, 3, 2, 2, 2, 665, 666, 7, 214, 2, 2, 666, 667, 5, 28, 15, 2, 667, 1028, 3, 2, 2, 2, 668, 669, 7, 17, 2, 2, 669, 670, 7, 229, 2, 2, 670, 671, 5, 172, 87, 2, 671, 672, 7, 188, 2, 2, 672, 673, 7, 174, 2, 2, 673, 1028, 3, 2, 2, 2, 674, 675, 7, 78, 2, 2, 675, 678, 7, 229, 2, 2, 676, 677, 7, 112, 2, 2, 677, 679, 7, 85, 2, 2, 678, 676, 3, 2, 2, 2, 678, 679, 3, 2, 2, 2, 679, 680, 3, 2, 2, 2, 680, 682, 5, 172, 87, 2, 681, 683, 7, 183, 2, 2, 682, 681, 3, 2, 2, 2, 682, 683, 3, 2, 2, 2, 683, 1028, 3, 2, 2, 2, 684, 685, 7, 78, 2, 2, 685, 688, 7, 259, 2, 2, 686, 687, 7, 112, 2, 2, 687, 689, 7, 85, 2, 2, 688, 686, 3, 2, 2, 2, 688, 689, 3, 2, 2, 2, 689, 690, 3, 2, 2, 2, 690, 1028, 5, 172, 87, 2, 691, 694, 7, 55, 2, 2, 692, 693, 7, 163, 2, 2, 693, 695, 7, 194, 2, 2, 694, 692, 3, 2, 2, 2, 694, 695, 3, 2, 2, 2, 695, 700, 3, 2, 2, 2, 696, 698, 7, 106, 2, 2, 697, 696, 3, 2, 2, 2, 697, 698, 3, 2, 2, 2, 698, 699, 3, 2, 2, 2, 699, 701, 7, 233, 2, 2, 700, 697, 3, 2, 2, 2, 700, 701, 3, 2, 2, 2, 701, 702, 3, 2, 2, 2, 702, 706, 7, 259, 2, 2, 703, 704, 7, 112, 2, 2, 704, 705, 7, 155, 2, 2, 705, 707, 7, 85, 2, 2, 706, 703, 3, 2, 2, 2, 706, 707, 3, 2, 2, 2, 707, 708, 3, 2, 2, 2, 708, 710, 5, 172, 87, 2, 709, 711, 5, 156, 79, 2, 710, 709, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 720, 3, 2, 2, 2, 712, 719, 5, 30, 16, 2, 713, 714, 7, 173, 2, 2, 714, 715, 7, 159, 2, 2, 715, 719, 5, 148, 75, 2, 716, 717, 7, 232, 2, 2, 717, 719, 5, 56, 29, 2, 718, 712, 3, 2, 2, 2, 718, 713, 3, 2, 2, 2, 718, 716, 3, 2, 2, 2, 719, 722, 3, 2, 2, 2, 720, 718, 3, 2, 2, 2, 720, 721, 3, 2, 2, 2, 721, 723, 3, 2, 2, 2, 722, 720, 3, 2, 2, 2, 723, 724, 7, 24, 2, 2, 724, 725, 5, 32, 17, 2, 725, 1028, 3, 2, 2, 2, 726, 729, 7, 55, 2, 2, 727, 728, 7, 163, 2, 2, 728, 730, 7, 194, 2, 2, 729, 727, 3, 2, 2, 2, 729, 730, 3, 2, 2, 2, 730, 732, 3, 2, 2, 2, 731, 733, 7, 106, 2, 2, 732, 731, 3, 2, 2, 2, 732, 733, 3, 2, 2, 2, 733, 734, 3, 2, 2, 2, 734, 735, 7, 233, 2, 2, 735, 736, 7, 259, 2, 2, 736, 741, 5, 174, 88, 2, 737, 738, 7, 4, 2, 2, 738, 739, 5, 230, 116, 2, 739, 740, 7, 5, 2, 2, 740, 742, 3, 2, 2, 2, 741, 737, 3, 2, 2, 2, 741, 742, 3, 2, 2, 2, 742, 743, 3, 2, 2, 2, 743, 746, 5, 52, 27, 2, 744, 745, 7, 162, 2, 2, 745, 747, 5, 56, 29, 2, 746, 744, 3, 2, 2, 2, 746, 747, 3, 2, 2, 2, 747, 1028, 3, 2, 2, 2, 748, 749, 7, 17, 2, 2, 749, 750, 7, 259, 2, 2, 750, 752, 5, 172, 87, 2, 751, 753, 7, 24, 2, 2, 752, 751, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 754, 3, 2, 2, 2, 754, 755, 5, 32, 17, 2, 755, 1028, 3, 2, 2, 2, 756, 759, 7, 55, 2, 2, 757, 758, 7, 163, 2, 2, 758, 760, 7, 194, 2, 2, 759, 757, 3, 2, 2, 2, 759, 760, 3, 2, 2, 2, 760, 762, 3, 2, 2, 2, 761, 763, 7, 233, 2, 2, 762, 761, 3, 2, 2, 2, 762, 763, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 768, 7, 104, 2, 2, 765, 766, 7, 112, 2, 2, 766, 767, 7, 155, 2, 2, 767, 769, 7, 85, 2, 2, 768, 765, 3, 2, 2, 2, 768, 769, 3, 2, 2, 2, 769, 770, 3, 2, 2, 2, 770, 771, 5, 172, 87, 2, 771, 772, 7, 24, 2, 2, 772, 782, 7, 285, 2, 2, 773, 774, 7, 257, 2, 2, 774, 779, 5, 74, 38, 2, 775, 776, 7, 6, 2, 2, 776, 778, 5, 74, 38, 2, 777, 775, 3, 2, 2, 2, 778, 781, 3, 2, 2, 2, 779, 777, 3, 2, 2, 2, 779, 780, 3, 2, 2, 2, 780, 783, 3, 2, 2, 2, 781, 779, 3, 2, 2, 2, 782, 773, 3, 2, 2, 2, 782, 783, 3, 2, 2, 2, 783, 1028, 3, 2, 2, 2, 784, 786, 7, 78, 2, 2, 785, 787, 7, 233, 2, 2, 786, 785, 3, 2, 2, 2, 786, 787, 3, 2, 2, 2, 787, 788, 3, 2, 2, 2, 788, 791, 7, 104, 2, 2, 789, 790, 7, 112, 2, 2, 790, 792, 7, 85, 2, 2, 791, 789, 3, 2, 2, 2, 791, 792, 3, 2, 2, 2, 792, 793, 3, 2, 2, 2, 793, 1028, 5, 172, 87, 2, 794, 796, 7, 86, 2, 2, 795, 797, 9, 9, 2, 2, 796, 795, 3, 2, 2, 2, 796, 797, 3, 2, 2, 2, 797, 798, 3, 2, 2, 2, 798, 1028, 5, 16, 9, 2, 799, 800, 7, 217, 2, 2, 800, 803, 7, 230, 2, 2, 801, 802, 9, 5, 2, 2, 802, 804, 5, 172, 87, 2, 803, 801, 3, 2, 2, 2, 803, 804, 3, 2, 2, 2, 804, 809, 3, 2, 2, 2, 805, 807, 7, 134, 2, 2, 806, 805, 3, 2, 2, 2, 806, 807, 3, 2, 2, 2, 807, 808, 3, 2, 2, 2, 808, 810, 7, 285, 2, 2, 809, 806, 3, 2, 2, 2, 809, 810, 3, 2, 2, 2, 810, 1028, 3, 2, 2, 2, 811, 812, 7, 217, 2, 2, 812, 813, 7, 229, 2, 2, 813, 816, 7, 88, 2, 2, 814, 815, 9, 5, 2, 2, 815, 817, 5, 172, 87, 2, 816, 814, 3, 2, 2, 2, 816, 817, 3, 2, 2, 2, 817, 818, 3, 2, 2, 2, 818, 819, 7, 134, 2, 2, 819, 821, 7, 285, 2, 2, 820, 822, 5, 38, 20, 2, 821, 820, 3, 2, 2, 2, 821, 822, 3, 2, 2, 2, 822, 1028, 3, 2, 2, 2, 823, 824, 7, 217, 2, 2, 824, 825, 7, 232, 2, 2, 825, 830, 5, 172, 87, 2, 826, 827, 7, 4, 2, 2, 827, 828, 5, 60, 31, 2, 828, 829, 7, 5, 2, 2, 829, 831, 3, 2, 2, 2, 830, 826, 3, 2, 2, 2, 830, 831, 3, 2, 2, 2, 831, 1028, 3, 2, 2, 2, 832, 833, 7, 217, 2, 2, 833, 834, 7, 46, 2, 2, 834, 835, 9, 5, 2, 2, 835, 838, 5, 172, 87, 2, 836, 837, 9, 5, 2, 2, 837, 839, 5, 172, 87, 2, 838, 836, 3, 2, 2, 2, 838, 839, 3, 2, 2, 2, 839, 1028, 3, 2, 2, 2, 840, 841, 7, 217, 2, 2, 841, 844, 7, 260, 2, 2, 842, 843, 9, 5, 2, 2, 843, 845, 5, 172, 87, 2, 844, 842, 3, 2, 2, 2, 844, 845, 3, 2, 2, 2, 845, 850, 3, 2, 2, 2, 846, 848, 7, 134, 2, 2, 847, 846, 3, 2, 2, 2, 847, 848, 3, 2, 2, 2, 848, 849, 3, 2, 2, 2, 849, 851, 7, 285, 2, 2, 850, 847, 3, 2, 2, 2, 850, 851, 3, 2, 2, 2, 851, 1028, 3, 2, 2, 2, 852, 853, 7, 217, 2, 2, 853, 854, 7, 174, 2, 2, 854, 856, 5, 172, 87, 2, 855, 857, 5, 38, 20, 2, 856, 855, 3, 2, 2, 2, 856, 857, 3, 2, 2, 2, 857, 1028, 3, 2, 2, 2, 858, 860, 7, 217, 2, 2, 859, 861, 5, 260, 131, 2, 860, 859, 3, 2, 2, 2, 860, 861, 3, 2, 2, 2, 861, 862, 3, 2, 2, 2, 862, 870, 7, 105, 2, 2, 863, 865, 7, 134, 2, 2, 864, 863, 3, 2, 2, 2, 864, 865, 3, 2, 2, 2, 865, 868, 3, 2, 2, 2, 866, 869, 5, 172, 87, 2, 867, 869, 7, 285, 2, 2, 868, 866, 3, 2, 2, 2, 868, 867, 3, 2, 2, 2, 869, 871, 3, 2, 2, 2, 870, 864, 3, 2, 2, 2, 870, 871, 3, 2, 2, 2, 871, 1028, 3, 2, 2, 2, 872, 873, 7, 217, 2, 2, 873, 874, 7, 55, 2, 2, 874, 875, 7, 229, 2, 2, 875, 878, 5, 172, 87, 2, 876, 877, 7, 24, 2, 2, 877, 879, 7, 211, 2, 2, 878, 876, 3, 2, 2, 2, 878, 879, 3, 2, 2, 2, 879, 1028, 3, 2, 2, 2, 880, 881, 7, 217, 2, 2, 881, 882, 7, 58, 2, 2, 882, 1028, 7, 151, 2, 2, 883, 884, 9, 10, 2, 2, 884, 886, 7, 104, 2, 2, 885, 887, 7, 88, 2, 2, 886, 885, 3, 2, 2, 2, 886, 887, 3, 2, 2, 2, 887, 888, 3, 2, 2, 2, 888, 1028, 5, 44, 23, 2, 889, 890, 9, 10, 2, 2, 890, 892, 5, 42, 22, 2, 891, 893, 7, 88, 2, 2, 892, 891, 3, 2, 2, 2, 892, 893, 3, 2, 2, 2, 893, 894, 3, 2, 2, 2, 894, 895, 5, 172, 87, 2, 895, 1028, 3, 2, 2, 2, 896, 898, 9, 10, 2, 2, 897, 899, 7, 229, 2, 2, 898, 897, 3, 2, 2, 2, 898, 899, 3, 2, 2, 2, 899, 901, 3, 2, 2, 2, 900, 902, 9, 11, 2, 2, 901, 900, 3, 2, 2, 2, 901, 902, 3, 2, 2, 2, 902, 903, 3, 2, 2, 2, 903, 905, 5, 172, 87, 2, 904, 906, 5, 38, 20, 2, 905, 904, 3, 2, 2, 2, 905, 906, 3, 2, 2, 2, 906, 908, 3, 2, 2, 2, 907, 909, 5, 46, 24, 2, 908, 907, 3, 2, 2, 2, 908, 909, 3, 2, 2, 2, 909, 1028, 3, 2, 2, 2, 910, 912, 9, 10, 2, 2, 911, 913, 7, 184, 2, 2, 912, 911, 3, 2, 2, 2, 912, 913, 3, 2, 2, 2, 913, 914, 3, 2, 2, 2, 914, 1028, 5, 32, 17, 2, 915, 916, 7, 47, 2, 2, 916, 917, 7, 159, 2, 2, 917, 918, 5, 42, 22, 2, 918, 919, 5, 172, 87, 2, 919, 920, 7, 125, 2, 2, 920, 921, 9, 12, 2, 2, 921, 1028, 3, 2, 2, 2, 922, 923, 7, 47, 2, 2, 923, 924, 7, 159, 2, 2, 924, 925, 7, 229, 2, 2, 925, 926, 5, 172, 87, 2, 926, 927, 7, 125, 2, 2, 927, 928, 9, 12, 2, 2, 928, 1028, 3, 2, 2, 2, 929, 930, 7, 191, 2, 2, 930, 931, 7, 229, 2, 2, 931, 1028, 5, 172, 87, 2, 932, 940, 7, 191, 2, 2, 933, 941, 7, 285, 2, 2, 934, 936, 11, 2, 2, 2, 935, 934, 3, 2, 2, 2, 936, 939, 3, 2, 2, 2, 937, 938, 3, 2, 2, 2, 937, 935, 3, 2, 2, 2, 938, 941, 3, 2, 2, 2, 939, 937, 3, 2, 2, 2, 940, 933, 3, 2, 2, 2, 940, 937, 3, 2, 2, 2, 941, 1028, 3, 2, 2, 2, 942, 944, 7, 33, 2, 2, 943, 945, 7, 131, 2, 2, 944, 943, 3, 2, 2, 2, 944, 945, 3, 2, 2, 2, 945, 946, 3, 2, 2, 2, 946, 947, 7, 229, 2, 2, 947, 950, 5, 172, 87, 2, 948, 949, 7, 162, 2, 2, 949, 951, 5, 56, 29, 2, 950, 948, 3, 2, 2, 2, 950, 951, 3, 2, 2, 2, 951, 956, 3, 2, 2, 2, 952, 954, 7, 24, 2, 2, 953, 952, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 957, 5, 32, 17, 2, 956, 953, 3, 2, 2, 2, 956, 957, 3, 2, 2, 2, 957, 1028, 3, 2, 2, 2, 958, 959, 7, 248, 2, 2, 959, 962, 7, 229, 2, 2, 960, 961, 7, 112, 2, 2, 961, 963, 7, 85, 2, 2, 962, 960, 3, 2, 2, 2, 962, 963, 3, 2, 2, 2, 963, 964, 3, 2, 2, 2, 964, 1028, 5, 172, 87, 2, 965, 966, 7, 39, 2, 2, 966, 1028, 7, 33, 2, 2, 967, 968, 7, 138, 2, 2, 968, 970, 7, 63, 2, 2, 969, 971, 7, 139, 2, 2, 970, 969, 3, 2, 2, 2, 970, 971, 3, 2, 2, 2, 971, 972, 3, 2, 2, 2, 972, 973, 7, 119, 2, 2, 973, 975, 7, 285, 2, 2, 974, 976, 7, 171, 2, 2, 975, 974, 3, 2, 2, 2, 975, 976, 3, 2, 2, 2, 976, 977, 3, 2, 2, 2, 977, 978, 7, 124, 2, 2, 978, 979, 7, 229, 2, 2, 979, 981, 5, 172, 87, 2, 980, 982, 5, 38, 20, 2, 981, 980, 3, 2, 2, 2, 981, 982, 3, 2, 2, 2, 982, 1028, 3, 2, 2, 2, 983, 984, 7, 244, 2, 2, 984, 985, 7, 229, 2, 2, 985, 987, 5, 172, 87, 2, 986, 988, 5, 38, 20, 2, 987, 986, 3, 2, 2, 2, 987, 988, 3, 2, 2, 2, 988, 1028, 3, 2, 2, 2, 989, 990, 7, 150, 2, 2, 990, 991, 7, 193, 2, 2, 991, 992, 7, 229, 2, 2, 992, 1028, 5, 172, 87, 2, 993, 994, 9, 13, 2, 2, 994, 1002, 5, 260, 131, 2, 995, 1003, 7, 285, 2, 2, 996, 998, 11, 2, 2, 2, 997, 996, 3, 2, 2, 2, 998, 1001, 3, 2, 2, 2, 999, 1000, 3, 2, 2, 2, 999, 997, 3, 2, 2, 2, 1000, 1003, 3, 2, 2, 2, 1001, 999, 3, 2, 2, 2, 1002, 995, 3, 2, 2, 2, 1002, 999, 3, 2, 2, 2, 1003, 1028, 3, 2, 2, 2, 1004, 1005, 7, 214, 2, 2, 1005, 1009, 7, 200, 2, 2, 1006, 1008, 11, 2, 2, 2, 1007, 1006, 3, 2, 2, 2, 1008, 1011, 3, 2, 2, 2, 1009, 1010, 3, 2, 2, 2, 1009, 1007, 3, 2, 2, 2, 1010, 1028, 3, 2, 2, 2, 1011, 1009, 3, 2, 2, 2, 1012, 1016, 7, 214, 2, 2, 1013, 1015, 11, 2, 2, 2, 1014, 1013, 3, 2, 2, 2, 1015, 1018, 3, 2, 2, 2, 1016, 1017, 3, 2, 2, 2, 1016, 1014, 3, 2, 2, 2, 1017, 1028, 3, 2, 2, 2, 1018, 1016, 3, 2, 2, 2, 1019, 1028, 7, 195, 2, 2, 1020, 1024, 5, 18, 10, 2, 1021, 1023, 11, 2, 2, 2, 1022, 1021, 3, 2, 2, 2, 1023, 1026, 3, 2, 2, 2, 1024, 1025, 3, 2, 2, 2, 1024, 1022, 3, 2, 2, 2, 1025, 1028, 3, 2, 2, 2, 1026, 1024, 3, 2, 2, 2, 1027, 303, 3, 2, 2, 2, 1027, 305, 3, 2, 2, 2, 1027, 308, 3, 2, 2, 2, 1027, 313, 3, 2, 2, 2, 1027, 331, 3, 2, 2, 2, 1027, 338, 3, 2, 2, 2, 1027, 344, 3, 2, 2, 2, 1027, 354, 3, 2, 2, 2, 1027, 366, 3, 2, 2, 2, 1027, 384, 3, 2, 2, 2, 1027, 400, 3, 2, 2, 2, 1027, 437, 3, 2, 2, 2, 1027, 458, 3, 2, 2, 2, 1027, 473, 3, 2, 2, 2, 1027, 490, 3, 2, 2, 2, 1027, 497, 3, 2, 2, 2, 1027, 506, 3, 2, 2, 2, 1027, 515, 3, 2, 2, 2, 1027, 524, 3, 2, 2, 2, 1027, 531, 3, 2, 2, 2, 1027, 538, 3, 2, 2, 2, 1027, 545, 3, 2, 2, 2, 1027, 556, 3, 2, 2, 2, 1027, 567, 3, 2, 2, 2, 1027, 582, 3, 2, 2, 2, 1027, 594, 3, 2, 2, 2, 1027, 608, 3, 2, 2, 2, 1027, 618, 3, 2, 2, 2, 1027, 632, 3, 2, 2, 2, 1027, 640, 3, 2, 2, 2, 1027, 659, 3, 2, 2, 2, 1027, 668, 3, 2, 2, 2, 1027, 674, 3, 2, 2, 2, 1027, 684, 3, 2, 2, 2, 1027, 691, 3, 2, 2, 2, 1027, 726, 3, 2, 2, 2, 1027, 748, 3, 2, 2, 2, 1027, 756, 3, 2, 2, 2, 1027, 784, 3, 2, 2, 2, 1027, 794, 3, 2, 2, 2, 1027, 799, 3, 2, 2, 2, 1027, 811, 3, 2, 2, 2, 1027, 823, 3, 2, 2, 2, 1027, 832, 3, 2, 2, 2, 1027, 840, 3, 2, 2, 2, 1027, 852, 3, 2, 2, 2, 1027, 858, 3, 2, 2, 2, 1027, 872, 3, 2, 2, 2, 1027, 880, 3, 2, 2, 2, 1027, 883, 3, 2, 2, 2, 1027, 889, 3, 2, 2, 2, 1027, 896, 3, 2, 2, 2, 1027, 910, 3, 2, 2, 2, 1027, 915, 3, 2, 2, 2, 1027, 922, 3, 2, 2, 2, 1027, 929, 3, 2, 2, 2, 1027, 932, 3, 2, 2, 2, 1027, 942, 3, 2, 2, 2, 1027, 958, 3, 2, 2, 2, 1027, 965, 3, 2, 2, 2, 1027, 967, 3, 2, 2, 2, 1027, 983, 3, 2, 2, 2, 1027, 989, 3, 2, 2, 2, 1027, 993, 3, 2, 2, 2, 1027, 1004, 3, 2, 2, 2, 1027, 1012, 3, 2, 2, 2, 1027, 1019, 3, 2, 2, 2, 1027, 1020, 3, 2, 2, 2, 1028, 17, 3, 2, 2, 2, 1029, 1030, 7, 55, 2, 2, 1030, 1198, 7, 200, 2, 2, 1031, 1032, 7, 78, 2, 2, 1032, 1198, 7, 200, 2, 2, 1033, 1035, 7, 107, 2, 2, 1034, 1036, 7, 200, 2, 2, 1035, 1034, 3, 2, 2, 2, 1035, 1036, 3, 2, 2, 2, 1036, 1198, 3, 2, 2, 2, 1037, 1039, 7, 197, 2, 2, 1038, 1040, 7, 200, 2, 2, 1039, 1038, 3, 2, 2, 2, 1039, 1040, 3, 2, 2, 2, 1040, 1198, 3, 2, 2, 2, 1041, 1042, 7, 217, 2, 2, 1042, 1198, 7, 107, 2, 2, 1043, 1044, 7, 217, 2, 2, 1044, 1046, 7, 200, 2, 2, 1045, 1047, 7, 107, 2, 2, 1046, 1045, 3, 2, 2, 2, 1046, 1047, 3, 2, 2, 2, 1047, 1198, 3, 2, 2, 2, 1048, 1049, 7, 217, 2, 2, 1049, 1198, 7, 181, 2, 2, 1050, 1051, 7, 217, 2, 2, 1051, 1198, 7, 201, 2, 2, 1052, 1053, 7, 217, 2, 2, 1053, 1054, 7, 58, 2, 2, 1054, 1198, 7, 201, 2, 2, 1055, 1056, 7, 87, 2, 2, 1056, 1198, 7, 229, 2, 2, 1057, 1058, 7, 114, 2, 2, 1058, 1198, 7, 229, 2, 2, 1059, 1060, 7, 217, 2, 2, 1060, 1198, 7, 50, 2, 2, 1061, 1062, 7, 217, 2, 2, 1062, 1063, 7, 55, 2, 2, 1063, 1198, 7, 229, 2, 2, 1064, 1065, 7, 217, 2, 2, 1065, 1198, 7, 240, 2, 2, 1066, 1067, 7, 217, 2, 2, 1067, 1198, 7, 117, 2, 2, 1068, 1069, 7, 217, 2, 2, 1069, 1198, 7, 142, 2, 2, 1070, 1071, 7, 55, 2, 2, 1071, 1198, 7, 116, 2, 2, 1072, 1073, 7, 78, 2, 2, 1073, 1198, 7, 116, 2, 2, 1074, 1075, 7, 17, 2, 2, 1075, 1198, 7, 116, 2, 2, 1076, 1077, 7, 141, 2, 2, 1077, 1198, 7, 229, 2, 2, 1078, 1079, 7, 141, 2, 2, 1079, 1198, 7, 64, 2, 2, 1080, 1081, 7, 252, 2, 2, 1081, 1198, 7, 229, 2, 2, 1082, 1083, 7, 252, 2, 2, 1083, 1198, 7, 64, 2, 2, 1084, 1085, 7, 55, 2, 2, 1085, 1086, 7, 233, 2, 2, 1086, 1198, 7, 144, 2, 2, 1087, 1088, 7, 78, 2, 2, 1088, 1089, 7, 233, 2, 2, 1089, 1198, 7, 144, 2, 2, 1090, 1091, 7, 17, 2, 2, 1091, 1092, 7, 229, 2, 2, 1092, 1093, 5, 174, 88, 2, 1093, 1094, 7, 155, 2, 2, 1094, 1095, 7, 41, 2, 2, 1095, 1198, 3, 2, 2, 2, 1096, 1097, 7, 17, 2, 2, 1097, 1098, 7, 229, 2, 2, 1098, 1099, 5, 174, 88, 2, 1099, 1100, 7, 41, 2, 2, 1100, 1101, 7, 32, 2, 2, 1101, 1198, 3, 2, 2, 2, 1102, 1103, 7, 17, 2, 2, 1103, 1104, 7, 229, 2, 2, 1104, 1105, 5, 174, 88, 2, 1105, 1106, 7, 155, 2, 2, 1106, 1107, 7, 221, 2, 2, 1107, 1198, 3, 2, 2, 2, 1108, 1109, 7, 17, 2, 2, 1109, 1110, 7, 229, 2, 2, 1110, 1111, 5, 174, 88, 2, 1111, 1112, 7, 218, 2, 2, 1112, 1113, 7, 32, 2, 2, 1113, 1198, 3, 2, 2, 2, 1114, 1115, 7, 17, 2, 2, 1115, 1116, 7, 229, 2, 2, 1116, 1117, 5, 174, 88, 2, 1117, 1118, 7, 155, 2, 2, 1118, 1119, 7, 218, 2, 2, 1119, 1198, 3, 2, 2, 2, 1120, 1121, 7, 17, 2, 2, 1121, 1122, 7, 229, 2, 2, 1122, 1123, 5, 174, 88, 2, 1123, 1124, 7, 155, 2, 2, 1124, 1125, 7, 224, 2, 2, 1125, 1126, 7, 24, 2, 2, 1126, 1127, 7, 74, 2, 2, 1127, 1198, 3, 2, 2, 2, 1128, 1129, 7, 17, 2, 2, 1129, 1130, 7, 229, 2, 2, 1130, 1131, 5, 174, 88, 2, 1131, 1132, 7, 214, 2, 2, 1132, 1133, 7, 218, 2, 2, 1133, 1134, 7, 140, 2, 2, 1134, 1198, 3, 2, 2, 2, 1135, 1136, 7, 17, 2, 2, 1136, 1137, 7, 229, 2, 2, 1137, 1138, 5, 174, 88, 2, 1138, 1139, 7, 84, 2, 2, 1139, 1140, 7, 172, 2, 2, 1140, 1198, 3, 2, 2, 2, 1141, 1142, 7, 17, 2, 2, 1142, 1143, 7, 229, 2, 2, 1143, 1144, 5, 174, 88, 2, 1144, 1145, 7, 22, 2, 2, 1145, 1146, 7, 172, 2, 2, 1146, 1198, 3, 2, 2, 2, 1147, 1148, 7, 17, 2, 2, 1148, 1149, 7, 229, 2, 2, 1149, 1150, 5, 174, 88, 2, 1150, 1151, 7, 246, 2, 2, 1151, 1152, 7, 172, 2, 2, 1152, 1198, 3, 2, 2, 2, 1153, 1154, 7, 17, 2, 2, 1154, 1155, 7, 229, 2, 2, 1155, 1156, 5, 174, 88, 2, 1156, 1157, 7, 237, 2, 2, 1157, 1198, 3, 2, 2, 2, 1158, 1159, 7, 17, 2, 2, 1159, 1160, 7, 229, 2, 2, 1160, 1162, 5, 174, 88, 2, 1161, 1163, 5, 38, 20, 2, 1162, 1161, 3, 2, 2, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1164, 3, 2, 2, 2, 1164, 1165, 7, 49, 2, 2, 1165, 1198, 3, 2, 2, 2, 1166, 1167, 7, 17, 2, 2, 1167, 1168, 7, 229, 2, 2, 1168, 1170, 5, 174, 88, 2, 1169, 1171, 5, 38, 20, 2, 1170, 1169, 3, 2, 2, 2, 1170, 1171, 3, 2, 2, 2, 1171, 1172, 3, 2, 2, 2, 1172, 1173, 7, 52, 2, 2, 1173, 1198, 3, 2, 2, 2, 1174, 1175, 7, 17, 2, 2, 1175, 1176, 7, 229, 2, 2, 1176, 1178, 5, 174, 88, 2, 1177, 1179, 5, 38, 20, 2, 1178, 1177, 3, 2, 2, 2, 1178, 1179, 3, 2, 2, 2, 1179, 1180, 3, 2, 2, 2, 1180, 1181, 7, 214, 2, 2, 1181, 1182, 7, 95, 2, 2, 1182, 1198, 3, 2, 2, 2, 1183, 1184, 7, 17, 2, 2, 1184, 1185, 7, 229, 2, 2, 1185, 1187, 5, 174, 88, 2, 1186, 1188, 5, 38, 20, 2, 1187, 1186, 3, 2, 2, 2, 1187, 1188, 3, 2, 2, 2, 1188, 1189, 3, 2, 2, 2, 1189, 1190, 7, 194, 2, 2, 1190, 1191, 7, 46, 2, 2, 1191, 1198, 3, 2, 2, 2, 1192, 1193, 7, 222, 2, 2, 1193, 1198, 7, 239, 2, 2, 1194, 1198, 7, 48, 2, 2, 1195, 1198, 7, 202, 2, 2, 1196, 1198, 7, 73, 2, 2, 1197, 1029, 3, 2, 2, 2, 1197, 1031, 3, 2, 2, 2, 1197, 1033, 3, 2, 2, 2, 1197, 1037, 3, 2, 2, 2, 1197, 1041, 3, 2, 2, 2, 1197, 1043, 3, 2, 2, 2, 1197, 1048, 3, 2, 2, 2, 1197, 1050, 3, 2, 2, 2, 1197, 1052, 3, 2, 2, 2, 1197, 1055, 3, 2, 2, 2, 1197, 1057, 3, 2, 2, 2, 1197, 1059, 3, 2, 2, 2, 1197, 1061, 3, 2, 2, 2, 1197, 1064, 3, 2, 2, 2, 1197, 1066, 3, 2, 2, 2, 1197, 1068, 3, 2, 2, 2, 1197, 1070, 3, 2, 2, 2, 1197, 1072, 3, 2, 2, 2, 1197, 1074, 3, 2, 2, 2, 1197, 1076, 3, 2, 2, 2, 1197, 1078, 3, 2, 2, 2, 1197, 1080, 3, 2, 2, 2, 1197, 1082, 3, 2, 2, 2, 1197, 1084, 3, 2, 2, 2, 1197, 1087, 3, 2, 2, 2, 1197, 1090, 3, 2, 2, 2, 1197, 1096, 3, 2, 2, 2, 1197, 1102, 3, 2, 2, 2, 1197, 1108, 3, 2, 2, 2, 1197, 1114, 3, 2, 2, 2, 1197, 1120, 3, 2, 2, 2, 1197, 1128, 3, 2, 2, 2, 1197, 1135, 3, 2, 2, 2, 1197, 1141, 3, 2, 2, 2, 1197, 1147, 3, 2, 2, 2, 1197, 1153, 3, 2, 2, 2, 1197, 1158, 3, 2, 2, 2, 1197, 1166, 3, 2, 2, 2, 1197, 1174, 3, 2, 2, 2, 1197, 1183, 3, 2, 2, 2, 1197, 1192, 3, 2, 2, 2, 1197, 1194, 3, 2, 2, 2, 1197, 1195, 3, 2, 2, 2, 1197, 1196, 3, 2, 2, 2, 1198, 19, 3, 2, 2, 2, 1199, 1201, 7, 55, 2, 2, 1200, 1202, 7, 233, 2, 2, 1201, 1200, 3, 2, 2, 2, 1201, 1202, 3, 2, 2, 2, 1202, 1204, 3, 2, 2, 2, 1203, 1205, 7, 89, 2, 2, 1204, 1203, 3, 2, 2, 2, 1204, 1205, 3, 2, 2, 2, 1205, 1206, 3, 2, 2, 2, 1206, 1210, 7, 229, 2, 2, 1207, 1208, 7, 112, 2, 2, 1208, 1209, 7, 155, 2, 2, 1209, 1211, 7, 85, 2, 2, 1210, 1207, 3, 2, 2, 2, 1210, 1211, 3, 2, 2, 2, 1211, 1212, 3, 2, 2, 2, 1212, 1213, 5, 172, 87, 2, 1213, 21, 3, 2, 2, 2, 1214, 1215, 7, 55, 2, 2, 1215, 1217, 7, 163, 2, 2, 1216, 1214, 3, 2, 2, 2, 1216, 1217, 3, 2, 2, 2, 1217, 1218, 3, 2, 2, 2, 1218, 1219, 7, 194, 2, 2, 1219, 1220, 7, 229, 2, 2, 1220, 1221, 5, 172, 87, 2, 1221, 23, 3, 2, 2, 2, 1222, 1223, 7, 41, 2, 2, 1223, 1224, 7, 32, 2, 2, 1224, 1228, 5, 148, 75, 2, 1225, 1226, 7, 221, 2, 2, 1226, 1227, 7, 32, 2, 2, 1227, 1229, 5, 152, 77, 2, 1228, 1225, 3, 2, 2, 2, 1228, 1229, 3, 2, 2, 2, 1229, 1230, 3, 2, 2, 2, 1230, 1231, 7, 124, 2, 2, 1231, 1232, 7, 289, 2, 2, 1232, 1233, 7, 31, 2, 2, 1233, 25, 3, 2, 2, 2, 1234, 1235, 7, 218, 2, 2, 1235, 1236, 7, 32, 2, 2, 1236, 1237, 5, 148, 75, 2, 1237, 1240, 7, 159, 2, 2, 1238, 1241, 5, 64, 33, 2, 1239, 1241, 5, 66, 34, 2, 1240, 1238, 3, 2, 2, 2, 1240, 1239, 3, 2, 2, 2, 1241, 1245, 3, 2, 2, 2, 1242, 1243, 7, 224, 2, 2, 1243, 1244, 7, 24, 2, 2, 1244, 1246, 7, 74, 2, 2, 1245, 1242, 3, 2, 2, 2, 1245, 1246, 3, 2, 2, 2, 1246, 27, 3, 2, 2, 2, 1247, 1248, 7, 140, 2, 2, 1248, 1249, 7, 285, 2, 2, 1249, 29, 3, 2, 2, 2, 1250, 1251, 7, 47, 2, 2, 1251, 1252, 7, 285, 2, 2, 1252, 31, 3, 2, 2, 2, 1253, 1255, 5, 48, 25, 2, 1254, 1253, 3, 2, 2, 2, 1254, 1255, 3, 2, 2, 2, 1255, 1256, 3, 2, 2, 2, 1256, 1257, 5, 82, 42, 2, 1257, 1258, 5, 78, 40, 2, 1258, 33, 3, 2, 2, 2, 1259, 1260, 7, 121, 2, 2, 1260, 1262, 7, 171, 2, 2, 1261, 1263, 7, 229, 2, 2, 1262, 1261, 3, 2, 2, 2, 1262, 1263, 3, 2, 2, 2, 1263, 1264, 3, 2, 2, 2, 1264, 1271, 5, 172, 87, 2, 1265, 1269, 5, 38, 20, 2, 1266, 1267, 7, 112, 2, 2, 1267, 1268, 7, 155, 2, 2, 1268, 1270, 7, 85, 2, 2, 1269, 1266, 3, 2, 2, 2, 1269, 1270, 3, 2, 2, 2, 1270, 1272, 3, 2, 2, 2, 1271, 1265, 3, 2, 2, 2, 1271, 1272, 3, 2, 2, 2, 1272, 1315, 3, 2, 2, 2, 1273, 1274, 7, 121, 2, 2, 1274, 1276, 7, 124, 2, 2, 1275, 1277, 7, 229, 2, 2, 1276, 1275, 3, 2, 2, 2, 1276, 1277, 3, 2, 2, 2, 1277, 1278, 3, 2, 2, 2, 1278, 1280, 5, 172, 87, 2, 1279, 1281, 5, 38, 20, 2, 1280, 1279, 3, 2, 2, 2, 1280, 1281, 3, 2, 2, 2, 1281, 1285, 3, 2, 2, 2, 1282, 1283, 7, 112, 2, 2, 1283, 1284, 7, 155, 2, 2, 1284, 1286, 7, 85, 2, 2, 1285, 1282, 3, 2, 2, 2, 1285, 1286, 3, 2, 2, 2, 1286, 1315, 3, 2, 2, 2, 1287, 1288, 7, 121, 2, 2, 1288, 1290, 7, 171, 2, 2, 1289, 1291, 7, 139, 2, 2, 1290, 1289, 3, 2, 2, 2, 1290, 1291, 3, 2, 2, 2, 1291, 1292, 3, 2, 2, 2, 1292, 1293, 7, 75, 2, 2, 1293, 1295, 7, 285, 2, 2, 1294, 1296, 5, 168, 85, 2, 1295, 1294, 3, 2, 2, 2, 1295, 1296, 3, 2, 2, 2, 1296, 1298, 3, 2, 2, 2, 1297, 1299, 5, 68, 35, 2, 1298, 1297, 3, 2, 2, 2, 1298, 1299, 3, 2, 2, 2, 1299, 1315, 3, 2, 2, 2, 1300, 1301, 7, 121, 2, 2, 1301, 1303, 7, 171, 2, 2, 1302, 1304, 7, 139, 2, 2, 1303, 1302, 3, 2, 2, 2, 1303, 1304, 3, 2, 2, 2, 1304, 1305, 3, 2, 2, 2, 1305, 1307, 7, 75, 2, 2, 1306, 1308, 7, 285, 2, 2, 1307, 1306, 3, 2, 2, 2, 1307, 1308, 3, 2, 2, 2, 1308, 1309, 3, 2, 2, 2, 1309, 1312, 5, 52, 27, 2, 1310, 1311, 7, 162, 2, 2, 1311, 1313, 5, 56, 29, 2, 1312, 1310, 3, 2, 2, 2, 1312, 1313, 3, 2, 2, 2, 1313, 1315, 3, 2, 2, 2, 1314, 1259, 3, 2, 2, 2, 1314, 1273, 3, 2, 2, 2, 1314, 1287, 3, 2, 2, 2, 1314, 1300, 3, 2, 2, 2, 1315, 35, 3, 2, 2, 2, 1316, 1318, 5, 38, 20, 2, 1317, 1319, 5, 28, 15, 2, 1318, 1317, 3, 2, 2, 2, 1318, 1319, 3, 2, 2, 2, 1319, 37, 3, 2, 2, 2, 1320, 1321, 7, 172, 2, 2, 1321, 1322, 7, 4, 2, 2, 1322, 1327, 5, 40, 21, 2, 1323, 1324, 7, 6, 2, 2, 1324, 1326, 5, 40, 21, 2, 1325, 1323, 3, 2, 2, 2, 1326, 1329, 3, 2, 2, 2, 1327, 1325, 3, 2, 2, 2, 1327, 1328, 3, 2, 2, 2, 1328, 1330, 3, 2, 2, 2, 1329, 1327, 3, 2, 2, 2, 1330, 1331, 7, 5, 2, 2, 1331, 39, 3, 2, 2, 2, 1332, 1335, 5, 260, 131, 2, 1333, 1334, 7, 266, 2, 2, 1334, 1336, 5, 198, 100, 2, 1335, 1333, 3, 2, 2, 2, 1335, 1336, 3, 2, 2, 2, 1336, 41, 3, 2, 2, 2, 1337, 1338, 9, 14, 2, 2, 1338, 43, 3, 2, 2, 2, 1339, 1345, 5, 254, 128, 2, 1340, 1345, 7, 285, 2, 2, 1341, 1345, 5, 200, 101, 2, 1342, 1345, 5, 202, 102, 2, 1343, 1345, 5, 204, 103, 2, 1344, 1339, 3, 2, 2, 2, 1344, 1340, 3, 2, 2, 2, 1344, 1341, 3, 2, 2, 2, 1344, 1342, 3, 2, 2, 2, 1344, 1343, 3, 2, 2, 2, 1345, 45, 3, 2, 2, 2, 1346, 1351, 5, 260, 131, 2, 1347, 1348, 7, 7, 2, 2, 1348, 1350, 5, 260, 131, 2, 1349, 1347, 3, 2, 2, 2, 1350, 1353, 3, 2, 2, 2, 1351, 1349, 3, 2, 2, 2, 1351, 1352, 3, 2, 2, 2, 1352, 47, 3, 2, 2, 2, 1353, 1351, 3, 2, 2, 2, 1354, 1355, 7, 264, 2, 2, 1355, 1360, 5, 50, 26, 2, 1356, 1357, 7, 6, 2, 2, 1357, 1359, 5, 50, 26, 2, 1358, 1356, 3, 2, 2, 2, 1359, 1362, 3, 2, 2, 2, 1360, 1358, 3, 2, 2, 2, 1360, 1361, 3, 2, 2, 2, 1361, 49, 3, 2, 2, 2, 1362, 1360, 3, 2, 2, 2, 1363, 1365, 5, 256, 129, 2, 1364, 1366, 5, 148, 75, 2, 1365, 1364, 3, 2, 2, 2, 1365, 1366, 3, 2, 2, 2, 1366, 1368, 3, 2, 2, 2, 1367, 1369, 7, 24, 2, 2, 1368, 1367, 3, 2, 2, 2, 1368, 1369, 3, 2, 2, 2, 1369, 1370, 3, 2, 2, 2, 1370, 1371, 7, 4, 2, 2, 1371, 1372, 5, 32, 17, 2, 1372, 1373, 7, 5, 2, 2, 1373, 51, 3, 2, 2, 2, 1374, 1375, 7, 257, 2, 2, 1375, 1376, 5, 172, 87, 2, 1376, 53, 3, 2, 2, 2, 1377, 1378, 7, 162, 2, 2, 1378, 1388, 5, 56, 29, 2, 1379, 1380, 7, 173, 2, 2, 1380, 1381, 7, 32, 2, 2, 1381, 1388, 5, 182, 92, 2, 1382, 1388, 5, 24, 13, 2, 1383, 1388, 5, 28, 15, 2, 1384, 1388, 5, 30, 16, 2, 1385, 1386, 7, 232, 2, 2, 1386, 1388, 5, 56, 29, 2, 1387, 1377, 3, 2, 2, 2, 1387, 1379, 3, 2, 2, 2, 1387, 1382, 3, 2, 2, 2, 1387, 1383, 3, 2, 2, 2, 1387, 1384, 3, 2, 2, 2, 1387, 1385, 3, 2, 2, 2, 1388, 1391, 3, 2, 2, 2, 1389, 1387, 3, 2, 2, 2, 1389, 1390, 3, 2, 2, 2, 1390, 55, 3, 2, 2, 2, 1391, 1389, 3, 2, 2, 2, 1392, 1393, 7, 4, 2, 2, 1393, 1398, 5, 58, 30, 2, 1394, 1395, 7, 6, 2, 2, 1395, 1397, 5, 58, 30, 2, 1396, 1394, 3, 2, 2, 2, 1397, 1400, 3, 2, 2, 2, 1398, 1396, 3, 2, 2, 2, 1398, 1399, 3, 2, 2, 2, 1399, 1401, 3, 2, 2, 2, 1400, 1398, 3, 2, 2, 2, 1401, 1402, 7, 5, 2, 2, 1402, 57, 3, 2, 2, 2, 1403, 1408, 5, 60, 31, 2, 1404, 1406, 7, 266, 2, 2, 1405, 1404, 3, 2, 2, 2, 1405, 1406, 3, 2, 2, 2, 1406, 1407, 3, 2, 2, 2, 1407, 1409, 5, 62, 32, 2, 1408, 1405, 3, 2, 2, 2, 1408, 1409, 3, 2, 2, 2, 1409, 59, 3, 2, 2, 2, 1410, 1415, 5, 260, 131, 2, 1411, 1412, 7, 7, 2, 2, 1412, 1414, 5, 260, 131, 2, 1413, 1411, 3, 2, 2, 2, 1414, 1417, 3, 2, 2, 2, 1415, 1413, 3, 2, 2, 2, 1415, 1416, 3, 2, 2, 2, 1416, 1420, 3, 2, 2, 2, 1417, 1415, 3, 2, 2, 2, 1418, 1420, 7, 285, 2, 2, 1419, 1410, 3, 2, 2, 2, 1419, 1418, 3, 2, 2, 2, 1420, 61, 3, 2, 2, 2, 1421, 1426, 7, 289, 2, 2, 1422, 1426, 7, 291, 2, 2, 1423, 1426, 5, 206, 104, 2, 1424, 1426, 7, 285, 2, 2, 1425, 1421, 3, 2, 2, 2, 1425, 1422, 3, 2, 2, 2, 1425, 1423, 3, 2, 2, 2, 1425, 1424, 3, 2, 2, 2, 1426, 63, 3, 2, 2, 2, 1427, 1428, 7, 4, 2, 2, 1428, 1433, 5, 198, 100, 2, 1429, 1430, 7, 6, 2, 2, 1430, 1432, 5, 198, 100, 2, 1431, 1429, 3, 2, 2, 2, 1432, 1435, 3, 2, 2, 2, 1433, 1431, 3, 2, 2, 2, 1433, 1434, 3, 2, 2, 2, 1434, 1436, 3, 2, 2, 2, 1435, 1433, 3, 2, 2, 2, 1436, 1437, 7, 5, 2, 2, 1437, 65, 3, 2, 2, 2, 1438, 1439, 7, 4, 2, 2, 1439, 1444, 5, 64, 33, 2, 1440, 1441, 7, 6, 2, 2, 1441, 1443, 5, 64, 33, 2, 1442, 1440, 3, 2, 2, 2, 1443, 1446, 3, 2, 2, 2, 1444, 1442, 3, 2, 2, 2, 1444, 1445, 3, 2, 2, 2, 1445, 1447, 3, 2, 2, 2, 1446, 1444, 3, 2, 2, 2, 1447, 1448, 7, 5, 2, 2, 1448, 67, 3, 2, 2, 2, 1449, 1450, 7, 224, 2, 2, 1450, 1451, 7, 24, 2, 2, 1451, 1456, 5, 70, 36, 2, 1452, 1453, 7, 224, 2, 2, 1453, 1454, 7, 32, 2, 2, 1454, 1456, 5, 72, 37, 2, 1455, 1449, 3, 2, 2, 2, 1455, 1452, 3, 2, 2, 2, 1456, 69, 3, 2, 2, 2, 1457, 1458, 7, 120, 2, 2, 1458, 1459, 7, 285, 2, 2, 1459, 1460, 7, 167, 2, 2, 1460, 1463, 7, 285, 2, 2, 1461, 1463, 5, 260, 131, 2, 1462, 1457, 3, 2, 2, 2, 1462, 1461, 3, 2, 2, 2, 1463, 71, 3, 2, 2, 2, 1464, 1468, 7, 285, 2, 2, 1465, 1466, 7, 264, 2, 2, 1466, 1467, 7, 212, 2, 2, 1467, 1469, 5, 56, 29, 2, 1468, 1465, 3, 2, 2, 2, 1468, 1469, 3, 2, 2, 2, 1469, 73, 3, 2, 2, 2, 1470, 1471, 5, 260, 131, 2, 1471, 1472, 7, 285, 2, 2, 1472, 75, 3, 2, 2, 2, 1473, 1474, 5, 34, 18, 2, 1474, 1475, 5, 82, 42, 2, 1475, 1476, 5, 78, 40, 2, 1476, 1525, 3, 2, 2, 2, 1477, 1479, 5, 120, 61, 2, 1478, 1480, 5, 80, 41, 2, 1479, 1478, 3, 2, 2, 2, 1480, 1481, 3, 2, 2, 2, 1481, 1479, 3, 2, 2, 2, 1481, 1482, 3, 2, 2, 2, 1482, 1525, 3, 2, 2, 2, 1483, 1484, 7, 69, 2, 2, 1484, 1485, 7, 102, 2, 2, 1485, 1486, 5, 172, 87, 2, 1486, 1488, 5, 166, 84, 2, 1487, 1489, 5, 112, 57, 2, 1488, 1487, 3, 2, 2, 2, 1488, 1489, 3, 2, 2, 2, 1489, 1525, 3, 2, 2, 2, 1490, 1491, 7, 254, 2, 2, 1491, 1492, 5, 172, 87, 2, 1492, 1493, 5, 166, 84, 2, 1493, 1495, 5, 98, 50, 2, 1494, 1496, 5, 112, 57, 2, 1495, 1494, 3, 2, 2, 2, 1495, 1496, 3, 2, 2, 2, 1496, 1525, 3, 2, 2, 2, 1497, 1498, 7, 147, 2, 2, 1498, 1499, 7, 124, 2, 2, 1499, 1500, 5, 172, 87, 2, 1500, 1501, 5, 166, 84, 2, 1501, 1507, 7, 257, 2, 2, 1502, 1508, 5, 172, 87, 2, 1503, 1504, 7, 4, 2, 2, 1504, 1505, 5, 32, 17, 2, 1505, 1506, 7, 5, 2, 2, 1506, 1508, 3, 2, 2, 2, 1507, 1502, 3, 2, 2, 2, 1507, 1503, 3, 2, 2, 2, 1508, 1509, 3, 2, 2, 2, 1509, 1510, 5, 166, 84, 2, 1510, 1511, 7, 159, 2, 2, 1511, 1515, 5, 190, 96, 2, 1512, 1514, 5, 100, 51, 2, 1513, 1512, 3, 2, 2, 2, 1514, 1517, 3, 2, 2, 2, 1515, 1513, 3, 2, 2, 2, 1515, 1516, 3, 2, 2, 2, 1516, 1521, 3, 2, 2, 2, 1517, 1515, 3, 2, 2, 2, 1518, 1520, 5, 102, 52, 2, 1519, 1518, 3, 2, 2, 2, 1520, 1523, 3, 2, 2, 2, 1521, 1519, 3, 2, 2, 2, 1521, 1522, 3, 2, 2, 2, 1522, 1525, 3, 2, 2, 2, 1523, 1521, 3, 2, 2, 2, 1524, 1473, 3, 2, 2, 2, 1524, 1477, 3, 2, 2, 2, 1524, 1483, 3, 2, 2, 2, 1524, 1490, 3, 2, 2, 2, 1524, 1497, 3, 2, 2, 2, 1525, 77, 3, 2, 2, 2, 1526, 1527, 7, 164, 2, 2, 1527, 1528, 7, 32, 2, 2, 1528, 1533, 5, 86, 44, 2, 1529, 1530, 7, 6, 2, 2, 1530, 1532, 5, 86, 44, 2, 1531, 1529, 3, 2, 2, 2, 1532, 1535, 3, 2, 2, 2, 1533, 1531, 3, 2, 2, 2, 1533, 1534, 3, 2, 2, 2, 1534, 1537, 3, 2, 2, 2, 1535, 1533, 3, 2, 2, 2, 1536, 1526, 3, 2, 2, 2, 1536, 1537, 3, 2, 2, 2, 1537, 1548, 3, 2, 2, 2, 1538, 1539, 7, 40, 2, 2, 1539, 1540, 7, 32, 2, 2, 1540, 1545, 5, 188, 95, 2, 1541, 1542, 7, 6, 2, 2, 1542, 1544, 5, 188, 95, 2, 1543, 1541, 3, 2, 2, 2, 1544, 1547, 3, 2, 2, 2, 1545, 1543, 3, 2, 2, 2, 1545, 1546, 3, 2, 2, 2, 1546, 1549, 3, 2, 2, 2, 1547, 1545, 3, 2, 2, 2, 1548, 1538, 3, 2, 2, 2, 1548, 1549, 3, 2, 2, 2, 1549, 1560, 3, 2, 2, 2, 1550, 1551, 7, 77, 2, 2, 1551, 1552, 7, 32, 2, 2, 1552, 1557, 5, 188, 95, 2, 1553, 1554, 7, 6, 2, 2, 1554, 1556, 5, 188, 95, 2, 1555, 1553, 3, 2, 2, 2, 1556, 1559, 3, 2, 2, 2, 1557, 1555, 3, 2, 2, 2, 1557, 1558, 3, 2, 2, 2, 1558, 1561, 3, 2, 2, 2, 1559, 1557, 3, 2, 2, 2, 1560, 1550, 3, 2, 2, 2, 1560, 1561, 3, 2, 2, 2, 1561, 1572, 3, 2, 2, 2, 1562, 1563, 7, 220, 2, 2, 1563, 1564, 7, 32, 2, 2, 1564, 1569, 5, 86, 44, 2, 1565, 1566, 7, 6, 2, 2, 1566, 1568, 5, 86, 44, 2, 1567, 1565, 3, 2, 2, 2, 1568, 1571, 3, 2, 2, 2, 1569, 1567, 3, 2, 2, 2, 1569, 1570, 3, 2, 2, 2, 1570, 1573, 3, 2, 2, 2, 1571, 1569, 3, 2, 2, 2, 1572, 1562, 3, 2, 2, 2, 1572, 1573, 3, 2, 2, 2, 1573, 1575, 3, 2, 2, 2, 1574, 1576, 5, 240, 121, 2, 1575, 1574, 3, 2, 2, 2, 1575, 1576, 3, 2, 2, 2, 1576, 1582, 3, 2, 2, 2, 1577, 1580, 7, 135, 2, 2, 1578, 1581, 7, 16, 2, 2, 1579, 1581, 5, 188, 95, 2, 1580, 1578, 3, 2, 2, 2, 1580, 1579, 3, 2, 2, 2, 1581, 1583, 3, 2, 2, 2, 1582, 1577, 3, 2, 2, 2, 1582, 1583, 3, 2, 2, 2, 1583, 79, 3, 2, 2, 2, 1584, 1585, 5, 34, 18, 2, 1585, 1586, 5, 90, 46, 2, 1586, 81, 3, 2, 2, 2, 1587, 1588, 8, 42, 1, 2, 1588, 1589, 5, 84, 43, 2, 1589, 1613, 3, 2, 2, 2, 1590, 1591, 12, 5, 2, 2, 1591, 1592, 6, 42, 5, 2, 1592, 1594, 9, 15, 2, 2, 1593, 1595, 5, 134, 68, 2, 1594, 1593, 3, 2, 2, 2, 1594, 1595, 3, 2, 2, 2, 1595, 1596, 3, 2, 2, 2, 1596, 1612, 5, 82, 42, 6, 1597, 1598, 12, 4, 2, 2, 1598, 1599, 6, 42, 7, 2, 1599, 1601, 7, 122, 2, 2, 1600, 1602, 5, 134, 68, 2, 1601, 1600, 3, 2, 2, 2, 1601, 1602, 3, 2, 2, 2, 1602, 1603, 3, 2, 2, 2, 1603, 1612, 5, 82, 42, 5, 1604, 1605, 12, 3, 2, 2, 1605, 1606, 6, 42, 9, 2, 1606, 1608, 9, 16, 2, 2, 1607, 1609, 5, 134, 68, 2, 1608, 1607, 3, 2, 2, 2, 1608, 1609, 3, 2, 2, 2, 1609, 1610, 3, 2, 2, 2, 1610, 1612, 5, 82, 42, 4, 1611, 1590, 3, 2, 2, 2, 1611, 1597, 3, 2, 2, 2, 1611, 1604, 3, 2, 2, 2, 1612, 1615, 3, 2, 2, 2, 1613, 1611, 3, 2, 2, 2, 1613, 1614, 3, 2, 2, 2, 1614, 83, 3, 2, 2, 2, 1615, 1613, 3, 2, 2, 2, 1616, 1626, 5, 92, 47, 2, 1617, 1626, 5, 88, 45, 2, 1618, 1619, 7, 229, 2, 2, 1619, 1626, 5, 172, 87, 2, 1620, 1626, 5, 162, 82, 2, 1621, 1622, 7, 4, 2, 2, 1622, 1623, 5, 32, 17, 2, 1623, 1624, 7, 5, 2, 2, 1624, 1626, 3, 2, 2, 2, 1625, 1616, 3, 2, 2, 2, 1625, 1617, 3, 2, 2, 2, 1625, 1618, 3, 2, 2, 2, 1625, 1620, 3, 2, 2, 2, 1625, 1621, 3, 2, 2, 2, 1626, 85, 3, 2, 2, 2, 1627, 1629, 5, 188, 95, 2, 1628, 1630, 9, 17, 2, 2, 1629, 1628, 3, 2, 2, 2, 1629, 1630, 3, 2, 2, 2, 1630, 1633, 3, 2, 2, 2, 1631, 1632, 7, 157, 2, 2, 1632, 1634, 9, 18, 2, 2, 1633, 1631, 3, 2, 2, 2, 1633, 1634, 3, 2, 2, 2, 1634, 87, 3, 2, 2, 2, 1635, 1637, 5, 120, 61, 2, 1636, 1638, 5, 90, 46, 2, 1637, 1636, 3, 2, 2, 2, 1638, 1639, 3, 2, 2, 2, 1639, 1637, 3, 2, 2, 2, 1639, 1640, 3, 2, 2, 2, 1640, 89, 3, 2, 2, 2, 1641, 1643, 5, 94, 48, 2, 1642, 1644, 5, 112, 57, 2, 1643, 1642, 3, 2, 2, 2, 1643, 1644, 3, 2, 2, 2, 1644, 1645, 3, 2, 2, 2, 1645, 1646, 5, 78, 40, 2, 1646, 1669, 3, 2, 2, 2, 1647, 1651, 5, 96, 49, 2, 1648, 1650, 5, 132, 67, 2, 1649, 1648, 3, 2, 2, 2, 1650, 1653, 3, 2, 2, 2, 1651, 1649, 3, 2, 2, 2, 1651, 1652, 3, 2, 2, 2, 1652, 1655, 3, 2, 2, 2, 1653, 1651, 3, 2, 2, 2, 1654, 1656, 5, 112, 57, 2, 1655, 1654, 3, 2, 2, 2, 1655, 1656, 3, 2, 2, 2, 1656, 1658, 3, 2, 2, 2, 1657, 1659, 5, 122, 62, 2, 1658, 1657, 3, 2, 2, 2, 1658, 1659, 3, 2, 2, 2, 1659, 1661, 3, 2, 2, 2, 1660, 1662, 5, 114, 58, 2, 1661, 1660, 3, 2, 2, 2, 1661, 1662, 3, 2, 2, 2, 1662, 1664, 3, 2, 2, 2, 1663, 1665, 5, 240, 121, 2, 1664, 1663, 3, 2, 2, 2, 1664, 1665, 3, 2, 2, 2, 1665, 1666, 3, 2, 2, 2, 1666, 1667, 5, 78, 40, 2, 1667, 1669, 3, 2, 2, 2, 1668, 1641, 3, 2, 2, 2, 1668, 1647, 3, 2, 2, 2, 1669, 91, 3, 2, 2, 2, 1670, 1672, 5, 94, 48, 2, 1671, 1673, 5, 120, 61, 2, 1672, 1671, 3, 2, 2, 2, 1672, 1673, 3, 2, 2, 2, 1673, 1675, 3, 2, 2, 2, 1674, 1676, 5, 112, 57, 2, 1675, 1674, 3, 2, 2, 2, 1675, 1676, 3, 2, 2, 2, 1676, 1700, 3, 2, 2, 2, 1677, 1679, 5, 96, 49, 2, 1678, 1680, 5, 120, 61, 2, 1679, 1678, 3, 2, 2, 2, 1679, 1680, 3, 2, 2, 2, 1680, 1684, 3, 2, 2, 2, 1681, 1683, 5, 132, 67, 2, 1682, 1681, 3, 2, 2, 2, 1683, 1686, 3, 2, 2, 2, 1684, 1682, 3, 2, 2, 2, 1684, 1685, 3, 2, 2, 2, 1685, 1688, 3, 2, 2, 2, 1686, 1684, 3, 2, 2, 2, 1687, 1689, 5, 112, 57, 2, 1688, 1687, 3, 2, 2, 2, 1688, 1689, 3, 2, 2, 2, 1689, 1691, 3, 2, 2, 2, 1690, 1692, 5, 122, 62, 2, 1691, 1690, 3, 2, 2, 2, 1691, 1692, 3, 2, 2, 2, 1692, 1694, 3, 2, 2, 2, 1693, 1695, 5, 114, 58, 2, 1694, 1693, 3, 2, 2, 2, 1694, 1695, 3, 2, 2, 2, 1695, 1697, 3, 2, 2, 2, 1696, 1698, 5, 240, 121, 2, 1697, 1696, 3, 2, 2, 2, 1697, 1698, 3, 2, 2, 2, 1698, 1700, 3, 2, 2, 2, 1699, 1670, 3, 2, 2, 2, 1699, 1677, 3, 2, 2, 2, 1700, 93, 3, 2, 2, 2, 1701, 1702, 7, 208, 2, 2, 1702, 1703, 7, 241, 2, 2, 1703, 1704, 7, 4, 2, 2, 1704, 1705, 5, 180, 91, 2, 1705, 1706, 7, 5, 2, 2, 1706, 1712, 3, 2, 2, 2, 1707, 1708, 7, 145, 2, 2, 1708, 1712, 5, 180, 91, 2, 1709, 1710, 7, 189, 2, 2, 1710, 1712, 5, 180, 91, 2, 1711, 1701, 3, 2, 2, 2, 1711, 1707, 3, 2, 2, 2, 1711, 1709, 3, 2, 2, 2, 1712, 1714, 3, 2, 2, 2, 1713, 1715, 5, 168, 85, 2, 1714, 1713, 3, 2, 2, 2, 1714, 1715, 3, 2, 2, 2, 1715, 1718, 3, 2, 2, 2, 1716, 1717, 7, 187, 2, 2, 1717, 1719, 7, 285, 2, 2, 1718, 1716, 3, 2, 2, 2, 1718, 1719, 3, 2, 2, 2, 1719, 1720, 3, 2, 2, 2, 1720, 1721, 7, 257, 2, 2, 1721, 1734, 7, 285, 2, 2, 1722, 1732, 7, 24, 2, 2, 1723, 1733, 5, 150, 76, 2, 1724, 1733, 5, 230, 116, 2, 1725, 1728, 7, 4, 2, 2, 1726, 1729, 5, 150, 76, 2, 1727, 1729, 5, 230, 116, 2, 1728, 1726, 3, 2, 2, 2, 1728, 1727, 3, 2, 2, 2, 1729, 1730, 3, 2, 2, 2, 1730, 1731, 7, 5, 2, 2, 1731, 1733, 3, 2, 2, 2, 1732, 1723, 3, 2, 2, 2, 1732, 1724, 3, 2, 2, 2, 1732, 1725, 3, 2, 2, 2, 1733, 1735, 3, 2, 2, 2, 1734, 1722, 3, 2, 2, 2, 1734, 1735, 3, 2, 2, 2, 1735, 1737, 3, 2, 2, 2, 1736, 1738, 5, 168, 85, 2, 1737, 1736, 3, 2, 2, 2, 1737, 1738, 3, 2, 2, 2, 1738, 1741, 3, 2, 2, 2, 1739, 1740, 7, 186, 2, 2, 1740, 1742, 7, 285, 2, 2, 1741, 1739, 3, 2, 2, 2, 1741, 1742, 3, 2, 2, 2, 1742, 95, 3, 2, 2, 2, 1743, 1747, 7, 208, 2, 2, 1744, 1746, 5, 116, 59, 2, 1745, 1744, 3, 2, 2, 2, 1746, 1749, 3, 2, 2, 2, 1747, 1745, 3, 2, 2, 2, 1747, 1748, 3, 2, 2, 2, 1748, 1751, 3, 2, 2, 2, 1749, 1747, 3, 2, 2, 2, 1750, 1752, 5, 134, 68, 2, 1751, 1750, 3, 2, 2, 2, 1751, 1752, 3, 2, 2, 2, 1752, 1753, 3, 2, 2, 2, 1753, 1754, 5, 180, 91, 2, 1754, 97, 3, 2, 2, 2, 1755, 1756, 7, 214, 2, 2, 1756, 1757, 5, 108, 55, 2, 1757, 99, 3, 2, 2, 2, 1758, 1759, 7, 261, 2, 2, 1759, 1762, 7, 146, 2, 2, 1760, 1761, 7, 19, 2, 2, 1761, 1763, 5, 190, 96, 2, 1762, 1760, 3, 2, 2, 2, 1762, 1763, 3, 2, 2, 2, 1763, 1764, 3, 2, 2, 2, 1764, 1765, 7, 235, 2, 2, 1765, 1766, 5, 104, 53, 2, 1766, 101, 3, 2, 2, 2, 1767, 1768, 7, 261, 2, 2, 1768, 1769, 7, 155, 2, 2, 1769, 1772, 7, 146, 2, 2, 1770, 1771, 7, 19, 2, 2, 1771, 1773, 5, 190, 96, 2, 1772, 1770, 3, 2, 2, 2, 1772, 1773, 3, 2, 2, 2, 1773, 1774, 3, 2, 2, 2, 1774, 1775, 7, 235, 2, 2, 1775, 1776, 5, 106, 54, 2, 1776, 103, 3, 2, 2, 2, 1777, 1785, 7, 69, 2, 2, 1778, 1779, 7, 254, 2, 2, 1779, 1780, 7, 214, 2, 2, 1780, 1785, 7, 276, 2, 2, 1781, 1782, 7, 254, 2, 2, 1782, 1783, 7, 214, 2, 2, 1783, 1785, 5, 108, 55, 2, 1784, 1777, 3, 2, 2, 2, 1784, 1778, 3, 2, 2, 2, 1784, 1781, 3, 2, 2, 2, 1785, 105, 3, 2, 2, 2, 1786, 1787, 7, 121, 2, 2, 1787, 1805, 7, 276, 2, 2, 1788, 1789, 7, 121, 2, 2, 1789, 1790, 7, 4, 2, 2, 1790, 1791, 5, 170, 86, 2, 1791, 1792, 7, 5, 2, 2, 1792, 1793, 7, 258, 2, 2, 1793, 1794, 7, 4, 2, 2, 1794, 1799, 5, 188, 95, 2, 1795, 1796, 7, 6, 2, 2, 1796, 1798, 5, 188, 95, 2, 1797, 1795, 3, 2, 2, 2, 1798, 1801, 3, 2, 2, 2, 1799, 1797, 3, 2, 2, 2, 1799, 1800, 3, 2, 2, 2, 1800, 1802, 3, 2, 2, 2, 1801, 1799, 3, 2, 2, 2, 1802, 1803, 7, 5, 2, 2, 1803, 1805, 3, 2, 2, 2, 1804, 1786, 3, 2, 2, 2, 1804, 1788, 3, 2, 2, 2, 1805, 107, 3, 2, 2, 2, 1806, 1811, 5, 110, 56, 2, 1807, 1808, 7, 6, 2, 2, 1808, 1810, 5, 110, 56, 2, 1809, 1807, 3, 2, 2, 2, 1810, 1813, 3, 2, 2, 2, 1811, 1809, 3, 2, 2, 2, 1811, 1812, 3, 2, 2, 2, 1812, 109, 3, 2, 2, 2, 1813, 1811, 3, 2, 2, 2, 1814, 1815, 5, 172, 87, 2, 1815, 1816, 7, 266, 2, 2, 1816, 1817, 5, 188, 95, 2, 1817, 111, 3, 2, 2, 2, 1818, 1819, 7, 262, 2, 2, 1819, 1820, 5, 190, 96, 2, 1820, 113, 3, 2, 2, 2, 1821, 1822, 7, 110, 2, 2, 1822, 1823, 5, 190, 96, 2, 1823, 115, 3, 2, 2, 2, 1824, 1825, 7, 8, 2, 2, 1825, 1832, 5, 118, 60, 2, 1826, 1828, 7, 6, 2, 2, 1827, 1826, 3, 2, 2, 2, 1827, 1828, 3, 2, 2, 2, 1828, 1829, 3, 2, 2, 2, 1829, 1831, 5, 118, 60, 2, 1830, 1827, 3, 2, 2, 2, 1831, 1834, 3, 2, 2, 2, 1832, 1830, 3, 2, 2, 2, 1832, 1833, 3, 2, 2, 2, 1833, 1835, 3, 2, 2, 2, 1834, 1832, 3, 2, 2, 2, 1835, 1836, 7, 9, 2, 2, 1836, 117, 3, 2, 2, 2, 1837, 1851, 5, 260, 131, 2, 1838, 1839, 5, 260, 131, 2, 1839, 1840, 7, 4, 2, 2, 1840, 1845, 5, 196, 99, 2, 1841, 1842, 7, 6, 2, 2, 1842, 1844, 5, 196, 99, 2, 1843, 1841, 3, 2, 2, 2, 1844, 1847, 3, 2, 2, 2, 1845, 1843, 3, 2, 2, 2, 1845, 1846, 3, 2, 2, 2, 1846, 1848, 3, 2, 2, 2, 1847, 1845, 3, 2, 2, 2, 1848, 1849, 7, 5, 2, 2, 1849, 1851, 3, 2, 2, 2, 1850, 1837, 3, 2, 2, 2, 1850, 1838, 3, 2, 2, 2, 1851, 119, 3, 2, 2, 2, 1852, 1853, 7, 102, 2, 2, 1853, 1858, 5, 136, 69, 2, 1854, 1855, 7, 6, 2, 2, 1855, 1857, 5, 136, 69, 2, 1856, 1854, 3, 2, 2, 2, 1857, 1860, 3, 2, 2, 2, 1858, 1856, 3, 2, 2, 2, 1858, 1859, 3, 2, 2, 2, 1859, 1864, 3, 2, 2, 2, 1860, 1858, 3, 2, 2, 2, 1861, 1863, 5, 132, 67, 2, 1862, 1861, 3, 2, 2, 2, 1863, 1866, 3, 2, 2, 2, 1864, 1862, 3, 2, 2, 2, 1864, 1865, 3, 2, 2, 2, 1865, 1868, 3, 2, 2, 2, 1866, 1864, 3, 2, 2, 2, 1867, 1869, 5, 126, 64, 2, 1868, 1867, 3, 2, 2, 2, 1868, 1869, 3, 2, 2, 2, 1869, 121, 3, 2, 2, 2, 1870, 1871, 7, 108, 2, 2, 1871, 1872, 7, 32, 2, 2, 1872, 1877, 5, 188, 95, 2, 1873, 1874, 7, 6, 2, 2, 1874, 1876, 5, 188, 95, 2, 1875, 1873, 3, 2, 2, 2, 1876, 1879, 3, 2, 2, 2, 1877, 1875, 3, 2, 2, 2, 1877, 1878, 3, 2, 2, 2, 1878, 1897, 3, 2, 2, 2, 1879, 1877, 3, 2, 2, 2, 1880, 1881, 7, 264, 2, 2, 1881, 1898, 7, 203, 2, 2, 1882, 1883, 7, 264, 2, 2, 1883, 1898, 7, 57, 2, 2, 1884, 1885, 7, 109, 2, 2, 1885, 1886, 7, 216, 2, 2, 1886, 1887, 7, 4, 2, 2, 1887, 1892, 5, 124, 63, 2, 1888, 1889, 7, 6, 2, 2, 1889, 1891, 5, 124, 63, 2, 1890, 1888, 3, 2, 2, 2, 1891, 1894, 3, 2, 2, 2, 1892, 1890, 3, 2, 2, 2, 1892, 1893, 3, 2, 2, 2, 1893, 1895, 3, 2, 2, 2, 1894, 1892, 3, 2, 2, 2, 1895, 1896, 7, 5, 2, 2, 1896, 1898, 3, 2, 2, 2, 1897, 1880, 3, 2, 2, 2, 1897, 1882, 3, 2, 2, 2, 1897, 1884, 3, 2, 2, 2, 1897, 1898, 3, 2, 2, 2, 1898, 1915, 3, 2, 2, 2, 1899, 1900, 7, 108, 2, 2, 1900, 1901, 7, 32, 2, 2, 1901, 1902, 7, 109, 2, 2, 1902, 1903, 7, 216, 2, 2, 1903, 1904, 7, 4, 2, 2, 1904, 1909, 5, 124, 63, 2, 1905, 1906, 7, 6, 2, 2, 1906, 1908, 5, 124, 63, 2, 1907, 1905, 3, 2, 2, 2, 1908, 1911, 3, 2, 2, 2, 1909, 1907, 3, 2, 2, 2, 1909, 1910, 3, 2, 2, 2, 1910, 1912, 3, 2, 2, 2, 1911, 1909, 3, 2, 2, 2, 1912, 1913, 7, 5, 2, 2, 1913, 1915, 3, 2, 2, 2, 1914, 1870, 3, 2, 2, 2, 1914, 1899, 3, 2, 2, 2, 1915, 123, 3, 2, 2, 2, 1916, 1925, 7, 4, 2, 2, 1917, 1922, 5, 188, 95, 2, 1918, 1919, 7, 6, 2, 2, 1919, 1921, 5, 188, 95, 2, 1920, 1918, 3, 2, 2, 2, 1921, 1924, 3, 2, 2, 2, 1922, 1920, 3, 2, 2, 2, 1922, 1923, 3, 2, 2, 2, 1923, 1926, 3, 2, 2, 2, 1924, 1922, 3, 2, 2, 2, 1925, 1917, 3, 2, 2, 2, 1925, 1926, 3, 2, 2, 2, 1926, 1927, 3, 2, 2, 2, 1927, 1930, 7, 5, 2, 2, 1928, 1930, 5, 188, 95, 2, 1929, 1916, 3, 2, 2, 2, 1929, 1928, 3, 2, 2, 2, 1930, 125, 3, 2, 2, 2, 1931, 1932, 7, 176, 2, 2, 1932, 1933, 7, 4, 2, 2, 1933, 1934, 5, 180, 91, 2, 1934, 1935, 7, 98, 2, 2, 1935, 1936, 5, 128, 65, 2, 1936, 1937, 7, 115, 2, 2, 1937, 1938, 7, 4, 2, 2, 1938, 1943, 5, 130, 66, 2, 1939, 1940, 7, 6, 2, 2, 1940, 1942, 5, 130, 66, 2, 1941, 1939, 3, 2, 2, 2, 1942, 1945, 3, 2, 2, 2, 1943, 1941, 3, 2, 2, 2, 1943, 1944, 3, 2, 2, 2, 1944, 1946, 3, 2, 2, 2, 1945, 1943, 3, 2, 2, 2, 1946, 1947, 7, 5, 2, 2, 1947, 1948, 7, 5, 2, 2, 1948, 127, 3, 2, 2, 2, 1949, 1962, 5, 260, 131, 2, 1950, 1951, 7, 4, 2, 2, 1951, 1956, 5, 260, 131, 2, 1952, 1953, 7, 6, 2, 2, 1953, 1955, 5, 260, 131, 2, 1954, 1952, 3, 2, 2, 2, 1955, 1958, 3, 2, 2, 2, 1956, 1954, 3, 2, 2, 2, 1956, 1957, 3, 2, 2, 2, 1957, 1959, 3, 2, 2, 2, 1958, 1956, 3, 2, 2, 2, 1959, 1960, 7, 5, 2, 2, 1960, 1962, 3, 2, 2, 2, 1961, 1949, 3, 2, 2, 2, 1961, 1950, 3, 2, 2, 2, 1962, 129, 3, 2, 2, 2, 1963, 1968, 5, 188, 95, 2, 1964, 1966, 7, 24, 2, 2, 1965, 1964, 3, 2, 2, 2, 1965, 1966, 3, 2, 2, 2, 1966, 1967, 3, 2, 2, 2, 1967, 1969, 5, 260, 131, 2, 1968, 1965, 3, 2, 2, 2, 1968, 1969, 3, 2, 2, 2, 1969, 131, 3, 2, 2, 2, 1970, 1971, 7, 130, 2, 2, 1971, 1973, 7, 259, 2, 2, 1972, 1974, 7, 166, 2, 2, 1973, 1972, 3, 2, 2, 2, 1973, 1974, 3, 2, 2, 2, 1974, 1975, 3, 2, 2, 2, 1975, 1976, 5, 254, 128, 2, 1976, 1985, 7, 4, 2, 2, 1977, 1982, 5, 188, 95, 2, 1978, 1979, 7, 6, 2, 2, 1979, 1981, 5, 188, 95, 2, 1980, 1978, 3, 2, 2, 2, 1981, 1984, 3, 2, 2, 2, 1982, 1980, 3, 2, 2, 2, 1982, 1983, 3, 2, 2, 2, 1983, 1986, 3, 2, 2, 2, 1984, 1982, 3, 2, 2, 2, 1985, 1977, 3, 2, 2, 2, 1985, 1986, 3, 2, 2, 2, 1986, 1987, 3, 2, 2, 2, 1987, 1988, 7, 5, 2, 2, 1988, 2000, 5, 260, 131, 2, 1989, 1991, 7, 24, 2, 2, 1990, 1989, 3, 2, 2, 2, 1990, 1991, 3, 2, 2, 2, 1991, 1992, 3, 2, 2, 2, 1992, 1997, 5, 260, 131, 2, 1993, 1994, 7, 6, 2, 2, 1994, 1996, 5, 260, 131, 2, 1995, 1993, 3, 2, 2, 2, 1996, 1999, 3, 2, 2, 2, 1997, 1995, 3, 2, 2, 2, 1997, 1998, 3, 2, 2, 2, 1998, 2001, 3, 2, 2, 2, 1999, 1997, 3, 2, 2, 2, 2000, 1990, 3, 2, 2, 2, 2000, 2001, 3, 2, 2, 2, 2001, 133, 3, 2, 2, 2, 2002, 2003, 9, 19, 2, 2, 2003, 135, 3, 2, 2, 2, 2004, 2008, 5, 160, 81, 2, 2005, 2007, 5, 138, 70, 2, 2006, 2005, 3, 2, 2, 2, 2007, 2010, 3, 2, 2, 2, 2008, 2006, 3, 2, 2, 2, 2008, 2009, 3, 2, 2, 2, 2009, 137, 3, 2, 2, 2, 2010, 2008, 3, 2, 2, 2, 2011, 2012, 5, 140, 71, 2, 2012, 2013, 7, 127, 2, 2, 2013, 2015, 5, 160, 81, 2, 2014, 2016, 5, 142, 72, 2, 2015, 2014, 3, 2, 2, 2, 2015, 2016, 3, 2, 2, 2, 2016, 2023, 3, 2, 2, 2, 2017, 2018, 7, 153, 2, 2, 2018, 2019, 5, 140, 71, 2, 2019, 2020, 7, 127, 2, 2, 2020, 2021, 5, 160, 81, 2, 2021, 2023, 3, 2, 2, 2, 2022, 2011, 3, 2, 2, 2, 2022, 2017, 3, 2, 2, 2, 2023, 139, 3, 2, 2, 2, 2024, 2026, 7, 118, 2, 2, 2025, 2024, 3, 2, 2, 2, 2025, 2026, 3, 2, 2, 2, 2026, 2049, 3, 2, 2, 2, 2027, 2049, 7, 56, 2, 2, 2028, 2030, 7, 133, 2, 2, 2029, 2031, 7, 166, 2, 2, 2030, 2029, 3, 2, 2, 2, 2030, 2031, 3, 2, 2, 2, 2031, 2049, 3, 2, 2, 2, 2032, 2034, 7, 133, 2, 2, 2033, 2032, 3, 2, 2, 2, 2033, 2034, 3, 2, 2, 2, 2034, 2035, 3, 2, 2, 2, 2035, 2049, 7, 209, 2, 2, 2036, 2038, 7, 198, 2, 2, 2037, 2039, 7, 166, 2, 2, 2038, 2037, 3, 2, 2, 2, 2038, 2039, 3, 2, 2, 2, 2039, 2049, 3, 2, 2, 2, 2040, 2042, 7, 103, 2, 2, 2041, 2043, 7, 166, 2, 2, 2042, 2041, 3, 2, 2, 2, 2042, 2043, 3, 2, 2, 2, 2043, 2049, 3, 2, 2, 2, 2044, 2046, 7, 133, 2, 2, 2045, 2044, 3, 2, 2, 2, 2045, 2046, 3, 2, 2, 2, 2046, 2047, 3, 2, 2, 2, 2047, 2049, 7, 20, 2, 2, 2048, 2025, 3, 2, 2, 2, 2048, 2027, 3, 2, 2, 2, 2048, 2028, 3, 2, 2, 2, 2048, 2033, 3, 2, 2, 2, 2048, 2036, 3, 2, 2, 2, 2048, 2040, 3, 2, 2, 2, 2048, 2045, 3, 2, 2, 2, 2049, 141, 3, 2, 2, 2, 2050, 2051, 7, 159, 2, 2, 2051, 2055, 5, 190, 96, 2, 2052, 2053, 7, 257, 2, 2, 2053, 2055, 5, 148, 75, 2, 2054, 2050, 3, 2, 2, 2, 2054, 2052, 3, 2, 2, 2, 2055, 143, 3, 2, 2, 2, 2056, 2057, 7, 231, 2, 2, 2057, 2059, 7, 4, 2, 2, 2058, 2060, 5, 146, 74, 2, 2059, 2058, 3, 2, 2, 2, 2059, 2060, 3, 2, 2, 2, 2060, 2061, 3, 2, 2, 2, 2061, 2062, 7, 5, 2, 2, 2062, 145, 3, 2, 2, 2, 2063, 2065, 7, 275, 2, 2, 2064, 2063, 3, 2, 2, 2, 2064, 2065, 3, 2, 2, 2, 2065, 2066, 3, 2, 2, 2, 2066, 2067, 9, 20, 2, 2, 2067, 2088, 7, 175, 2, 2, 2068, 2069, 5, 188, 95, 2, 2069, 2070, 7, 205, 2, 2, 2070, 2088, 3, 2, 2, 2, 2071, 2072, 7, 30, 2, 2, 2072, 2073, 7, 289, 2, 2, 2073, 2074, 7, 165, 2, 2, 2074, 2075, 7, 158, 2, 2, 2075, 2084, 7, 289, 2, 2, 2076, 2082, 7, 159, 2, 2, 2077, 2083, 5, 260, 131, 2, 2078, 2079, 5, 254, 128, 2, 2079, 2080, 7, 4, 2, 2, 2080, 2081, 7, 5, 2, 2, 2081, 2083, 3, 2, 2, 2, 2082, 2077, 3, 2, 2, 2, 2082, 2078, 3, 2, 2, 2, 2083, 2085, 3, 2, 2, 2, 2084, 2076, 3, 2, 2, 2, 2084, 2085, 3, 2, 2, 2, 2085, 2088, 3, 2, 2, 2, 2086, 2088, 5, 188, 95, 2, 2087, 2064, 3, 2, 2, 2, 2087, 2068, 3, 2, 2, 2, 2087, 2071, 3, 2, 2, 2, 2087, 2086, 3, 2, 2, 2, 2088, 147, 3, 2, 2, 2, 2089, 2090, 7, 4, 2, 2, 2090, 2091, 5, 150, 76, 2, 2091, 2092, 7, 5, 2, 2, 2092, 149, 3, 2, 2, 2, 2093, 2098, 5, 256, 129, 2, 2094, 2095, 7, 6, 2, 2, 2095, 2097, 5, 256, 129, 2, 2096, 2094, 3, 2, 2, 2, 2097, 2100, 3, 2, 2, 2, 2098, 2096, 3, 2, 2, 2, 2098, 2099, 3, 2, 2, 2, 2099, 151, 3, 2, 2, 2, 2100, 2098, 3, 2, 2, 2, 2101, 2102, 7, 4, 2, 2, 2102, 2107, 5, 154, 78, 2, 2103, 2104, 7, 6, 2, 2, 2104, 2106, 5, 154, 78, 2, 2105, 2103, 3, 2, 2, 2, 2106, 2109, 3, 2, 2, 2, 2107, 2105, 3, 2, 2, 2, 2107, 2108, 3, 2, 2, 2, 2108, 2110, 3, 2, 2, 2, 2109, 2107, 3, 2, 2, 2, 2110, 2111, 7, 5, 2, 2, 2111, 153, 3, 2, 2, 2, 2112, 2114, 5, 256, 129, 2, 2113, 2115, 9, 17, 2, 2, 2114, 2113, 3, 2, 2, 2, 2114, 2115, 3, 2, 2, 2, 2115, 155, 3, 2, 2, 2, 2116, 2117, 7, 4, 2, 2, 2117, 2122, 5, 158, 80, 2, 2118, 2119, 7, 6, 2, 2, 2119, 2121, 5, 158, 80, 2, 2120, 2118, 3, 2, 2, 2, 2121, 2124, 3, 2, 2, 2, 2122, 2120, 3, 2, 2, 2, 2122, 2123, 3, 2, 2, 2, 2123, 2125, 3, 2, 2, 2, 2124, 2122, 3, 2, 2, 2, 2125, 2126, 7, 5, 2, 2, 2126, 157, 3, 2, 2, 2, 2127, 2129, 5, 260, 131, 2, 2128, 2130, 5, 30, 16, 2, 2129, 2128, 3, 2, 2, 2, 2129, 2130, 3, 2, 2, 2, 2130, 159, 3, 2, 2, 2, 2131, 2133, 5, 172, 87, 2, 2132, 2134, 5, 144, 73, 2, 2133, 2132, 3, 2, 2, 2, 2133, 2134, 3, 2, 2, 2, 2134, 2135, 3, 2, 2, 2, 2135, 2136, 5, 166, 84, 2, 2136, 2156, 3, 2, 2, 2, 2137, 2138, 7, 4, 2, 2, 2138, 2139, 5, 32, 17, 2, 2139, 2141, 7, 5, 2, 2, 2140, 2142, 5, 144, 73, 2, 2141, 2140, 3, 2, 2, 2, 2141, 2142, 3, 2, 2, 2, 2142, 2143, 3, 2, 2, 2, 2143, 2144, 5, 166, 84, 2, 2144, 2156, 3, 2, 2, 2, 2145, 2146, 7, 4, 2, 2, 2146, 2147, 5, 136, 69, 2, 2147, 2149, 7, 5, 2, 2, 2148, 2150, 5, 144, 73, 2, 2149, 2148, 3, 2, 2, 2, 2149, 2150, 3, 2, 2, 2, 2150, 2151, 3, 2, 2, 2, 2151, 2152, 5, 166, 84, 2, 2152, 2156, 3, 2, 2, 2, 2153, 2156, 5, 162, 82, 2, 2154, 2156, 5, 164, 83, 2, 2155, 2131, 3, 2, 2, 2, 2155, 2137, 3, 2, 2, 2, 2155, 2145, 3, 2, 2, 2, 2155, 2153, 3, 2, 2, 2, 2155, 2154, 3, 2, 2, 2, 2156, 161, 3, 2, 2, 2, 2157, 2158, 7, 258, 2, 2, 2158, 2163, 5, 188, 95, 2, 2159, 2160, 7, 6, 2, 2, 2160, 2162, 5, 188, 95, 2, 2161, 2159, 3, 2, 2, 2, 2162, 2165, 3, 2, 2, 2, 2163, 2161, 3, 2, 2, 2, 2163, 2164, 3, 2, 2, 2, 2164, 2166, 3, 2, 2, 2, 2165, 2163, 3, 2, 2, 2, 2166, 2167, 5, 166, 84, 2, 2167, 163, 3, 2, 2, 2, 2168, 2169, 5, 256, 129, 2, 2169, 2178, 7, 4, 2, 2, 2170, 2175, 5, 188, 95, 2, 2171, 2172, 7, 6, 2, 2, 2172, 2174, 5, 188, 95, 2, 2173, 2171, 3, 2, 2, 2, 2174, 2177, 3, 2, 2, 2, 2175, 2173, 3, 2, 2, 2, 2175, 2176, 3, 2, 2, 2, 2176, 2179, 3, 2, 2, 2, 2177, 2175, 3, 2, 2, 2, 2178, 2170, 3, 2, 2, 2, 2178, 2179, 3, 2, 2, 2, 2179, 2180, 3, 2, 2, 2, 2180, 2181, 7, 5, 2, 2, 2181, 2182, 5, 166, 84, 2, 2182, 165, 3, 2, 2, 2, 2183, 2185, 7, 24, 2, 2, 2184, 2183, 3, 2, 2, 2, 2184, 2185, 3, 2, 2, 2, 2185, 2186, 3, 2, 2, 2, 2186, 2188, 5, 262, 132, 2, 2187, 2189, 5, 148, 75, 2, 2188, 2187, 3, 2, 2, 2, 2188, 2189, 3, 2, 2, 2, 2189, 2191, 3, 2, 2, 2, 2190, 2184, 3, 2, 2, 2, 2190, 2191, 3, 2, 2, 2, 2191, 167, 3, 2, 2, 2, 2192, 2193, 7, 204, 2, 2, 2193, 2194, 7, 100, 2, 2, 2194, 2195, 7, 211, 2, 2, 2195, 2199, 7, 285, 2, 2, 2196, 2197, 7, 264, 2, 2, 2197, 2198, 7, 212, 2, 2, 2198, 2200, 5, 56, 29, 2, 2199, 2196, 3, 2, 2, 2, 2199, 2200, 3, 2, 2, 2, 2200, 2242, 3, 2, 2, 2, 2201, 2202, 7, 204, 2, 2, 2202, 2203, 7, 100, 2, 2, 2203, 2213, 7, 70, 2, 2, 2204, 2205, 7, 93, 2, 2, 2205, 2206, 7, 234, 2, 2, 2206, 2207, 7, 32, 2, 2, 2207, 2211, 7, 285, 2, 2, 2208, 2209, 7, 82, 2, 2, 2209, 2210, 7, 32, 2, 2, 2210, 2212, 7, 285, 2, 2, 2211, 2208, 3, 2, 2, 2, 2211, 2212, 3, 2, 2, 2, 2212, 2214, 3, 2, 2, 2, 2213, 2204, 3, 2, 2, 2, 2213, 2214, 3, 2, 2, 2, 2214, 2220, 3, 2, 2, 2, 2215, 2216, 7, 44, 2, 2, 2216, 2217, 7, 126, 2, 2, 2217, 2218, 7, 234, 2, 2, 2218, 2219, 7, 32, 2, 2, 2219, 2221, 7, 285, 2, 2, 2220, 2215, 3, 2, 2, 2, 2220, 2221, 3, 2, 2, 2, 2221, 2227, 3, 2, 2, 2, 2222, 2223, 7, 145, 2, 2, 2223, 2224, 7, 128, 2, 2, 2224, 2225, 7, 234, 2, 2, 2225, 2226, 7, 32, 2, 2, 2226, 2228, 7, 285, 2, 2, 2227, 2222, 3, 2, 2, 2, 2227, 2228, 3, 2, 2, 2, 2228, 2233, 3, 2, 2, 2, 2229, 2230, 7, 136, 2, 2, 2230, 2231, 7, 234, 2, 2, 2231, 2232, 7, 32, 2, 2, 2232, 2234, 7, 285, 2, 2, 2233, 2229, 3, 2, 2, 2, 2233, 2234, 3, 2, 2, 2, 2234, 2239, 3, 2, 2, 2, 2235, 2236, 7, 156, 2, 2, 2236, 2237, 7, 68, 2, 2, 2237, 2238, 7, 24, 2, 2, 2238, 2240, 7, 285, 2, 2, 2239, 2235, 3, 2, 2, 2, 2239, 2240, 3, 2, 2, 2, 2240, 2242, 3, 2, 2, 2, 2241, 2192, 3, 2, 2, 2, 2241, 2201, 3, 2, 2, 2, 2242, 169, 3, 2, 2, 2, 2243, 2248, 5, 172, 87, 2, 2244, 2245, 7, 6, 2, 2, 2245, 2247, 5, 172, 87, 2, 2246, 2244, 3, 2, 2, 2, 2247, 2250, 3, 2, 2, 2, 2248, 2246, 3, 2, 2, 2, 2248, 2249, 3, 2, 2, 2, 2249, 171, 3, 2, 2, 2, 2250, 2248, 3, 2, 2, 2, 2251, 2256, 5, 256, 129, 2, 2252, 2253, 7, 7, 2, 2, 2253, 2255, 5, 256, 129, 2, 2254, 2252, 3, 2, 2, 2, 2255, 2258, 3, 2, 2, 2, 2256, 2254, 3, 2, 2, 2, 2256, 2257, 3, 2, 2, 2, 2257, 173, 3, 2, 2, 2, 2258, 2256, 3, 2, 2, 2, 2259, 2260, 5, 256, 129, 2, 2260, 2261, 7, 7, 2, 2, 2261, 2263, 3, 2, 2, 2, 2262, 2259, 3, 2, 2, 2, 2262, 2263, 3, 2, 2, 2, 2263, 2264, 3, 2, 2, 2, 2264, 2265, 5, 256, 129, 2, 2265, 175, 3, 2, 2, 2, 2266, 2267, 5, 256, 129, 2, 2267, 2268, 7, 7, 2, 2, 2268, 2270, 3, 2, 2, 2, 2269, 2266, 3, 2, 2, 2, 2269, 2270, 3, 2, 2, 2, 2270, 2271, 3, 2, 2, 2, 2271, 2272, 5, 256, 129, 2, 2272, 177, 3, 2, 2, 2, 2273, 2281, 5, 188, 95, 2, 2274, 2276, 7, 24, 2, 2, 2275, 2274, 3, 2, 2, 2, 2275, 2276, 3, 2, 2, 2, 2276, 2279, 3, 2, 2, 2, 2277, 2280, 5, 256, 129, 2, 2278, 2280, 5, 148, 75, 2, 2279, 2277, 3, 2, 2, 2, 2279, 2278, 3, 2, 2, 2, 2280, 2282, 3, 2, 2, 2, 2281, 2275, 3, 2, 2, 2, 2281, 2282, 3, 2, 2, 2, 2282, 179, 3, 2, 2, 2, 2283, 2288, 5, 178, 90, 2, 2284, 2285, 7, 6, 2, 2, 2285, 2287, 5, 178, 90, 2, 2286, 2284, 3, 2, 2, 2, 2287, 2290, 3, 2, 2, 2, 2288, 2286, 3, 2, 2, 2, 2288, 2289, 3, 2, 2, 2, 2289, 181, 3, 2, 2, 2, 2290, 2288, 3, 2, 2, 2, 2291, 2292, 7, 4, 2, 2, 2292, 2297, 5, 184, 93, 2, 2293, 2294, 7, 6, 2, 2, 2294, 2296, 5, 184, 93, 2, 2295, 2293, 3, 2, 2, 2, 2296, 2299, 3, 2, 2, 2, 2297, 2295, 3, 2, 2, 2, 2297, 2298, 3, 2, 2, 2, 2298, 2300, 3, 2, 2, 2, 2299, 2297, 3, 2, 2, 2, 2300, 2301, 7, 5, 2, 2, 2301, 183, 3, 2, 2, 2, 2302, 2316, 5, 254, 128, 2, 2303, 2304, 5, 260, 131, 2, 2304, 2305, 7, 4, 2, 2, 2305, 2310, 5, 186, 94, 2, 2306, 2307, 7, 6, 2, 2, 2307, 2309, 5, 186, 94, 2, 2308, 2306, 3, 2, 2, 2, 2309, 2312, 3, 2, 2, 2, 2310, 2308, 3, 2, 2, 2, 2310, 2311, 3, 2, 2, 2, 2311, 2313, 3, 2, 2, 2, 2312, 2310, 3, 2, 2, 2, 2313, 2314, 7, 5, 2, 2, 2314, 2316, 3, 2, 2, 2, 2315, 2302, 3, 2, 2, 2, 2315, 2303, 3, 2, 2, 2, 2316, 185, 3, 2, 2, 2, 2317, 2320, 5, 254, 128, 2, 2318, 2320, 5, 198, 100, 2, 2319, 2317, 3, 2, 2, 2, 2319, 2318, 3, 2, 2, 2, 2320, 187, 3, 2, 2, 2, 2321, 2322, 5, 190, 96, 2, 2322, 189, 3, 2, 2, 2, 2323, 2324, 8, 96, 1, 2, 2324, 2325, 7, 155, 2, 2, 2325, 2336, 5, 190, 96, 7, 2326, 2327, 7, 85, 2, 2, 2327, 2328, 7, 4, 2, 2, 2328, 2329, 5, 32, 17, 2, 2329, 2330, 7, 5, 2, 2, 2330, 2336, 3, 2, 2, 2, 2331, 2333, 5, 194, 98, 2, 2332, 2334, 5, 192, 97, 2, 2333, 2332, 3, 2, 2, 2, 2333, 2334, 3, 2, 2, 2, 2334, 2336, 3, 2, 2, 2, 2335, 2323, 3, 2, 2, 2, 2335, 2326, 3, 2, 2, 2, 2335, 2331, 3, 2, 2, 2, 2336, 2345, 3, 2, 2, 2, 2337, 2338, 12, 4, 2, 2, 2338, 2339, 7, 19, 2, 2, 2339, 2344, 5, 190, 96, 5, 2340, 2341, 12, 3, 2, 2, 2341, 2342, 7, 163, 2, 2, 2342, 2344, 5, 190, 96, 4, 2343, 2337, 3, 2, 2, 2, 2343, 2340, 3, 2, 2, 2, 2344, 2347, 3, 2, 2, 2, 2345, 2343, 3, 2, 2, 2, 2345, 2346, 3, 2, 2, 2, 2346, 191, 3, 2, 2, 2, 2347, 2345, 3, 2, 2, 2, 2348, 2350, 7, 155, 2, 2, 2349, 2348, 3, 2, 2, 2, 2349, 2350, 3, 2, 2, 2, 2350, 2351, 3, 2, 2, 2, 2351, 2352, 7, 28, 2, 2, 2352, 2353, 5, 194, 98, 2, 2353, 2354, 7, 19, 2, 2, 2354, 2355, 5, 194, 98, 2, 2355, 2431, 3, 2, 2, 2, 2356, 2358, 7, 155, 2, 2, 2357, 2356, 3, 2, 2, 2, 2357, 2358, 3, 2, 2, 2, 2358, 2359, 3, 2, 2, 2, 2359, 2360, 7, 115, 2, 2, 2360, 2361, 7, 4, 2, 2, 2361, 2366, 5, 188, 95, 2, 2362, 2363, 7, 6, 2, 2, 2363, 2365, 5, 188, 95, 2, 2364, 2362, 3, 2, 2, 2, 2365, 2368, 3, 2, 2, 2, 2366, 2364, 3, 2, 2, 2, 2366, 2367, 3, 2, 2, 2, 2367, 2369, 3, 2, 2, 2, 2368, 2366, 3, 2, 2, 2, 2369, 2370, 7, 5, 2, 2, 2370, 2431, 3, 2, 2, 2, 2371, 2373, 7, 155, 2, 2, 2372, 2371, 3, 2, 2, 2, 2372, 2373, 3, 2, 2, 2, 2373, 2374, 3, 2, 2, 2, 2374, 2375, 7, 115, 2, 2, 2375, 2376, 7, 4, 2, 2, 2376, 2377, 5, 32, 17, 2, 2377, 2378, 7, 5, 2, 2, 2378, 2431, 3, 2, 2, 2, 2379, 2381, 7, 155, 2, 2, 2380, 2379, 3, 2, 2, 2, 2380, 2381, 3, 2, 2, 2, 2381, 2382, 3, 2, 2, 2, 2382, 2383, 7, 199, 2, 2, 2383, 2431, 5, 194, 98, 2, 2384, 2386, 7, 155, 2, 2, 2385, 2384, 3, 2, 2, 2, 2385, 2386, 3, 2, 2, 2, 2386, 2387, 3, 2, 2, 2, 2387, 2388, 7, 134, 2, 2, 2388, 2402, 9, 21, 2, 2, 2389, 2390, 7, 4, 2, 2, 2390, 2403, 7, 5, 2, 2, 2391, 2392, 7, 4, 2, 2, 2392, 2397, 5, 188, 95, 2, 2393, 2394, 7, 6, 2, 2, 2394, 2396, 5, 188, 95, 2, 2395, 2393, 3, 2, 2, 2, 2396, 2399, 3, 2, 2, 2, 2397, 2395, 3, 2, 2, 2, 2397, 2398, 3, 2, 2, 2, 2398, 2400, 3, 2, 2, 2, 2399, 2397, 3, 2, 2, 2, 2400, 2401, 7, 5, 2, 2, 2401, 2403, 3, 2, 2, 2, 2402, 2389, 3, 2, 2, 2, 2402, 2391, 3, 2, 2, 2, 2403, 2431, 3, 2, 2, 2, 2404, 2406, 7, 155, 2, 2, 2405, 2404, 3, 2, 2, 2, 2405, 2406, 3, 2, 2, 2, 2406, 2407, 3, 2, 2, 2, 2407, 2408, 7, 134, 2, 2, 2408, 2411, 5, 194, 98, 2, 2409, 2410, 7, 81, 2, 2, 2410, 2412, 7, 285, 2, 2, 2411, 2409, 3, 2, 2, 2, 2411, 2412, 3, 2, 2, 2, 2412, 2431, 3, 2, 2, 2, 2413, 2415, 7, 125, 2, 2, 2414, 2416, 7, 155, 2, 2, 2415, 2414, 3, 2, 2, 2, 2415, 2416, 3, 2, 2, 2, 2416, 2417, 3, 2, 2, 2, 2417, 2431, 7, 156, 2, 2, 2418, 2420, 7, 125, 2, 2, 2419, 2421, 7, 155, 2, 2, 2420, 2419, 3, 2, 2, 2, 2420, 2421, 3, 2, 2, 2, 2421, 2422, 3, 2, 2, 2, 2422, 2431, 9, 22, 2, 2, 2423, 2425, 7, 125, 2, 2, 2424, 2426, 7, 155, 2, 2, 2425, 2424, 3, 2, 2, 2, 2425, 2426, 3, 2, 2, 2, 2426, 2427, 3, 2, 2, 2, 2427, 2428, 7, 76, 2, 2, 2428, 2429, 7, 102, 2, 2, 2429, 2431, 5, 194, 98, 2, 2430, 2349, 3, 2, 2, 2, 2430, 2357, 3, 2, 2, 2, 2430, 2372, 3, 2, 2, 2, 2430, 2380, 3, 2, 2, 2, 2430, 2385, 3, 2, 2, 2, 2430, 2405, 3, 2, 2, 2, 2430, 2413, 3, 2, 2, 2, 2430, 2418, 3, 2, 2, 2, 2430, 2423, 3, 2, 2, 2, 2431, 193, 3, 2, 2, 2, 2432, 2433, 8, 98, 1, 2, 2433, 2437, 5, 196, 99, 2, 2434, 2435, 9, 23, 2, 2, 2435, 2437, 5, 194, 98, 9, 2436, 2432, 3, 2, 2, 2, 2436, 2434, 3, 2, 2, 2, 2437, 2459, 3, 2, 2, 2, 2438, 2439, 12, 8, 2, 2, 2439, 2440, 9, 24, 2, 2, 2440, 2458, 5, 194, 98, 9, 2441, 2442, 12, 7, 2, 2, 2442, 2443, 9, 25, 2, 2, 2443, 2458, 5, 194, 98, 8, 2444, 2445, 12, 6, 2, 2, 2445, 2446, 7, 281, 2, 2, 2446, 2458, 5, 194, 98, 7, 2447, 2448, 12, 5, 2, 2, 2448, 2449, 7, 284, 2, 2, 2449, 2458, 5, 194, 98, 6, 2450, 2451, 12, 4, 2, 2, 2451, 2452, 7, 282, 2, 2, 2452, 2458, 5, 194, 98, 5, 2453, 2454, 12, 3, 2, 2, 2454, 2455, 5, 200, 101, 2, 2455, 2456, 5, 194, 98, 4, 2456, 2458, 3, 2, 2, 2, 2457, 2438, 3, 2, 2, 2, 2457, 2441, 3, 2, 2, 2, 2457, 2444, 3, 2, 2, 2, 2457, 2447, 3, 2, 2, 2, 2457, 2450, 3, 2, 2, 2, 2457, 2453, 3, 2, 2, 2, 2458, 2461, 3, 2, 2, 2, 2459, 2457, 3, 2, 2, 2, 2459, 2460, 3, 2, 2, 2, 2460, 195, 3, 2, 2, 2, 2461, 2459, 3, 2, 2, 2, 2462, 2463, 8, 99, 1, 2, 2463, 2647, 9, 26, 2, 2, 2464, 2466, 7, 35, 2, 2, 2465, 2467, 5, 238, 120, 2, 2466, 2465, 3, 2, 2, 2, 2467, 2468, 3, 2, 2, 2, 2468, 2466, 3, 2, 2, 2, 2468, 2469, 3, 2, 2, 2, 2469, 2472, 3, 2, 2, 2, 2470, 2471, 7, 79, 2, 2, 2471, 2473, 5, 188, 95, 2, 2472, 2470, 3, 2, 2, 2, 2472, 2473, 3, 2, 2, 2, 2473, 2474, 3, 2, 2, 2, 2474, 2475, 7, 80, 2, 2, 2475, 2647, 3, 2, 2, 2, 2476, 2477, 7, 35, 2, 2, 2477, 2479, 5, 188, 95, 2, 2478, 2480, 5, 238, 120, 2, 2479, 2478, 3, 2, 2, 2, 2480, 2481, 3, 2, 2, 2, 2481, 2479, 3, 2, 2, 2, 2481, 2482, 3, 2, 2, 2, 2482, 2485, 3, 2, 2, 2, 2483, 2484, 7, 79, 2, 2, 2484, 2486, 5, 188, 95, 2, 2485, 2483, 3, 2, 2, 2, 2485, 2486, 3, 2, 2, 2, 2486, 2487, 3, 2, 2, 2, 2487, 2488, 7, 80, 2, 2, 2488, 2647, 3, 2, 2, 2, 2489, 2490, 7, 36, 2, 2, 2490, 2491, 7, 4, 2, 2, 2491, 2492, 5, 188, 95, 2, 2492, 2493, 7, 24, 2, 2, 2493, 2494, 5, 224, 113, 2, 2494, 2495, 7, 5, 2, 2, 2495, 2647, 3, 2, 2, 2, 2496, 2497, 7, 226, 2, 2, 2497, 2506, 7, 4, 2, 2, 2498, 2503, 5, 178, 90, 2, 2499, 2500, 7, 6, 2, 2, 2500, 2502, 5, 178, 90, 2, 2501, 2499, 3, 2, 2, 2, 2502, 2505, 3, 2, 2, 2, 2503, 2501, 3, 2, 2, 2, 2503, 2504, 3, 2, 2, 2, 2504, 2507, 3, 2, 2, 2, 2505, 2503, 3, 2, 2, 2, 2506, 2498, 3, 2, 2, 2, 2506, 2507, 3, 2, 2, 2, 2507, 2508, 3, 2, 2, 2, 2508, 2647, 7, 5, 2, 2, 2509, 2510, 7, 96, 2, 2, 2510, 2511, 7, 4, 2, 2, 2511, 2514, 5, 188, 95, 2, 2512, 2513, 7, 113, 2, 2, 2513, 2515, 7, 157, 2, 2, 2514, 2512, 3, 2, 2, 2, 2514, 2515, 3, 2, 2, 2, 2515, 2516, 3, 2, 2, 2, 2516, 2517, 7, 5, 2, 2, 2517, 2647, 3, 2, 2, 2, 2518, 2519, 7, 129, 2, 2, 2519, 2520, 7, 4, 2, 2, 2520, 2523, 5, 188, 95, 2, 2521, 2522, 7, 113, 2, 2, 2522, 2524, 7, 157, 2, 2, 2523, 2521, 3, 2, 2, 2, 2523, 2524, 3, 2, 2, 2, 2524, 2525, 3, 2, 2, 2, 2525, 2526, 7, 5, 2, 2, 2526, 2647, 3, 2, 2, 2, 2527, 2528, 7, 178, 2, 2, 2528, 2529, 7, 4, 2, 2, 2529, 2530, 5, 194, 98, 2, 2530, 2531, 7, 115, 2, 2, 2531, 2532, 5, 194, 98, 2, 2532, 2533, 7, 5, 2, 2, 2533, 2647, 3, 2, 2, 2, 2534, 2647, 5, 198, 100, 2, 2535, 2647, 7, 276, 2, 2, 2536, 2537, 5, 254, 128, 2, 2537, 2538, 7, 7, 2, 2, 2538, 2539, 7, 276, 2, 2, 2539, 2647, 3, 2, 2, 2, 2540, 2541, 7, 4, 2, 2, 2541, 2544, 5, 178, 90, 2, 2542, 2543, 7, 6, 2, 2, 2543, 2545, 5, 178, 90, 2, 2544, 2542, 3, 2, 2, 2, 2545, 2546, 3, 2, 2, 2, 2546, 2544, 3, 2, 2, 2, 2546, 2547, 3, 2, 2, 2, 2547, 2548, 3, 2, 2, 2, 2548, 2549, 7, 5, 2, 2, 2549, 2647, 3, 2, 2, 2, 2550, 2551, 7, 4, 2, 2, 2551, 2552, 5, 32, 17, 2, 2552, 2553, 7, 5, 2, 2, 2553, 2647, 3, 2, 2, 2, 2554, 2555, 5, 252, 127, 2, 2555, 2567, 7, 4, 2, 2, 2556, 2558, 5, 134, 68, 2, 2557, 2556, 3, 2, 2, 2, 2557, 2558, 3, 2, 2, 2, 2558, 2559, 3, 2, 2, 2, 2559, 2564, 5, 188, 95, 2, 2560, 2561, 7, 6, 2, 2, 2561, 2563, 5, 188, 95, 2, 2562, 2560, 3, 2, 2, 2, 2563, 2566, 3, 2, 2, 2, 2564, 2562, 3, 2, 2, 2, 2564, 2565, 3, 2, 2, 2, 2565, 2568, 3, 2, 2, 2, 2566, 2564, 3, 2, 2, 2, 2567, 2557, 3, 2, 2, 2, 2567, 2568, 3, 2, 2, 2, 2568, 2569, 3, 2, 2, 2, 2569, 2576, 7, 5, 2, 2, 2570, 2571, 7, 94, 2, 2, 2571, 2572, 7, 4, 2, 2, 2572, 2573, 7, 262, 2, 2, 2573, 2574, 5, 190, 96, 2, 2574, 2575, 7, 5, 2, 2, 2575, 2577, 3, 2, 2, 2, 2576, 2570, 3, 2, 2, 2, 2576, 2577, 3, 2, 2, 2, 2577, 2580, 3, 2, 2, 2, 2578, 2579, 7, 168, 2, 2, 2579, 2581, 5, 244, 123, 2, 2580, 2578, 3, 2, 2, 2, 2580, 2581, 3, 2, 2, 2, 2581, 2647, 3, 2, 2, 2, 2582, 2583, 5, 260, 131, 2, 2583, 2584, 7, 10, 2, 2, 2584, 2585, 5, 188, 95, 2, 2585, 2647, 3, 2, 2, 2, 2586, 2587, 7, 4, 2, 2, 2587, 2590, 5, 260, 131, 2, 2588, 2589, 7, 6, 2, 2, 2589, 2591, 5, 260, 131, 2, 2590, 2588, 3, 2, 2, 2, 2591, 2592, 3, 2, 2, 2, 2592, 2590, 3, 2, 2, 2, 2592, 2593, 3, 2, 2, 2, 2593, 2594, 3, 2, 2, 2, 2594, 2595, 7, 5, 2, 2, 2595, 2596, 7, 10, 2, 2, 2596, 2597, 5, 188, 95, 2, 2597, 2647, 3, 2, 2, 2, 2598, 2647, 5, 260, 131, 2, 2599, 2600, 7, 4, 2, 2, 2600, 2601, 5, 188, 95, 2, 2601, 2602, 7, 5, 2, 2, 2602, 2647, 3, 2, 2, 2, 2603, 2604, 7, 90, 2, 2, 2604, 2605, 7, 4, 2, 2, 2605, 2606, 5, 260, 131, 2, 2606, 2607, 7, 102, 2, 2, 2607, 2608, 5, 194, 98, 2, 2608, 2609, 7, 5, 2, 2, 2609, 2647, 3, 2, 2, 2, 2610, 2611, 9, 27, 2, 2, 2611, 2612, 7, 4, 2, 2, 2612, 2613, 5, 194, 98, 2, 2613, 2614, 9, 28, 2, 2, 2614, 2617, 5, 194, 98, 2, 2615, 2616, 9, 29, 2, 2, 2616, 2618, 5, 194, 98, 2, 2617, 2615, 3, 2, 2, 2, 2617, 2618, 3, 2, 2, 2, 2618, 2619, 3, 2, 2, 2, 2619, 2620, 7, 5, 2, 2, 2620, 2647, 3, 2, 2, 2, 2621, 2622, 7, 242, 2, 2, 2622, 2624, 7, 4, 2, 2, 2623, 2625, 9, 30, 2, 2, 2624, 2623, 3, 2, 2, 2, 2624, 2625, 3, 2, 2, 2, 2625, 2627, 3, 2, 2, 2, 2626, 2628, 5, 194, 98, 2, 2627, 2626, 3, 2, 2, 2, 2627, 2628, 3, 2, 2, 2, 2628, 2629, 3, 2, 2, 2, 2629, 2630, 7, 102, 2, 2, 2630, 2631, 5, 194, 98, 2, 2631, 2632, 7, 5, 2, 2, 2632, 2647, 3, 2, 2, 2, 2633, 2634, 7, 170, 2, 2, 2634, 2635, 7, 4, 2, 2, 2635, 2636, 5, 194, 98, 2, 2636, 2637, 7, 177, 2, 2, 2637, 2638, 5, 194, 98, 2, 2638, 2639, 7, 102, 2, 2, 2639, 2642, 5, 194, 98, 2, 2640, 2641, 7, 98, 2, 2, 2641, 2643, 5, 194, 98, 2, 2642, 2640, 3, 2, 2, 2, 2642, 2643, 3, 2, 2, 2, 2643, 2644, 3, 2, 2, 2, 2644, 2645, 7, 5, 2, 2, 2645, 2647, 3, 2, 2, 2, 2646, 2462, 3, 2, 2, 2, 2646, 2464, 3, 2, 2, 2, 2646, 2476, 3, 2, 2, 2, 2646, 2489, 3, 2, 2, 2, 2646, 2496, 3, 2, 2, 2, 2646, 2509, 3, 2, 2, 2, 2646, 2518, 3, 2, 2, 2, 2646, 2527, 3, 2, 2, 2, 2646, 2534, 3, 2, 2, 2, 2646, 2535, 3, 2, 2, 2, 2646, 2536, 3, 2, 2, 2, 2646, 2540, 3, 2, 2, 2, 2646, 2550, 3, 2, 2, 2, 2646, 2554, 3, 2, 2, 2, 2646, 2582, 3, 2, 2, 2, 2646, 2586, 3, 2, 2, 2, 2646, 2598, 3, 2, 2, 2, 2646, 2599, 3, 2, 2, 2, 2646, 2603, 3, 2, 2, 2, 2646, 2610, 3, 2, 2, 2, 2646, 2621, 3, 2, 2, 2, 2646, 2633, 3, 2, 2, 2, 2647, 2658, 3, 2, 2, 2, 2648, 2649, 12, 10, 2, 2, 2649, 2650, 7, 11, 2, 2, 2650, 2651, 5, 194, 98, 2, 2651, 2652, 7, 12, 2, 2, 2652, 2657, 3, 2, 2, 2, 2653, 2654, 12, 8, 2, 2, 2654, 2655, 7, 7, 2, 2, 2655, 2657, 5, 260, 131, 2, 2656, 2648, 3, 2, 2, 2, 2656, 2653, 3, 2, 2, 2, 2657, 2660, 3, 2, 2, 2, 2658, 2656, 3, 2, 2, 2, 2658, 2659, 3, 2, 2, 2, 2659, 197, 3, 2, 2, 2, 2660, 2658, 3, 2, 2, 2, 2661, 2674, 7, 156, 2, 2, 2662, 2674, 5, 208, 105, 2, 2663, 2664, 5, 260, 131, 2, 2664, 2665, 7, 285, 2, 2, 2665, 2674, 3, 2, 2, 2, 2666, 2674, 5, 266, 134, 2, 2667, 2674, 5, 206, 104, 2, 2668, 2670, 7, 285, 2, 2, 2669, 2668, 3, 2, 2, 2, 2670, 2671, 3, 2, 2, 2, 2671, 2669, 3, 2, 2, 2, 2671, 2672, 3, 2, 2, 2, 2672, 2674, 3, 2, 2, 2, 2673, 2661, 3, 2, 2, 2, 2673, 2662, 3, 2, 2, 2, 2673, 2663, 3, 2, 2, 2, 2673, 2666, 3, 2, 2, 2, 2673, 2667, 3, 2, 2, 2, 2673, 2669, 3, 2, 2, 2, 2674, 199, 3, 2, 2, 2, 2675, 2676, 9, 31, 2, 2, 2676, 201, 3, 2, 2, 2, 2677, 2678, 9, 32, 2, 2, 2678, 203, 3, 2, 2, 2, 2679, 2680, 9, 33, 2, 2, 2680, 205, 3, 2, 2, 2, 2681, 2682, 9, 34, 2, 2, 2682, 207, 3, 2, 2, 2, 2683, 2686, 7, 123, 2, 2, 2684, 2687, 5, 210, 106, 2, 2685, 2687, 5, 214, 108, 2, 2686, 2684, 3, 2, 2, 2, 2686, 2685, 3, 2, 2, 2, 2686, 2687, 3, 2, 2, 2, 2687, 209, 3, 2, 2, 2, 2688, 2690, 5, 212, 107, 2, 2689, 2691, 5, 216, 109, 2, 2690, 2689, 3, 2, 2, 2, 2690, 2691, 3, 2, 2, 2, 2691, 211, 3, 2, 2, 2, 2692, 2693, 5, 218, 110, 2, 2693, 2694, 5, 220, 111, 2, 2694, 2696, 3, 2, 2, 2, 2695, 2692, 3, 2, 2, 2, 2696, 2697, 3, 2, 2, 2, 2697, 2695, 3, 2, 2, 2, 2697, 2698, 3, 2, 2, 2, 2698, 213, 3, 2, 2, 2, 2699, 2702, 5, 216, 109, 2, 2700, 2703, 5, 212, 107, 2, 2701, 2703, 5, 216, 109, 2, 2702, 2700, 3, 2, 2, 2, 2702, 2701, 3, 2, 2, 2, 2702, 2703, 3, 2, 2, 2, 2703, 215, 3, 2, 2, 2, 2704, 2705, 5, 218, 110, 2, 2705, 2706, 5, 220, 111, 2, 2706, 2707, 7, 236, 2, 2, 2707, 2708, 5, 220, 111, 2, 2708, 217, 3, 2, 2, 2, 2709, 2711, 9, 35, 2, 2, 2710, 2709, 3, 2, 2, 2, 2710, 2711, 3, 2, 2, 2, 2711, 2712, 3, 2, 2, 2, 2712, 2715, 9, 20, 2, 2, 2713, 2715, 7, 285, 2, 2, 2714, 2710, 3, 2, 2, 2, 2714, 2713, 3, 2, 2, 2, 2715, 219, 3, 2, 2, 2, 2716, 2724, 7, 66, 2, 2, 2717, 2724, 7, 111, 2, 2, 2718, 2724, 7, 148, 2, 2, 2719, 2724, 7, 149, 2, 2, 2720, 2724, 7, 207, 2, 2, 2721, 2724, 7, 265, 2, 2, 2722, 2724, 5, 260, 131, 2, 2723, 2716, 3, 2, 2, 2, 2723, 2717, 3, 2, 2, 2, 2723, 2718, 3, 2, 2, 2, 2723, 2719, 3, 2, 2, 2, 2723, 2720, 3, 2, 2, 2, 2723, 2721, 3, 2, 2, 2, 2723, 2722, 3, 2, 2, 2, 2724, 221, 3, 2, 2, 2, 2725, 2729, 7, 96, 2, 2, 2726, 2727, 7, 15, 2, 2, 2727, 2729, 5, 256, 129, 2, 2728, 2725, 3, 2, 2, 2, 2728, 2726, 3, 2, 2, 2, 2729, 223, 3, 2, 2, 2, 2730, 2731, 7, 23, 2, 2, 2731, 2732, 7, 270, 2, 2, 2732, 2733, 5, 224, 113, 2, 2733, 2734, 7, 272, 2, 2, 2734, 2765, 3, 2, 2, 2, 2735, 2736, 7, 145, 2, 2, 2736, 2737, 7, 270, 2, 2, 2737, 2738, 5, 224, 113, 2, 2738, 2739, 7, 6, 2, 2, 2739, 2740, 5, 224, 113, 2, 2740, 2741, 7, 272, 2, 2, 2741, 2765, 3, 2, 2, 2, 2742, 2749, 7, 226, 2, 2, 2743, 2745, 7, 270, 2, 2, 2744, 2746, 5, 234, 118, 2, 2745, 2744, 3, 2, 2, 2, 2745, 2746, 3, 2, 2, 2, 2746, 2747, 3, 2, 2, 2, 2747, 2750, 7, 272, 2, 2, 2748, 2750, 7, 268, 2, 2, 2749, 2743, 3, 2, 2, 2, 2749, 2748, 3, 2, 2, 2, 2750, 2765, 3, 2, 2, 2, 2751, 2762, 5, 260, 131, 2, 2752, 2753, 7, 4, 2, 2, 2753, 2758, 7, 289, 2, 2, 2754, 2755, 7, 6, 2, 2, 2755, 2757, 7, 289, 2, 2, 2756, 2754, 3, 2, 2, 2, 2757, 2760, 3, 2, 2, 2, 2758, 2756, 3, 2, 2, 2, 2758, 2759, 3, 2, 2, 2, 2759, 2761, 3, 2, 2, 2, 2760, 2758, 3, 2, 2, 2, 2761, 2763, 7, 5, 2, 2, 2762, 2752, 3, 2, 2, 2, 2762, 2763, 3, 2, 2, 2, 2763, 2765, 3, 2, 2, 2, 2764, 2730, 3, 2, 2, 2, 2764, 2735, 3, 2, 2, 2, 2764, 2742, 3, 2, 2, 2, 2764, 2751, 3, 2, 2, 2, 2765, 225, 3, 2, 2, 2, 2766, 2771, 5, 228, 115, 2, 2767, 2768, 7, 6, 2, 2, 2768, 2770, 5, 228, 115, 2, 2769, 2767, 3, 2, 2, 2, 2770, 2773, 3, 2, 2, 2, 2771, 2769, 3, 2, 2, 2, 2771, 2772, 3, 2, 2, 2, 2772, 227, 3, 2, 2, 2, 2773, 2771, 3, 2, 2, 2, 2774, 2775, 5, 172, 87, 2, 2775, 2778, 5, 224, 113, 2, 2776, 2777, 7, 155, 2, 2, 2777, 2779, 7, 156, 2, 2, 2778, 2776, 3, 2, 2, 2, 2778, 2779, 3, 2, 2, 2, 2779, 2781, 3, 2, 2, 2, 2780, 2782, 5, 30, 16, 2, 2781, 2780, 3, 2, 2, 2, 2781, 2782, 3, 2, 2, 2, 2782, 2784, 3, 2, 2, 2, 2783, 2785, 5, 222, 112, 2, 2784, 2783, 3, 2, 2, 2, 2784, 2785, 3, 2, 2, 2, 2785, 229, 3, 2, 2, 2, 2786, 2791, 5, 232, 117, 2, 2787, 2788, 7, 6, 2, 2, 2788, 2790, 5, 232, 117, 2, 2789, 2787, 3, 2, 2, 2, 2790, 2793, 3, 2, 2, 2, 2791, 2789, 3, 2, 2, 2, 2791, 2792, 3, 2, 2, 2, 2792, 231, 3, 2, 2, 2, 2793, 2791, 3, 2, 2, 2, 2794, 2795, 5, 256, 129, 2, 2795, 2798, 5, 224, 113, 2, 2796, 2797, 7, 155, 2, 2, 2797, 2799, 7, 156, 2, 2, 2798, 2796, 3, 2, 2, 2, 2798, 2799, 3, 2, 2, 2, 2799, 2801, 3, 2, 2, 2, 2800, 2802, 5, 30, 16, 2, 2801, 2800, 3, 2, 2, 2, 2801, 2802, 3, 2, 2, 2, 2802, 233, 3, 2, 2, 2, 2803, 2808, 5, 236, 119, 2, 2804, 2805, 7, 6, 2, 2, 2805, 2807, 5, 236, 119, 2, 2806, 2804, 3, 2, 2, 2, 2807, 2810, 3, 2, 2, 2, 2808, 2806, 3, 2, 2, 2, 2808, 2809, 3, 2, 2, 2, 2809, 235, 3, 2, 2, 2, 2810, 2808, 3, 2, 2, 2, 2811, 2812, 5, 260, 131, 2, 2812, 2813, 7, 13, 2, 2, 2813, 2816, 5, 224, 113, 2, 2814, 2815, 7, 155, 2, 2, 2815, 2817, 7, 156, 2, 2, 2816, 2814, 3, 2, 2, 2, 2816, 2817, 3, 2, 2, 2, 2817, 2819, 3, 2, 2, 2, 2818, 2820, 5, 30, 16, 2, 2819, 2818, 3, 2, 2, 2, 2819, 2820, 3, 2, 2, 2, 2820, 237, 3, 2, 2, 2, 2821, 2822, 7, 261, 2, 2, 2822, 2823, 5, 188, 95, 2, 2823, 2824, 7, 235, 2, 2, 2824, 2825, 5, 188, 95, 2, 2825, 239, 3, 2, 2, 2, 2826, 2827, 7, 263, 2, 2, 2827, 2832, 5, 242, 122, 2, 2828, 2829, 7, 6, 2, 2, 2829, 2831, 5, 242, 122, 2, 2830, 2828, 3, 2, 2, 2, 2831, 2834, 3, 2, 2, 2, 2832, 2830, 3, 2, 2, 2, 2832, 2833, 3, 2, 2, 2, 2833, 241, 3, 2, 2, 2, 2834, 2832, 3, 2, 2, 2, 2835, 2836, 5, 256, 129, 2, 2836, 2837, 7, 24, 2, 2, 2837, 2838, 5, 244, 123, 2, 2838, 243, 3, 2, 2, 2, 2839, 2886, 5, 256, 129, 2, 2840, 2841, 7, 4, 2, 2, 2841, 2842, 5, 256, 129, 2, 2842, 2843, 7, 5, 2, 2, 2843, 2886, 3, 2, 2, 2, 2844, 2879, 7, 4, 2, 2, 2845, 2846, 7, 40, 2, 2, 2846, 2847, 7, 32, 2, 2, 2847, 2852, 5, 188, 95, 2, 2848, 2849, 7, 6, 2, 2, 2849, 2851, 5, 188, 95, 2, 2850, 2848, 3, 2, 2, 2, 2851, 2854, 3, 2, 2, 2, 2852, 2850, 3, 2, 2, 2, 2852, 2853, 3, 2, 2, 2, 2853, 2880, 3, 2, 2, 2, 2854, 2852, 3, 2, 2, 2, 2855, 2856, 9, 36, 2, 2, 2856, 2857, 7, 32, 2, 2, 2857, 2862, 5, 188, 95, 2, 2858, 2859, 7, 6, 2, 2, 2859, 2861, 5, 188, 95, 2, 2860, 2858, 3, 2, 2, 2, 2861, 2864, 3, 2, 2, 2, 2862, 2860, 3, 2, 2, 2, 2862, 2863, 3, 2, 2, 2, 2863, 2866, 3, 2, 2, 2, 2864, 2862, 3, 2, 2, 2, 2865, 2855, 3, 2, 2, 2, 2865, 2866, 3, 2, 2, 2, 2866, 2877, 3, 2, 2, 2, 2867, 2868, 9, 37, 2, 2, 2868, 2869, 7, 32, 2, 2, 2869, 2874, 5, 86, 44, 2, 2870, 2871, 7, 6, 2, 2, 2871, 2873, 5, 86, 44, 2, 2872, 2870, 3, 2, 2, 2, 2873, 2876, 3, 2, 2, 2, 2874, 2872, 3, 2, 2, 2, 2874, 2875, 3, 2, 2, 2, 2875, 2878, 3, 2, 2, 2, 2876, 2874, 3, 2, 2, 2, 2877, 2867, 3, 2, 2, 2, 2877, 2878, 3, 2, 2, 2, 2878, 2880, 3, 2, 2, 2, 2879, 2845, 3, 2, 2, 2, 2879, 2865, 3, 2, 2, 2, 2880, 2882, 3, 2, 2, 2, 2881, 2883, 5, 246, 124, 2, 2882, 2881, 3, 2, 2, 2, 2882, 2883, 3, 2, 2, 2, 2883, 2884, 3, 2, 2, 2, 2884, 2886, 7, 5, 2, 2, 2885, 2839, 3, 2, 2, 2, 2885, 2840, 3, 2, 2, 2, 2885, 2844, 3, 2, 2, 2, 2886, 245, 3, 2, 2, 2, 2887, 2888, 7, 185, 2, 2, 2888, 2904, 5, 248, 125, 2, 2889, 2890, 7, 205, 2, 2, 2890, 2904, 5, 248, 125, 2, 2891, 2892, 7, 185, 2, 2, 2892, 2893, 7, 28, 2, 2, 2893, 2894, 5, 248, 125, 2, 2894, 2895, 7, 19, 2, 2, 2895, 2896, 5, 248, 125, 2, 2896, 2904, 3, 2, 2, 2, 2897, 2898, 7, 205, 2, 2, 2898, 2899, 7, 28, 2, 2, 2899, 2900, 5, 248, 125, 2, 2900, 2901, 7, 19, 2, 2, 2901, 2902, 5, 248, 125, 2, 2902, 2904, 3, 2, 2, 2, 2903, 2887, 3, 2, 2, 2, 2903, 2889, 3, 2, 2, 2, 2903, 2891, 3, 2, 2, 2, 2903, 2897, 3, 2, 2, 2, 2904, 247, 3, 2, 2, 2, 2905, 2906, 7, 247, 2, 2, 2906, 2913, 9, 38, 2, 2, 2907, 2908, 7, 58, 2, 2, 2908, 2913, 7, 204, 2, 2, 2909, 2910, 5, 188, 95, 2, 2910, 2911, 9, 38, 2, 2, 2911, 2913, 3, 2, 2, 2, 2912, 2905, 3, 2, 2, 2, 2912, 2907, 3, 2, 2, 2, 2912, 2909, 3, 2, 2, 2, 2913, 249, 3, 2, 2, 2, 2914, 2919, 5, 254, 128, 2, 2915, 2916, 7, 6, 2, 2, 2916, 2918, 5, 254, 128, 2, 2917, 2915, 3, 2, 2, 2, 2918, 2921, 3, 2, 2, 2, 2919, 2917, 3, 2, 2, 2, 2919, 2920, 3, 2, 2, 2, 2920, 251, 3, 2, 2, 2, 2921, 2919, 3, 2, 2, 2, 2922, 2927, 5, 254, 128, 2, 2923, 2927, 7, 94, 2, 2, 2924, 2927, 7, 133, 2, 2, 2925, 2927, 7, 198, 2, 2, 2926, 2922, 3, 2, 2, 2, 2926, 2923, 3, 2, 2, 2, 2926, 2924, 3, 2, 2, 2, 2926, 2925, 3, 2, 2, 2, 2927, 253, 3, 2, 2, 2, 2928, 2933, 5, 260, 131, 2, 2929, 2930, 7, 7, 2, 2, 2930, 2932, 5, 260, 131, 2, 2931, 2929, 3, 2, 2, 2, 2932, 2935, 3, 2, 2, 2, 2933, 2931, 3, 2, 2, 2, 2933, 2934, 3, 2, 2, 2, 2934, 255, 3, 2, 2, 2, 2935, 2933, 3, 2, 2, 2, 2936, 2937, 5, 260, 131, 2, 2937, 2938, 5, 258, 130, 2, 2938, 257, 3, 2, 2, 2, 2939, 2940, 7, 275, 2, 2, 2940, 2942, 5, 260, 131, 2, 2941, 2939, 3, 2, 2, 2, 2942, 2943, 3, 2, 2, 2, 2943, 2941, 3, 2, 2, 2, 2943, 2944, 3, 2, 2, 2, 2944, 2947, 3, 2, 2, 2, 2945, 2947, 3, 2, 2, 2, 2946, 2941, 3, 2, 2, 2, 2946, 2945, 3, 2, 2, 2, 2947, 259, 3, 2, 2, 2, 2948, 2952, 5, 262, 132, 2, 2949, 2950, 6, 131, 20, 2, 2950, 2952, 5, 272, 137, 2, 2951, 2948, 3, 2, 2, 2, 2951, 2949, 3, 2, 2, 2, 2952, 261, 3, 2, 2, 2, 2953, 2960, 7, 294, 2, 2, 2954, 2960, 5, 264, 133, 2, 2955, 2956, 6, 132, 21, 2, 2956, 2960, 5, 270, 136, 2, 2957, 2958, 6, 132, 22, 2, 2958, 2960, 5, 274, 138, 2, 2959, 2953, 3, 2, 2, 2, 2959, 2954, 3, 2, 2, 2, 2959, 2955, 3, 2, 2, 2, 2959, 2957, 3, 2, 2, 2, 2960, 263, 3, 2, 2, 2, 2961, 2962, 7, 295, 2, 2, 2962, 265, 3, 2, 2, 2, 2963, 2965, 6, 134, 23, 2, 2964, 2966, 7, 275, 2, 2, 2965, 2964, 3, 2, 2, 2, 2965, 2966, 3, 2, 2, 2, 2966, 2967, 3, 2, 2, 2, 2967, 3003, 7, 290, 2, 2, 2968, 2970, 6, 134, 24, 2, 2969, 2971, 7, 275, 2, 2, 2970, 2969, 3, 2, 2, 2, 2970, 2971, 3, 2, 2, 2, 2971, 2972, 3, 2, 2, 2, 2972, 3003, 7, 291, 2, 2, 2973, 2975, 6, 134, 25, 2, 2974, 2976, 7, 275, 2, 2, 2975, 2974, 3, 2, 2, 2, 2975, 2976, 3, 2, 2, 2, 2976, 2977, 3, 2, 2, 2, 2977, 3003, 9, 39, 2, 2, 2978, 2980, 7, 275, 2, 2, 2979, 2978, 3, 2, 2, 2, 2979, 2980, 3, 2, 2, 2, 2980, 2981, 3, 2, 2, 2, 2981, 3003, 7, 289, 2, 2, 2982, 2984, 7, 275, 2, 2, 2983, 2982, 3, 2, 2, 2, 2983, 2984, 3, 2, 2, 2, 2984, 2985, 3, 2, 2, 2, 2985, 3003, 7, 286, 2, 2, 2986, 2988, 7, 275, 2, 2, 2987, 2986, 3, 2, 2, 2, 2987, 2988, 3, 2, 2, 2, 2988, 2989, 3, 2, 2, 2, 2989, 3003, 7, 287, 2, 2, 2990, 2992, 7, 275, 2, 2, 2991, 2990, 3, 2, 2, 2, 2991, 2992, 3, 2, 2, 2, 2992, 2993, 3, 2, 2, 2, 2993, 3003, 7, 288, 2, 2, 2994, 2996, 7, 275, 2, 2, 2995, 2994, 3, 2, 2, 2, 2995, 2996, 3, 2, 2, 2, 2996, 2997, 3, 2, 2, 2, 2997, 3003, 7, 292, 2, 2, 2998, 3000, 7, 275, 2, 2, 2999, 2998, 3, 2, 2, 2, 2999, 3000, 3, 2, 2, 2, 3000, 3001, 3, 2, 2, 2, 3001, 3003, 7, 293, 2, 2, 3002, 2963, 3, 2, 2, 2, 3002, 2968, 3, 2, 2, 2, 3002, 2973, 3, 2, 2, 2, 3002, 2979, 3, 2, 2, 2, 3002, 2983, 3, 2, 2, 2, 3002, 2987, 3, 2, 2, 2, 3002, 2991, 3, 2, 2, 2, 3002, 2995, 3, 2, 2, 2, 3002, 2999, 3, 2, 2, 2, 3003, 267, 3, 2, 2, 2, 3004, 3005, 7, 245, 2, 2, 3005, 3012, 5, 224, 113, 2, 3006, 3012, 5, 30, 16, 2, 3007, 3012, 5, 222, 112, 2, 3008, 3009, 9, 40, 2, 2, 3009, 3010, 7, 155, 2, 2, 3010, 3012, 7, 156, 2, 2, 3011, 3004, 3, 2, 2, 2, 3011, 3006, 3, 2, 2, 2, 3011, 3007, 3, 2, 2, 2, 3011, 3008, 3, 2, 2, 2, 3012, 269, 3, 2, 2, 2, 3013, 3014, 9, 41, 2, 2, 3014, 271, 3, 2, 2, 2, 3015, 3016, 9, 42, 2, 2, 3016, 273, 3, 2, 2, 2, 3017, 3018, 9, 43, 2, 2, 3018, 275, 3, 2, 2, 2, 396, 280, 305, 310, 318, 326, 328, 348, 352, 358, 361, 364, 372, 375, 379, 382, 390, 395, 398, 405, 417, 426, 428, 432, 435, 442, 453, 455, 463, 468, 471, 477, 488, 552, 561, 565, 571, 575, 580, 586, 598, 606, 612, 625, 630, 646, 653, 657, 663, 678, 682, 688, 694, 697, 700, 706, 710, 718, 720, 729, 732, 741, 746, 752, 759, 762, 768, 779, 782, 786, 791, 796, 803, 806, 809, 816, 821, 830, 838, 844, 847, 850, 856, 860, 864, 868, 870, 878, 886, 892, 898, 901, 905, 908, 912, 937, 940, 944, 950, 953, 956, 962, 970, 975, 981, 987, 999, 1002, 1009, 1016, 1024, 1027, 1035, 1039, 1046, 1162, 1170, 1178, 1187, 1197, 1201, 1204, 1210, 1216, 1228, 1240, 1245, 1254, 1262, 1269, 1271, 1276, 1280, 1285, 1290, 1295, 1298, 1303, 1307, 1312, 1314, 1318, 1327, 1335, 1344, 1351, 1360, 1365, 1368, 1387, 1389, 1398, 1405, 1408, 1415, 1419, 1425, 1433, 1444, 1455, 1462, 1468, 1481, 1488, 1495, 1507, 1515, 1521, 1524, 1533, 1536, 1545, 1548, 1557, 1560, 1569, 1572, 1575, 1580, 1582, 1594, 1601, 1608, 1611, 1613, 1625, 1629, 1633, 1639, 1643, 1651, 1655, 1658, 1661, 1664, 1668, 1672, 1675, 1679, 1684, 1688, 1691, 1694, 1697, 1699, 1711, 1714, 1718, 1728, 1732, 1734, 1737, 1741, 1747, 1751, 1762, 1772, 1784, 1799, 1804, 1811, 1827, 1832, 1845, 1850, 1858, 1864, 1868, 1877, 1892, 1897, 1909, 1914, 1922, 1925, 1929, 1943, 1956, 1961, 1965, 1968, 1973, 1982, 1985, 1990, 1997, 2000, 2008, 2015, 2022, 2025, 2030, 2033, 2038, 2042, 2045, 2048, 2054, 2059, 2064, 2082, 2084, 2087, 2098, 2107, 2114, 2122, 2129, 2133, 2141, 2149, 2155, 2163, 2175, 2178, 2184, 2188, 2190, 2199, 2211, 2213, 2220, 2227, 2233, 2239, 2241, 2248, 2256, 2262, 2269, 2275, 2279, 2281, 2288, 2297, 2310, 2315, 2319, 2333, 2335, 2343, 2345, 2349, 2357, 2366, 2372, 2380, 2385, 2397, 2402, 2405, 2411, 2415, 2420, 2425, 2430, 2436, 2457, 2459, 2468, 2472, 2481, 2485, 2503, 2506, 2514, 2523, 2546, 2557, 2564, 2567, 2576, 2580, 2592, 2617, 2624, 2627, 2642, 2646, 2656, 2658, 2671, 2673, 2686, 2690, 2697, 2702, 2710, 2714, 2723, 2728, 2745, 2749, 2758, 2762, 2764, 2771, 2778, 2781, 2784, 2791, 2798, 2801, 2808, 2816, 2819, 2832, 2852, 2862, 2865, 2874, 2877, 2879, 2882, 2885, 2903, 2912, 2919, 2926, 2933, 2943, 2946, 2951, 2959, 2965, 2970, 2975, 2979, 2983, 2987, 2991, 2995, 2999, 3002, 3011] \ No newline at end of file diff --git a/pysparkling/sql/ast/generated/SqlBase.tokens b/pysparkling/sql/ast/generated/SqlBase.tokens new file mode 100644 index 000000000..0d0385147 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBase.tokens @@ -0,0 +1,572 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +T__5=6 +T__6=7 +T__7=8 +T__8=9 +T__9=10 +T__10=11 +ADD=12 +AFTER=13 +ALL=14 +ALTER=15 +ANALYZE=16 +AND=17 +ANTI=18 +ANY=19 +ARCHIVE=20 +ARRAY=21 +AS=22 +ASC=23 +AT=24 +AUTHORIZATION=25 +BETWEEN=26 +BOTH=27 +BUCKET=28 +BUCKETS=29 +BY=30 +CACHE=31 +CASCADE=32 +CASE=33 +CAST=34 +CHANGE=35 +CHECK=36 +CLEAR=37 +CLUSTER=38 +CLUSTERED=39 +CODEGEN=40 +COLLATE=41 +COLLECTION=42 +COLUMN=43 +COLUMNS=44 +COMMENT=45 +COMMIT=46 +COMPACT=47 +COMPACTIONS=48 +COMPUTE=49 +CONCATENATE=50 +CONSTRAINT=51 +COST=52 +CREATE=53 +CROSS=54 +CUBE=55 +CURRENT=56 +CURRENT_DATE=57 +CURRENT_TIME=58 +CURRENT_TIMESTAMP=59 +CURRENT_USER=60 +DATA=61 +DATABASE=62 +DATABASES=63 +DAY=64 +DBPROPERTIES=65 +DEFINED=66 +DELETE=67 +DELIMITED=68 +DESC=69 +DESCRIBE=70 +DFS=71 +DIRECTORIES=72 +DIRECTORY=73 +DISTINCT=74 +DISTRIBUTE=75 +DROP=76 +ELSE=77 +END=78 +ESCAPE=79 +ESCAPED=80 +EXCEPT=81 +EXCHANGE=82 +EXISTS=83 +EXPLAIN=84 +EXPORT=85 +EXTENDED=86 +EXTERNAL=87 +EXTRACT=88 +FALSE=89 +FETCH=90 +FIELDS=91 +FILTER=92 +FILEFORMAT=93 +FIRST=94 +FOLLOWING=95 +FOR=96 +FOREIGN=97 +FORMAT=98 +FORMATTED=99 +FROM=100 +FULL=101 +FUNCTION=102 +FUNCTIONS=103 +GLOBAL=104 +GRANT=105 +GROUP=106 +GROUPING=107 +HAVING=108 +HOUR=109 +IF=110 +IGNORE=111 +IMPORT=112 +IN=113 +INDEX=114 +INDEXES=115 +INNER=116 +INPATH=117 +INPUTFORMAT=118 +INSERT=119 +INTERSECT=120 +INTERVAL=121 +INTO=122 +IS=123 +ITEMS=124 +JOIN=125 +KEYS=126 +LAST=127 +LATERAL=128 +LAZY=129 +LEADING=130 +LEFT=131 +LIKE=132 +LIMIT=133 +LINES=134 +LIST=135 +LOAD=136 +LOCAL=137 +LOCATION=138 +LOCK=139 +LOCKS=140 +LOGICAL=141 +MACRO=142 +MAP=143 +MATCHED=144 +MERGE=145 +MINUTE=146 +MONTH=147 +MSCK=148 +NAMESPACE=149 +NAMESPACES=150 +NATURAL=151 +NO=152 +NOT=153 +NULL=154 +NULLS=155 +OF=156 +ON=157 +ONLY=158 +OPTION=159 +OPTIONS=160 +OR=161 +ORDER=162 +OUT=163 +OUTER=164 +OUTPUTFORMAT=165 +OVER=166 +OVERLAPS=167 +OVERLAY=168 +OVERWRITE=169 +PARTITION=170 +PARTITIONED=171 +PARTITIONS=172 +PERCENTLIT=173 +PIVOT=174 +PLACING=175 +POSITION=176 +PRECEDING=177 +PRIMARY=178 +PRINCIPALS=179 +PROPERTIES=180 +PURGE=181 +QUERY=182 +RANGE=183 +RECORDREADER=184 +RECORDWRITER=185 +RECOVER=186 +REDUCE=187 +REFERENCES=188 +REFRESH=189 +RENAME=190 +REPAIR=191 +REPLACE=192 +RESET=193 +RESTRICT=194 +REVOKE=195 +RIGHT=196 +RLIKE=197 +ROLE=198 +ROLES=199 +ROLLBACK=200 +ROLLUP=201 +ROW=202 +ROWS=203 +SCHEMA=204 +SECOND=205 +SELECT=206 +SEMI=207 +SEPARATED=208 +SERDE=209 +SERDEPROPERTIES=210 +SESSION_USER=211 +SET=212 +SETMINUS=213 +SETS=214 +SHOW=215 +SKEWED=216 +SOME=217 +SORT=218 +SORTED=219 +START=220 +STATISTICS=221 +STORED=222 +STRATIFY=223 +STRUCT=224 +SUBSTR=225 +SUBSTRING=226 +TABLE=227 +TABLES=228 +TABLESAMPLE=229 +TBLPROPERTIES=230 +TEMPORARY=231 +TERMINATED=232 +THEN=233 +TO=234 +TOUCH=235 +TRAILING=236 +TRANSACTION=237 +TRANSACTIONS=238 +TRANSFORM=239 +TRIM=240 +TRUE=241 +TRUNCATE=242 +TYPE=243 +UNARCHIVE=244 +UNBOUNDED=245 +UNCACHE=246 +UNION=247 +UNIQUE=248 +UNKNOWN=249 +UNLOCK=250 +UNSET=251 +UPDATE=252 +USE=253 +USER=254 +USING=255 +VALUES=256 +VIEW=257 +VIEWS=258 +WHEN=259 +WHERE=260 +WINDOW=261 +WITH=262 +YEAR=263 +EQ=264 +NSEQ=265 +NEQ=266 +NEQJ=267 +LT=268 +LTE=269 +GT=270 +GTE=271 +PLUS=272 +MINUS=273 +ASTERISK=274 +SLASH=275 +PERCENT=276 +DIV=277 +TILDE=278 +AMPERSAND=279 +PIPE=280 +CONCAT_PIPE=281 +HAT=282 +STRING=283 +BIGINT_LITERAL=284 +SMALLINT_LITERAL=285 +TINYINT_LITERAL=286 +INTEGER_VALUE=287 +EXPONENT_VALUE=288 +DECIMAL_VALUE=289 +DOUBLE_LITERAL=290 +BIGDECIMAL_LITERAL=291 +IDENTIFIER=292 +BACKQUOTED_IDENTIFIER=293 +SIMPLE_COMMENT=294 +BRACKETED_COMMENT=295 +WS=296 +UNRECOGNIZED=297 +';'=1 +'('=2 +')'=3 +','=4 +'.'=5 +'/*+'=6 +'*/'=7 +'->'=8 +'['=9 +']'=10 +':'=11 +'ADD'=12 +'AFTER'=13 +'ALL'=14 +'ALTER'=15 +'ANALYZE'=16 +'AND'=17 +'ANTI'=18 +'ANY'=19 +'ARCHIVE'=20 +'ARRAY'=21 +'AS'=22 +'ASC'=23 +'AT'=24 +'AUTHORIZATION'=25 +'BETWEEN'=26 +'BOTH'=27 +'BUCKET'=28 +'BUCKETS'=29 +'BY'=30 +'CACHE'=31 +'CASCADE'=32 +'CASE'=33 +'CAST'=34 +'CHANGE'=35 +'CHECK'=36 +'CLEAR'=37 +'CLUSTER'=38 +'CLUSTERED'=39 +'CODEGEN'=40 +'COLLATE'=41 +'COLLECTION'=42 +'COLUMN'=43 +'COLUMNS'=44 +'COMMENT'=45 +'COMMIT'=46 +'COMPACT'=47 +'COMPACTIONS'=48 +'COMPUTE'=49 +'CONCATENATE'=50 +'CONSTRAINT'=51 +'COST'=52 +'CREATE'=53 +'CROSS'=54 +'CUBE'=55 +'CURRENT'=56 +'CURRENT_DATE'=57 +'CURRENT_TIME'=58 +'CURRENT_TIMESTAMP'=59 +'CURRENT_USER'=60 +'DATA'=61 +'DATABASE'=62 +'DAY'=64 +'DBPROPERTIES'=65 +'DEFINED'=66 +'DELETE'=67 +'DELIMITED'=68 +'DESC'=69 +'DESCRIBE'=70 +'DFS'=71 +'DIRECTORIES'=72 +'DIRECTORY'=73 +'DISTINCT'=74 +'DISTRIBUTE'=75 +'DROP'=76 +'ELSE'=77 +'END'=78 +'ESCAPE'=79 +'ESCAPED'=80 +'EXCEPT'=81 +'EXCHANGE'=82 +'EXISTS'=83 +'EXPLAIN'=84 +'EXPORT'=85 +'EXTENDED'=86 +'EXTERNAL'=87 +'EXTRACT'=88 +'FALSE'=89 +'FETCH'=90 +'FIELDS'=91 +'FILTER'=92 +'FILEFORMAT'=93 +'FIRST'=94 +'FOLLOWING'=95 +'FOR'=96 +'FOREIGN'=97 +'FORMAT'=98 +'FORMATTED'=99 +'FROM'=100 +'FULL'=101 +'FUNCTION'=102 +'FUNCTIONS'=103 +'GLOBAL'=104 +'GRANT'=105 +'GROUP'=106 +'GROUPING'=107 +'HAVING'=108 +'HOUR'=109 +'IF'=110 +'IGNORE'=111 +'IMPORT'=112 +'IN'=113 +'INDEX'=114 +'INDEXES'=115 +'INNER'=116 +'INPATH'=117 +'INPUTFORMAT'=118 +'INSERT'=119 +'INTERSECT'=120 +'INTERVAL'=121 +'INTO'=122 +'IS'=123 +'ITEMS'=124 +'JOIN'=125 +'KEYS'=126 +'LAST'=127 +'LATERAL'=128 +'LAZY'=129 +'LEADING'=130 +'LEFT'=131 +'LIKE'=132 +'LIMIT'=133 +'LINES'=134 +'LIST'=135 +'LOAD'=136 +'LOCAL'=137 +'LOCATION'=138 +'LOCK'=139 +'LOCKS'=140 +'LOGICAL'=141 +'MACRO'=142 +'MAP'=143 +'MATCHED'=144 +'MERGE'=145 +'MINUTE'=146 +'MONTH'=147 +'MSCK'=148 +'NAMESPACE'=149 +'NAMESPACES'=150 +'NATURAL'=151 +'NO'=152 +'NULL'=154 +'NULLS'=155 +'OF'=156 +'ON'=157 +'ONLY'=158 +'OPTION'=159 +'OPTIONS'=160 +'OR'=161 +'ORDER'=162 +'OUT'=163 +'OUTER'=164 +'OUTPUTFORMAT'=165 +'OVER'=166 +'OVERLAPS'=167 +'OVERLAY'=168 +'OVERWRITE'=169 +'PARTITION'=170 +'PARTITIONED'=171 +'PARTITIONS'=172 +'PERCENT'=173 +'PIVOT'=174 +'PLACING'=175 +'POSITION'=176 +'PRECEDING'=177 +'PRIMARY'=178 +'PRINCIPALS'=179 +'PROPERTIES'=180 +'PURGE'=181 +'QUERY'=182 +'RANGE'=183 +'RECORDREADER'=184 +'RECORDWRITER'=185 +'RECOVER'=186 +'REDUCE'=187 +'REFERENCES'=188 +'REFRESH'=189 +'RENAME'=190 +'REPAIR'=191 +'REPLACE'=192 +'RESET'=193 +'RESTRICT'=194 +'REVOKE'=195 +'RIGHT'=196 +'ROLE'=198 +'ROLES'=199 +'ROLLBACK'=200 +'ROLLUP'=201 +'ROW'=202 +'ROWS'=203 +'SCHEMA'=204 +'SECOND'=205 +'SELECT'=206 +'SEMI'=207 +'SEPARATED'=208 +'SERDE'=209 +'SERDEPROPERTIES'=210 +'SESSION_USER'=211 +'SET'=212 +'MINUS'=213 +'SETS'=214 +'SHOW'=215 +'SKEWED'=216 +'SOME'=217 +'SORT'=218 +'SORTED'=219 +'START'=220 +'STATISTICS'=221 +'STORED'=222 +'STRATIFY'=223 +'STRUCT'=224 +'SUBSTR'=225 +'SUBSTRING'=226 +'TABLE'=227 +'TABLES'=228 +'TABLESAMPLE'=229 +'TBLPROPERTIES'=230 +'TERMINATED'=232 +'THEN'=233 +'TO'=234 +'TOUCH'=235 +'TRAILING'=236 +'TRANSACTION'=237 +'TRANSACTIONS'=238 +'TRANSFORM'=239 +'TRIM'=240 +'TRUE'=241 +'TRUNCATE'=242 +'TYPE'=243 +'UNARCHIVE'=244 +'UNBOUNDED'=245 +'UNCACHE'=246 +'UNION'=247 +'UNIQUE'=248 +'UNKNOWN'=249 +'UNLOCK'=250 +'UNSET'=251 +'UPDATE'=252 +'USE'=253 +'USER'=254 +'USING'=255 +'VALUES'=256 +'VIEW'=257 +'VIEWS'=258 +'WHEN'=259 +'WHERE'=260 +'WINDOW'=261 +'WITH'=262 +'YEAR'=263 +'<=>'=265 +'<>'=266 +'!='=267 +'<'=268 +'>'=270 +'+'=272 +'-'=273 +'*'=274 +'/'=275 +'%'=276 +'DIV'=277 +'~'=278 +'&'=279 +'|'=280 +'||'=281 +'^'=282 diff --git a/pysparkling/sql/ast/generated/SqlBaseBaseListener.java b/pysparkling/sql/ast/generated/SqlBaseBaseListener.java new file mode 100644 index 000000000..22f2ace73 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseBaseListener.java @@ -0,0 +1,3230 @@ +// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link SqlBaseListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class SqlBaseBaseListener implements SqlBaseListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterSingleExpression(SqlBaseParser.SingleExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleExpression(SqlBaseParser.SingleExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleDataType(SqlBaseParser.SingleDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleDataType(SqlBaseParser.SingleDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterDmlStatement(SqlBaseParser.DmlStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDmlStatement(SqlBaseParser.DmlStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropNamespace(SqlBaseParser.DropNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropNamespace(SqlBaseParser.DropNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplaceTable(SqlBaseParser.ReplaceTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplaceTable(SqlBaseParser.ReplaceTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetTableLocation(SqlBaseParser.SetTableLocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetTableLocation(SqlBaseParser.SetTableLocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterShowTable(SqlBaseParser.ShowTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTable(SqlBaseParser.ShowTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterShowViews(SqlBaseParser.ShowViewsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowViews(SqlBaseParser.ShowViewsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowPartitions(SqlBaseParser.ShowPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowPartitions(SqlBaseParser.ShowPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeRelation(SqlBaseParser.DescribeRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeRelation(SqlBaseParser.DescribeRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeQuery(SqlBaseParser.DescribeQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeQuery(SqlBaseParser.DescribeQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommentTable(SqlBaseParser.CommentTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommentTable(SqlBaseParser.CommentTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshTable(SqlBaseParser.RefreshTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshTable(SqlBaseParser.RefreshTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshResource(SqlBaseParser.RefreshResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshResource(SqlBaseParser.RefreshResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCacheTable(SqlBaseParser.CacheTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCacheTable(SqlBaseParser.CacheTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUncacheTable(SqlBaseParser.UncacheTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUncacheTable(SqlBaseParser.UncacheTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClearCache(SqlBaseParser.ClearCacheContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClearCache(SqlBaseParser.ClearCacheContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLoadData(SqlBaseParser.LoadDataContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLoadData(SqlBaseParser.LoadDataContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTruncateTable(SqlBaseParser.TruncateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTruncateTable(SqlBaseParser.TruncateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRepairTable(SqlBaseParser.RepairTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRepairTable(SqlBaseParser.RepairTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterManageResource(SqlBaseParser.ManageResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitManageResource(SqlBaseParser.ManageResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetConfiguration(SqlBaseParser.SetConfigurationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetConfiguration(SqlBaseParser.SetConfigurationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBucketSpec(SqlBaseParser.BucketSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBucketSpec(SqlBaseParser.BucketSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSkewSpec(SqlBaseParser.SkewSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSkewSpec(SqlBaseParser.SkewSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLocationSpec(SqlBaseParser.LocationSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLocationSpec(SqlBaseParser.LocationSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommentSpec(SqlBaseParser.CommentSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommentSpec(SqlBaseParser.CommentSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionSpec(SqlBaseParser.PartitionSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionSpec(SqlBaseParser.PartitionSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionVal(SqlBaseParser.PartitionValContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionVal(SqlBaseParser.PartitionValContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamespace(SqlBaseParser.NamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamespace(SqlBaseParser.NamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeColName(SqlBaseParser.DescribeColNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeColName(SqlBaseParser.DescribeColNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCtes(SqlBaseParser.CtesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCtes(SqlBaseParser.CtesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterTableProvider(SqlBaseParser.TableProviderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableProvider(SqlBaseParser.TableProviderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTablePropertyList(SqlBaseParser.TablePropertyListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTablePropertyList(SqlBaseParser.TablePropertyListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableProperty(SqlBaseParser.TablePropertyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableProperty(SqlBaseParser.TablePropertyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstantList(SqlBaseParser.ConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstantList(SqlBaseParser.ConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNestedConstantList(SqlBaseParser.NestedConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNestedConstantList(SqlBaseParser.NestedConstantListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableFileFormat(SqlBaseParser.TableFileFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableFileFormat(SqlBaseParser.TableFileFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStorageHandler(SqlBaseParser.StorageHandlerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStorageHandler(SqlBaseParser.StorageHandlerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUpdateTable(SqlBaseParser.UpdateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUpdateTable(SqlBaseParser.UpdateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterFromStmt(SqlBaseParser.FromStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFromStmt(SqlBaseParser.FromStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterFromStatement(SqlBaseParser.FromStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFromStatement(SqlBaseParser.FromStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransformClause(SqlBaseParser.TransformClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransformClause(SqlBaseParser.TransformClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelectClause(SqlBaseParser.SelectClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelectClause(SqlBaseParser.SelectClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetClause(SqlBaseParser.SetClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetClause(SqlBaseParser.SetClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMatchedClause(SqlBaseParser.MatchedClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMatchedClause(SqlBaseParser.MatchedClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMatchedAction(SqlBaseParser.MatchedActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMatchedAction(SqlBaseParser.MatchedActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignmentList(SqlBaseParser.AssignmentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignmentList(SqlBaseParser.AssignmentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterWhereClause(SqlBaseParser.WhereClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhereClause(SqlBaseParser.WhereClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHavingClause(SqlBaseParser.HavingClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHavingClause(SqlBaseParser.HavingClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHint(SqlBaseParser.HintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHint(SqlBaseParser.HintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHintStatement(SqlBaseParser.HintStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHintStatement(SqlBaseParser.HintStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFromClause(SqlBaseParser.FromClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFromClause(SqlBaseParser.FromClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAggregationClause(SqlBaseParser.AggregationClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAggregationClause(SqlBaseParser.AggregationClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterPivotClause(SqlBaseParser.PivotClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPivotClause(SqlBaseParser.PivotClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPivotColumn(SqlBaseParser.PivotColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPivotColumn(SqlBaseParser.PivotColumnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPivotValue(SqlBaseParser.PivotValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPivotValue(SqlBaseParser.PivotValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLateralView(SqlBaseParser.LateralViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLateralView(SqlBaseParser.LateralViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterRelation(SqlBaseParser.RelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelation(SqlBaseParser.RelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterSample(SqlBaseParser.SampleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSample(SqlBaseParser.SampleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampleByRows(SqlBaseParser.SampleByRowsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampleByRows(SqlBaseParser.SampleByRowsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampleByBucket(SqlBaseParser.SampleByBucketContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampleByBucket(SqlBaseParser.SampleByBucketContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampleByBytes(SqlBaseParser.SampleByBytesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampleByBytes(SqlBaseParser.SampleByBytesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierList(SqlBaseParser.IdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierList(SqlBaseParser.IdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterAliasedQuery(SqlBaseParser.AliasedQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAliasedQuery(SqlBaseParser.AliasedQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterFunctionTable(SqlBaseParser.FunctionTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionTable(SqlBaseParser.FunctionTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableAlias(SqlBaseParser.TableAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableAlias(SqlBaseParser.TableAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableIdentifier(SqlBaseParser.TableIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableIdentifier(SqlBaseParser.TableIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamedExpression(SqlBaseParser.NamedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamedExpression(SqlBaseParser.NamedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransformList(SqlBaseParser.TransformListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransformList(SqlBaseParser.TransformListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentityTransform(SqlBaseParser.IdentityTransformContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentityTransform(SqlBaseParser.IdentityTransformContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterApplyTransform(SqlBaseParser.ApplyTransformContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitApplyTransform(SqlBaseParser.ApplyTransformContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransformArgument(SqlBaseParser.TransformArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransformArgument(SqlBaseParser.TransformArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterPredicate(SqlBaseParser.PredicateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPredicate(SqlBaseParser.PredicateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterStruct(SqlBaseParser.StructContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStruct(SqlBaseParser.StructContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterLast(SqlBaseParser.LastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLast(SqlBaseParser.LastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStar(SqlBaseParser.StarContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStar(SqlBaseParser.StarContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOverlay(SqlBaseParser.OverlayContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOverlay(SqlBaseParser.OverlayContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterConstantDefault(SqlBaseParser.ConstantDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstantDefault(SqlBaseParser.ConstantDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterTrim(SqlBaseParser.TrimContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTrim(SqlBaseParser.TrimContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterFirst(SqlBaseParser.FirstContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFirst(SqlBaseParser.FirstContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntervalValue(SqlBaseParser.IntervalValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntervalValue(SqlBaseParser.IntervalValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntervalUnit(SqlBaseParser.IntervalUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntervalUnit(SqlBaseParser.IntervalUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColPosition(SqlBaseParser.ColPositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColPosition(SqlBaseParser.ColPositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColTypeList(SqlBaseParser.ColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColTypeList(SqlBaseParser.ColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColType(SqlBaseParser.ColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColType(SqlBaseParser.ColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComplexColType(SqlBaseParser.ComplexColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComplexColType(SqlBaseParser.ComplexColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterWindowClause(SqlBaseParser.WindowClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWindowClause(SqlBaseParser.WindowClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamedWindow(SqlBaseParser.NamedWindowContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamedWindow(SqlBaseParser.NamedWindowContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWindowRef(SqlBaseParser.WindowRefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWindowRef(SqlBaseParser.WindowRefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWindowDef(SqlBaseParser.WindowDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWindowDef(SqlBaseParser.WindowDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterFrameBound(SqlBaseParser.FrameBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFrameBound(SqlBaseParser.FrameBoundContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionName(SqlBaseParser.FunctionNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionName(SqlBaseParser.FunctionNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterErrorIdent(SqlBaseParser.ErrorIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitErrorIdent(SqlBaseParser.ErrorIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRealIdent(SqlBaseParser.RealIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRealIdent(SqlBaseParser.RealIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifier(SqlBaseParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifier(SqlBaseParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void enterBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

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

The default implementation does nothing.

+ */ + @Override public void exitNonReserved(SqlBaseParser.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/pysparkling/sql/ast/generated/SqlBaseLexer.interp b/pysparkling/sql/ast/generated/SqlBaseLexer.interp new file mode 100644 index 000000000..d5a2997a4 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseLexer.interp @@ -0,0 +1,912 @@ +token literal names: +null +';' +'(' +')' +',' +'.' +'/*+' +'*/' +'->' +'[' +']' +':' +'ADD' +'AFTER' +'ALL' +'ALTER' +'ANALYZE' +'AND' +'ANTI' +'ANY' +'ARCHIVE' +'ARRAY' +'AS' +'ASC' +'AT' +'AUTHORIZATION' +'BETWEEN' +'BOTH' +'BUCKET' +'BUCKETS' +'BY' +'CACHE' +'CASCADE' +'CASE' +'CAST' +'CHANGE' +'CHECK' +'CLEAR' +'CLUSTER' +'CLUSTERED' +'CODEGEN' +'COLLATE' +'COLLECTION' +'COLUMN' +'COLUMNS' +'COMMENT' +'COMMIT' +'COMPACT' +'COMPACTIONS' +'COMPUTE' +'CONCATENATE' +'CONSTRAINT' +'COST' +'CREATE' +'CROSS' +'CUBE' +'CURRENT' +'CURRENT_DATE' +'CURRENT_TIME' +'CURRENT_TIMESTAMP' +'CURRENT_USER' +'DATA' +'DATABASE' +null +'DAY' +'DBPROPERTIES' +'DEFINED' +'DELETE' +'DELIMITED' +'DESC' +'DESCRIBE' +'DFS' +'DIRECTORIES' +'DIRECTORY' +'DISTINCT' +'DISTRIBUTE' +'DROP' +'ELSE' +'END' +'ESCAPE' +'ESCAPED' +'EXCEPT' +'EXCHANGE' +'EXISTS' +'EXPLAIN' +'EXPORT' +'EXTENDED' +'EXTERNAL' +'EXTRACT' +'FALSE' +'FETCH' +'FIELDS' +'FILTER' +'FILEFORMAT' +'FIRST' +'FOLLOWING' +'FOR' +'FOREIGN' +'FORMAT' +'FORMATTED' +'FROM' +'FULL' +'FUNCTION' +'FUNCTIONS' +'GLOBAL' +'GRANT' +'GROUP' +'GROUPING' +'HAVING' +'HOUR' +'IF' +'IGNORE' +'IMPORT' +'IN' +'INDEX' +'INDEXES' +'INNER' +'INPATH' +'INPUTFORMAT' +'INSERT' +'INTERSECT' +'INTERVAL' +'INTO' +'IS' +'ITEMS' +'JOIN' +'KEYS' +'LAST' +'LATERAL' +'LAZY' +'LEADING' +'LEFT' +'LIKE' +'LIMIT' +'LINES' +'LIST' +'LOAD' +'LOCAL' +'LOCATION' +'LOCK' +'LOCKS' +'LOGICAL' +'MACRO' +'MAP' +'MATCHED' +'MERGE' +'MINUTE' +'MONTH' +'MSCK' +'NAMESPACE' +'NAMESPACES' +'NATURAL' +'NO' +null +'NULL' +'NULLS' +'OF' +'ON' +'ONLY' +'OPTION' +'OPTIONS' +'OR' +'ORDER' +'OUT' +'OUTER' +'OUTPUTFORMAT' +'OVER' +'OVERLAPS' +'OVERLAY' +'OVERWRITE' +'PARTITION' +'PARTITIONED' +'PARTITIONS' +'PERCENT' +'PIVOT' +'PLACING' +'POSITION' +'PRECEDING' +'PRIMARY' +'PRINCIPALS' +'PROPERTIES' +'PURGE' +'QUERY' +'RANGE' +'RECORDREADER' +'RECORDWRITER' +'RECOVER' +'REDUCE' +'REFERENCES' +'REFRESH' +'RENAME' +'REPAIR' +'REPLACE' +'RESET' +'RESTRICT' +'REVOKE' +'RIGHT' +null +'ROLE' +'ROLES' +'ROLLBACK' +'ROLLUP' +'ROW' +'ROWS' +'SCHEMA' +'SECOND' +'SELECT' +'SEMI' +'SEPARATED' +'SERDE' +'SERDEPROPERTIES' +'SESSION_USER' +'SET' +'MINUS' +'SETS' +'SHOW' +'SKEWED' +'SOME' +'SORT' +'SORTED' +'START' +'STATISTICS' +'STORED' +'STRATIFY' +'STRUCT' +'SUBSTR' +'SUBSTRING' +'TABLE' +'TABLES' +'TABLESAMPLE' +'TBLPROPERTIES' +null +'TERMINATED' +'THEN' +'TO' +'TOUCH' +'TRAILING' +'TRANSACTION' +'TRANSACTIONS' +'TRANSFORM' +'TRIM' +'TRUE' +'TRUNCATE' +'TYPE' +'UNARCHIVE' +'UNBOUNDED' +'UNCACHE' +'UNION' +'UNIQUE' +'UNKNOWN' +'UNLOCK' +'UNSET' +'UPDATE' +'USE' +'USER' +'USING' +'VALUES' +'VIEW' +'VIEWS' +'WHEN' +'WHERE' +'WINDOW' +'WITH' +'YEAR' +null +'<=>' +'<>' +'!=' +'<' +null +'>' +null +'+' +'-' +'*' +'/' +'%' +'DIV' +'~' +'&' +'|' +'||' +'^' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +ADD +AFTER +ALL +ALTER +ANALYZE +AND +ANTI +ANY +ARCHIVE +ARRAY +AS +ASC +AT +AUTHORIZATION +BETWEEN +BOTH +BUCKET +BUCKETS +BY +CACHE +CASCADE +CASE +CAST +CHANGE +CHECK +CLEAR +CLUSTER +CLUSTERED +CODEGEN +COLLATE +COLLECTION +COLUMN +COLUMNS +COMMENT +COMMIT +COMPACT +COMPACTIONS +COMPUTE +CONCATENATE +CONSTRAINT +COST +CREATE +CROSS +CUBE +CURRENT +CURRENT_DATE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DATA +DATABASE +DATABASES +DAY +DBPROPERTIES +DEFINED +DELETE +DELIMITED +DESC +DESCRIBE +DFS +DIRECTORIES +DIRECTORY +DISTINCT +DISTRIBUTE +DROP +ELSE +END +ESCAPE +ESCAPED +EXCEPT +EXCHANGE +EXISTS +EXPLAIN +EXPORT +EXTENDED +EXTERNAL +EXTRACT +FALSE +FETCH +FIELDS +FILTER +FILEFORMAT +FIRST +FOLLOWING +FOR +FOREIGN +FORMAT +FORMATTED +FROM +FULL +FUNCTION +FUNCTIONS +GLOBAL +GRANT +GROUP +GROUPING +HAVING +HOUR +IF +IGNORE +IMPORT +IN +INDEX +INDEXES +INNER +INPATH +INPUTFORMAT +INSERT +INTERSECT +INTERVAL +INTO +IS +ITEMS +JOIN +KEYS +LAST +LATERAL +LAZY +LEADING +LEFT +LIKE +LIMIT +LINES +LIST +LOAD +LOCAL +LOCATION +LOCK +LOCKS +LOGICAL +MACRO +MAP +MATCHED +MERGE +MINUTE +MONTH +MSCK +NAMESPACE +NAMESPACES +NATURAL +NO +NOT +NULL +NULLS +OF +ON +ONLY +OPTION +OPTIONS +OR +ORDER +OUT +OUTER +OUTPUTFORMAT +OVER +OVERLAPS +OVERLAY +OVERWRITE +PARTITION +PARTITIONED +PARTITIONS +PERCENTLIT +PIVOT +PLACING +POSITION +PRECEDING +PRIMARY +PRINCIPALS +PROPERTIES +PURGE +QUERY +RANGE +RECORDREADER +RECORDWRITER +RECOVER +REDUCE +REFERENCES +REFRESH +RENAME +REPAIR +REPLACE +RESET +RESTRICT +REVOKE +RIGHT +RLIKE +ROLE +ROLES +ROLLBACK +ROLLUP +ROW +ROWS +SCHEMA +SECOND +SELECT +SEMI +SEPARATED +SERDE +SERDEPROPERTIES +SESSION_USER +SET +SETMINUS +SETS +SHOW +SKEWED +SOME +SORT +SORTED +START +STATISTICS +STORED +STRATIFY +STRUCT +SUBSTR +SUBSTRING +TABLE +TABLES +TABLESAMPLE +TBLPROPERTIES +TEMPORARY +TERMINATED +THEN +TO +TOUCH +TRAILING +TRANSACTION +TRANSACTIONS +TRANSFORM +TRIM +TRUE +TRUNCATE +TYPE +UNARCHIVE +UNBOUNDED +UNCACHE +UNION +UNIQUE +UNKNOWN +UNLOCK +UNSET +UPDATE +USE +USER +USING +VALUES +VIEW +VIEWS +WHEN +WHERE +WINDOW +WITH +YEAR +EQ +NSEQ +NEQ +NEQJ +LT +LTE +GT +GTE +PLUS +MINUS +ASTERISK +SLASH +PERCENT +DIV +TILDE +AMPERSAND +PIPE +CONCAT_PIPE +HAT +STRING +BIGINT_LITERAL +SMALLINT_LITERAL +TINYINT_LITERAL +INTEGER_VALUE +EXPONENT_VALUE +DECIMAL_VALUE +DOUBLE_LITERAL +BIGDECIMAL_LITERAL +IDENTIFIER +BACKQUOTED_IDENTIFIER +SIMPLE_COMMENT +BRACKETED_COMMENT +WS +UNRECOGNIZED + +rule names: +T__0 +T__1 +T__2 +T__3 +T__4 +T__5 +T__6 +T__7 +T__8 +T__9 +T__10 +ADD +AFTER +ALL +ALTER +ANALYZE +AND +ANTI +ANY +ARCHIVE +ARRAY +AS +ASC +AT +AUTHORIZATION +BETWEEN +BOTH +BUCKET +BUCKETS +BY +CACHE +CASCADE +CASE +CAST +CHANGE +CHECK +CLEAR +CLUSTER +CLUSTERED +CODEGEN +COLLATE +COLLECTION +COLUMN +COLUMNS +COMMENT +COMMIT +COMPACT +COMPACTIONS +COMPUTE +CONCATENATE +CONSTRAINT +COST +CREATE +CROSS +CUBE +CURRENT +CURRENT_DATE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DATA +DATABASE +DATABASES +DAY +DBPROPERTIES +DEFINED +DELETE +DELIMITED +DESC +DESCRIBE +DFS +DIRECTORIES +DIRECTORY +DISTINCT +DISTRIBUTE +DROP +ELSE +END +ESCAPE +ESCAPED +EXCEPT +EXCHANGE +EXISTS +EXPLAIN +EXPORT +EXTENDED +EXTERNAL +EXTRACT +FALSE +FETCH +FIELDS +FILTER +FILEFORMAT +FIRST +FOLLOWING +FOR +FOREIGN +FORMAT +FORMATTED +FROM +FULL +FUNCTION +FUNCTIONS +GLOBAL +GRANT +GROUP +GROUPING +HAVING +HOUR +IF +IGNORE +IMPORT +IN +INDEX +INDEXES +INNER +INPATH +INPUTFORMAT +INSERT +INTERSECT +INTERVAL +INTO +IS +ITEMS +JOIN +KEYS +LAST +LATERAL +LAZY +LEADING +LEFT +LIKE +LIMIT +LINES +LIST +LOAD +LOCAL +LOCATION +LOCK +LOCKS +LOGICAL +MACRO +MAP +MATCHED +MERGE +MINUTE +MONTH +MSCK +NAMESPACE +NAMESPACES +NATURAL +NO +NOT +NULL +NULLS +OF +ON +ONLY +OPTION +OPTIONS +OR +ORDER +OUT +OUTER +OUTPUTFORMAT +OVER +OVERLAPS +OVERLAY +OVERWRITE +PARTITION +PARTITIONED +PARTITIONS +PERCENTLIT +PIVOT +PLACING +POSITION +PRECEDING +PRIMARY +PRINCIPALS +PROPERTIES +PURGE +QUERY +RANGE +RECORDREADER +RECORDWRITER +RECOVER +REDUCE +REFERENCES +REFRESH +RENAME +REPAIR +REPLACE +RESET +RESTRICT +REVOKE +RIGHT +RLIKE +ROLE +ROLES +ROLLBACK +ROLLUP +ROW +ROWS +SCHEMA +SECOND +SELECT +SEMI +SEPARATED +SERDE +SERDEPROPERTIES +SESSION_USER +SET +SETMINUS +SETS +SHOW +SKEWED +SOME +SORT +SORTED +START +STATISTICS +STORED +STRATIFY +STRUCT +SUBSTR +SUBSTRING +TABLE +TABLES +TABLESAMPLE +TBLPROPERTIES +TEMPORARY +TERMINATED +THEN +TO +TOUCH +TRAILING +TRANSACTION +TRANSACTIONS +TRANSFORM +TRIM +TRUE +TRUNCATE +TYPE +UNARCHIVE +UNBOUNDED +UNCACHE +UNION +UNIQUE +UNKNOWN +UNLOCK +UNSET +UPDATE +USE +USER +USING +VALUES +VIEW +VIEWS +WHEN +WHERE +WINDOW +WITH +YEAR +EQ +NSEQ +NEQ +NEQJ +LT +LTE +GT +GTE +PLUS +MINUS +ASTERISK +SLASH +PERCENT +DIV +TILDE +AMPERSAND +PIPE +CONCAT_PIPE +HAT +STRING +BIGINT_LITERAL +SMALLINT_LITERAL +TINYINT_LITERAL +INTEGER_VALUE +EXPONENT_VALUE +DECIMAL_VALUE +DOUBLE_LITERAL +BIGDECIMAL_LITERAL +IDENTIFIER +BACKQUOTED_IDENTIFIER +DECIMAL_DIGITS +EXPONENT +DIGIT +LETTER +SIMPLE_COMMENT +BRACKETED_COMMENT +WS +UNRECOGNIZED + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 299, 2742, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241, 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246, 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250, 4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, 4, 255, 9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, 9, 259, 4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 4, 263, 9, 263, 4, 264, 9, 264, 4, 265, 9, 265, 4, 266, 9, 266, 4, 267, 9, 267, 4, 268, 9, 268, 4, 269, 9, 269, 4, 270, 9, 270, 4, 271, 9, 271, 4, 272, 9, 272, 4, 273, 9, 273, 4, 274, 9, 274, 4, 275, 9, 275, 4, 276, 9, 276, 4, 277, 9, 277, 4, 278, 9, 278, 4, 279, 9, 279, 4, 280, 9, 280, 4, 281, 9, 281, 4, 282, 9, 282, 4, 283, 9, 283, 4, 284, 9, 284, 4, 285, 9, 285, 4, 286, 9, 286, 4, 287, 9, 287, 4, 288, 9, 288, 4, 289, 9, 289, 4, 290, 9, 290, 4, 291, 9, 291, 4, 292, 9, 292, 4, 293, 9, 293, 4, 294, 9, 294, 4, 295, 9, 295, 4, 296, 9, 296, 4, 297, 9, 297, 4, 298, 9, 298, 4, 299, 9, 299, 4, 300, 9, 300, 4, 301, 9, 301, 4, 302, 9, 302, 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, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 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, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 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, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 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, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 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, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 1029, 10, 64, 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, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 154, 5, 154, 1656, 10, 154, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 162, 3, 162, 3, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 5, 198, 2002, 10, 198, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 203, 3, 203, 3, 203, 3, 203, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 213, 3, 213, 3, 213, 3, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 5, 232, 2264, 10, 232, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 235, 3, 235, 3, 235, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 242, 3, 242, 3, 242, 3, 242, 3, 242, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 254, 3, 254, 3, 254, 3, 254, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 258, 3, 258, 3, 258, 3, 258, 3, 258, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 263, 3, 263, 3, 263, 3, 263, 3, 263, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 265, 3, 265, 3, 265, 5, 265, 2492, 10, 265, 3, 266, 3, 266, 3, 266, 3, 266, 3, 267, 3, 267, 3, 267, 3, 268, 3, 268, 3, 268, 3, 269, 3, 269, 3, 270, 3, 270, 3, 270, 3, 270, 5, 270, 2510, 10, 270, 3, 271, 3, 271, 3, 272, 3, 272, 3, 272, 3, 272, 5, 272, 2518, 10, 272, 3, 273, 3, 273, 3, 274, 3, 274, 3, 275, 3, 275, 3, 276, 3, 276, 3, 277, 3, 277, 3, 278, 3, 278, 3, 278, 3, 278, 3, 279, 3, 279, 3, 280, 3, 280, 3, 281, 3, 281, 3, 282, 3, 282, 3, 282, 3, 283, 3, 283, 3, 284, 3, 284, 3, 284, 3, 284, 7, 284, 2549, 10, 284, 12, 284, 14, 284, 2552, 11, 284, 3, 284, 3, 284, 3, 284, 3, 284, 3, 284, 7, 284, 2559, 10, 284, 12, 284, 14, 284, 2562, 11, 284, 3, 284, 5, 284, 2565, 10, 284, 3, 285, 6, 285, 2568, 10, 285, 13, 285, 14, 285, 2569, 3, 285, 3, 285, 3, 286, 6, 286, 2575, 10, 286, 13, 286, 14, 286, 2576, 3, 286, 3, 286, 3, 287, 6, 287, 2582, 10, 287, 13, 287, 14, 287, 2583, 3, 287, 3, 287, 3, 288, 6, 288, 2589, 10, 288, 13, 288, 14, 288, 2590, 3, 289, 6, 289, 2594, 10, 289, 13, 289, 14, 289, 2595, 3, 289, 3, 289, 3, 289, 3, 289, 3, 289, 3, 289, 5, 289, 2604, 10, 289, 3, 290, 3, 290, 3, 290, 3, 291, 6, 291, 2610, 10, 291, 13, 291, 14, 291, 2611, 3, 291, 5, 291, 2615, 10, 291, 3, 291, 3, 291, 3, 291, 3, 291, 5, 291, 2621, 10, 291, 3, 291, 3, 291, 3, 291, 5, 291, 2626, 10, 291, 3, 292, 6, 292, 2629, 10, 292, 13, 292, 14, 292, 2630, 3, 292, 5, 292, 2634, 10, 292, 3, 292, 3, 292, 3, 292, 3, 292, 3, 292, 5, 292, 2641, 10, 292, 3, 292, 3, 292, 3, 292, 3, 292, 3, 292, 5, 292, 2648, 10, 292, 3, 293, 3, 293, 3, 293, 6, 293, 2653, 10, 293, 13, 293, 14, 293, 2654, 3, 294, 3, 294, 3, 294, 3, 294, 7, 294, 2661, 10, 294, 12, 294, 14, 294, 2664, 11, 294, 3, 294, 3, 294, 3, 295, 6, 295, 2669, 10, 295, 13, 295, 14, 295, 2670, 3, 295, 3, 295, 7, 295, 2675, 10, 295, 12, 295, 14, 295, 2678, 11, 295, 3, 295, 3, 295, 6, 295, 2682, 10, 295, 13, 295, 14, 295, 2683, 5, 295, 2686, 10, 295, 3, 296, 3, 296, 5, 296, 2690, 10, 296, 3, 296, 6, 296, 2693, 10, 296, 13, 296, 14, 296, 2694, 3, 297, 3, 297, 3, 298, 3, 298, 3, 299, 3, 299, 3, 299, 3, 299, 7, 299, 2705, 10, 299, 12, 299, 14, 299, 2708, 11, 299, 3, 299, 5, 299, 2711, 10, 299, 3, 299, 5, 299, 2714, 10, 299, 3, 299, 3, 299, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 7, 300, 2724, 10, 300, 12, 300, 14, 300, 2727, 11, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 301, 6, 301, 2735, 10, 301, 13, 301, 14, 301, 2736, 3, 301, 3, 301, 3, 302, 3, 302, 3, 2725, 2, 303, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, 229, 116, 231, 117, 233, 118, 235, 119, 237, 120, 239, 121, 241, 122, 243, 123, 245, 124, 247, 125, 249, 126, 251, 127, 253, 128, 255, 129, 257, 130, 259, 131, 261, 132, 263, 133, 265, 134, 267, 135, 269, 136, 271, 137, 273, 138, 275, 139, 277, 140, 279, 141, 281, 142, 283, 143, 285, 144, 287, 145, 289, 146, 291, 147, 293, 148, 295, 149, 297, 150, 299, 151, 301, 152, 303, 153, 305, 154, 307, 155, 309, 156, 311, 157, 313, 158, 315, 159, 317, 160, 319, 161, 321, 162, 323, 163, 325, 164, 327, 165, 329, 166, 331, 167, 333, 168, 335, 169, 337, 170, 339, 171, 341, 172, 343, 173, 345, 174, 347, 175, 349, 176, 351, 177, 353, 178, 355, 179, 357, 180, 359, 181, 361, 182, 363, 183, 365, 184, 367, 185, 369, 186, 371, 187, 373, 188, 375, 189, 377, 190, 379, 191, 381, 192, 383, 193, 385, 194, 387, 195, 389, 196, 391, 197, 393, 198, 395, 199, 397, 200, 399, 201, 401, 202, 403, 203, 405, 204, 407, 205, 409, 206, 411, 207, 413, 208, 415, 209, 417, 210, 419, 211, 421, 212, 423, 213, 425, 214, 427, 215, 429, 216, 431, 217, 433, 218, 435, 219, 437, 220, 439, 221, 441, 222, 443, 223, 445, 224, 447, 225, 449, 226, 451, 227, 453, 228, 455, 229, 457, 230, 459, 231, 461, 232, 463, 233, 465, 234, 467, 235, 469, 236, 471, 237, 473, 238, 475, 239, 477, 240, 479, 241, 481, 242, 483, 243, 485, 244, 487, 245, 489, 246, 491, 247, 493, 248, 495, 249, 497, 250, 499, 251, 501, 252, 503, 253, 505, 254, 507, 255, 509, 256, 511, 257, 513, 258, 515, 259, 517, 260, 519, 261, 521, 262, 523, 263, 525, 264, 527, 265, 529, 266, 531, 267, 533, 268, 535, 269, 537, 270, 539, 271, 541, 272, 543, 273, 545, 274, 547, 275, 549, 276, 551, 277, 553, 278, 555, 279, 557, 280, 559, 281, 561, 282, 563, 283, 565, 284, 567, 285, 569, 286, 571, 287, 573, 288, 575, 289, 577, 290, 579, 291, 581, 292, 583, 293, 585, 294, 587, 295, 589, 2, 591, 2, 593, 2, 595, 2, 597, 296, 599, 297, 601, 298, 603, 299, 3, 2, 10, 4, 2, 41, 41, 94, 94, 4, 2, 36, 36, 94, 94, 3, 2, 98, 98, 4, 2, 45, 45, 47, 47, 3, 2, 50, 59, 3, 2, 67, 92, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 2, 2780, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 2, 271, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, 2, 275, 3, 2, 2, 2, 2, 277, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 2, 287, 3, 2, 2, 2, 2, 289, 3, 2, 2, 2, 2, 291, 3, 2, 2, 2, 2, 293, 3, 2, 2, 2, 2, 295, 3, 2, 2, 2, 2, 297, 3, 2, 2, 2, 2, 299, 3, 2, 2, 2, 2, 301, 3, 2, 2, 2, 2, 303, 3, 2, 2, 2, 2, 305, 3, 2, 2, 2, 2, 307, 3, 2, 2, 2, 2, 309, 3, 2, 2, 2, 2, 311, 3, 2, 2, 2, 2, 313, 3, 2, 2, 2, 2, 315, 3, 2, 2, 2, 2, 317, 3, 2, 2, 2, 2, 319, 3, 2, 2, 2, 2, 321, 3, 2, 2, 2, 2, 323, 3, 2, 2, 2, 2, 325, 3, 2, 2, 2, 2, 327, 3, 2, 2, 2, 2, 329, 3, 2, 2, 2, 2, 331, 3, 2, 2, 2, 2, 333, 3, 2, 2, 2, 2, 335, 3, 2, 2, 2, 2, 337, 3, 2, 2, 2, 2, 339, 3, 2, 2, 2, 2, 341, 3, 2, 2, 2, 2, 343, 3, 2, 2, 2, 2, 345, 3, 2, 2, 2, 2, 347, 3, 2, 2, 2, 2, 349, 3, 2, 2, 2, 2, 351, 3, 2, 2, 2, 2, 353, 3, 2, 2, 2, 2, 355, 3, 2, 2, 2, 2, 357, 3, 2, 2, 2, 2, 359, 3, 2, 2, 2, 2, 361, 3, 2, 2, 2, 2, 363, 3, 2, 2, 2, 2, 365, 3, 2, 2, 2, 2, 367, 3, 2, 2, 2, 2, 369, 3, 2, 2, 2, 2, 371, 3, 2, 2, 2, 2, 373, 3, 2, 2, 2, 2, 375, 3, 2, 2, 2, 2, 377, 3, 2, 2, 2, 2, 379, 3, 2, 2, 2, 2, 381, 3, 2, 2, 2, 2, 383, 3, 2, 2, 2, 2, 385, 3, 2, 2, 2, 2, 387, 3, 2, 2, 2, 2, 389, 3, 2, 2, 2, 2, 391, 3, 2, 2, 2, 2, 393, 3, 2, 2, 2, 2, 395, 3, 2, 2, 2, 2, 397, 3, 2, 2, 2, 2, 399, 3, 2, 2, 2, 2, 401, 3, 2, 2, 2, 2, 403, 3, 2, 2, 2, 2, 405, 3, 2, 2, 2, 2, 407, 3, 2, 2, 2, 2, 409, 3, 2, 2, 2, 2, 411, 3, 2, 2, 2, 2, 413, 3, 2, 2, 2, 2, 415, 3, 2, 2, 2, 2, 417, 3, 2, 2, 2, 2, 419, 3, 2, 2, 2, 2, 421, 3, 2, 2, 2, 2, 423, 3, 2, 2, 2, 2, 425, 3, 2, 2, 2, 2, 427, 3, 2, 2, 2, 2, 429, 3, 2, 2, 2, 2, 431, 3, 2, 2, 2, 2, 433, 3, 2, 2, 2, 2, 435, 3, 2, 2, 2, 2, 437, 3, 2, 2, 2, 2, 439, 3, 2, 2, 2, 2, 441, 3, 2, 2, 2, 2, 443, 3, 2, 2, 2, 2, 445, 3, 2, 2, 2, 2, 447, 3, 2, 2, 2, 2, 449, 3, 2, 2, 2, 2, 451, 3, 2, 2, 2, 2, 453, 3, 2, 2, 2, 2, 455, 3, 2, 2, 2, 2, 457, 3, 2, 2, 2, 2, 459, 3, 2, 2, 2, 2, 461, 3, 2, 2, 2, 2, 463, 3, 2, 2, 2, 2, 465, 3, 2, 2, 2, 2, 467, 3, 2, 2, 2, 2, 469, 3, 2, 2, 2, 2, 471, 3, 2, 2, 2, 2, 473, 3, 2, 2, 2, 2, 475, 3, 2, 2, 2, 2, 477, 3, 2, 2, 2, 2, 479, 3, 2, 2, 2, 2, 481, 3, 2, 2, 2, 2, 483, 3, 2, 2, 2, 2, 485, 3, 2, 2, 2, 2, 487, 3, 2, 2, 2, 2, 489, 3, 2, 2, 2, 2, 491, 3, 2, 2, 2, 2, 493, 3, 2, 2, 2, 2, 495, 3, 2, 2, 2, 2, 497, 3, 2, 2, 2, 2, 499, 3, 2, 2, 2, 2, 501, 3, 2, 2, 2, 2, 503, 3, 2, 2, 2, 2, 505, 3, 2, 2, 2, 2, 507, 3, 2, 2, 2, 2, 509, 3, 2, 2, 2, 2, 511, 3, 2, 2, 2, 2, 513, 3, 2, 2, 2, 2, 515, 3, 2, 2, 2, 2, 517, 3, 2, 2, 2, 2, 519, 3, 2, 2, 2, 2, 521, 3, 2, 2, 2, 2, 523, 3, 2, 2, 2, 2, 525, 3, 2, 2, 2, 2, 527, 3, 2, 2, 2, 2, 529, 3, 2, 2, 2, 2, 531, 3, 2, 2, 2, 2, 533, 3, 2, 2, 2, 2, 535, 3, 2, 2, 2, 2, 537, 3, 2, 2, 2, 2, 539, 3, 2, 2, 2, 2, 541, 3, 2, 2, 2, 2, 543, 3, 2, 2, 2, 2, 545, 3, 2, 2, 2, 2, 547, 3, 2, 2, 2, 2, 549, 3, 2, 2, 2, 2, 551, 3, 2, 2, 2, 2, 553, 3, 2, 2, 2, 2, 555, 3, 2, 2, 2, 2, 557, 3, 2, 2, 2, 2, 559, 3, 2, 2, 2, 2, 561, 3, 2, 2, 2, 2, 563, 3, 2, 2, 2, 2, 565, 3, 2, 2, 2, 2, 567, 3, 2, 2, 2, 2, 569, 3, 2, 2, 2, 2, 571, 3, 2, 2, 2, 2, 573, 3, 2, 2, 2, 2, 575, 3, 2, 2, 2, 2, 577, 3, 2, 2, 2, 2, 579, 3, 2, 2, 2, 2, 581, 3, 2, 2, 2, 2, 583, 3, 2, 2, 2, 2, 585, 3, 2, 2, 2, 2, 587, 3, 2, 2, 2, 2, 597, 3, 2, 2, 2, 2, 599, 3, 2, 2, 2, 2, 601, 3, 2, 2, 2, 2, 603, 3, 2, 2, 2, 3, 605, 3, 2, 2, 2, 5, 607, 3, 2, 2, 2, 7, 609, 3, 2, 2, 2, 9, 611, 3, 2, 2, 2, 11, 613, 3, 2, 2, 2, 13, 615, 3, 2, 2, 2, 15, 619, 3, 2, 2, 2, 17, 622, 3, 2, 2, 2, 19, 625, 3, 2, 2, 2, 21, 627, 3, 2, 2, 2, 23, 629, 3, 2, 2, 2, 25, 631, 3, 2, 2, 2, 27, 635, 3, 2, 2, 2, 29, 641, 3, 2, 2, 2, 31, 645, 3, 2, 2, 2, 33, 651, 3, 2, 2, 2, 35, 659, 3, 2, 2, 2, 37, 663, 3, 2, 2, 2, 39, 668, 3, 2, 2, 2, 41, 672, 3, 2, 2, 2, 43, 680, 3, 2, 2, 2, 45, 686, 3, 2, 2, 2, 47, 689, 3, 2, 2, 2, 49, 693, 3, 2, 2, 2, 51, 696, 3, 2, 2, 2, 53, 710, 3, 2, 2, 2, 55, 718, 3, 2, 2, 2, 57, 723, 3, 2, 2, 2, 59, 730, 3, 2, 2, 2, 61, 738, 3, 2, 2, 2, 63, 741, 3, 2, 2, 2, 65, 747, 3, 2, 2, 2, 67, 755, 3, 2, 2, 2, 69, 760, 3, 2, 2, 2, 71, 765, 3, 2, 2, 2, 73, 772, 3, 2, 2, 2, 75, 778, 3, 2, 2, 2, 77, 784, 3, 2, 2, 2, 79, 792, 3, 2, 2, 2, 81, 802, 3, 2, 2, 2, 83, 810, 3, 2, 2, 2, 85, 818, 3, 2, 2, 2, 87, 829, 3, 2, 2, 2, 89, 836, 3, 2, 2, 2, 91, 844, 3, 2, 2, 2, 93, 852, 3, 2, 2, 2, 95, 859, 3, 2, 2, 2, 97, 867, 3, 2, 2, 2, 99, 879, 3, 2, 2, 2, 101, 887, 3, 2, 2, 2, 103, 899, 3, 2, 2, 2, 105, 910, 3, 2, 2, 2, 107, 915, 3, 2, 2, 2, 109, 922, 3, 2, 2, 2, 111, 928, 3, 2, 2, 2, 113, 933, 3, 2, 2, 2, 115, 941, 3, 2, 2, 2, 117, 954, 3, 2, 2, 2, 119, 967, 3, 2, 2, 2, 121, 985, 3, 2, 2, 2, 123, 998, 3, 2, 2, 2, 125, 1003, 3, 2, 2, 2, 127, 1028, 3, 2, 2, 2, 129, 1030, 3, 2, 2, 2, 131, 1034, 3, 2, 2, 2, 133, 1047, 3, 2, 2, 2, 135, 1055, 3, 2, 2, 2, 137, 1062, 3, 2, 2, 2, 139, 1072, 3, 2, 2, 2, 141, 1077, 3, 2, 2, 2, 143, 1086, 3, 2, 2, 2, 145, 1090, 3, 2, 2, 2, 147, 1102, 3, 2, 2, 2, 149, 1112, 3, 2, 2, 2, 151, 1121, 3, 2, 2, 2, 153, 1132, 3, 2, 2, 2, 155, 1137, 3, 2, 2, 2, 157, 1142, 3, 2, 2, 2, 159, 1146, 3, 2, 2, 2, 161, 1153, 3, 2, 2, 2, 163, 1161, 3, 2, 2, 2, 165, 1168, 3, 2, 2, 2, 167, 1177, 3, 2, 2, 2, 169, 1184, 3, 2, 2, 2, 171, 1192, 3, 2, 2, 2, 173, 1199, 3, 2, 2, 2, 175, 1208, 3, 2, 2, 2, 177, 1217, 3, 2, 2, 2, 179, 1225, 3, 2, 2, 2, 181, 1231, 3, 2, 2, 2, 183, 1237, 3, 2, 2, 2, 185, 1244, 3, 2, 2, 2, 187, 1251, 3, 2, 2, 2, 189, 1262, 3, 2, 2, 2, 191, 1268, 3, 2, 2, 2, 193, 1278, 3, 2, 2, 2, 195, 1282, 3, 2, 2, 2, 197, 1290, 3, 2, 2, 2, 199, 1297, 3, 2, 2, 2, 201, 1307, 3, 2, 2, 2, 203, 1312, 3, 2, 2, 2, 205, 1317, 3, 2, 2, 2, 207, 1326, 3, 2, 2, 2, 209, 1336, 3, 2, 2, 2, 211, 1343, 3, 2, 2, 2, 213, 1349, 3, 2, 2, 2, 215, 1355, 3, 2, 2, 2, 217, 1364, 3, 2, 2, 2, 219, 1371, 3, 2, 2, 2, 221, 1376, 3, 2, 2, 2, 223, 1379, 3, 2, 2, 2, 225, 1386, 3, 2, 2, 2, 227, 1393, 3, 2, 2, 2, 229, 1396, 3, 2, 2, 2, 231, 1402, 3, 2, 2, 2, 233, 1410, 3, 2, 2, 2, 235, 1416, 3, 2, 2, 2, 237, 1423, 3, 2, 2, 2, 239, 1435, 3, 2, 2, 2, 241, 1442, 3, 2, 2, 2, 243, 1452, 3, 2, 2, 2, 245, 1461, 3, 2, 2, 2, 247, 1466, 3, 2, 2, 2, 249, 1469, 3, 2, 2, 2, 251, 1475, 3, 2, 2, 2, 253, 1480, 3, 2, 2, 2, 255, 1485, 3, 2, 2, 2, 257, 1490, 3, 2, 2, 2, 259, 1498, 3, 2, 2, 2, 261, 1503, 3, 2, 2, 2, 263, 1511, 3, 2, 2, 2, 265, 1516, 3, 2, 2, 2, 267, 1521, 3, 2, 2, 2, 269, 1527, 3, 2, 2, 2, 271, 1533, 3, 2, 2, 2, 273, 1538, 3, 2, 2, 2, 275, 1543, 3, 2, 2, 2, 277, 1549, 3, 2, 2, 2, 279, 1558, 3, 2, 2, 2, 281, 1563, 3, 2, 2, 2, 283, 1569, 3, 2, 2, 2, 285, 1577, 3, 2, 2, 2, 287, 1583, 3, 2, 2, 2, 289, 1587, 3, 2, 2, 2, 291, 1595, 3, 2, 2, 2, 293, 1601, 3, 2, 2, 2, 295, 1608, 3, 2, 2, 2, 297, 1614, 3, 2, 2, 2, 299, 1619, 3, 2, 2, 2, 301, 1629, 3, 2, 2, 2, 303, 1640, 3, 2, 2, 2, 305, 1648, 3, 2, 2, 2, 307, 1655, 3, 2, 2, 2, 309, 1657, 3, 2, 2, 2, 311, 1662, 3, 2, 2, 2, 313, 1668, 3, 2, 2, 2, 315, 1671, 3, 2, 2, 2, 317, 1674, 3, 2, 2, 2, 319, 1679, 3, 2, 2, 2, 321, 1686, 3, 2, 2, 2, 323, 1694, 3, 2, 2, 2, 325, 1697, 3, 2, 2, 2, 327, 1703, 3, 2, 2, 2, 329, 1707, 3, 2, 2, 2, 331, 1713, 3, 2, 2, 2, 333, 1726, 3, 2, 2, 2, 335, 1731, 3, 2, 2, 2, 337, 1740, 3, 2, 2, 2, 339, 1748, 3, 2, 2, 2, 341, 1758, 3, 2, 2, 2, 343, 1768, 3, 2, 2, 2, 345, 1780, 3, 2, 2, 2, 347, 1791, 3, 2, 2, 2, 349, 1799, 3, 2, 2, 2, 351, 1805, 3, 2, 2, 2, 353, 1813, 3, 2, 2, 2, 355, 1822, 3, 2, 2, 2, 357, 1832, 3, 2, 2, 2, 359, 1840, 3, 2, 2, 2, 361, 1851, 3, 2, 2, 2, 363, 1862, 3, 2, 2, 2, 365, 1868, 3, 2, 2, 2, 367, 1874, 3, 2, 2, 2, 369, 1880, 3, 2, 2, 2, 371, 1893, 3, 2, 2, 2, 373, 1906, 3, 2, 2, 2, 375, 1914, 3, 2, 2, 2, 377, 1921, 3, 2, 2, 2, 379, 1932, 3, 2, 2, 2, 381, 1940, 3, 2, 2, 2, 383, 1947, 3, 2, 2, 2, 385, 1954, 3, 2, 2, 2, 387, 1962, 3, 2, 2, 2, 389, 1968, 3, 2, 2, 2, 391, 1977, 3, 2, 2, 2, 393, 1984, 3, 2, 2, 2, 395, 2001, 3, 2, 2, 2, 397, 2003, 3, 2, 2, 2, 399, 2008, 3, 2, 2, 2, 401, 2014, 3, 2, 2, 2, 403, 2023, 3, 2, 2, 2, 405, 2030, 3, 2, 2, 2, 407, 2034, 3, 2, 2, 2, 409, 2039, 3, 2, 2, 2, 411, 2046, 3, 2, 2, 2, 413, 2053, 3, 2, 2, 2, 415, 2060, 3, 2, 2, 2, 417, 2065, 3, 2, 2, 2, 419, 2075, 3, 2, 2, 2, 421, 2081, 3, 2, 2, 2, 423, 2097, 3, 2, 2, 2, 425, 2110, 3, 2, 2, 2, 427, 2114, 3, 2, 2, 2, 429, 2120, 3, 2, 2, 2, 431, 2125, 3, 2, 2, 2, 433, 2130, 3, 2, 2, 2, 435, 2137, 3, 2, 2, 2, 437, 2142, 3, 2, 2, 2, 439, 2147, 3, 2, 2, 2, 441, 2154, 3, 2, 2, 2, 443, 2160, 3, 2, 2, 2, 445, 2171, 3, 2, 2, 2, 447, 2178, 3, 2, 2, 2, 449, 2187, 3, 2, 2, 2, 451, 2194, 3, 2, 2, 2, 453, 2201, 3, 2, 2, 2, 455, 2211, 3, 2, 2, 2, 457, 2217, 3, 2, 2, 2, 459, 2224, 3, 2, 2, 2, 461, 2236, 3, 2, 2, 2, 463, 2263, 3, 2, 2, 2, 465, 2265, 3, 2, 2, 2, 467, 2276, 3, 2, 2, 2, 469, 2281, 3, 2, 2, 2, 471, 2284, 3, 2, 2, 2, 473, 2290, 3, 2, 2, 2, 475, 2299, 3, 2, 2, 2, 477, 2311, 3, 2, 2, 2, 479, 2324, 3, 2, 2, 2, 481, 2334, 3, 2, 2, 2, 483, 2339, 3, 2, 2, 2, 485, 2344, 3, 2, 2, 2, 487, 2353, 3, 2, 2, 2, 489, 2358, 3, 2, 2, 2, 491, 2368, 3, 2, 2, 2, 493, 2378, 3, 2, 2, 2, 495, 2386, 3, 2, 2, 2, 497, 2392, 3, 2, 2, 2, 499, 2399, 3, 2, 2, 2, 501, 2407, 3, 2, 2, 2, 503, 2414, 3, 2, 2, 2, 505, 2420, 3, 2, 2, 2, 507, 2427, 3, 2, 2, 2, 509, 2431, 3, 2, 2, 2, 511, 2436, 3, 2, 2, 2, 513, 2442, 3, 2, 2, 2, 515, 2449, 3, 2, 2, 2, 517, 2454, 3, 2, 2, 2, 519, 2460, 3, 2, 2, 2, 521, 2465, 3, 2, 2, 2, 523, 2471, 3, 2, 2, 2, 525, 2478, 3, 2, 2, 2, 527, 2483, 3, 2, 2, 2, 529, 2491, 3, 2, 2, 2, 531, 2493, 3, 2, 2, 2, 533, 2497, 3, 2, 2, 2, 535, 2500, 3, 2, 2, 2, 537, 2503, 3, 2, 2, 2, 539, 2509, 3, 2, 2, 2, 541, 2511, 3, 2, 2, 2, 543, 2517, 3, 2, 2, 2, 545, 2519, 3, 2, 2, 2, 547, 2521, 3, 2, 2, 2, 549, 2523, 3, 2, 2, 2, 551, 2525, 3, 2, 2, 2, 553, 2527, 3, 2, 2, 2, 555, 2529, 3, 2, 2, 2, 557, 2533, 3, 2, 2, 2, 559, 2535, 3, 2, 2, 2, 561, 2537, 3, 2, 2, 2, 563, 2539, 3, 2, 2, 2, 565, 2542, 3, 2, 2, 2, 567, 2564, 3, 2, 2, 2, 569, 2567, 3, 2, 2, 2, 571, 2574, 3, 2, 2, 2, 573, 2581, 3, 2, 2, 2, 575, 2588, 3, 2, 2, 2, 577, 2603, 3, 2, 2, 2, 579, 2605, 3, 2, 2, 2, 581, 2625, 3, 2, 2, 2, 583, 2647, 3, 2, 2, 2, 585, 2652, 3, 2, 2, 2, 587, 2656, 3, 2, 2, 2, 589, 2685, 3, 2, 2, 2, 591, 2687, 3, 2, 2, 2, 593, 2696, 3, 2, 2, 2, 595, 2698, 3, 2, 2, 2, 597, 2700, 3, 2, 2, 2, 599, 2717, 3, 2, 2, 2, 601, 2734, 3, 2, 2, 2, 603, 2740, 3, 2, 2, 2, 605, 606, 7, 61, 2, 2, 606, 4, 3, 2, 2, 2, 607, 608, 7, 42, 2, 2, 608, 6, 3, 2, 2, 2, 609, 610, 7, 43, 2, 2, 610, 8, 3, 2, 2, 2, 611, 612, 7, 46, 2, 2, 612, 10, 3, 2, 2, 2, 613, 614, 7, 48, 2, 2, 614, 12, 3, 2, 2, 2, 615, 616, 7, 49, 2, 2, 616, 617, 7, 44, 2, 2, 617, 618, 7, 45, 2, 2, 618, 14, 3, 2, 2, 2, 619, 620, 7, 44, 2, 2, 620, 621, 7, 49, 2, 2, 621, 16, 3, 2, 2, 2, 622, 623, 7, 47, 2, 2, 623, 624, 7, 64, 2, 2, 624, 18, 3, 2, 2, 2, 625, 626, 7, 93, 2, 2, 626, 20, 3, 2, 2, 2, 627, 628, 7, 95, 2, 2, 628, 22, 3, 2, 2, 2, 629, 630, 7, 60, 2, 2, 630, 24, 3, 2, 2, 2, 631, 632, 7, 67, 2, 2, 632, 633, 7, 70, 2, 2, 633, 634, 7, 70, 2, 2, 634, 26, 3, 2, 2, 2, 635, 636, 7, 67, 2, 2, 636, 637, 7, 72, 2, 2, 637, 638, 7, 86, 2, 2, 638, 639, 7, 71, 2, 2, 639, 640, 7, 84, 2, 2, 640, 28, 3, 2, 2, 2, 641, 642, 7, 67, 2, 2, 642, 643, 7, 78, 2, 2, 643, 644, 7, 78, 2, 2, 644, 30, 3, 2, 2, 2, 645, 646, 7, 67, 2, 2, 646, 647, 7, 78, 2, 2, 647, 648, 7, 86, 2, 2, 648, 649, 7, 71, 2, 2, 649, 650, 7, 84, 2, 2, 650, 32, 3, 2, 2, 2, 651, 652, 7, 67, 2, 2, 652, 653, 7, 80, 2, 2, 653, 654, 7, 67, 2, 2, 654, 655, 7, 78, 2, 2, 655, 656, 7, 91, 2, 2, 656, 657, 7, 92, 2, 2, 657, 658, 7, 71, 2, 2, 658, 34, 3, 2, 2, 2, 659, 660, 7, 67, 2, 2, 660, 661, 7, 80, 2, 2, 661, 662, 7, 70, 2, 2, 662, 36, 3, 2, 2, 2, 663, 664, 7, 67, 2, 2, 664, 665, 7, 80, 2, 2, 665, 666, 7, 86, 2, 2, 666, 667, 7, 75, 2, 2, 667, 38, 3, 2, 2, 2, 668, 669, 7, 67, 2, 2, 669, 670, 7, 80, 2, 2, 670, 671, 7, 91, 2, 2, 671, 40, 3, 2, 2, 2, 672, 673, 7, 67, 2, 2, 673, 674, 7, 84, 2, 2, 674, 675, 7, 69, 2, 2, 675, 676, 7, 74, 2, 2, 676, 677, 7, 75, 2, 2, 677, 678, 7, 88, 2, 2, 678, 679, 7, 71, 2, 2, 679, 42, 3, 2, 2, 2, 680, 681, 7, 67, 2, 2, 681, 682, 7, 84, 2, 2, 682, 683, 7, 84, 2, 2, 683, 684, 7, 67, 2, 2, 684, 685, 7, 91, 2, 2, 685, 44, 3, 2, 2, 2, 686, 687, 7, 67, 2, 2, 687, 688, 7, 85, 2, 2, 688, 46, 3, 2, 2, 2, 689, 690, 7, 67, 2, 2, 690, 691, 7, 85, 2, 2, 691, 692, 7, 69, 2, 2, 692, 48, 3, 2, 2, 2, 693, 694, 7, 67, 2, 2, 694, 695, 7, 86, 2, 2, 695, 50, 3, 2, 2, 2, 696, 697, 7, 67, 2, 2, 697, 698, 7, 87, 2, 2, 698, 699, 7, 86, 2, 2, 699, 700, 7, 74, 2, 2, 700, 701, 7, 81, 2, 2, 701, 702, 7, 84, 2, 2, 702, 703, 7, 75, 2, 2, 703, 704, 7, 92, 2, 2, 704, 705, 7, 67, 2, 2, 705, 706, 7, 86, 2, 2, 706, 707, 7, 75, 2, 2, 707, 708, 7, 81, 2, 2, 708, 709, 7, 80, 2, 2, 709, 52, 3, 2, 2, 2, 710, 711, 7, 68, 2, 2, 711, 712, 7, 71, 2, 2, 712, 713, 7, 86, 2, 2, 713, 714, 7, 89, 2, 2, 714, 715, 7, 71, 2, 2, 715, 716, 7, 71, 2, 2, 716, 717, 7, 80, 2, 2, 717, 54, 3, 2, 2, 2, 718, 719, 7, 68, 2, 2, 719, 720, 7, 81, 2, 2, 720, 721, 7, 86, 2, 2, 721, 722, 7, 74, 2, 2, 722, 56, 3, 2, 2, 2, 723, 724, 7, 68, 2, 2, 724, 725, 7, 87, 2, 2, 725, 726, 7, 69, 2, 2, 726, 727, 7, 77, 2, 2, 727, 728, 7, 71, 2, 2, 728, 729, 7, 86, 2, 2, 729, 58, 3, 2, 2, 2, 730, 731, 7, 68, 2, 2, 731, 732, 7, 87, 2, 2, 732, 733, 7, 69, 2, 2, 733, 734, 7, 77, 2, 2, 734, 735, 7, 71, 2, 2, 735, 736, 7, 86, 2, 2, 736, 737, 7, 85, 2, 2, 737, 60, 3, 2, 2, 2, 738, 739, 7, 68, 2, 2, 739, 740, 7, 91, 2, 2, 740, 62, 3, 2, 2, 2, 741, 742, 7, 69, 2, 2, 742, 743, 7, 67, 2, 2, 743, 744, 7, 69, 2, 2, 744, 745, 7, 74, 2, 2, 745, 746, 7, 71, 2, 2, 746, 64, 3, 2, 2, 2, 747, 748, 7, 69, 2, 2, 748, 749, 7, 67, 2, 2, 749, 750, 7, 85, 2, 2, 750, 751, 7, 69, 2, 2, 751, 752, 7, 67, 2, 2, 752, 753, 7, 70, 2, 2, 753, 754, 7, 71, 2, 2, 754, 66, 3, 2, 2, 2, 755, 756, 7, 69, 2, 2, 756, 757, 7, 67, 2, 2, 757, 758, 7, 85, 2, 2, 758, 759, 7, 71, 2, 2, 759, 68, 3, 2, 2, 2, 760, 761, 7, 69, 2, 2, 761, 762, 7, 67, 2, 2, 762, 763, 7, 85, 2, 2, 763, 764, 7, 86, 2, 2, 764, 70, 3, 2, 2, 2, 765, 766, 7, 69, 2, 2, 766, 767, 7, 74, 2, 2, 767, 768, 7, 67, 2, 2, 768, 769, 7, 80, 2, 2, 769, 770, 7, 73, 2, 2, 770, 771, 7, 71, 2, 2, 771, 72, 3, 2, 2, 2, 772, 773, 7, 69, 2, 2, 773, 774, 7, 74, 2, 2, 774, 775, 7, 71, 2, 2, 775, 776, 7, 69, 2, 2, 776, 777, 7, 77, 2, 2, 777, 74, 3, 2, 2, 2, 778, 779, 7, 69, 2, 2, 779, 780, 7, 78, 2, 2, 780, 781, 7, 71, 2, 2, 781, 782, 7, 67, 2, 2, 782, 783, 7, 84, 2, 2, 783, 76, 3, 2, 2, 2, 784, 785, 7, 69, 2, 2, 785, 786, 7, 78, 2, 2, 786, 787, 7, 87, 2, 2, 787, 788, 7, 85, 2, 2, 788, 789, 7, 86, 2, 2, 789, 790, 7, 71, 2, 2, 790, 791, 7, 84, 2, 2, 791, 78, 3, 2, 2, 2, 792, 793, 7, 69, 2, 2, 793, 794, 7, 78, 2, 2, 794, 795, 7, 87, 2, 2, 795, 796, 7, 85, 2, 2, 796, 797, 7, 86, 2, 2, 797, 798, 7, 71, 2, 2, 798, 799, 7, 84, 2, 2, 799, 800, 7, 71, 2, 2, 800, 801, 7, 70, 2, 2, 801, 80, 3, 2, 2, 2, 802, 803, 7, 69, 2, 2, 803, 804, 7, 81, 2, 2, 804, 805, 7, 70, 2, 2, 805, 806, 7, 71, 2, 2, 806, 807, 7, 73, 2, 2, 807, 808, 7, 71, 2, 2, 808, 809, 7, 80, 2, 2, 809, 82, 3, 2, 2, 2, 810, 811, 7, 69, 2, 2, 811, 812, 7, 81, 2, 2, 812, 813, 7, 78, 2, 2, 813, 814, 7, 78, 2, 2, 814, 815, 7, 67, 2, 2, 815, 816, 7, 86, 2, 2, 816, 817, 7, 71, 2, 2, 817, 84, 3, 2, 2, 2, 818, 819, 7, 69, 2, 2, 819, 820, 7, 81, 2, 2, 820, 821, 7, 78, 2, 2, 821, 822, 7, 78, 2, 2, 822, 823, 7, 71, 2, 2, 823, 824, 7, 69, 2, 2, 824, 825, 7, 86, 2, 2, 825, 826, 7, 75, 2, 2, 826, 827, 7, 81, 2, 2, 827, 828, 7, 80, 2, 2, 828, 86, 3, 2, 2, 2, 829, 830, 7, 69, 2, 2, 830, 831, 7, 81, 2, 2, 831, 832, 7, 78, 2, 2, 832, 833, 7, 87, 2, 2, 833, 834, 7, 79, 2, 2, 834, 835, 7, 80, 2, 2, 835, 88, 3, 2, 2, 2, 836, 837, 7, 69, 2, 2, 837, 838, 7, 81, 2, 2, 838, 839, 7, 78, 2, 2, 839, 840, 7, 87, 2, 2, 840, 841, 7, 79, 2, 2, 841, 842, 7, 80, 2, 2, 842, 843, 7, 85, 2, 2, 843, 90, 3, 2, 2, 2, 844, 845, 7, 69, 2, 2, 845, 846, 7, 81, 2, 2, 846, 847, 7, 79, 2, 2, 847, 848, 7, 79, 2, 2, 848, 849, 7, 71, 2, 2, 849, 850, 7, 80, 2, 2, 850, 851, 7, 86, 2, 2, 851, 92, 3, 2, 2, 2, 852, 853, 7, 69, 2, 2, 853, 854, 7, 81, 2, 2, 854, 855, 7, 79, 2, 2, 855, 856, 7, 79, 2, 2, 856, 857, 7, 75, 2, 2, 857, 858, 7, 86, 2, 2, 858, 94, 3, 2, 2, 2, 859, 860, 7, 69, 2, 2, 860, 861, 7, 81, 2, 2, 861, 862, 7, 79, 2, 2, 862, 863, 7, 82, 2, 2, 863, 864, 7, 67, 2, 2, 864, 865, 7, 69, 2, 2, 865, 866, 7, 86, 2, 2, 866, 96, 3, 2, 2, 2, 867, 868, 7, 69, 2, 2, 868, 869, 7, 81, 2, 2, 869, 870, 7, 79, 2, 2, 870, 871, 7, 82, 2, 2, 871, 872, 7, 67, 2, 2, 872, 873, 7, 69, 2, 2, 873, 874, 7, 86, 2, 2, 874, 875, 7, 75, 2, 2, 875, 876, 7, 81, 2, 2, 876, 877, 7, 80, 2, 2, 877, 878, 7, 85, 2, 2, 878, 98, 3, 2, 2, 2, 879, 880, 7, 69, 2, 2, 880, 881, 7, 81, 2, 2, 881, 882, 7, 79, 2, 2, 882, 883, 7, 82, 2, 2, 883, 884, 7, 87, 2, 2, 884, 885, 7, 86, 2, 2, 885, 886, 7, 71, 2, 2, 886, 100, 3, 2, 2, 2, 887, 888, 7, 69, 2, 2, 888, 889, 7, 81, 2, 2, 889, 890, 7, 80, 2, 2, 890, 891, 7, 69, 2, 2, 891, 892, 7, 67, 2, 2, 892, 893, 7, 86, 2, 2, 893, 894, 7, 71, 2, 2, 894, 895, 7, 80, 2, 2, 895, 896, 7, 67, 2, 2, 896, 897, 7, 86, 2, 2, 897, 898, 7, 71, 2, 2, 898, 102, 3, 2, 2, 2, 899, 900, 7, 69, 2, 2, 900, 901, 7, 81, 2, 2, 901, 902, 7, 80, 2, 2, 902, 903, 7, 85, 2, 2, 903, 904, 7, 86, 2, 2, 904, 905, 7, 84, 2, 2, 905, 906, 7, 67, 2, 2, 906, 907, 7, 75, 2, 2, 907, 908, 7, 80, 2, 2, 908, 909, 7, 86, 2, 2, 909, 104, 3, 2, 2, 2, 910, 911, 7, 69, 2, 2, 911, 912, 7, 81, 2, 2, 912, 913, 7, 85, 2, 2, 913, 914, 7, 86, 2, 2, 914, 106, 3, 2, 2, 2, 915, 916, 7, 69, 2, 2, 916, 917, 7, 84, 2, 2, 917, 918, 7, 71, 2, 2, 918, 919, 7, 67, 2, 2, 919, 920, 7, 86, 2, 2, 920, 921, 7, 71, 2, 2, 921, 108, 3, 2, 2, 2, 922, 923, 7, 69, 2, 2, 923, 924, 7, 84, 2, 2, 924, 925, 7, 81, 2, 2, 925, 926, 7, 85, 2, 2, 926, 927, 7, 85, 2, 2, 927, 110, 3, 2, 2, 2, 928, 929, 7, 69, 2, 2, 929, 930, 7, 87, 2, 2, 930, 931, 7, 68, 2, 2, 931, 932, 7, 71, 2, 2, 932, 112, 3, 2, 2, 2, 933, 934, 7, 69, 2, 2, 934, 935, 7, 87, 2, 2, 935, 936, 7, 84, 2, 2, 936, 937, 7, 84, 2, 2, 937, 938, 7, 71, 2, 2, 938, 939, 7, 80, 2, 2, 939, 940, 7, 86, 2, 2, 940, 114, 3, 2, 2, 2, 941, 942, 7, 69, 2, 2, 942, 943, 7, 87, 2, 2, 943, 944, 7, 84, 2, 2, 944, 945, 7, 84, 2, 2, 945, 946, 7, 71, 2, 2, 946, 947, 7, 80, 2, 2, 947, 948, 7, 86, 2, 2, 948, 949, 7, 97, 2, 2, 949, 950, 7, 70, 2, 2, 950, 951, 7, 67, 2, 2, 951, 952, 7, 86, 2, 2, 952, 953, 7, 71, 2, 2, 953, 116, 3, 2, 2, 2, 954, 955, 7, 69, 2, 2, 955, 956, 7, 87, 2, 2, 956, 957, 7, 84, 2, 2, 957, 958, 7, 84, 2, 2, 958, 959, 7, 71, 2, 2, 959, 960, 7, 80, 2, 2, 960, 961, 7, 86, 2, 2, 961, 962, 7, 97, 2, 2, 962, 963, 7, 86, 2, 2, 963, 964, 7, 75, 2, 2, 964, 965, 7, 79, 2, 2, 965, 966, 7, 71, 2, 2, 966, 118, 3, 2, 2, 2, 967, 968, 7, 69, 2, 2, 968, 969, 7, 87, 2, 2, 969, 970, 7, 84, 2, 2, 970, 971, 7, 84, 2, 2, 971, 972, 7, 71, 2, 2, 972, 973, 7, 80, 2, 2, 973, 974, 7, 86, 2, 2, 974, 975, 7, 97, 2, 2, 975, 976, 7, 86, 2, 2, 976, 977, 7, 75, 2, 2, 977, 978, 7, 79, 2, 2, 978, 979, 7, 71, 2, 2, 979, 980, 7, 85, 2, 2, 980, 981, 7, 86, 2, 2, 981, 982, 7, 67, 2, 2, 982, 983, 7, 79, 2, 2, 983, 984, 7, 82, 2, 2, 984, 120, 3, 2, 2, 2, 985, 986, 7, 69, 2, 2, 986, 987, 7, 87, 2, 2, 987, 988, 7, 84, 2, 2, 988, 989, 7, 84, 2, 2, 989, 990, 7, 71, 2, 2, 990, 991, 7, 80, 2, 2, 991, 992, 7, 86, 2, 2, 992, 993, 7, 97, 2, 2, 993, 994, 7, 87, 2, 2, 994, 995, 7, 85, 2, 2, 995, 996, 7, 71, 2, 2, 996, 997, 7, 84, 2, 2, 997, 122, 3, 2, 2, 2, 998, 999, 7, 70, 2, 2, 999, 1000, 7, 67, 2, 2, 1000, 1001, 7, 86, 2, 2, 1001, 1002, 7, 67, 2, 2, 1002, 124, 3, 2, 2, 2, 1003, 1004, 7, 70, 2, 2, 1004, 1005, 7, 67, 2, 2, 1005, 1006, 7, 86, 2, 2, 1006, 1007, 7, 67, 2, 2, 1007, 1008, 7, 68, 2, 2, 1008, 1009, 7, 67, 2, 2, 1009, 1010, 7, 85, 2, 2, 1010, 1011, 7, 71, 2, 2, 1011, 126, 3, 2, 2, 2, 1012, 1013, 7, 70, 2, 2, 1013, 1014, 7, 67, 2, 2, 1014, 1015, 7, 86, 2, 2, 1015, 1016, 7, 67, 2, 2, 1016, 1017, 7, 68, 2, 2, 1017, 1018, 7, 67, 2, 2, 1018, 1019, 7, 85, 2, 2, 1019, 1020, 7, 71, 2, 2, 1020, 1029, 7, 85, 2, 2, 1021, 1022, 7, 85, 2, 2, 1022, 1023, 7, 69, 2, 2, 1023, 1024, 7, 74, 2, 2, 1024, 1025, 7, 71, 2, 2, 1025, 1026, 7, 79, 2, 2, 1026, 1027, 7, 67, 2, 2, 1027, 1029, 7, 85, 2, 2, 1028, 1012, 3, 2, 2, 2, 1028, 1021, 3, 2, 2, 2, 1029, 128, 3, 2, 2, 2, 1030, 1031, 7, 70, 2, 2, 1031, 1032, 7, 67, 2, 2, 1032, 1033, 7, 91, 2, 2, 1033, 130, 3, 2, 2, 2, 1034, 1035, 7, 70, 2, 2, 1035, 1036, 7, 68, 2, 2, 1036, 1037, 7, 82, 2, 2, 1037, 1038, 7, 84, 2, 2, 1038, 1039, 7, 81, 2, 2, 1039, 1040, 7, 82, 2, 2, 1040, 1041, 7, 71, 2, 2, 1041, 1042, 7, 84, 2, 2, 1042, 1043, 7, 86, 2, 2, 1043, 1044, 7, 75, 2, 2, 1044, 1045, 7, 71, 2, 2, 1045, 1046, 7, 85, 2, 2, 1046, 132, 3, 2, 2, 2, 1047, 1048, 7, 70, 2, 2, 1048, 1049, 7, 71, 2, 2, 1049, 1050, 7, 72, 2, 2, 1050, 1051, 7, 75, 2, 2, 1051, 1052, 7, 80, 2, 2, 1052, 1053, 7, 71, 2, 2, 1053, 1054, 7, 70, 2, 2, 1054, 134, 3, 2, 2, 2, 1055, 1056, 7, 70, 2, 2, 1056, 1057, 7, 71, 2, 2, 1057, 1058, 7, 78, 2, 2, 1058, 1059, 7, 71, 2, 2, 1059, 1060, 7, 86, 2, 2, 1060, 1061, 7, 71, 2, 2, 1061, 136, 3, 2, 2, 2, 1062, 1063, 7, 70, 2, 2, 1063, 1064, 7, 71, 2, 2, 1064, 1065, 7, 78, 2, 2, 1065, 1066, 7, 75, 2, 2, 1066, 1067, 7, 79, 2, 2, 1067, 1068, 7, 75, 2, 2, 1068, 1069, 7, 86, 2, 2, 1069, 1070, 7, 71, 2, 2, 1070, 1071, 7, 70, 2, 2, 1071, 138, 3, 2, 2, 2, 1072, 1073, 7, 70, 2, 2, 1073, 1074, 7, 71, 2, 2, 1074, 1075, 7, 85, 2, 2, 1075, 1076, 7, 69, 2, 2, 1076, 140, 3, 2, 2, 2, 1077, 1078, 7, 70, 2, 2, 1078, 1079, 7, 71, 2, 2, 1079, 1080, 7, 85, 2, 2, 1080, 1081, 7, 69, 2, 2, 1081, 1082, 7, 84, 2, 2, 1082, 1083, 7, 75, 2, 2, 1083, 1084, 7, 68, 2, 2, 1084, 1085, 7, 71, 2, 2, 1085, 142, 3, 2, 2, 2, 1086, 1087, 7, 70, 2, 2, 1087, 1088, 7, 72, 2, 2, 1088, 1089, 7, 85, 2, 2, 1089, 144, 3, 2, 2, 2, 1090, 1091, 7, 70, 2, 2, 1091, 1092, 7, 75, 2, 2, 1092, 1093, 7, 84, 2, 2, 1093, 1094, 7, 71, 2, 2, 1094, 1095, 7, 69, 2, 2, 1095, 1096, 7, 86, 2, 2, 1096, 1097, 7, 81, 2, 2, 1097, 1098, 7, 84, 2, 2, 1098, 1099, 7, 75, 2, 2, 1099, 1100, 7, 71, 2, 2, 1100, 1101, 7, 85, 2, 2, 1101, 146, 3, 2, 2, 2, 1102, 1103, 7, 70, 2, 2, 1103, 1104, 7, 75, 2, 2, 1104, 1105, 7, 84, 2, 2, 1105, 1106, 7, 71, 2, 2, 1106, 1107, 7, 69, 2, 2, 1107, 1108, 7, 86, 2, 2, 1108, 1109, 7, 81, 2, 2, 1109, 1110, 7, 84, 2, 2, 1110, 1111, 7, 91, 2, 2, 1111, 148, 3, 2, 2, 2, 1112, 1113, 7, 70, 2, 2, 1113, 1114, 7, 75, 2, 2, 1114, 1115, 7, 85, 2, 2, 1115, 1116, 7, 86, 2, 2, 1116, 1117, 7, 75, 2, 2, 1117, 1118, 7, 80, 2, 2, 1118, 1119, 7, 69, 2, 2, 1119, 1120, 7, 86, 2, 2, 1120, 150, 3, 2, 2, 2, 1121, 1122, 7, 70, 2, 2, 1122, 1123, 7, 75, 2, 2, 1123, 1124, 7, 85, 2, 2, 1124, 1125, 7, 86, 2, 2, 1125, 1126, 7, 84, 2, 2, 1126, 1127, 7, 75, 2, 2, 1127, 1128, 7, 68, 2, 2, 1128, 1129, 7, 87, 2, 2, 1129, 1130, 7, 86, 2, 2, 1130, 1131, 7, 71, 2, 2, 1131, 152, 3, 2, 2, 2, 1132, 1133, 7, 70, 2, 2, 1133, 1134, 7, 84, 2, 2, 1134, 1135, 7, 81, 2, 2, 1135, 1136, 7, 82, 2, 2, 1136, 154, 3, 2, 2, 2, 1137, 1138, 7, 71, 2, 2, 1138, 1139, 7, 78, 2, 2, 1139, 1140, 7, 85, 2, 2, 1140, 1141, 7, 71, 2, 2, 1141, 156, 3, 2, 2, 2, 1142, 1143, 7, 71, 2, 2, 1143, 1144, 7, 80, 2, 2, 1144, 1145, 7, 70, 2, 2, 1145, 158, 3, 2, 2, 2, 1146, 1147, 7, 71, 2, 2, 1147, 1148, 7, 85, 2, 2, 1148, 1149, 7, 69, 2, 2, 1149, 1150, 7, 67, 2, 2, 1150, 1151, 7, 82, 2, 2, 1151, 1152, 7, 71, 2, 2, 1152, 160, 3, 2, 2, 2, 1153, 1154, 7, 71, 2, 2, 1154, 1155, 7, 85, 2, 2, 1155, 1156, 7, 69, 2, 2, 1156, 1157, 7, 67, 2, 2, 1157, 1158, 7, 82, 2, 2, 1158, 1159, 7, 71, 2, 2, 1159, 1160, 7, 70, 2, 2, 1160, 162, 3, 2, 2, 2, 1161, 1162, 7, 71, 2, 2, 1162, 1163, 7, 90, 2, 2, 1163, 1164, 7, 69, 2, 2, 1164, 1165, 7, 71, 2, 2, 1165, 1166, 7, 82, 2, 2, 1166, 1167, 7, 86, 2, 2, 1167, 164, 3, 2, 2, 2, 1168, 1169, 7, 71, 2, 2, 1169, 1170, 7, 90, 2, 2, 1170, 1171, 7, 69, 2, 2, 1171, 1172, 7, 74, 2, 2, 1172, 1173, 7, 67, 2, 2, 1173, 1174, 7, 80, 2, 2, 1174, 1175, 7, 73, 2, 2, 1175, 1176, 7, 71, 2, 2, 1176, 166, 3, 2, 2, 2, 1177, 1178, 7, 71, 2, 2, 1178, 1179, 7, 90, 2, 2, 1179, 1180, 7, 75, 2, 2, 1180, 1181, 7, 85, 2, 2, 1181, 1182, 7, 86, 2, 2, 1182, 1183, 7, 85, 2, 2, 1183, 168, 3, 2, 2, 2, 1184, 1185, 7, 71, 2, 2, 1185, 1186, 7, 90, 2, 2, 1186, 1187, 7, 82, 2, 2, 1187, 1188, 7, 78, 2, 2, 1188, 1189, 7, 67, 2, 2, 1189, 1190, 7, 75, 2, 2, 1190, 1191, 7, 80, 2, 2, 1191, 170, 3, 2, 2, 2, 1192, 1193, 7, 71, 2, 2, 1193, 1194, 7, 90, 2, 2, 1194, 1195, 7, 82, 2, 2, 1195, 1196, 7, 81, 2, 2, 1196, 1197, 7, 84, 2, 2, 1197, 1198, 7, 86, 2, 2, 1198, 172, 3, 2, 2, 2, 1199, 1200, 7, 71, 2, 2, 1200, 1201, 7, 90, 2, 2, 1201, 1202, 7, 86, 2, 2, 1202, 1203, 7, 71, 2, 2, 1203, 1204, 7, 80, 2, 2, 1204, 1205, 7, 70, 2, 2, 1205, 1206, 7, 71, 2, 2, 1206, 1207, 7, 70, 2, 2, 1207, 174, 3, 2, 2, 2, 1208, 1209, 7, 71, 2, 2, 1209, 1210, 7, 90, 2, 2, 1210, 1211, 7, 86, 2, 2, 1211, 1212, 7, 71, 2, 2, 1212, 1213, 7, 84, 2, 2, 1213, 1214, 7, 80, 2, 2, 1214, 1215, 7, 67, 2, 2, 1215, 1216, 7, 78, 2, 2, 1216, 176, 3, 2, 2, 2, 1217, 1218, 7, 71, 2, 2, 1218, 1219, 7, 90, 2, 2, 1219, 1220, 7, 86, 2, 2, 1220, 1221, 7, 84, 2, 2, 1221, 1222, 7, 67, 2, 2, 1222, 1223, 7, 69, 2, 2, 1223, 1224, 7, 86, 2, 2, 1224, 178, 3, 2, 2, 2, 1225, 1226, 7, 72, 2, 2, 1226, 1227, 7, 67, 2, 2, 1227, 1228, 7, 78, 2, 2, 1228, 1229, 7, 85, 2, 2, 1229, 1230, 7, 71, 2, 2, 1230, 180, 3, 2, 2, 2, 1231, 1232, 7, 72, 2, 2, 1232, 1233, 7, 71, 2, 2, 1233, 1234, 7, 86, 2, 2, 1234, 1235, 7, 69, 2, 2, 1235, 1236, 7, 74, 2, 2, 1236, 182, 3, 2, 2, 2, 1237, 1238, 7, 72, 2, 2, 1238, 1239, 7, 75, 2, 2, 1239, 1240, 7, 71, 2, 2, 1240, 1241, 7, 78, 2, 2, 1241, 1242, 7, 70, 2, 2, 1242, 1243, 7, 85, 2, 2, 1243, 184, 3, 2, 2, 2, 1244, 1245, 7, 72, 2, 2, 1245, 1246, 7, 75, 2, 2, 1246, 1247, 7, 78, 2, 2, 1247, 1248, 7, 86, 2, 2, 1248, 1249, 7, 71, 2, 2, 1249, 1250, 7, 84, 2, 2, 1250, 186, 3, 2, 2, 2, 1251, 1252, 7, 72, 2, 2, 1252, 1253, 7, 75, 2, 2, 1253, 1254, 7, 78, 2, 2, 1254, 1255, 7, 71, 2, 2, 1255, 1256, 7, 72, 2, 2, 1256, 1257, 7, 81, 2, 2, 1257, 1258, 7, 84, 2, 2, 1258, 1259, 7, 79, 2, 2, 1259, 1260, 7, 67, 2, 2, 1260, 1261, 7, 86, 2, 2, 1261, 188, 3, 2, 2, 2, 1262, 1263, 7, 72, 2, 2, 1263, 1264, 7, 75, 2, 2, 1264, 1265, 7, 84, 2, 2, 1265, 1266, 7, 85, 2, 2, 1266, 1267, 7, 86, 2, 2, 1267, 190, 3, 2, 2, 2, 1268, 1269, 7, 72, 2, 2, 1269, 1270, 7, 81, 2, 2, 1270, 1271, 7, 78, 2, 2, 1271, 1272, 7, 78, 2, 2, 1272, 1273, 7, 81, 2, 2, 1273, 1274, 7, 89, 2, 2, 1274, 1275, 7, 75, 2, 2, 1275, 1276, 7, 80, 2, 2, 1276, 1277, 7, 73, 2, 2, 1277, 192, 3, 2, 2, 2, 1278, 1279, 7, 72, 2, 2, 1279, 1280, 7, 81, 2, 2, 1280, 1281, 7, 84, 2, 2, 1281, 194, 3, 2, 2, 2, 1282, 1283, 7, 72, 2, 2, 1283, 1284, 7, 81, 2, 2, 1284, 1285, 7, 84, 2, 2, 1285, 1286, 7, 71, 2, 2, 1286, 1287, 7, 75, 2, 2, 1287, 1288, 7, 73, 2, 2, 1288, 1289, 7, 80, 2, 2, 1289, 196, 3, 2, 2, 2, 1290, 1291, 7, 72, 2, 2, 1291, 1292, 7, 81, 2, 2, 1292, 1293, 7, 84, 2, 2, 1293, 1294, 7, 79, 2, 2, 1294, 1295, 7, 67, 2, 2, 1295, 1296, 7, 86, 2, 2, 1296, 198, 3, 2, 2, 2, 1297, 1298, 7, 72, 2, 2, 1298, 1299, 7, 81, 2, 2, 1299, 1300, 7, 84, 2, 2, 1300, 1301, 7, 79, 2, 2, 1301, 1302, 7, 67, 2, 2, 1302, 1303, 7, 86, 2, 2, 1303, 1304, 7, 86, 2, 2, 1304, 1305, 7, 71, 2, 2, 1305, 1306, 7, 70, 2, 2, 1306, 200, 3, 2, 2, 2, 1307, 1308, 7, 72, 2, 2, 1308, 1309, 7, 84, 2, 2, 1309, 1310, 7, 81, 2, 2, 1310, 1311, 7, 79, 2, 2, 1311, 202, 3, 2, 2, 2, 1312, 1313, 7, 72, 2, 2, 1313, 1314, 7, 87, 2, 2, 1314, 1315, 7, 78, 2, 2, 1315, 1316, 7, 78, 2, 2, 1316, 204, 3, 2, 2, 2, 1317, 1318, 7, 72, 2, 2, 1318, 1319, 7, 87, 2, 2, 1319, 1320, 7, 80, 2, 2, 1320, 1321, 7, 69, 2, 2, 1321, 1322, 7, 86, 2, 2, 1322, 1323, 7, 75, 2, 2, 1323, 1324, 7, 81, 2, 2, 1324, 1325, 7, 80, 2, 2, 1325, 206, 3, 2, 2, 2, 1326, 1327, 7, 72, 2, 2, 1327, 1328, 7, 87, 2, 2, 1328, 1329, 7, 80, 2, 2, 1329, 1330, 7, 69, 2, 2, 1330, 1331, 7, 86, 2, 2, 1331, 1332, 7, 75, 2, 2, 1332, 1333, 7, 81, 2, 2, 1333, 1334, 7, 80, 2, 2, 1334, 1335, 7, 85, 2, 2, 1335, 208, 3, 2, 2, 2, 1336, 1337, 7, 73, 2, 2, 1337, 1338, 7, 78, 2, 2, 1338, 1339, 7, 81, 2, 2, 1339, 1340, 7, 68, 2, 2, 1340, 1341, 7, 67, 2, 2, 1341, 1342, 7, 78, 2, 2, 1342, 210, 3, 2, 2, 2, 1343, 1344, 7, 73, 2, 2, 1344, 1345, 7, 84, 2, 2, 1345, 1346, 7, 67, 2, 2, 1346, 1347, 7, 80, 2, 2, 1347, 1348, 7, 86, 2, 2, 1348, 212, 3, 2, 2, 2, 1349, 1350, 7, 73, 2, 2, 1350, 1351, 7, 84, 2, 2, 1351, 1352, 7, 81, 2, 2, 1352, 1353, 7, 87, 2, 2, 1353, 1354, 7, 82, 2, 2, 1354, 214, 3, 2, 2, 2, 1355, 1356, 7, 73, 2, 2, 1356, 1357, 7, 84, 2, 2, 1357, 1358, 7, 81, 2, 2, 1358, 1359, 7, 87, 2, 2, 1359, 1360, 7, 82, 2, 2, 1360, 1361, 7, 75, 2, 2, 1361, 1362, 7, 80, 2, 2, 1362, 1363, 7, 73, 2, 2, 1363, 216, 3, 2, 2, 2, 1364, 1365, 7, 74, 2, 2, 1365, 1366, 7, 67, 2, 2, 1366, 1367, 7, 88, 2, 2, 1367, 1368, 7, 75, 2, 2, 1368, 1369, 7, 80, 2, 2, 1369, 1370, 7, 73, 2, 2, 1370, 218, 3, 2, 2, 2, 1371, 1372, 7, 74, 2, 2, 1372, 1373, 7, 81, 2, 2, 1373, 1374, 7, 87, 2, 2, 1374, 1375, 7, 84, 2, 2, 1375, 220, 3, 2, 2, 2, 1376, 1377, 7, 75, 2, 2, 1377, 1378, 7, 72, 2, 2, 1378, 222, 3, 2, 2, 2, 1379, 1380, 7, 75, 2, 2, 1380, 1381, 7, 73, 2, 2, 1381, 1382, 7, 80, 2, 2, 1382, 1383, 7, 81, 2, 2, 1383, 1384, 7, 84, 2, 2, 1384, 1385, 7, 71, 2, 2, 1385, 224, 3, 2, 2, 2, 1386, 1387, 7, 75, 2, 2, 1387, 1388, 7, 79, 2, 2, 1388, 1389, 7, 82, 2, 2, 1389, 1390, 7, 81, 2, 2, 1390, 1391, 7, 84, 2, 2, 1391, 1392, 7, 86, 2, 2, 1392, 226, 3, 2, 2, 2, 1393, 1394, 7, 75, 2, 2, 1394, 1395, 7, 80, 2, 2, 1395, 228, 3, 2, 2, 2, 1396, 1397, 7, 75, 2, 2, 1397, 1398, 7, 80, 2, 2, 1398, 1399, 7, 70, 2, 2, 1399, 1400, 7, 71, 2, 2, 1400, 1401, 7, 90, 2, 2, 1401, 230, 3, 2, 2, 2, 1402, 1403, 7, 75, 2, 2, 1403, 1404, 7, 80, 2, 2, 1404, 1405, 7, 70, 2, 2, 1405, 1406, 7, 71, 2, 2, 1406, 1407, 7, 90, 2, 2, 1407, 1408, 7, 71, 2, 2, 1408, 1409, 7, 85, 2, 2, 1409, 232, 3, 2, 2, 2, 1410, 1411, 7, 75, 2, 2, 1411, 1412, 7, 80, 2, 2, 1412, 1413, 7, 80, 2, 2, 1413, 1414, 7, 71, 2, 2, 1414, 1415, 7, 84, 2, 2, 1415, 234, 3, 2, 2, 2, 1416, 1417, 7, 75, 2, 2, 1417, 1418, 7, 80, 2, 2, 1418, 1419, 7, 82, 2, 2, 1419, 1420, 7, 67, 2, 2, 1420, 1421, 7, 86, 2, 2, 1421, 1422, 7, 74, 2, 2, 1422, 236, 3, 2, 2, 2, 1423, 1424, 7, 75, 2, 2, 1424, 1425, 7, 80, 2, 2, 1425, 1426, 7, 82, 2, 2, 1426, 1427, 7, 87, 2, 2, 1427, 1428, 7, 86, 2, 2, 1428, 1429, 7, 72, 2, 2, 1429, 1430, 7, 81, 2, 2, 1430, 1431, 7, 84, 2, 2, 1431, 1432, 7, 79, 2, 2, 1432, 1433, 7, 67, 2, 2, 1433, 1434, 7, 86, 2, 2, 1434, 238, 3, 2, 2, 2, 1435, 1436, 7, 75, 2, 2, 1436, 1437, 7, 80, 2, 2, 1437, 1438, 7, 85, 2, 2, 1438, 1439, 7, 71, 2, 2, 1439, 1440, 7, 84, 2, 2, 1440, 1441, 7, 86, 2, 2, 1441, 240, 3, 2, 2, 2, 1442, 1443, 7, 75, 2, 2, 1443, 1444, 7, 80, 2, 2, 1444, 1445, 7, 86, 2, 2, 1445, 1446, 7, 71, 2, 2, 1446, 1447, 7, 84, 2, 2, 1447, 1448, 7, 85, 2, 2, 1448, 1449, 7, 71, 2, 2, 1449, 1450, 7, 69, 2, 2, 1450, 1451, 7, 86, 2, 2, 1451, 242, 3, 2, 2, 2, 1452, 1453, 7, 75, 2, 2, 1453, 1454, 7, 80, 2, 2, 1454, 1455, 7, 86, 2, 2, 1455, 1456, 7, 71, 2, 2, 1456, 1457, 7, 84, 2, 2, 1457, 1458, 7, 88, 2, 2, 1458, 1459, 7, 67, 2, 2, 1459, 1460, 7, 78, 2, 2, 1460, 244, 3, 2, 2, 2, 1461, 1462, 7, 75, 2, 2, 1462, 1463, 7, 80, 2, 2, 1463, 1464, 7, 86, 2, 2, 1464, 1465, 7, 81, 2, 2, 1465, 246, 3, 2, 2, 2, 1466, 1467, 7, 75, 2, 2, 1467, 1468, 7, 85, 2, 2, 1468, 248, 3, 2, 2, 2, 1469, 1470, 7, 75, 2, 2, 1470, 1471, 7, 86, 2, 2, 1471, 1472, 7, 71, 2, 2, 1472, 1473, 7, 79, 2, 2, 1473, 1474, 7, 85, 2, 2, 1474, 250, 3, 2, 2, 2, 1475, 1476, 7, 76, 2, 2, 1476, 1477, 7, 81, 2, 2, 1477, 1478, 7, 75, 2, 2, 1478, 1479, 7, 80, 2, 2, 1479, 252, 3, 2, 2, 2, 1480, 1481, 7, 77, 2, 2, 1481, 1482, 7, 71, 2, 2, 1482, 1483, 7, 91, 2, 2, 1483, 1484, 7, 85, 2, 2, 1484, 254, 3, 2, 2, 2, 1485, 1486, 7, 78, 2, 2, 1486, 1487, 7, 67, 2, 2, 1487, 1488, 7, 85, 2, 2, 1488, 1489, 7, 86, 2, 2, 1489, 256, 3, 2, 2, 2, 1490, 1491, 7, 78, 2, 2, 1491, 1492, 7, 67, 2, 2, 1492, 1493, 7, 86, 2, 2, 1493, 1494, 7, 71, 2, 2, 1494, 1495, 7, 84, 2, 2, 1495, 1496, 7, 67, 2, 2, 1496, 1497, 7, 78, 2, 2, 1497, 258, 3, 2, 2, 2, 1498, 1499, 7, 78, 2, 2, 1499, 1500, 7, 67, 2, 2, 1500, 1501, 7, 92, 2, 2, 1501, 1502, 7, 91, 2, 2, 1502, 260, 3, 2, 2, 2, 1503, 1504, 7, 78, 2, 2, 1504, 1505, 7, 71, 2, 2, 1505, 1506, 7, 67, 2, 2, 1506, 1507, 7, 70, 2, 2, 1507, 1508, 7, 75, 2, 2, 1508, 1509, 7, 80, 2, 2, 1509, 1510, 7, 73, 2, 2, 1510, 262, 3, 2, 2, 2, 1511, 1512, 7, 78, 2, 2, 1512, 1513, 7, 71, 2, 2, 1513, 1514, 7, 72, 2, 2, 1514, 1515, 7, 86, 2, 2, 1515, 264, 3, 2, 2, 2, 1516, 1517, 7, 78, 2, 2, 1517, 1518, 7, 75, 2, 2, 1518, 1519, 7, 77, 2, 2, 1519, 1520, 7, 71, 2, 2, 1520, 266, 3, 2, 2, 2, 1521, 1522, 7, 78, 2, 2, 1522, 1523, 7, 75, 2, 2, 1523, 1524, 7, 79, 2, 2, 1524, 1525, 7, 75, 2, 2, 1525, 1526, 7, 86, 2, 2, 1526, 268, 3, 2, 2, 2, 1527, 1528, 7, 78, 2, 2, 1528, 1529, 7, 75, 2, 2, 1529, 1530, 7, 80, 2, 2, 1530, 1531, 7, 71, 2, 2, 1531, 1532, 7, 85, 2, 2, 1532, 270, 3, 2, 2, 2, 1533, 1534, 7, 78, 2, 2, 1534, 1535, 7, 75, 2, 2, 1535, 1536, 7, 85, 2, 2, 1536, 1537, 7, 86, 2, 2, 1537, 272, 3, 2, 2, 2, 1538, 1539, 7, 78, 2, 2, 1539, 1540, 7, 81, 2, 2, 1540, 1541, 7, 67, 2, 2, 1541, 1542, 7, 70, 2, 2, 1542, 274, 3, 2, 2, 2, 1543, 1544, 7, 78, 2, 2, 1544, 1545, 7, 81, 2, 2, 1545, 1546, 7, 69, 2, 2, 1546, 1547, 7, 67, 2, 2, 1547, 1548, 7, 78, 2, 2, 1548, 276, 3, 2, 2, 2, 1549, 1550, 7, 78, 2, 2, 1550, 1551, 7, 81, 2, 2, 1551, 1552, 7, 69, 2, 2, 1552, 1553, 7, 67, 2, 2, 1553, 1554, 7, 86, 2, 2, 1554, 1555, 7, 75, 2, 2, 1555, 1556, 7, 81, 2, 2, 1556, 1557, 7, 80, 2, 2, 1557, 278, 3, 2, 2, 2, 1558, 1559, 7, 78, 2, 2, 1559, 1560, 7, 81, 2, 2, 1560, 1561, 7, 69, 2, 2, 1561, 1562, 7, 77, 2, 2, 1562, 280, 3, 2, 2, 2, 1563, 1564, 7, 78, 2, 2, 1564, 1565, 7, 81, 2, 2, 1565, 1566, 7, 69, 2, 2, 1566, 1567, 7, 77, 2, 2, 1567, 1568, 7, 85, 2, 2, 1568, 282, 3, 2, 2, 2, 1569, 1570, 7, 78, 2, 2, 1570, 1571, 7, 81, 2, 2, 1571, 1572, 7, 73, 2, 2, 1572, 1573, 7, 75, 2, 2, 1573, 1574, 7, 69, 2, 2, 1574, 1575, 7, 67, 2, 2, 1575, 1576, 7, 78, 2, 2, 1576, 284, 3, 2, 2, 2, 1577, 1578, 7, 79, 2, 2, 1578, 1579, 7, 67, 2, 2, 1579, 1580, 7, 69, 2, 2, 1580, 1581, 7, 84, 2, 2, 1581, 1582, 7, 81, 2, 2, 1582, 286, 3, 2, 2, 2, 1583, 1584, 7, 79, 2, 2, 1584, 1585, 7, 67, 2, 2, 1585, 1586, 7, 82, 2, 2, 1586, 288, 3, 2, 2, 2, 1587, 1588, 7, 79, 2, 2, 1588, 1589, 7, 67, 2, 2, 1589, 1590, 7, 86, 2, 2, 1590, 1591, 7, 69, 2, 2, 1591, 1592, 7, 74, 2, 2, 1592, 1593, 7, 71, 2, 2, 1593, 1594, 7, 70, 2, 2, 1594, 290, 3, 2, 2, 2, 1595, 1596, 7, 79, 2, 2, 1596, 1597, 7, 71, 2, 2, 1597, 1598, 7, 84, 2, 2, 1598, 1599, 7, 73, 2, 2, 1599, 1600, 7, 71, 2, 2, 1600, 292, 3, 2, 2, 2, 1601, 1602, 7, 79, 2, 2, 1602, 1603, 7, 75, 2, 2, 1603, 1604, 7, 80, 2, 2, 1604, 1605, 7, 87, 2, 2, 1605, 1606, 7, 86, 2, 2, 1606, 1607, 7, 71, 2, 2, 1607, 294, 3, 2, 2, 2, 1608, 1609, 7, 79, 2, 2, 1609, 1610, 7, 81, 2, 2, 1610, 1611, 7, 80, 2, 2, 1611, 1612, 7, 86, 2, 2, 1612, 1613, 7, 74, 2, 2, 1613, 296, 3, 2, 2, 2, 1614, 1615, 7, 79, 2, 2, 1615, 1616, 7, 85, 2, 2, 1616, 1617, 7, 69, 2, 2, 1617, 1618, 7, 77, 2, 2, 1618, 298, 3, 2, 2, 2, 1619, 1620, 7, 80, 2, 2, 1620, 1621, 7, 67, 2, 2, 1621, 1622, 7, 79, 2, 2, 1622, 1623, 7, 71, 2, 2, 1623, 1624, 7, 85, 2, 2, 1624, 1625, 7, 82, 2, 2, 1625, 1626, 7, 67, 2, 2, 1626, 1627, 7, 69, 2, 2, 1627, 1628, 7, 71, 2, 2, 1628, 300, 3, 2, 2, 2, 1629, 1630, 7, 80, 2, 2, 1630, 1631, 7, 67, 2, 2, 1631, 1632, 7, 79, 2, 2, 1632, 1633, 7, 71, 2, 2, 1633, 1634, 7, 85, 2, 2, 1634, 1635, 7, 82, 2, 2, 1635, 1636, 7, 67, 2, 2, 1636, 1637, 7, 69, 2, 2, 1637, 1638, 7, 71, 2, 2, 1638, 1639, 7, 85, 2, 2, 1639, 302, 3, 2, 2, 2, 1640, 1641, 7, 80, 2, 2, 1641, 1642, 7, 67, 2, 2, 1642, 1643, 7, 86, 2, 2, 1643, 1644, 7, 87, 2, 2, 1644, 1645, 7, 84, 2, 2, 1645, 1646, 7, 67, 2, 2, 1646, 1647, 7, 78, 2, 2, 1647, 304, 3, 2, 2, 2, 1648, 1649, 7, 80, 2, 2, 1649, 1650, 7, 81, 2, 2, 1650, 306, 3, 2, 2, 2, 1651, 1652, 7, 80, 2, 2, 1652, 1653, 7, 81, 2, 2, 1653, 1656, 7, 86, 2, 2, 1654, 1656, 7, 35, 2, 2, 1655, 1651, 3, 2, 2, 2, 1655, 1654, 3, 2, 2, 2, 1656, 308, 3, 2, 2, 2, 1657, 1658, 7, 80, 2, 2, 1658, 1659, 7, 87, 2, 2, 1659, 1660, 7, 78, 2, 2, 1660, 1661, 7, 78, 2, 2, 1661, 310, 3, 2, 2, 2, 1662, 1663, 7, 80, 2, 2, 1663, 1664, 7, 87, 2, 2, 1664, 1665, 7, 78, 2, 2, 1665, 1666, 7, 78, 2, 2, 1666, 1667, 7, 85, 2, 2, 1667, 312, 3, 2, 2, 2, 1668, 1669, 7, 81, 2, 2, 1669, 1670, 7, 72, 2, 2, 1670, 314, 3, 2, 2, 2, 1671, 1672, 7, 81, 2, 2, 1672, 1673, 7, 80, 2, 2, 1673, 316, 3, 2, 2, 2, 1674, 1675, 7, 81, 2, 2, 1675, 1676, 7, 80, 2, 2, 1676, 1677, 7, 78, 2, 2, 1677, 1678, 7, 91, 2, 2, 1678, 318, 3, 2, 2, 2, 1679, 1680, 7, 81, 2, 2, 1680, 1681, 7, 82, 2, 2, 1681, 1682, 7, 86, 2, 2, 1682, 1683, 7, 75, 2, 2, 1683, 1684, 7, 81, 2, 2, 1684, 1685, 7, 80, 2, 2, 1685, 320, 3, 2, 2, 2, 1686, 1687, 7, 81, 2, 2, 1687, 1688, 7, 82, 2, 2, 1688, 1689, 7, 86, 2, 2, 1689, 1690, 7, 75, 2, 2, 1690, 1691, 7, 81, 2, 2, 1691, 1692, 7, 80, 2, 2, 1692, 1693, 7, 85, 2, 2, 1693, 322, 3, 2, 2, 2, 1694, 1695, 7, 81, 2, 2, 1695, 1696, 7, 84, 2, 2, 1696, 324, 3, 2, 2, 2, 1697, 1698, 7, 81, 2, 2, 1698, 1699, 7, 84, 2, 2, 1699, 1700, 7, 70, 2, 2, 1700, 1701, 7, 71, 2, 2, 1701, 1702, 7, 84, 2, 2, 1702, 326, 3, 2, 2, 2, 1703, 1704, 7, 81, 2, 2, 1704, 1705, 7, 87, 2, 2, 1705, 1706, 7, 86, 2, 2, 1706, 328, 3, 2, 2, 2, 1707, 1708, 7, 81, 2, 2, 1708, 1709, 7, 87, 2, 2, 1709, 1710, 7, 86, 2, 2, 1710, 1711, 7, 71, 2, 2, 1711, 1712, 7, 84, 2, 2, 1712, 330, 3, 2, 2, 2, 1713, 1714, 7, 81, 2, 2, 1714, 1715, 7, 87, 2, 2, 1715, 1716, 7, 86, 2, 2, 1716, 1717, 7, 82, 2, 2, 1717, 1718, 7, 87, 2, 2, 1718, 1719, 7, 86, 2, 2, 1719, 1720, 7, 72, 2, 2, 1720, 1721, 7, 81, 2, 2, 1721, 1722, 7, 84, 2, 2, 1722, 1723, 7, 79, 2, 2, 1723, 1724, 7, 67, 2, 2, 1724, 1725, 7, 86, 2, 2, 1725, 332, 3, 2, 2, 2, 1726, 1727, 7, 81, 2, 2, 1727, 1728, 7, 88, 2, 2, 1728, 1729, 7, 71, 2, 2, 1729, 1730, 7, 84, 2, 2, 1730, 334, 3, 2, 2, 2, 1731, 1732, 7, 81, 2, 2, 1732, 1733, 7, 88, 2, 2, 1733, 1734, 7, 71, 2, 2, 1734, 1735, 7, 84, 2, 2, 1735, 1736, 7, 78, 2, 2, 1736, 1737, 7, 67, 2, 2, 1737, 1738, 7, 82, 2, 2, 1738, 1739, 7, 85, 2, 2, 1739, 336, 3, 2, 2, 2, 1740, 1741, 7, 81, 2, 2, 1741, 1742, 7, 88, 2, 2, 1742, 1743, 7, 71, 2, 2, 1743, 1744, 7, 84, 2, 2, 1744, 1745, 7, 78, 2, 2, 1745, 1746, 7, 67, 2, 2, 1746, 1747, 7, 91, 2, 2, 1747, 338, 3, 2, 2, 2, 1748, 1749, 7, 81, 2, 2, 1749, 1750, 7, 88, 2, 2, 1750, 1751, 7, 71, 2, 2, 1751, 1752, 7, 84, 2, 2, 1752, 1753, 7, 89, 2, 2, 1753, 1754, 7, 84, 2, 2, 1754, 1755, 7, 75, 2, 2, 1755, 1756, 7, 86, 2, 2, 1756, 1757, 7, 71, 2, 2, 1757, 340, 3, 2, 2, 2, 1758, 1759, 7, 82, 2, 2, 1759, 1760, 7, 67, 2, 2, 1760, 1761, 7, 84, 2, 2, 1761, 1762, 7, 86, 2, 2, 1762, 1763, 7, 75, 2, 2, 1763, 1764, 7, 86, 2, 2, 1764, 1765, 7, 75, 2, 2, 1765, 1766, 7, 81, 2, 2, 1766, 1767, 7, 80, 2, 2, 1767, 342, 3, 2, 2, 2, 1768, 1769, 7, 82, 2, 2, 1769, 1770, 7, 67, 2, 2, 1770, 1771, 7, 84, 2, 2, 1771, 1772, 7, 86, 2, 2, 1772, 1773, 7, 75, 2, 2, 1773, 1774, 7, 86, 2, 2, 1774, 1775, 7, 75, 2, 2, 1775, 1776, 7, 81, 2, 2, 1776, 1777, 7, 80, 2, 2, 1777, 1778, 7, 71, 2, 2, 1778, 1779, 7, 70, 2, 2, 1779, 344, 3, 2, 2, 2, 1780, 1781, 7, 82, 2, 2, 1781, 1782, 7, 67, 2, 2, 1782, 1783, 7, 84, 2, 2, 1783, 1784, 7, 86, 2, 2, 1784, 1785, 7, 75, 2, 2, 1785, 1786, 7, 86, 2, 2, 1786, 1787, 7, 75, 2, 2, 1787, 1788, 7, 81, 2, 2, 1788, 1789, 7, 80, 2, 2, 1789, 1790, 7, 85, 2, 2, 1790, 346, 3, 2, 2, 2, 1791, 1792, 7, 82, 2, 2, 1792, 1793, 7, 71, 2, 2, 1793, 1794, 7, 84, 2, 2, 1794, 1795, 7, 69, 2, 2, 1795, 1796, 7, 71, 2, 2, 1796, 1797, 7, 80, 2, 2, 1797, 1798, 7, 86, 2, 2, 1798, 348, 3, 2, 2, 2, 1799, 1800, 7, 82, 2, 2, 1800, 1801, 7, 75, 2, 2, 1801, 1802, 7, 88, 2, 2, 1802, 1803, 7, 81, 2, 2, 1803, 1804, 7, 86, 2, 2, 1804, 350, 3, 2, 2, 2, 1805, 1806, 7, 82, 2, 2, 1806, 1807, 7, 78, 2, 2, 1807, 1808, 7, 67, 2, 2, 1808, 1809, 7, 69, 2, 2, 1809, 1810, 7, 75, 2, 2, 1810, 1811, 7, 80, 2, 2, 1811, 1812, 7, 73, 2, 2, 1812, 352, 3, 2, 2, 2, 1813, 1814, 7, 82, 2, 2, 1814, 1815, 7, 81, 2, 2, 1815, 1816, 7, 85, 2, 2, 1816, 1817, 7, 75, 2, 2, 1817, 1818, 7, 86, 2, 2, 1818, 1819, 7, 75, 2, 2, 1819, 1820, 7, 81, 2, 2, 1820, 1821, 7, 80, 2, 2, 1821, 354, 3, 2, 2, 2, 1822, 1823, 7, 82, 2, 2, 1823, 1824, 7, 84, 2, 2, 1824, 1825, 7, 71, 2, 2, 1825, 1826, 7, 69, 2, 2, 1826, 1827, 7, 71, 2, 2, 1827, 1828, 7, 70, 2, 2, 1828, 1829, 7, 75, 2, 2, 1829, 1830, 7, 80, 2, 2, 1830, 1831, 7, 73, 2, 2, 1831, 356, 3, 2, 2, 2, 1832, 1833, 7, 82, 2, 2, 1833, 1834, 7, 84, 2, 2, 1834, 1835, 7, 75, 2, 2, 1835, 1836, 7, 79, 2, 2, 1836, 1837, 7, 67, 2, 2, 1837, 1838, 7, 84, 2, 2, 1838, 1839, 7, 91, 2, 2, 1839, 358, 3, 2, 2, 2, 1840, 1841, 7, 82, 2, 2, 1841, 1842, 7, 84, 2, 2, 1842, 1843, 7, 75, 2, 2, 1843, 1844, 7, 80, 2, 2, 1844, 1845, 7, 69, 2, 2, 1845, 1846, 7, 75, 2, 2, 1846, 1847, 7, 82, 2, 2, 1847, 1848, 7, 67, 2, 2, 1848, 1849, 7, 78, 2, 2, 1849, 1850, 7, 85, 2, 2, 1850, 360, 3, 2, 2, 2, 1851, 1852, 7, 82, 2, 2, 1852, 1853, 7, 84, 2, 2, 1853, 1854, 7, 81, 2, 2, 1854, 1855, 7, 82, 2, 2, 1855, 1856, 7, 71, 2, 2, 1856, 1857, 7, 84, 2, 2, 1857, 1858, 7, 86, 2, 2, 1858, 1859, 7, 75, 2, 2, 1859, 1860, 7, 71, 2, 2, 1860, 1861, 7, 85, 2, 2, 1861, 362, 3, 2, 2, 2, 1862, 1863, 7, 82, 2, 2, 1863, 1864, 7, 87, 2, 2, 1864, 1865, 7, 84, 2, 2, 1865, 1866, 7, 73, 2, 2, 1866, 1867, 7, 71, 2, 2, 1867, 364, 3, 2, 2, 2, 1868, 1869, 7, 83, 2, 2, 1869, 1870, 7, 87, 2, 2, 1870, 1871, 7, 71, 2, 2, 1871, 1872, 7, 84, 2, 2, 1872, 1873, 7, 91, 2, 2, 1873, 366, 3, 2, 2, 2, 1874, 1875, 7, 84, 2, 2, 1875, 1876, 7, 67, 2, 2, 1876, 1877, 7, 80, 2, 2, 1877, 1878, 7, 73, 2, 2, 1878, 1879, 7, 71, 2, 2, 1879, 368, 3, 2, 2, 2, 1880, 1881, 7, 84, 2, 2, 1881, 1882, 7, 71, 2, 2, 1882, 1883, 7, 69, 2, 2, 1883, 1884, 7, 81, 2, 2, 1884, 1885, 7, 84, 2, 2, 1885, 1886, 7, 70, 2, 2, 1886, 1887, 7, 84, 2, 2, 1887, 1888, 7, 71, 2, 2, 1888, 1889, 7, 67, 2, 2, 1889, 1890, 7, 70, 2, 2, 1890, 1891, 7, 71, 2, 2, 1891, 1892, 7, 84, 2, 2, 1892, 370, 3, 2, 2, 2, 1893, 1894, 7, 84, 2, 2, 1894, 1895, 7, 71, 2, 2, 1895, 1896, 7, 69, 2, 2, 1896, 1897, 7, 81, 2, 2, 1897, 1898, 7, 84, 2, 2, 1898, 1899, 7, 70, 2, 2, 1899, 1900, 7, 89, 2, 2, 1900, 1901, 7, 84, 2, 2, 1901, 1902, 7, 75, 2, 2, 1902, 1903, 7, 86, 2, 2, 1903, 1904, 7, 71, 2, 2, 1904, 1905, 7, 84, 2, 2, 1905, 372, 3, 2, 2, 2, 1906, 1907, 7, 84, 2, 2, 1907, 1908, 7, 71, 2, 2, 1908, 1909, 7, 69, 2, 2, 1909, 1910, 7, 81, 2, 2, 1910, 1911, 7, 88, 2, 2, 1911, 1912, 7, 71, 2, 2, 1912, 1913, 7, 84, 2, 2, 1913, 374, 3, 2, 2, 2, 1914, 1915, 7, 84, 2, 2, 1915, 1916, 7, 71, 2, 2, 1916, 1917, 7, 70, 2, 2, 1917, 1918, 7, 87, 2, 2, 1918, 1919, 7, 69, 2, 2, 1919, 1920, 7, 71, 2, 2, 1920, 376, 3, 2, 2, 2, 1921, 1922, 7, 84, 2, 2, 1922, 1923, 7, 71, 2, 2, 1923, 1924, 7, 72, 2, 2, 1924, 1925, 7, 71, 2, 2, 1925, 1926, 7, 84, 2, 2, 1926, 1927, 7, 71, 2, 2, 1927, 1928, 7, 80, 2, 2, 1928, 1929, 7, 69, 2, 2, 1929, 1930, 7, 71, 2, 2, 1930, 1931, 7, 85, 2, 2, 1931, 378, 3, 2, 2, 2, 1932, 1933, 7, 84, 2, 2, 1933, 1934, 7, 71, 2, 2, 1934, 1935, 7, 72, 2, 2, 1935, 1936, 7, 84, 2, 2, 1936, 1937, 7, 71, 2, 2, 1937, 1938, 7, 85, 2, 2, 1938, 1939, 7, 74, 2, 2, 1939, 380, 3, 2, 2, 2, 1940, 1941, 7, 84, 2, 2, 1941, 1942, 7, 71, 2, 2, 1942, 1943, 7, 80, 2, 2, 1943, 1944, 7, 67, 2, 2, 1944, 1945, 7, 79, 2, 2, 1945, 1946, 7, 71, 2, 2, 1946, 382, 3, 2, 2, 2, 1947, 1948, 7, 84, 2, 2, 1948, 1949, 7, 71, 2, 2, 1949, 1950, 7, 82, 2, 2, 1950, 1951, 7, 67, 2, 2, 1951, 1952, 7, 75, 2, 2, 1952, 1953, 7, 84, 2, 2, 1953, 384, 3, 2, 2, 2, 1954, 1955, 7, 84, 2, 2, 1955, 1956, 7, 71, 2, 2, 1956, 1957, 7, 82, 2, 2, 1957, 1958, 7, 78, 2, 2, 1958, 1959, 7, 67, 2, 2, 1959, 1960, 7, 69, 2, 2, 1960, 1961, 7, 71, 2, 2, 1961, 386, 3, 2, 2, 2, 1962, 1963, 7, 84, 2, 2, 1963, 1964, 7, 71, 2, 2, 1964, 1965, 7, 85, 2, 2, 1965, 1966, 7, 71, 2, 2, 1966, 1967, 7, 86, 2, 2, 1967, 388, 3, 2, 2, 2, 1968, 1969, 7, 84, 2, 2, 1969, 1970, 7, 71, 2, 2, 1970, 1971, 7, 85, 2, 2, 1971, 1972, 7, 86, 2, 2, 1972, 1973, 7, 84, 2, 2, 1973, 1974, 7, 75, 2, 2, 1974, 1975, 7, 69, 2, 2, 1975, 1976, 7, 86, 2, 2, 1976, 390, 3, 2, 2, 2, 1977, 1978, 7, 84, 2, 2, 1978, 1979, 7, 71, 2, 2, 1979, 1980, 7, 88, 2, 2, 1980, 1981, 7, 81, 2, 2, 1981, 1982, 7, 77, 2, 2, 1982, 1983, 7, 71, 2, 2, 1983, 392, 3, 2, 2, 2, 1984, 1985, 7, 84, 2, 2, 1985, 1986, 7, 75, 2, 2, 1986, 1987, 7, 73, 2, 2, 1987, 1988, 7, 74, 2, 2, 1988, 1989, 7, 86, 2, 2, 1989, 394, 3, 2, 2, 2, 1990, 1991, 7, 84, 2, 2, 1991, 1992, 7, 78, 2, 2, 1992, 1993, 7, 75, 2, 2, 1993, 1994, 7, 77, 2, 2, 1994, 2002, 7, 71, 2, 2, 1995, 1996, 7, 84, 2, 2, 1996, 1997, 7, 71, 2, 2, 1997, 1998, 7, 73, 2, 2, 1998, 1999, 7, 71, 2, 2, 1999, 2000, 7, 90, 2, 2, 2000, 2002, 7, 82, 2, 2, 2001, 1990, 3, 2, 2, 2, 2001, 1995, 3, 2, 2, 2, 2002, 396, 3, 2, 2, 2, 2003, 2004, 7, 84, 2, 2, 2004, 2005, 7, 81, 2, 2, 2005, 2006, 7, 78, 2, 2, 2006, 2007, 7, 71, 2, 2, 2007, 398, 3, 2, 2, 2, 2008, 2009, 7, 84, 2, 2, 2009, 2010, 7, 81, 2, 2, 2010, 2011, 7, 78, 2, 2, 2011, 2012, 7, 71, 2, 2, 2012, 2013, 7, 85, 2, 2, 2013, 400, 3, 2, 2, 2, 2014, 2015, 7, 84, 2, 2, 2015, 2016, 7, 81, 2, 2, 2016, 2017, 7, 78, 2, 2, 2017, 2018, 7, 78, 2, 2, 2018, 2019, 7, 68, 2, 2, 2019, 2020, 7, 67, 2, 2, 2020, 2021, 7, 69, 2, 2, 2021, 2022, 7, 77, 2, 2, 2022, 402, 3, 2, 2, 2, 2023, 2024, 7, 84, 2, 2, 2024, 2025, 7, 81, 2, 2, 2025, 2026, 7, 78, 2, 2, 2026, 2027, 7, 78, 2, 2, 2027, 2028, 7, 87, 2, 2, 2028, 2029, 7, 82, 2, 2, 2029, 404, 3, 2, 2, 2, 2030, 2031, 7, 84, 2, 2, 2031, 2032, 7, 81, 2, 2, 2032, 2033, 7, 89, 2, 2, 2033, 406, 3, 2, 2, 2, 2034, 2035, 7, 84, 2, 2, 2035, 2036, 7, 81, 2, 2, 2036, 2037, 7, 89, 2, 2, 2037, 2038, 7, 85, 2, 2, 2038, 408, 3, 2, 2, 2, 2039, 2040, 7, 85, 2, 2, 2040, 2041, 7, 69, 2, 2, 2041, 2042, 7, 74, 2, 2, 2042, 2043, 7, 71, 2, 2, 2043, 2044, 7, 79, 2, 2, 2044, 2045, 7, 67, 2, 2, 2045, 410, 3, 2, 2, 2, 2046, 2047, 7, 85, 2, 2, 2047, 2048, 7, 71, 2, 2, 2048, 2049, 7, 69, 2, 2, 2049, 2050, 7, 81, 2, 2, 2050, 2051, 7, 80, 2, 2, 2051, 2052, 7, 70, 2, 2, 2052, 412, 3, 2, 2, 2, 2053, 2054, 7, 85, 2, 2, 2054, 2055, 7, 71, 2, 2, 2055, 2056, 7, 78, 2, 2, 2056, 2057, 7, 71, 2, 2, 2057, 2058, 7, 69, 2, 2, 2058, 2059, 7, 86, 2, 2, 2059, 414, 3, 2, 2, 2, 2060, 2061, 7, 85, 2, 2, 2061, 2062, 7, 71, 2, 2, 2062, 2063, 7, 79, 2, 2, 2063, 2064, 7, 75, 2, 2, 2064, 416, 3, 2, 2, 2, 2065, 2066, 7, 85, 2, 2, 2066, 2067, 7, 71, 2, 2, 2067, 2068, 7, 82, 2, 2, 2068, 2069, 7, 67, 2, 2, 2069, 2070, 7, 84, 2, 2, 2070, 2071, 7, 67, 2, 2, 2071, 2072, 7, 86, 2, 2, 2072, 2073, 7, 71, 2, 2, 2073, 2074, 7, 70, 2, 2, 2074, 418, 3, 2, 2, 2, 2075, 2076, 7, 85, 2, 2, 2076, 2077, 7, 71, 2, 2, 2077, 2078, 7, 84, 2, 2, 2078, 2079, 7, 70, 2, 2, 2079, 2080, 7, 71, 2, 2, 2080, 420, 3, 2, 2, 2, 2081, 2082, 7, 85, 2, 2, 2082, 2083, 7, 71, 2, 2, 2083, 2084, 7, 84, 2, 2, 2084, 2085, 7, 70, 2, 2, 2085, 2086, 7, 71, 2, 2, 2086, 2087, 7, 82, 2, 2, 2087, 2088, 7, 84, 2, 2, 2088, 2089, 7, 81, 2, 2, 2089, 2090, 7, 82, 2, 2, 2090, 2091, 7, 71, 2, 2, 2091, 2092, 7, 84, 2, 2, 2092, 2093, 7, 86, 2, 2, 2093, 2094, 7, 75, 2, 2, 2094, 2095, 7, 71, 2, 2, 2095, 2096, 7, 85, 2, 2, 2096, 422, 3, 2, 2, 2, 2097, 2098, 7, 85, 2, 2, 2098, 2099, 7, 71, 2, 2, 2099, 2100, 7, 85, 2, 2, 2100, 2101, 7, 85, 2, 2, 2101, 2102, 7, 75, 2, 2, 2102, 2103, 7, 81, 2, 2, 2103, 2104, 7, 80, 2, 2, 2104, 2105, 7, 97, 2, 2, 2105, 2106, 7, 87, 2, 2, 2106, 2107, 7, 85, 2, 2, 2107, 2108, 7, 71, 2, 2, 2108, 2109, 7, 84, 2, 2, 2109, 424, 3, 2, 2, 2, 2110, 2111, 7, 85, 2, 2, 2111, 2112, 7, 71, 2, 2, 2112, 2113, 7, 86, 2, 2, 2113, 426, 3, 2, 2, 2, 2114, 2115, 7, 79, 2, 2, 2115, 2116, 7, 75, 2, 2, 2116, 2117, 7, 80, 2, 2, 2117, 2118, 7, 87, 2, 2, 2118, 2119, 7, 85, 2, 2, 2119, 428, 3, 2, 2, 2, 2120, 2121, 7, 85, 2, 2, 2121, 2122, 7, 71, 2, 2, 2122, 2123, 7, 86, 2, 2, 2123, 2124, 7, 85, 2, 2, 2124, 430, 3, 2, 2, 2, 2125, 2126, 7, 85, 2, 2, 2126, 2127, 7, 74, 2, 2, 2127, 2128, 7, 81, 2, 2, 2128, 2129, 7, 89, 2, 2, 2129, 432, 3, 2, 2, 2, 2130, 2131, 7, 85, 2, 2, 2131, 2132, 7, 77, 2, 2, 2132, 2133, 7, 71, 2, 2, 2133, 2134, 7, 89, 2, 2, 2134, 2135, 7, 71, 2, 2, 2135, 2136, 7, 70, 2, 2, 2136, 434, 3, 2, 2, 2, 2137, 2138, 7, 85, 2, 2, 2138, 2139, 7, 81, 2, 2, 2139, 2140, 7, 79, 2, 2, 2140, 2141, 7, 71, 2, 2, 2141, 436, 3, 2, 2, 2, 2142, 2143, 7, 85, 2, 2, 2143, 2144, 7, 81, 2, 2, 2144, 2145, 7, 84, 2, 2, 2145, 2146, 7, 86, 2, 2, 2146, 438, 3, 2, 2, 2, 2147, 2148, 7, 85, 2, 2, 2148, 2149, 7, 81, 2, 2, 2149, 2150, 7, 84, 2, 2, 2150, 2151, 7, 86, 2, 2, 2151, 2152, 7, 71, 2, 2, 2152, 2153, 7, 70, 2, 2, 2153, 440, 3, 2, 2, 2, 2154, 2155, 7, 85, 2, 2, 2155, 2156, 7, 86, 2, 2, 2156, 2157, 7, 67, 2, 2, 2157, 2158, 7, 84, 2, 2, 2158, 2159, 7, 86, 2, 2, 2159, 442, 3, 2, 2, 2, 2160, 2161, 7, 85, 2, 2, 2161, 2162, 7, 86, 2, 2, 2162, 2163, 7, 67, 2, 2, 2163, 2164, 7, 86, 2, 2, 2164, 2165, 7, 75, 2, 2, 2165, 2166, 7, 85, 2, 2, 2166, 2167, 7, 86, 2, 2, 2167, 2168, 7, 75, 2, 2, 2168, 2169, 7, 69, 2, 2, 2169, 2170, 7, 85, 2, 2, 2170, 444, 3, 2, 2, 2, 2171, 2172, 7, 85, 2, 2, 2172, 2173, 7, 86, 2, 2, 2173, 2174, 7, 81, 2, 2, 2174, 2175, 7, 84, 2, 2, 2175, 2176, 7, 71, 2, 2, 2176, 2177, 7, 70, 2, 2, 2177, 446, 3, 2, 2, 2, 2178, 2179, 7, 85, 2, 2, 2179, 2180, 7, 86, 2, 2, 2180, 2181, 7, 84, 2, 2, 2181, 2182, 7, 67, 2, 2, 2182, 2183, 7, 86, 2, 2, 2183, 2184, 7, 75, 2, 2, 2184, 2185, 7, 72, 2, 2, 2185, 2186, 7, 91, 2, 2, 2186, 448, 3, 2, 2, 2, 2187, 2188, 7, 85, 2, 2, 2188, 2189, 7, 86, 2, 2, 2189, 2190, 7, 84, 2, 2, 2190, 2191, 7, 87, 2, 2, 2191, 2192, 7, 69, 2, 2, 2192, 2193, 7, 86, 2, 2, 2193, 450, 3, 2, 2, 2, 2194, 2195, 7, 85, 2, 2, 2195, 2196, 7, 87, 2, 2, 2196, 2197, 7, 68, 2, 2, 2197, 2198, 7, 85, 2, 2, 2198, 2199, 7, 86, 2, 2, 2199, 2200, 7, 84, 2, 2, 2200, 452, 3, 2, 2, 2, 2201, 2202, 7, 85, 2, 2, 2202, 2203, 7, 87, 2, 2, 2203, 2204, 7, 68, 2, 2, 2204, 2205, 7, 85, 2, 2, 2205, 2206, 7, 86, 2, 2, 2206, 2207, 7, 84, 2, 2, 2207, 2208, 7, 75, 2, 2, 2208, 2209, 7, 80, 2, 2, 2209, 2210, 7, 73, 2, 2, 2210, 454, 3, 2, 2, 2, 2211, 2212, 7, 86, 2, 2, 2212, 2213, 7, 67, 2, 2, 2213, 2214, 7, 68, 2, 2, 2214, 2215, 7, 78, 2, 2, 2215, 2216, 7, 71, 2, 2, 2216, 456, 3, 2, 2, 2, 2217, 2218, 7, 86, 2, 2, 2218, 2219, 7, 67, 2, 2, 2219, 2220, 7, 68, 2, 2, 2220, 2221, 7, 78, 2, 2, 2221, 2222, 7, 71, 2, 2, 2222, 2223, 7, 85, 2, 2, 2223, 458, 3, 2, 2, 2, 2224, 2225, 7, 86, 2, 2, 2225, 2226, 7, 67, 2, 2, 2226, 2227, 7, 68, 2, 2, 2227, 2228, 7, 78, 2, 2, 2228, 2229, 7, 71, 2, 2, 2229, 2230, 7, 85, 2, 2, 2230, 2231, 7, 67, 2, 2, 2231, 2232, 7, 79, 2, 2, 2232, 2233, 7, 82, 2, 2, 2233, 2234, 7, 78, 2, 2, 2234, 2235, 7, 71, 2, 2, 2235, 460, 3, 2, 2, 2, 2236, 2237, 7, 86, 2, 2, 2237, 2238, 7, 68, 2, 2, 2238, 2239, 7, 78, 2, 2, 2239, 2240, 7, 82, 2, 2, 2240, 2241, 7, 84, 2, 2, 2241, 2242, 7, 81, 2, 2, 2242, 2243, 7, 82, 2, 2, 2243, 2244, 7, 71, 2, 2, 2244, 2245, 7, 84, 2, 2, 2245, 2246, 7, 86, 2, 2, 2246, 2247, 7, 75, 2, 2, 2247, 2248, 7, 71, 2, 2, 2248, 2249, 7, 85, 2, 2, 2249, 462, 3, 2, 2, 2, 2250, 2251, 7, 86, 2, 2, 2251, 2252, 7, 71, 2, 2, 2252, 2253, 7, 79, 2, 2, 2253, 2254, 7, 82, 2, 2, 2254, 2255, 7, 81, 2, 2, 2255, 2256, 7, 84, 2, 2, 2256, 2257, 7, 67, 2, 2, 2257, 2258, 7, 84, 2, 2, 2258, 2264, 7, 91, 2, 2, 2259, 2260, 7, 86, 2, 2, 2260, 2261, 7, 71, 2, 2, 2261, 2262, 7, 79, 2, 2, 2262, 2264, 7, 82, 2, 2, 2263, 2250, 3, 2, 2, 2, 2263, 2259, 3, 2, 2, 2, 2264, 464, 3, 2, 2, 2, 2265, 2266, 7, 86, 2, 2, 2266, 2267, 7, 71, 2, 2, 2267, 2268, 7, 84, 2, 2, 2268, 2269, 7, 79, 2, 2, 2269, 2270, 7, 75, 2, 2, 2270, 2271, 7, 80, 2, 2, 2271, 2272, 7, 67, 2, 2, 2272, 2273, 7, 86, 2, 2, 2273, 2274, 7, 71, 2, 2, 2274, 2275, 7, 70, 2, 2, 2275, 466, 3, 2, 2, 2, 2276, 2277, 7, 86, 2, 2, 2277, 2278, 7, 74, 2, 2, 2278, 2279, 7, 71, 2, 2, 2279, 2280, 7, 80, 2, 2, 2280, 468, 3, 2, 2, 2, 2281, 2282, 7, 86, 2, 2, 2282, 2283, 7, 81, 2, 2, 2283, 470, 3, 2, 2, 2, 2284, 2285, 7, 86, 2, 2, 2285, 2286, 7, 81, 2, 2, 2286, 2287, 7, 87, 2, 2, 2287, 2288, 7, 69, 2, 2, 2288, 2289, 7, 74, 2, 2, 2289, 472, 3, 2, 2, 2, 2290, 2291, 7, 86, 2, 2, 2291, 2292, 7, 84, 2, 2, 2292, 2293, 7, 67, 2, 2, 2293, 2294, 7, 75, 2, 2, 2294, 2295, 7, 78, 2, 2, 2295, 2296, 7, 75, 2, 2, 2296, 2297, 7, 80, 2, 2, 2297, 2298, 7, 73, 2, 2, 2298, 474, 3, 2, 2, 2, 2299, 2300, 7, 86, 2, 2, 2300, 2301, 7, 84, 2, 2, 2301, 2302, 7, 67, 2, 2, 2302, 2303, 7, 80, 2, 2, 2303, 2304, 7, 85, 2, 2, 2304, 2305, 7, 67, 2, 2, 2305, 2306, 7, 69, 2, 2, 2306, 2307, 7, 86, 2, 2, 2307, 2308, 7, 75, 2, 2, 2308, 2309, 7, 81, 2, 2, 2309, 2310, 7, 80, 2, 2, 2310, 476, 3, 2, 2, 2, 2311, 2312, 7, 86, 2, 2, 2312, 2313, 7, 84, 2, 2, 2313, 2314, 7, 67, 2, 2, 2314, 2315, 7, 80, 2, 2, 2315, 2316, 7, 85, 2, 2, 2316, 2317, 7, 67, 2, 2, 2317, 2318, 7, 69, 2, 2, 2318, 2319, 7, 86, 2, 2, 2319, 2320, 7, 75, 2, 2, 2320, 2321, 7, 81, 2, 2, 2321, 2322, 7, 80, 2, 2, 2322, 2323, 7, 85, 2, 2, 2323, 478, 3, 2, 2, 2, 2324, 2325, 7, 86, 2, 2, 2325, 2326, 7, 84, 2, 2, 2326, 2327, 7, 67, 2, 2, 2327, 2328, 7, 80, 2, 2, 2328, 2329, 7, 85, 2, 2, 2329, 2330, 7, 72, 2, 2, 2330, 2331, 7, 81, 2, 2, 2331, 2332, 7, 84, 2, 2, 2332, 2333, 7, 79, 2, 2, 2333, 480, 3, 2, 2, 2, 2334, 2335, 7, 86, 2, 2, 2335, 2336, 7, 84, 2, 2, 2336, 2337, 7, 75, 2, 2, 2337, 2338, 7, 79, 2, 2, 2338, 482, 3, 2, 2, 2, 2339, 2340, 7, 86, 2, 2, 2340, 2341, 7, 84, 2, 2, 2341, 2342, 7, 87, 2, 2, 2342, 2343, 7, 71, 2, 2, 2343, 484, 3, 2, 2, 2, 2344, 2345, 7, 86, 2, 2, 2345, 2346, 7, 84, 2, 2, 2346, 2347, 7, 87, 2, 2, 2347, 2348, 7, 80, 2, 2, 2348, 2349, 7, 69, 2, 2, 2349, 2350, 7, 67, 2, 2, 2350, 2351, 7, 86, 2, 2, 2351, 2352, 7, 71, 2, 2, 2352, 486, 3, 2, 2, 2, 2353, 2354, 7, 86, 2, 2, 2354, 2355, 7, 91, 2, 2, 2355, 2356, 7, 82, 2, 2, 2356, 2357, 7, 71, 2, 2, 2357, 488, 3, 2, 2, 2, 2358, 2359, 7, 87, 2, 2, 2359, 2360, 7, 80, 2, 2, 2360, 2361, 7, 67, 2, 2, 2361, 2362, 7, 84, 2, 2, 2362, 2363, 7, 69, 2, 2, 2363, 2364, 7, 74, 2, 2, 2364, 2365, 7, 75, 2, 2, 2365, 2366, 7, 88, 2, 2, 2366, 2367, 7, 71, 2, 2, 2367, 490, 3, 2, 2, 2, 2368, 2369, 7, 87, 2, 2, 2369, 2370, 7, 80, 2, 2, 2370, 2371, 7, 68, 2, 2, 2371, 2372, 7, 81, 2, 2, 2372, 2373, 7, 87, 2, 2, 2373, 2374, 7, 80, 2, 2, 2374, 2375, 7, 70, 2, 2, 2375, 2376, 7, 71, 2, 2, 2376, 2377, 7, 70, 2, 2, 2377, 492, 3, 2, 2, 2, 2378, 2379, 7, 87, 2, 2, 2379, 2380, 7, 80, 2, 2, 2380, 2381, 7, 69, 2, 2, 2381, 2382, 7, 67, 2, 2, 2382, 2383, 7, 69, 2, 2, 2383, 2384, 7, 74, 2, 2, 2384, 2385, 7, 71, 2, 2, 2385, 494, 3, 2, 2, 2, 2386, 2387, 7, 87, 2, 2, 2387, 2388, 7, 80, 2, 2, 2388, 2389, 7, 75, 2, 2, 2389, 2390, 7, 81, 2, 2, 2390, 2391, 7, 80, 2, 2, 2391, 496, 3, 2, 2, 2, 2392, 2393, 7, 87, 2, 2, 2393, 2394, 7, 80, 2, 2, 2394, 2395, 7, 75, 2, 2, 2395, 2396, 7, 83, 2, 2, 2396, 2397, 7, 87, 2, 2, 2397, 2398, 7, 71, 2, 2, 2398, 498, 3, 2, 2, 2, 2399, 2400, 7, 87, 2, 2, 2400, 2401, 7, 80, 2, 2, 2401, 2402, 7, 77, 2, 2, 2402, 2403, 7, 80, 2, 2, 2403, 2404, 7, 81, 2, 2, 2404, 2405, 7, 89, 2, 2, 2405, 2406, 7, 80, 2, 2, 2406, 500, 3, 2, 2, 2, 2407, 2408, 7, 87, 2, 2, 2408, 2409, 7, 80, 2, 2, 2409, 2410, 7, 78, 2, 2, 2410, 2411, 7, 81, 2, 2, 2411, 2412, 7, 69, 2, 2, 2412, 2413, 7, 77, 2, 2, 2413, 502, 3, 2, 2, 2, 2414, 2415, 7, 87, 2, 2, 2415, 2416, 7, 80, 2, 2, 2416, 2417, 7, 85, 2, 2, 2417, 2418, 7, 71, 2, 2, 2418, 2419, 7, 86, 2, 2, 2419, 504, 3, 2, 2, 2, 2420, 2421, 7, 87, 2, 2, 2421, 2422, 7, 82, 2, 2, 2422, 2423, 7, 70, 2, 2, 2423, 2424, 7, 67, 2, 2, 2424, 2425, 7, 86, 2, 2, 2425, 2426, 7, 71, 2, 2, 2426, 506, 3, 2, 2, 2, 2427, 2428, 7, 87, 2, 2, 2428, 2429, 7, 85, 2, 2, 2429, 2430, 7, 71, 2, 2, 2430, 508, 3, 2, 2, 2, 2431, 2432, 7, 87, 2, 2, 2432, 2433, 7, 85, 2, 2, 2433, 2434, 7, 71, 2, 2, 2434, 2435, 7, 84, 2, 2, 2435, 510, 3, 2, 2, 2, 2436, 2437, 7, 87, 2, 2, 2437, 2438, 7, 85, 2, 2, 2438, 2439, 7, 75, 2, 2, 2439, 2440, 7, 80, 2, 2, 2440, 2441, 7, 73, 2, 2, 2441, 512, 3, 2, 2, 2, 2442, 2443, 7, 88, 2, 2, 2443, 2444, 7, 67, 2, 2, 2444, 2445, 7, 78, 2, 2, 2445, 2446, 7, 87, 2, 2, 2446, 2447, 7, 71, 2, 2, 2447, 2448, 7, 85, 2, 2, 2448, 514, 3, 2, 2, 2, 2449, 2450, 7, 88, 2, 2, 2450, 2451, 7, 75, 2, 2, 2451, 2452, 7, 71, 2, 2, 2452, 2453, 7, 89, 2, 2, 2453, 516, 3, 2, 2, 2, 2454, 2455, 7, 88, 2, 2, 2455, 2456, 7, 75, 2, 2, 2456, 2457, 7, 71, 2, 2, 2457, 2458, 7, 89, 2, 2, 2458, 2459, 7, 85, 2, 2, 2459, 518, 3, 2, 2, 2, 2460, 2461, 7, 89, 2, 2, 2461, 2462, 7, 74, 2, 2, 2462, 2463, 7, 71, 2, 2, 2463, 2464, 7, 80, 2, 2, 2464, 520, 3, 2, 2, 2, 2465, 2466, 7, 89, 2, 2, 2466, 2467, 7, 74, 2, 2, 2467, 2468, 7, 71, 2, 2, 2468, 2469, 7, 84, 2, 2, 2469, 2470, 7, 71, 2, 2, 2470, 522, 3, 2, 2, 2, 2471, 2472, 7, 89, 2, 2, 2472, 2473, 7, 75, 2, 2, 2473, 2474, 7, 80, 2, 2, 2474, 2475, 7, 70, 2, 2, 2475, 2476, 7, 81, 2, 2, 2476, 2477, 7, 89, 2, 2, 2477, 524, 3, 2, 2, 2, 2478, 2479, 7, 89, 2, 2, 2479, 2480, 7, 75, 2, 2, 2480, 2481, 7, 86, 2, 2, 2481, 2482, 7, 74, 2, 2, 2482, 526, 3, 2, 2, 2, 2483, 2484, 7, 91, 2, 2, 2484, 2485, 7, 71, 2, 2, 2485, 2486, 7, 67, 2, 2, 2486, 2487, 7, 84, 2, 2, 2487, 528, 3, 2, 2, 2, 2488, 2492, 7, 63, 2, 2, 2489, 2490, 7, 63, 2, 2, 2490, 2492, 7, 63, 2, 2, 2491, 2488, 3, 2, 2, 2, 2491, 2489, 3, 2, 2, 2, 2492, 530, 3, 2, 2, 2, 2493, 2494, 7, 62, 2, 2, 2494, 2495, 7, 63, 2, 2, 2495, 2496, 7, 64, 2, 2, 2496, 532, 3, 2, 2, 2, 2497, 2498, 7, 62, 2, 2, 2498, 2499, 7, 64, 2, 2, 2499, 534, 3, 2, 2, 2, 2500, 2501, 7, 35, 2, 2, 2501, 2502, 7, 63, 2, 2, 2502, 536, 3, 2, 2, 2, 2503, 2504, 7, 62, 2, 2, 2504, 538, 3, 2, 2, 2, 2505, 2506, 7, 62, 2, 2, 2506, 2510, 7, 63, 2, 2, 2507, 2508, 7, 35, 2, 2, 2508, 2510, 7, 64, 2, 2, 2509, 2505, 3, 2, 2, 2, 2509, 2507, 3, 2, 2, 2, 2510, 540, 3, 2, 2, 2, 2511, 2512, 7, 64, 2, 2, 2512, 542, 3, 2, 2, 2, 2513, 2514, 7, 64, 2, 2, 2514, 2518, 7, 63, 2, 2, 2515, 2516, 7, 35, 2, 2, 2516, 2518, 7, 62, 2, 2, 2517, 2513, 3, 2, 2, 2, 2517, 2515, 3, 2, 2, 2, 2518, 544, 3, 2, 2, 2, 2519, 2520, 7, 45, 2, 2, 2520, 546, 3, 2, 2, 2, 2521, 2522, 7, 47, 2, 2, 2522, 548, 3, 2, 2, 2, 2523, 2524, 7, 44, 2, 2, 2524, 550, 3, 2, 2, 2, 2525, 2526, 7, 49, 2, 2, 2526, 552, 3, 2, 2, 2, 2527, 2528, 7, 39, 2, 2, 2528, 554, 3, 2, 2, 2, 2529, 2530, 7, 70, 2, 2, 2530, 2531, 7, 75, 2, 2, 2531, 2532, 7, 88, 2, 2, 2532, 556, 3, 2, 2, 2, 2533, 2534, 7, 128, 2, 2, 2534, 558, 3, 2, 2, 2, 2535, 2536, 7, 40, 2, 2, 2536, 560, 3, 2, 2, 2, 2537, 2538, 7, 126, 2, 2, 2538, 562, 3, 2, 2, 2, 2539, 2540, 7, 126, 2, 2, 2540, 2541, 7, 126, 2, 2, 2541, 564, 3, 2, 2, 2, 2542, 2543, 7, 96, 2, 2, 2543, 566, 3, 2, 2, 2, 2544, 2550, 7, 41, 2, 2, 2545, 2549, 10, 2, 2, 2, 2546, 2547, 7, 94, 2, 2, 2547, 2549, 11, 2, 2, 2, 2548, 2545, 3, 2, 2, 2, 2548, 2546, 3, 2, 2, 2, 2549, 2552, 3, 2, 2, 2, 2550, 2548, 3, 2, 2, 2, 2550, 2551, 3, 2, 2, 2, 2551, 2553, 3, 2, 2, 2, 2552, 2550, 3, 2, 2, 2, 2553, 2565, 7, 41, 2, 2, 2554, 2560, 7, 36, 2, 2, 2555, 2559, 10, 3, 2, 2, 2556, 2557, 7, 94, 2, 2, 2557, 2559, 11, 2, 2, 2, 2558, 2555, 3, 2, 2, 2, 2558, 2556, 3, 2, 2, 2, 2559, 2562, 3, 2, 2, 2, 2560, 2558, 3, 2, 2, 2, 2560, 2561, 3, 2, 2, 2, 2561, 2563, 3, 2, 2, 2, 2562, 2560, 3, 2, 2, 2, 2563, 2565, 7, 36, 2, 2, 2564, 2544, 3, 2, 2, 2, 2564, 2554, 3, 2, 2, 2, 2565, 568, 3, 2, 2, 2, 2566, 2568, 5, 593, 297, 2, 2567, 2566, 3, 2, 2, 2, 2568, 2569, 3, 2, 2, 2, 2569, 2567, 3, 2, 2, 2, 2569, 2570, 3, 2, 2, 2, 2570, 2571, 3, 2, 2, 2, 2571, 2572, 7, 78, 2, 2, 2572, 570, 3, 2, 2, 2, 2573, 2575, 5, 593, 297, 2, 2574, 2573, 3, 2, 2, 2, 2575, 2576, 3, 2, 2, 2, 2576, 2574, 3, 2, 2, 2, 2576, 2577, 3, 2, 2, 2, 2577, 2578, 3, 2, 2, 2, 2578, 2579, 7, 85, 2, 2, 2579, 572, 3, 2, 2, 2, 2580, 2582, 5, 593, 297, 2, 2581, 2580, 3, 2, 2, 2, 2582, 2583, 3, 2, 2, 2, 2583, 2581, 3, 2, 2, 2, 2583, 2584, 3, 2, 2, 2, 2584, 2585, 3, 2, 2, 2, 2585, 2586, 7, 91, 2, 2, 2586, 574, 3, 2, 2, 2, 2587, 2589, 5, 593, 297, 2, 2588, 2587, 3, 2, 2, 2, 2589, 2590, 3, 2, 2, 2, 2590, 2588, 3, 2, 2, 2, 2590, 2591, 3, 2, 2, 2, 2591, 576, 3, 2, 2, 2, 2592, 2594, 5, 593, 297, 2, 2593, 2592, 3, 2, 2, 2, 2594, 2595, 3, 2, 2, 2, 2595, 2593, 3, 2, 2, 2, 2595, 2596, 3, 2, 2, 2, 2596, 2597, 3, 2, 2, 2, 2597, 2598, 5, 591, 296, 2, 2598, 2604, 3, 2, 2, 2, 2599, 2600, 5, 589, 295, 2, 2600, 2601, 5, 591, 296, 2, 2601, 2602, 6, 289, 2, 2, 2602, 2604, 3, 2, 2, 2, 2603, 2593, 3, 2, 2, 2, 2603, 2599, 3, 2, 2, 2, 2604, 578, 3, 2, 2, 2, 2605, 2606, 5, 589, 295, 2, 2606, 2607, 6, 290, 3, 2, 2607, 580, 3, 2, 2, 2, 2608, 2610, 5, 593, 297, 2, 2609, 2608, 3, 2, 2, 2, 2610, 2611, 3, 2, 2, 2, 2611, 2609, 3, 2, 2, 2, 2611, 2612, 3, 2, 2, 2, 2612, 2614, 3, 2, 2, 2, 2613, 2615, 5, 591, 296, 2, 2614, 2613, 3, 2, 2, 2, 2614, 2615, 3, 2, 2, 2, 2615, 2616, 3, 2, 2, 2, 2616, 2617, 7, 70, 2, 2, 2617, 2626, 3, 2, 2, 2, 2618, 2620, 5, 589, 295, 2, 2619, 2621, 5, 591, 296, 2, 2620, 2619, 3, 2, 2, 2, 2620, 2621, 3, 2, 2, 2, 2621, 2622, 3, 2, 2, 2, 2622, 2623, 7, 70, 2, 2, 2623, 2624, 6, 291, 4, 2, 2624, 2626, 3, 2, 2, 2, 2625, 2609, 3, 2, 2, 2, 2625, 2618, 3, 2, 2, 2, 2626, 582, 3, 2, 2, 2, 2627, 2629, 5, 593, 297, 2, 2628, 2627, 3, 2, 2, 2, 2629, 2630, 3, 2, 2, 2, 2630, 2628, 3, 2, 2, 2, 2630, 2631, 3, 2, 2, 2, 2631, 2633, 3, 2, 2, 2, 2632, 2634, 5, 591, 296, 2, 2633, 2632, 3, 2, 2, 2, 2633, 2634, 3, 2, 2, 2, 2634, 2635, 3, 2, 2, 2, 2635, 2636, 7, 68, 2, 2, 2636, 2637, 7, 70, 2, 2, 2637, 2648, 3, 2, 2, 2, 2638, 2640, 5, 589, 295, 2, 2639, 2641, 5, 591, 296, 2, 2640, 2639, 3, 2, 2, 2, 2640, 2641, 3, 2, 2, 2, 2641, 2642, 3, 2, 2, 2, 2642, 2643, 7, 68, 2, 2, 2643, 2644, 7, 70, 2, 2, 2644, 2645, 3, 2, 2, 2, 2645, 2646, 6, 292, 5, 2, 2646, 2648, 3, 2, 2, 2, 2647, 2628, 3, 2, 2, 2, 2647, 2638, 3, 2, 2, 2, 2648, 584, 3, 2, 2, 2, 2649, 2653, 5, 595, 298, 2, 2650, 2653, 5, 593, 297, 2, 2651, 2653, 7, 97, 2, 2, 2652, 2649, 3, 2, 2, 2, 2652, 2650, 3, 2, 2, 2, 2652, 2651, 3, 2, 2, 2, 2653, 2654, 3, 2, 2, 2, 2654, 2652, 3, 2, 2, 2, 2654, 2655, 3, 2, 2, 2, 2655, 586, 3, 2, 2, 2, 2656, 2662, 7, 98, 2, 2, 2657, 2661, 10, 4, 2, 2, 2658, 2659, 7, 98, 2, 2, 2659, 2661, 7, 98, 2, 2, 2660, 2657, 3, 2, 2, 2, 2660, 2658, 3, 2, 2, 2, 2661, 2664, 3, 2, 2, 2, 2662, 2660, 3, 2, 2, 2, 2662, 2663, 3, 2, 2, 2, 2663, 2665, 3, 2, 2, 2, 2664, 2662, 3, 2, 2, 2, 2665, 2666, 7, 98, 2, 2, 2666, 588, 3, 2, 2, 2, 2667, 2669, 5, 593, 297, 2, 2668, 2667, 3, 2, 2, 2, 2669, 2670, 3, 2, 2, 2, 2670, 2668, 3, 2, 2, 2, 2670, 2671, 3, 2, 2, 2, 2671, 2672, 3, 2, 2, 2, 2672, 2676, 7, 48, 2, 2, 2673, 2675, 5, 593, 297, 2, 2674, 2673, 3, 2, 2, 2, 2675, 2678, 3, 2, 2, 2, 2676, 2674, 3, 2, 2, 2, 2676, 2677, 3, 2, 2, 2, 2677, 2686, 3, 2, 2, 2, 2678, 2676, 3, 2, 2, 2, 2679, 2681, 7, 48, 2, 2, 2680, 2682, 5, 593, 297, 2, 2681, 2680, 3, 2, 2, 2, 2682, 2683, 3, 2, 2, 2, 2683, 2681, 3, 2, 2, 2, 2683, 2684, 3, 2, 2, 2, 2684, 2686, 3, 2, 2, 2, 2685, 2668, 3, 2, 2, 2, 2685, 2679, 3, 2, 2, 2, 2686, 590, 3, 2, 2, 2, 2687, 2689, 7, 71, 2, 2, 2688, 2690, 9, 5, 2, 2, 2689, 2688, 3, 2, 2, 2, 2689, 2690, 3, 2, 2, 2, 2690, 2692, 3, 2, 2, 2, 2691, 2693, 5, 593, 297, 2, 2692, 2691, 3, 2, 2, 2, 2693, 2694, 3, 2, 2, 2, 2694, 2692, 3, 2, 2, 2, 2694, 2695, 3, 2, 2, 2, 2695, 592, 3, 2, 2, 2, 2696, 2697, 9, 6, 2, 2, 2697, 594, 3, 2, 2, 2, 2698, 2699, 9, 7, 2, 2, 2699, 596, 3, 2, 2, 2, 2700, 2701, 7, 47, 2, 2, 2701, 2702, 7, 47, 2, 2, 2702, 2706, 3, 2, 2, 2, 2703, 2705, 10, 8, 2, 2, 2704, 2703, 3, 2, 2, 2, 2705, 2708, 3, 2, 2, 2, 2706, 2704, 3, 2, 2, 2, 2706, 2707, 3, 2, 2, 2, 2707, 2710, 3, 2, 2, 2, 2708, 2706, 3, 2, 2, 2, 2709, 2711, 7, 15, 2, 2, 2710, 2709, 3, 2, 2, 2, 2710, 2711, 3, 2, 2, 2, 2711, 2713, 3, 2, 2, 2, 2712, 2714, 7, 12, 2, 2, 2713, 2712, 3, 2, 2, 2, 2713, 2714, 3, 2, 2, 2, 2714, 2715, 3, 2, 2, 2, 2715, 2716, 8, 299, 2, 2, 2716, 598, 3, 2, 2, 2, 2717, 2718, 7, 49, 2, 2, 2718, 2719, 7, 44, 2, 2, 2719, 2720, 3, 2, 2, 2, 2720, 2725, 6, 300, 6, 2, 2721, 2724, 5, 599, 300, 2, 2722, 2724, 11, 2, 2, 2, 2723, 2721, 3, 2, 2, 2, 2723, 2722, 3, 2, 2, 2, 2724, 2727, 3, 2, 2, 2, 2725, 2726, 3, 2, 2, 2, 2725, 2723, 3, 2, 2, 2, 2726, 2728, 3, 2, 2, 2, 2727, 2725, 3, 2, 2, 2, 2728, 2729, 7, 44, 2, 2, 2729, 2730, 7, 49, 2, 2, 2730, 2731, 3, 2, 2, 2, 2731, 2732, 8, 300, 2, 2, 2732, 600, 3, 2, 2, 2, 2733, 2735, 9, 9, 2, 2, 2734, 2733, 3, 2, 2, 2, 2735, 2736, 3, 2, 2, 2, 2736, 2734, 3, 2, 2, 2, 2736, 2737, 3, 2, 2, 2, 2737, 2738, 3, 2, 2, 2, 2738, 2739, 8, 301, 2, 2, 2739, 602, 3, 2, 2, 2, 2740, 2741, 11, 2, 2, 2, 2741, 604, 3, 2, 2, 2, 45, 2, 1028, 1655, 2001, 2263, 2491, 2509, 2517, 2548, 2550, 2558, 2560, 2564, 2569, 2576, 2583, 2590, 2595, 2603, 2611, 2614, 2620, 2625, 2630, 2633, 2640, 2647, 2652, 2654, 2660, 2662, 2670, 2676, 2683, 2685, 2689, 2694, 2706, 2710, 2713, 2723, 2725, 2736, 3, 2, 3, 2] \ No newline at end of file diff --git a/pysparkling/sql/ast/generated/SqlBaseLexer.java b/pysparkling/sql/ast/generated/SqlBaseLexer.java new file mode 100644 index 000000000..a37937e17 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseLexer.java @@ -0,0 +1,1418 @@ +// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class SqlBaseLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, + T__9=10, T__10=11, ADD=12, AFTER=13, ALL=14, ALTER=15, ANALYZE=16, AND=17, + ANTI=18, ANY=19, ARCHIVE=20, ARRAY=21, AS=22, ASC=23, AT=24, AUTHORIZATION=25, + BETWEEN=26, BOTH=27, BUCKET=28, BUCKETS=29, BY=30, CACHE=31, CASCADE=32, + CASE=33, CAST=34, CHANGE=35, CHECK=36, CLEAR=37, CLUSTER=38, CLUSTERED=39, + CODEGEN=40, COLLATE=41, COLLECTION=42, COLUMN=43, COLUMNS=44, COMMENT=45, + COMMIT=46, COMPACT=47, COMPACTIONS=48, COMPUTE=49, CONCATENATE=50, CONSTRAINT=51, + COST=52, CREATE=53, CROSS=54, CUBE=55, CURRENT=56, CURRENT_DATE=57, CURRENT_TIME=58, + CURRENT_TIMESTAMP=59, CURRENT_USER=60, DATA=61, DATABASE=62, DATABASES=63, + DAY=64, DBPROPERTIES=65, DEFINED=66, DELETE=67, DELIMITED=68, DESC=69, + DESCRIBE=70, DFS=71, DIRECTORIES=72, DIRECTORY=73, DISTINCT=74, DISTRIBUTE=75, + DROP=76, ELSE=77, END=78, ESCAPE=79, ESCAPED=80, EXCEPT=81, EXCHANGE=82, + EXISTS=83, EXPLAIN=84, EXPORT=85, EXTENDED=86, EXTERNAL=87, EXTRACT=88, + FALSE=89, FETCH=90, FIELDS=91, FILTER=92, FILEFORMAT=93, FIRST=94, FOLLOWING=95, + FOR=96, FOREIGN=97, FORMAT=98, FORMATTED=99, FROM=100, FULL=101, FUNCTION=102, + FUNCTIONS=103, GLOBAL=104, GRANT=105, GROUP=106, GROUPING=107, HAVING=108, + HOUR=109, IF=110, IGNORE=111, IMPORT=112, IN=113, INDEX=114, INDEXES=115, + INNER=116, INPATH=117, INPUTFORMAT=118, INSERT=119, INTERSECT=120, INTERVAL=121, + INTO=122, IS=123, ITEMS=124, JOIN=125, KEYS=126, LAST=127, LATERAL=128, + LAZY=129, LEADING=130, LEFT=131, LIKE=132, LIMIT=133, LINES=134, LIST=135, + LOAD=136, LOCAL=137, LOCATION=138, LOCK=139, LOCKS=140, LOGICAL=141, MACRO=142, + MAP=143, MATCHED=144, MERGE=145, MINUTE=146, MONTH=147, MSCK=148, NAMESPACE=149, + NAMESPACES=150, NATURAL=151, NO=152, NOT=153, NULL=154, NULLS=155, OF=156, + ON=157, ONLY=158, OPTION=159, OPTIONS=160, OR=161, ORDER=162, OUT=163, + OUTER=164, OUTPUTFORMAT=165, OVER=166, OVERLAPS=167, OVERLAY=168, OVERWRITE=169, + PARTITION=170, PARTITIONED=171, PARTITIONS=172, PERCENTLIT=173, PIVOT=174, + PLACING=175, POSITION=176, PRECEDING=177, PRIMARY=178, PRINCIPALS=179, + PROPERTIES=180, PURGE=181, QUERY=182, RANGE=183, RECORDREADER=184, RECORDWRITER=185, + RECOVER=186, REDUCE=187, REFERENCES=188, REFRESH=189, RENAME=190, REPAIR=191, + REPLACE=192, RESET=193, RESTRICT=194, REVOKE=195, RIGHT=196, RLIKE=197, + ROLE=198, ROLES=199, ROLLBACK=200, ROLLUP=201, ROW=202, ROWS=203, SCHEMA=204, + SECOND=205, SELECT=206, SEMI=207, SEPARATED=208, SERDE=209, SERDEPROPERTIES=210, + SESSION_USER=211, SET=212, SETMINUS=213, SETS=214, SHOW=215, SKEWED=216, + SOME=217, SORT=218, SORTED=219, START=220, STATISTICS=221, STORED=222, + STRATIFY=223, STRUCT=224, SUBSTR=225, SUBSTRING=226, TABLE=227, TABLES=228, + TABLESAMPLE=229, TBLPROPERTIES=230, TEMPORARY=231, TERMINATED=232, THEN=233, + TO=234, TOUCH=235, TRAILING=236, TRANSACTION=237, TRANSACTIONS=238, TRANSFORM=239, + TRIM=240, TRUE=241, TRUNCATE=242, TYPE=243, UNARCHIVE=244, UNBOUNDED=245, + UNCACHE=246, UNION=247, UNIQUE=248, UNKNOWN=249, UNLOCK=250, UNSET=251, + UPDATE=252, USE=253, USER=254, USING=255, VALUES=256, VIEW=257, VIEWS=258, + WHEN=259, WHERE=260, WINDOW=261, WITH=262, YEAR=263, EQ=264, NSEQ=265, + NEQ=266, NEQJ=267, LT=268, LTE=269, GT=270, GTE=271, PLUS=272, MINUS=273, + ASTERISK=274, SLASH=275, PERCENT=276, DIV=277, TILDE=278, AMPERSAND=279, + PIPE=280, CONCAT_PIPE=281, HAT=282, STRING=283, BIGINT_LITERAL=284, SMALLINT_LITERAL=285, + TINYINT_LITERAL=286, INTEGER_VALUE=287, EXPONENT_VALUE=288, DECIMAL_VALUE=289, + DOUBLE_LITERAL=290, BIGDECIMAL_LITERAL=291, IDENTIFIER=292, BACKQUOTED_IDENTIFIER=293, + SIMPLE_COMMENT=294, BRACKETED_COMMENT=295, WS=296, UNRECOGNIZED=297; + 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", + "T__9", "T__10", "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANTI", + "ANY", "ARCHIVE", "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", + "BOTH", "BUCKET", "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", "CAST", + "CHANGE", "CHECK", "CLEAR", "CLUSTER", "CLUSTERED", "CODEGEN", "COLLATE", + "COLLECTION", "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMPACT", "COMPACTIONS", + "COMPUTE", "CONCATENATE", "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", + "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", + "DATA", "DATABASE", "DATABASES", "DAY", "DBPROPERTIES", "DEFINED", "DELETE", + "DELIMITED", "DESC", "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", "DISTINCT", + "DISTRIBUTE", "DROP", "ELSE", "END", "ESCAPE", "ESCAPED", "EXCEPT", "EXCHANGE", + "EXISTS", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", + "FETCH", "FIELDS", "FILTER", "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", + "FOREIGN", "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", "FUNCTIONS", + "GLOBAL", "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", "IF", "IGNORE", + "IMPORT", "IN", "INDEX", "INDEXES", "INNER", "INPATH", "INPUTFORMAT", + "INSERT", "INTERSECT", "INTERVAL", "INTO", "IS", "ITEMS", "JOIN", "KEYS", + "LAST", "LATERAL", "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", + "LIST", "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", "MACRO", + "MAP", "MATCHED", "MERGE", "MINUTE", "MONTH", "MSCK", "NAMESPACE", "NAMESPACES", + "NATURAL", "NO", "NOT", "NULL", "NULLS", "OF", "ON", "ONLY", "OPTION", + "OPTIONS", "OR", "ORDER", "OUT", "OUTER", "OUTPUTFORMAT", "OVER", "OVERLAPS", + "OVERLAY", "OVERWRITE", "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", + "PIVOT", "PLACING", "POSITION", "PRECEDING", "PRIMARY", "PRINCIPALS", + "PROPERTIES", "PURGE", "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", + "RECOVER", "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", "REPLACE", + "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLES", "ROLLBACK", + "ROLLUP", "ROW", "ROWS", "SCHEMA", "SECOND", "SELECT", "SEMI", "SEPARATED", + "SERDE", "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", "SETS", + "SHOW", "SKEWED", "SOME", "SORT", "SORTED", "START", "STATISTICS", "STORED", + "STRATIFY", "STRUCT", "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", + "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", "TRAILING", + "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", "TRUE", "TRUNCATE", + "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", "UNION", "UNIQUE", "UNKNOWN", + "UNLOCK", "UNSET", "UPDATE", "USE", "USER", "USING", "VALUES", "VIEW", + "VIEWS", "WHEN", "WHERE", "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", + "NEQJ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", + "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", "HAT", + "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", + "EXPONENT_VALUE", "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "DECIMAL_DIGITS", "EXPONENT", "DIGIT", + "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED" + }; + + private static final String[] _LITERAL_NAMES = { + null, "';'", "'('", "')'", "','", "'.'", "'/*+'", "'*/'", "'->'", "'['", + "']'", "':'", "'ADD'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", + "'ANTI'", "'ANY'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", + "'BETWEEN'", "'BOTH'", "'BUCKET'", "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", + "'CASE'", "'CAST'", "'CHANGE'", "'CHECK'", "'CLEAR'", "'CLUSTER'", "'CLUSTERED'", + "'CODEGEN'", "'COLLATE'", "'COLLECTION'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", + "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", "'COMPUTE'", "'CONCATENATE'", + "'CONSTRAINT'", "'COST'", "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", + "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", + "'DATA'", "'DATABASE'", null, "'DAY'", "'DBPROPERTIES'", "'DEFINED'", + "'DELETE'", "'DELIMITED'", "'DESC'", "'DESCRIBE'", "'DFS'", "'DIRECTORIES'", + "'DIRECTORY'", "'DISTINCT'", "'DISTRIBUTE'", "'DROP'", "'ELSE'", "'END'", + "'ESCAPE'", "'ESCAPED'", "'EXCEPT'", "'EXCHANGE'", "'EXISTS'", "'EXPLAIN'", + "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", "'FALSE'", "'FETCH'", + "'FIELDS'", "'FILTER'", "'FILEFORMAT'", "'FIRST'", "'FOLLOWING'", "'FOR'", + "'FOREIGN'", "'FORMAT'", "'FORMATTED'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GLOBAL'", "'GRANT'", "'GROUP'", "'GROUPING'", "'HAVING'", + "'HOUR'", "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", "'INDEX'", "'INDEXES'", + "'INNER'", "'INPATH'", "'INPUTFORMAT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", + "'INTO'", "'IS'", "'ITEMS'", "'JOIN'", "'KEYS'", "'LAST'", "'LATERAL'", + "'LAZY'", "'LEADING'", "'LEFT'", "'LIKE'", "'LIMIT'", "'LINES'", "'LIST'", + "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCKS'", "'LOGICAL'", "'MACRO'", + "'MAP'", "'MATCHED'", "'MERGE'", "'MINUTE'", "'MONTH'", "'MSCK'", "'NAMESPACE'", + "'NAMESPACES'", "'NATURAL'", "'NO'", null, "'NULL'", "'NULLS'", "'OF'", + "'ON'", "'ONLY'", "'OPTION'", "'OPTIONS'", "'OR'", "'ORDER'", "'OUT'", + "'OUTER'", "'OUTPUTFORMAT'", "'OVER'", "'OVERLAPS'", "'OVERLAY'", "'OVERWRITE'", + "'PARTITION'", "'PARTITIONED'", "'PARTITIONS'", "'PERCENT'", "'PIVOT'", + "'PLACING'", "'POSITION'", "'PRECEDING'", "'PRIMARY'", "'PRINCIPALS'", + "'PROPERTIES'", "'PURGE'", "'QUERY'", "'RANGE'", "'RECORDREADER'", "'RECORDWRITER'", + "'RECOVER'", "'REDUCE'", "'REFERENCES'", "'REFRESH'", "'RENAME'", "'REPAIR'", + "'REPLACE'", "'RESET'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", null, "'ROLE'", + "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEMA'", "'SECOND'", + "'SELECT'", "'SEMI'", "'SEPARATED'", "'SERDE'", "'SERDEPROPERTIES'", "'SESSION_USER'", + "'SET'", "'MINUS'", "'SETS'", "'SHOW'", "'SKEWED'", "'SOME'", "'SORT'", + "'SORTED'", "'START'", "'STATISTICS'", "'STORED'", "'STRATIFY'", "'STRUCT'", + "'SUBSTR'", "'SUBSTRING'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'", + null, "'TERMINATED'", "'THEN'", "'TO'", "'TOUCH'", "'TRAILING'", "'TRANSACTION'", + "'TRANSACTIONS'", "'TRANSFORM'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", + "'UNARCHIVE'", "'UNBOUNDED'", "'UNCACHE'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", + "'UNLOCK'", "'UNSET'", "'UPDATE'", "'USE'", "'USER'", "'USING'", "'VALUES'", + "'VIEW'", "'VIEWS'", "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'YEAR'", + null, "'<=>'", "'<>'", "'!='", "'<'", null, "'>'", null, "'+'", "'-'", + "'*'", "'/'", "'%'", "'DIV'", "'~'", "'&'", "'|'", "'||'", "'^'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, null, null, null, null, null, null, null, null, null, null, null, + "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANTI", "ANY", "ARCHIVE", + "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", "BOTH", "BUCKET", + "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", "CAST", "CHANGE", "CHECK", + "CLEAR", "CLUSTER", "CLUSTERED", "CODEGEN", "COLLATE", "COLLECTION", "COLUMN", + "COLUMNS", "COMMENT", "COMMIT", "COMPACT", "COMPACTIONS", "COMPUTE", "CONCATENATE", + "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", + "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", "DATABASE", + "DATABASES", "DAY", "DBPROPERTIES", "DEFINED", "DELETE", "DELIMITED", + "DESC", "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", "DISTINCT", "DISTRIBUTE", + "DROP", "ELSE", "END", "ESCAPE", "ESCAPED", "EXCEPT", "EXCHANGE", "EXISTS", + "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", + "FIELDS", "FILTER", "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", "FOREIGN", + "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GLOBAL", + "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", "IF", "IGNORE", "IMPORT", + "IN", "INDEX", "INDEXES", "INNER", "INPATH", "INPUTFORMAT", "INSERT", + "INTERSECT", "INTERVAL", "INTO", "IS", "ITEMS", "JOIN", "KEYS", "LAST", + "LATERAL", "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", "LIST", + "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", "MACRO", "MAP", + "MATCHED", "MERGE", "MINUTE", "MONTH", "MSCK", "NAMESPACE", "NAMESPACES", + "NATURAL", "NO", "NOT", "NULL", "NULLS", "OF", "ON", "ONLY", "OPTION", + "OPTIONS", "OR", "ORDER", "OUT", "OUTER", "OUTPUTFORMAT", "OVER", "OVERLAPS", + "OVERLAY", "OVERWRITE", "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", + "PIVOT", "PLACING", "POSITION", "PRECEDING", "PRIMARY", "PRINCIPALS", + "PROPERTIES", "PURGE", "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", + "RECOVER", "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", "REPLACE", + "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLES", "ROLLBACK", + "ROLLUP", "ROW", "ROWS", "SCHEMA", "SECOND", "SELECT", "SEMI", "SEPARATED", + "SERDE", "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", "SETS", + "SHOW", "SKEWED", "SOME", "SORT", "SORTED", "START", "STATISTICS", "STORED", + "STRATIFY", "STRUCT", "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", + "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", "TRAILING", + "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", "TRUE", "TRUNCATE", + "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", "UNION", "UNIQUE", "UNKNOWN", + "UNLOCK", "UNSET", "UPDATE", "USE", "USER", "USING", "VALUES", "VIEW", + "VIEWS", "WHEN", "WHERE", "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", + "NEQJ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", + "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", "HAT", + "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", + "EXPONENT_VALUE", "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "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; + } + + + """ + When false, INTERSECT is given the greater precedence over the other set + operations (UNION, EXCEPT and MINUS) as per the SQL standard. + """ + legacy_setops_precedence_enbled = False + + """ + When false, a literal with an exponent would be converted into + double type rather than decimal type. + """ + legacy_exponent_literal_as_decimal_enabled = False + + """ + When false, CREATE TABLE syntax without a provider will use + the value of spark.sql.sources.default as its provider. + """ + legacy_create_hive_table_by_default_enabled = False + + """ + When true, the behavior of keywords follows ANSI SQL standard. + """ + SQL_standard_keyword_behavior = False + + def isValidDecimal(self): + """ + Verify whether current token is a valid decimal token (which contains dot). + Returns true if the character that follows the token is not a digit or letter or underscore. + + For example: + For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. + For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. + For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. + For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed + by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' + which is not a digit or letter or underscore. + """ + nextChar = self._input.LA(1) + if 'A' <= nextChar <= 'Z' or '0' <= nextChar <= '9' or nextChar == '_': + return False + else: + return True + + def isHint(self): + """ + This method will be called when we see '/*' and try to match it as a bracketed comment. + If the next character is '+', it should be parsed as hint later, and we cannot match + it as a bracketed comment. + + Returns true if the next character is '+'. + """ + nextChar = self._input.LA(1) + if nextChar == '+': + return True + else: + return False + + + public SqlBaseLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "SqlBase.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + @Override + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 287: + return EXPONENT_VALUE_sempred((RuleContext)_localctx, predIndex); + case 288: + return DECIMAL_VALUE_sempred((RuleContext)_localctx, predIndex); + case 289: + return DOUBLE_LITERAL_sempred((RuleContext)_localctx, predIndex); + case 290: + return BIGDECIMAL_LITERAL_sempred((RuleContext)_localctx, predIndex); + case 298: + return BRACKETED_COMMENT_sempred((RuleContext)_localctx, predIndex); + } + return true; + } + private boolean EXPONENT_VALUE_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return self.isValidDecimal(); + } + return true; + } + private boolean DECIMAL_VALUE_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return self.isValidDecimal(); + } + return true; + } + private boolean DOUBLE_LITERAL_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return self.isValidDecimal(); + } + return true; + } + private boolean BIGDECIMAL_LITERAL_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return self.isValidDecimal(); + } + return true; + } + private boolean BRACKETED_COMMENT_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 4: + return not self.isHint(); + } + return true; + } + + private static final int _serializedATNSegments = 2; + private static final String _serializedATNSegment0 = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u012b\u0ab6\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\4\u00f6\t\u00f6\4\u00f7\t\u00f7\4\u00f8\t\u00f8\4\u00f9\t\u00f9"+ + "\4\u00fa\t\u00fa\4\u00fb\t\u00fb\4\u00fc\t\u00fc\4\u00fd\t\u00fd\4\u00fe"+ + "\t\u00fe\4\u00ff\t\u00ff\4\u0100\t\u0100\4\u0101\t\u0101\4\u0102\t\u0102"+ + "\4\u0103\t\u0103\4\u0104\t\u0104\4\u0105\t\u0105\4\u0106\t\u0106\4\u0107"+ + "\t\u0107\4\u0108\t\u0108\4\u0109\t\u0109\4\u010a\t\u010a\4\u010b\t\u010b"+ + "\4\u010c\t\u010c\4\u010d\t\u010d\4\u010e\t\u010e\4\u010f\t\u010f\4\u0110"+ + "\t\u0110\4\u0111\t\u0111\4\u0112\t\u0112\4\u0113\t\u0113\4\u0114\t\u0114"+ + "\4\u0115\t\u0115\4\u0116\t\u0116\4\u0117\t\u0117\4\u0118\t\u0118\4\u0119"+ + "\t\u0119\4\u011a\t\u011a\4\u011b\t\u011b\4\u011c\t\u011c\4\u011d\t\u011d"+ + "\4\u011e\t\u011e\4\u011f\t\u011f\4\u0120\t\u0120\4\u0121\t\u0121\4\u0122"+ + "\t\u0122\4\u0123\t\u0123\4\u0124\t\u0124\4\u0125\t\u0125\4\u0126\t\u0126"+ + "\4\u0127\t\u0127\4\u0128\t\u0128\4\u0129\t\u0129\4\u012a\t\u012a\4\u012b"+ + "\t\u012b\4\u012c\t\u012c\4\u012d\t\u012d\4\u012e\t\u012e\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\7\3\b\3\b\3\b\3\t\3\t\3\t\3\n"+ + "\3\n\3\13\3\13\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\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3"+ + "\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\24\3"+ + "\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3"+ + "\26\3\26\3\26\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3"+ + "\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3"+ + "\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3"+ + "\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\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\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3"+ + "\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\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\63\3"+ + "\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3"+ + "\64\3\65\3\65\3\65\3\65\3\65\3\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\38\38\38\38\38\39\39\39\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=\3"+ + "=\3=\3=\3=\3=\3=\3=\3=\3=\3>\3>\3>\3>\3>\3?\3?\3?\3?\3?\3?\3?\3?\3?\3"+ + "@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\5@\u0405\n@\3A\3A\3A\3"+ + "A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3C\3C\3C\3D\3"+ + "D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3G\3G\3"+ + "G\3G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3"+ + "J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3K\3K\3K\3L\3L\3L\3L\3"+ + "L\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3O\3O\3O\3O\3P\3P\3"+ + "P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3"+ + "S\3S\3S\3S\3S\3S\3T\3T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3U\3V\3V\3"+ + "V\3V\3V\3V\3V\3W\3W\3W\3W\3W\3W\3W\3W\3W\3X\3X\3X\3X\3X\3X\3X\3X\3X\3"+ + "Y\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`\3`\3`\3a\3a\3a\3a\3b\3b\3"+ + "b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3d\3d\3d\3d\3d\3d\3d\3d\3d\3d\3"+ + "e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3"+ + "h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3"+ + "k\3k\3l\3l\3l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3n\3n\3n\3n\3n\3"+ + "o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3q\3q\3q\3q\3q\3q\3q\3r\3r\3r\3s\3s\3s\3"+ + "s\3s\3s\3t\3t\3t\3t\3t\3t\3t\3t\3u\3u\3u\3u\3u\3u\3v\3v\3v\3v\3v\3v\3"+ + "v\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3x\3x\3x\3x\3x\3x\3x\3y\3y\3y\3"+ + "y\3y\3y\3y\3y\3y\3y\3z\3z\3z\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\177\3\177\3\177\3\177\3\177\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\u0081\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0083"+ + "\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0084\3\u0084"+ + "\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085\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\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089"+ + "\3\u0089\3\u0089\3\u0089\3\u008a\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\u008c\3\u008c\3\u008c\3\u008c\3\u008c\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\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\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\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093"+ + "\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094\3\u0094\3\u0094"+ + "\3\u0094\3\u0094\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\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\u009a\3\u009a\3\u009a\3\u009a\5\u009a\u0678"+ + "\n\u009a\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009c\3\u009c\3\u009c"+ + "\3\u009c\3\u009c\3\u009c\3\u009d\3\u009d\3\u009d\3\u009e\3\u009e\3\u009e"+ + "\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\3\u00a0"+ + "\3\u00a0\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1"+ + "\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2\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\u00a5\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6"+ + "\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\u00a8\3\u00a8\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\u00aa\3\u00aa\3\u00aa\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\u00ac\3\u00ac\3\u00ac\3\u00ac\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\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad"+ + "\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00af"+ + "\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0\3\u00b0\3\u00b0"+ + "\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b1"+ + "\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b2\3\u00b2\3\u00b2\3\u00b2\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\u00b3\3\u00b3\3\u00b4\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\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\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\u00b9\3\u00b9\3\u00b9\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba"+ + "\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00bb\3\u00bb"+ + "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bc\3\u00bc\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\u00bd\3\u00be\3\u00be\3\u00be"+ + "\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be\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\u00c0"+ + "\3\u00c0\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\u00c2\3\u00c3\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\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ + "\3\u00c5\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6"+ + "\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u07d2\n\u00c6\3\u00c7\3\u00c7\3\u00c7"+ + "\3\u00c7\3\u00c7\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c9"+ + "\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00ca"+ + "\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00cb\3\u00cb\3\u00cb"+ + "\3\u00cb\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\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce"+ + "\3\u00ce\3\u00ce\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf"+ + "\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d1\3\u00d1\3\u00d1\3\u00d1"+ + "\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d2\3\u00d2\3\u00d2"+ + "\3\u00d2\3\u00d2\3\u00d2\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3"+ + "\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3"+ + "\3\u00d3\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4"+ + "\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d5\3\u00d5\3\u00d5\3\u00d5"+ + "\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d7\3\u00d7\3\u00d7"+ + "\3\u00d7\3\u00d7\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d9\3\u00d9"+ + "\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00da\3\u00da\3\u00da\3\u00da"+ + "\3\u00da\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00dc\3\u00dc\3\u00dc"+ + "\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd"+ + "\3\u00dd\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+ + "\3\u00de\3\u00de\3\u00de\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df"+ + "\3\u00df\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0"+ + "\3\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e2"+ + "\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e3\3\u00e3\3\u00e3"+ + "\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e4\3\u00e4"+ + "\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5"+ + "\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6"+ + "\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e7\3\u00e7\3\u00e7\3\u00e7"+ + "\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7"+ + "\3\u00e7\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8"+ + "\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\5\u00e8\u08d8\n\u00e8\3\u00e9"+ + "\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9"+ + "\3\u00e9\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00eb\3\u00eb\3\u00eb"+ + "\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\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\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef"+ + "\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0"+ + "\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f1\3\u00f1\3\u00f1\3\u00f1"+ + "\3\u00f1\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f3\3\u00f3\3\u00f3"+ + "\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f4\3\u00f4\3\u00f4"+ + "\3\u00f4\3\u00f4\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5"+ + "\3\u00f5\3\u00f5\3\u00f5\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6"+ + "\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7"+ + "\3\u00f7\3\u00f7\3\u00f7\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8"+ + "\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00fa\3\u00fa"+ + "\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fb\3\u00fb\3\u00fb"+ + "\3\u00fb\3\u00fb\3\u00fb\3\u00fb\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+ + "\3\u00fc\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fe"+ + "\3\u00fe\3\u00fe\3\u00fe\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u0100"+ + "\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0101\3\u0101\3\u0101\3\u0101"+ + "\3\u0101\3\u0101\3\u0101\3\u0102\3\u0102\3\u0102\3\u0102\3\u0102\3\u0103"+ + "\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0104\3\u0104\3\u0104\3\u0104"+ + "\3\u0104\3\u0105\3\u0105\3\u0105\3\u0105\3\u0105\3\u0105\3\u0106\3\u0106"+ + "\3\u0106\3\u0106\3\u0106\3\u0106\3\u0106\3\u0107\3\u0107\3\u0107\3\u0107"+ + "\3\u0107\3\u0108\3\u0108\3\u0108\3\u0108\3\u0108\3\u0109\3\u0109\3\u0109"+ + "\5\u0109\u09bc\n\u0109\3\u010a\3\u010a\3\u010a\3\u010a\3\u010b\3\u010b"+ + "\3\u010b\3\u010c\3\u010c\3\u010c\3\u010d\3\u010d\3\u010e\3\u010e\3\u010e"+ + "\3\u010e\5\u010e\u09ce\n\u010e\3\u010f\3\u010f\3\u0110\3\u0110\3\u0110"+ + "\3\u0110\5\u0110\u09d6\n\u0110\3\u0111\3\u0111\3\u0112\3\u0112\3\u0113"+ + "\3\u0113\3\u0114\3\u0114\3\u0115\3\u0115\3\u0116\3\u0116\3\u0116\3\u0116"+ + "\3\u0117\3\u0117\3\u0118\3\u0118\3\u0119\3\u0119\3\u011a\3\u011a\3\u011a"+ + "\3\u011b\3\u011b\3\u011c\3\u011c\3\u011c\3\u011c\7\u011c\u09f5\n\u011c"+ + "\f\u011c\16\u011c\u09f8\13\u011c\3\u011c\3\u011c\3\u011c\3\u011c\3\u011c"+ + "\7\u011c\u09ff\n\u011c\f\u011c\16\u011c\u0a02\13\u011c\3\u011c\5\u011c"+ + "\u0a05\n\u011c\3\u011d\6\u011d\u0a08\n\u011d\r\u011d\16\u011d\u0a09\3"+ + "\u011d\3\u011d\3\u011e\6\u011e\u0a0f\n\u011e\r\u011e\16\u011e\u0a10\3"+ + "\u011e\3\u011e\3\u011f\6\u011f\u0a16\n\u011f\r\u011f\16\u011f\u0a17\3"+ + "\u011f\3\u011f\3\u0120\6\u0120\u0a1d\n\u0120\r\u0120\16\u0120\u0a1e\3"+ + "\u0121\6\u0121\u0a22\n\u0121\r\u0121\16\u0121\u0a23\3\u0121\3\u0121\3"+ + "\u0121\3\u0121\3\u0121\3\u0121\5\u0121\u0a2c\n\u0121\3\u0122\3\u0122\3"+ + "\u0122\3\u0123\6\u0123\u0a32\n\u0123\r\u0123\16\u0123\u0a33\3\u0123\5"+ + "\u0123\u0a37\n\u0123\3\u0123\3\u0123\3\u0123\3\u0123\5\u0123\u0a3d\n\u0123"+ + "\3\u0123\3\u0123\3\u0123\5\u0123\u0a42\n\u0123\3\u0124\6\u0124\u0a45\n"+ + "\u0124\r\u0124\16\u0124\u0a46\3\u0124\5\u0124\u0a4a\n\u0124\3\u0124\3"+ + "\u0124\3\u0124\3\u0124\3\u0124\5\u0124\u0a51\n\u0124\3\u0124\3\u0124\3"+ + "\u0124\3\u0124\3\u0124\5\u0124\u0a58\n\u0124\3\u0125\3\u0125\3\u0125\6"+ + "\u0125\u0a5d\n\u0125\r\u0125\16\u0125\u0a5e\3\u0126\3\u0126\3\u0126\3"+ + "\u0126\7\u0126\u0a65\n\u0126\f\u0126\16\u0126\u0a68\13\u0126\3\u0126\3"+ + "\u0126\3\u0127\6\u0127\u0a6d\n\u0127\r\u0127\16\u0127\u0a6e\3\u0127\3"+ + "\u0127\7\u0127\u0a73\n\u0127\f\u0127\16\u0127\u0a76\13\u0127\3\u0127\3"+ + "\u0127\6\u0127\u0a7a\n\u0127\r\u0127\16\u0127\u0a7b\5\u0127\u0a7e\n\u0127"+ + "\3\u0128\3\u0128\5\u0128\u0a82\n\u0128\3\u0128\6\u0128\u0a85\n\u0128\r"+ + "\u0128\16\u0128\u0a86\3\u0129\3\u0129\3\u012a\3\u012a\3\u012b\3\u012b"+ + "\3\u012b\3\u012b\7\u012b\u0a91\n\u012b\f\u012b\16\u012b\u0a94\13\u012b"+ + "\3\u012b\5\u012b\u0a97\n\u012b\3\u012b\5\u012b\u0a9a\n\u012b\3\u012b\3"+ + "\u012b\3\u012c\3\u012c\3\u012c\3\u012c\3\u012c\3\u012c\7\u012c\u0aa4\n"+ + "\u012c\f\u012c\16\u012c\u0aa7\13\u012c\3\u012c\3\u012c\3\u012c\3\u012c"+ + "\3\u012c\3\u012d\6\u012d\u0aaf\n\u012d\r\u012d\16\u012d\u0ab0\3\u012d"+ + "\3\u012d\3\u012e\3\u012e\3\u0aa5\2\u012f\3\3\5\4\7\5\t\6\13\7\r\b\17\t"+ + "\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27"+ + "-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W"+ + "-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083"+ + "C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097"+ + "M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00ab"+ + "W\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bf"+ + "a\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3"+ + "k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5t\u00e7"+ + "u\u00e9v\u00ebw\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\u00f0\u01df"+ + "\u00f1\u01e1\u00f2\u01e3\u00f3\u01e5\u00f4\u01e7\u00f5\u01e9\u00f6\u01eb"+ + "\u00f7\u01ed\u00f8\u01ef\u00f9\u01f1\u00fa\u01f3\u00fb\u01f5\u00fc\u01f7"+ + "\u00fd\u01f9\u00fe\u01fb\u00ff\u01fd\u0100\u01ff\u0101\u0201\u0102\u0203"+ + "\u0103\u0205\u0104\u0207\u0105\u0209\u0106\u020b\u0107\u020d\u0108\u020f"+ + "\u0109\u0211\u010a\u0213\u010b\u0215\u010c\u0217\u010d\u0219\u010e\u021b"+ + "\u010f\u021d\u0110\u021f\u0111\u0221\u0112\u0223\u0113\u0225\u0114\u0227"+ + "\u0115\u0229\u0116\u022b\u0117\u022d\u0118\u022f\u0119\u0231\u011a\u0233"+ + "\u011b\u0235\u011c\u0237\u011d\u0239\u011e\u023b\u011f\u023d\u0120\u023f"+ + "\u0121\u0241\u0122\u0243\u0123\u0245\u0124\u0247\u0125\u0249\u0126\u024b"+ + "\u0127\u024d\2\u024f\2\u0251\2\u0253\2\u0255\u0128\u0257\u0129\u0259\u012a"+ + "\u025b\u012b\3\2\n\4\2))^^\4\2$$^^\3\2bb\4\2--//\3\2\62;\3\2C\\\4\2\f"+ + "\f\17\17\5\2\13\f\17\17\"\"\2\u0adc\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2"+ + "\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23"+ + "\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2"+ + "\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2"+ + "\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3"+ + "\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2"+ + "\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2"+ + "\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2["+ + "\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2"+ + "\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2"+ + "\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2"+ + "\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089"+ + "\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2"+ + "\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b"+ + "\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2"+ + "\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad"+ + "\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2"+ + "\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf"+ + "\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2"+ + "\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1"+ + "\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2"+ + "\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3"+ + "\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2"+ + "\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5"+ + "\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2"+ + "\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105\3\2\2\2\2\u0107"+ + "\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2\2\2\u010d\3\2\2\2\2\u010f\3\2\2"+ + "\2\2\u0111\3\2\2\2\2\u0113\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119"+ + "\3\2\2\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2\2\2\u0121\3\2\2"+ + "\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u0127\3\2\2\2\2\u0129\3\2\2\2\2\u012b"+ + "\3\2\2\2\2\u012d\3\2\2\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133\3\2\2"+ + "\2\2\u0135\3\2\2\2\2\u0137\3\2\2\2\2\u0139\3\2\2\2\2\u013b\3\2\2\2\2\u013d"+ + "\3\2\2\2\2\u013f\3\2\2\2\2\u0141\3\2\2\2\2\u0143\3\2\2\2\2\u0145\3\2\2"+ + "\2\2\u0147\3\2\2\2\2\u0149\3\2\2\2\2\u014b\3\2\2\2\2\u014d\3\2\2\2\2\u014f"+ + "\3\2\2\2\2\u0151\3\2\2\2\2\u0153\3\2\2\2\2\u0155\3\2\2\2\2\u0157\3\2\2"+ + "\2\2\u0159\3\2\2\2\2\u015b\3\2\2\2\2\u015d\3\2\2\2\2\u015f\3\2\2\2\2\u0161"+ + "\3\2\2\2\2\u0163\3\2\2\2\2\u0165\3\2\2\2\2\u0167\3\2\2\2\2\u0169\3\2\2"+ + "\2\2\u016b\3\2\2\2\2\u016d\3\2\2\2\2\u016f\3\2\2\2\2\u0171\3\2\2\2\2\u0173"+ + "\3\2\2\2\2\u0175\3\2\2\2\2\u0177\3\2\2\2\2\u0179\3\2\2\2\2\u017b\3\2\2"+ + "\2\2\u017d\3\2\2\2\2\u017f\3\2\2\2\2\u0181\3\2\2\2\2\u0183\3\2\2\2\2\u0185"+ + "\3\2\2\2\2\u0187\3\2\2\2\2\u0189\3\2\2\2\2\u018b\3\2\2\2\2\u018d\3\2\2"+ + "\2\2\u018f\3\2\2\2\2\u0191\3\2\2\2\2\u0193\3\2\2\2\2\u0195\3\2\2\2\2\u0197"+ + "\3\2\2\2\2\u0199\3\2\2\2\2\u019b\3\2\2\2\2\u019d\3\2\2\2\2\u019f\3\2\2"+ + "\2\2\u01a1\3\2\2\2\2\u01a3\3\2\2\2\2\u01a5\3\2\2\2\2\u01a7\3\2\2\2\2\u01a9"+ + "\3\2\2\2\2\u01ab\3\2\2\2\2\u01ad\3\2\2\2\2\u01af\3\2\2\2\2\u01b1\3\2\2"+ + "\2\2\u01b3\3\2\2\2\2\u01b5\3\2\2\2\2\u01b7\3\2\2\2\2\u01b9\3\2\2\2\2\u01bb"+ + "\3\2\2\2\2\u01bd\3\2\2\2\2\u01bf\3\2\2\2\2\u01c1\3\2\2\2\2\u01c3\3\2\2"+ + "\2\2\u01c5\3\2\2\2\2\u01c7\3\2\2\2\2\u01c9\3\2\2\2\2\u01cb\3\2\2\2\2\u01cd"+ + "\3\2\2\2\2\u01cf\3\2\2\2\2\u01d1\3\2\2\2\2\u01d3\3\2\2\2\2\u01d5\3\2\2"+ + "\2\2\u01d7\3\2\2\2\2\u01d9\3\2\2\2\2\u01db\3\2\2\2\2\u01dd\3\2\2\2\2\u01df"+ + "\3\2\2\2\2\u01e1\3\2\2\2\2\u01e3\3\2\2\2\2\u01e5\3\2\2\2\2\u01e7\3\2\2"+ + "\2\2\u01e9\3\2\2\2\2\u01eb\3\2\2\2\2\u01ed\3\2\2\2\2\u01ef\3\2\2\2\2\u01f1"+ + "\3\2\2\2\2\u01f3\3\2\2\2\2\u01f5\3\2\2\2\2\u01f7\3\2\2\2\2\u01f9\3\2\2"+ + "\2\2\u01fb\3\2\2\2\2\u01fd\3\2\2\2\2\u01ff\3\2\2\2\2\u0201\3\2\2\2\2\u0203"+ + "\3\2\2\2\2\u0205\3\2\2\2\2\u0207\3\2\2\2\2\u0209\3\2\2\2\2\u020b\3\2\2"+ + "\2\2\u020d\3\2\2\2\2\u020f\3\2\2\2\2\u0211\3\2\2\2\2\u0213\3\2\2\2\2\u0215"+ + "\3\2\2\2\2\u0217\3\2\2\2\2\u0219\3\2\2\2\2\u021b\3\2\2\2\2\u021d\3\2\2"+ + "\2\2\u021f\3\2\2\2\2\u0221\3\2\2\2\2\u0223\3\2\2\2\2\u0225\3\2\2\2\2\u0227"+ + "\3\2\2\2\2\u0229\3\2\2\2\2\u022b\3\2\2\2\2\u022d\3\2\2\2\2\u022f\3\2\2"+ + "\2\2\u0231\3\2\2\2\2\u0233\3\2\2\2\2\u0235\3\2\2\2\2\u0237\3\2\2\2\2\u0239"+ + "\3\2\2\2\2\u023b\3\2\2\2\2\u023d\3\2\2\2\2\u023f\3\2\2\2\2\u0241\3\2\2"+ + "\2\2\u0243\3\2\2\2\2\u0245\3\2\2\2\2\u0247\3\2\2\2\2\u0249\3\2\2\2\2\u024b"+ + "\3\2\2\2\2\u0255\3\2\2\2\2\u0257\3\2\2\2\2\u0259\3\2\2\2\2\u025b\3\2\2"+ + "\2\3\u025d\3\2\2\2\5\u025f\3\2\2\2\7\u0261\3\2\2\2\t\u0263\3\2\2\2\13"+ + "\u0265\3\2\2\2\r\u0267\3\2\2\2\17\u026b\3\2\2\2\21\u026e\3\2\2\2\23\u0271"+ + "\3\2\2\2\25\u0273\3\2\2\2\27\u0275\3\2\2\2\31\u0277\3\2\2\2\33\u027b\3"+ + "\2\2\2\35\u0281\3\2\2\2\37\u0285\3\2\2\2!\u028b\3\2\2\2#\u0293\3\2\2\2"+ + "%\u0297\3\2\2\2\'\u029c\3\2\2\2)\u02a0\3\2\2\2+\u02a8\3\2\2\2-\u02ae\3"+ + "\2\2\2/\u02b1\3\2\2\2\61\u02b5\3\2\2\2\63\u02b8\3\2\2\2\65\u02c6\3\2\2"+ + "\2\67\u02ce\3\2\2\29\u02d3\3\2\2\2;\u02da\3\2\2\2=\u02e2\3\2\2\2?\u02e5"+ + "\3\2\2\2A\u02eb\3\2\2\2C\u02f3\3\2\2\2E\u02f8\3\2\2\2G\u02fd\3\2\2\2I"+ + "\u0304\3\2\2\2K\u030a\3\2\2\2M\u0310\3\2\2\2O\u0318\3\2\2\2Q\u0322\3\2"+ + "\2\2S\u032a\3\2\2\2U\u0332\3\2\2\2W\u033d\3\2\2\2Y\u0344\3\2\2\2[\u034c"+ + "\3\2\2\2]\u0354\3\2\2\2_\u035b\3\2\2\2a\u0363\3\2\2\2c\u036f\3\2\2\2e"+ + "\u0377\3\2\2\2g\u0383\3\2\2\2i\u038e\3\2\2\2k\u0393\3\2\2\2m\u039a\3\2"+ + "\2\2o\u03a0\3\2\2\2q\u03a5\3\2\2\2s\u03ad\3\2\2\2u\u03ba\3\2\2\2w\u03c7"+ + "\3\2\2\2y\u03d9\3\2\2\2{\u03e6\3\2\2\2}\u03eb\3\2\2\2\177\u0404\3\2\2"+ + "\2\u0081\u0406\3\2\2\2\u0083\u040a\3\2\2\2\u0085\u0417\3\2\2\2\u0087\u041f"+ + "\3\2\2\2\u0089\u0426\3\2\2\2\u008b\u0430\3\2\2\2\u008d\u0435\3\2\2\2\u008f"+ + "\u043e\3\2\2\2\u0091\u0442\3\2\2\2\u0093\u044e\3\2\2\2\u0095\u0458\3\2"+ + "\2\2\u0097\u0461\3\2\2\2\u0099\u046c\3\2\2\2\u009b\u0471\3\2\2\2\u009d"+ + "\u0476\3\2\2\2\u009f\u047a\3\2\2\2\u00a1\u0481\3\2\2\2\u00a3\u0489\3\2"+ + "\2\2\u00a5\u0490\3\2\2\2\u00a7\u0499\3\2\2\2\u00a9\u04a0\3\2\2\2\u00ab"+ + "\u04a8\3\2\2\2\u00ad\u04af\3\2\2\2\u00af\u04b8\3\2\2\2\u00b1\u04c1\3\2"+ + "\2\2\u00b3\u04c9\3\2\2\2\u00b5\u04cf\3\2\2\2\u00b7\u04d5\3\2\2\2\u00b9"+ + "\u04dc\3\2\2\2\u00bb\u04e3\3\2\2\2\u00bd\u04ee\3\2\2\2\u00bf\u04f4\3\2"+ + "\2\2\u00c1\u04fe\3\2\2\2\u00c3\u0502\3\2\2\2\u00c5\u050a\3\2\2\2\u00c7"+ + "\u0511\3\2\2\2\u00c9\u051b\3\2\2\2\u00cb\u0520\3\2\2\2\u00cd\u0525\3\2"+ + "\2\2\u00cf\u052e\3\2\2\2\u00d1\u0538\3\2\2\2\u00d3\u053f\3\2\2\2\u00d5"+ + "\u0545\3\2\2\2\u00d7\u054b\3\2\2\2\u00d9\u0554\3\2\2\2\u00db\u055b\3\2"+ + "\2\2\u00dd\u0560\3\2\2\2\u00df\u0563\3\2\2\2\u00e1\u056a\3\2\2\2\u00e3"+ + "\u0571\3\2\2\2\u00e5\u0574\3\2\2\2\u00e7\u057a\3\2\2\2\u00e9\u0582\3\2"+ + "\2\2\u00eb\u0588\3\2\2\2\u00ed\u058f\3\2\2\2\u00ef\u059b\3\2\2\2\u00f1"+ + "\u05a2\3\2\2\2\u00f3\u05ac\3\2\2\2\u00f5\u05b5\3\2\2\2\u00f7\u05ba\3\2"+ + "\2\2\u00f9\u05bd\3\2\2\2\u00fb\u05c3\3\2\2\2\u00fd\u05c8\3\2\2\2\u00ff"+ + "\u05cd\3\2\2\2\u0101\u05d2\3\2\2\2\u0103\u05da\3\2\2\2\u0105\u05df\3\2"+ + "\2\2\u0107\u05e7\3\2\2\2\u0109\u05ec\3\2\2\2\u010b\u05f1\3\2\2\2\u010d"+ + "\u05f7\3\2\2\2\u010f\u05fd\3\2\2\2\u0111\u0602\3\2\2\2\u0113\u0607\3\2"+ + "\2\2\u0115\u060d\3\2\2\2\u0117\u0616\3\2\2\2\u0119\u061b\3\2\2\2\u011b"+ + "\u0621\3\2\2\2\u011d\u0629\3\2\2\2\u011f\u062f\3\2\2\2\u0121\u0633\3\2"+ + "\2\2\u0123\u063b\3\2\2\2\u0125\u0641\3\2\2\2\u0127\u0648\3\2\2\2\u0129"+ + "\u064e\3\2\2\2\u012b\u0653\3\2\2\2\u012d\u065d\3\2\2\2\u012f\u0668\3\2"+ + "\2\2\u0131\u0670\3\2\2\2\u0133\u0677\3\2\2\2\u0135\u0679\3\2\2\2\u0137"+ + "\u067e\3\2\2\2\u0139\u0684\3\2\2\2\u013b\u0687\3\2\2\2\u013d\u068a\3\2"+ + "\2\2\u013f\u068f\3\2\2\2\u0141\u0696\3\2\2\2\u0143\u069e\3\2\2\2\u0145"+ + "\u06a1\3\2\2\2\u0147\u06a7\3\2\2\2\u0149\u06ab\3\2\2\2\u014b\u06b1\3\2"+ + "\2\2\u014d\u06be\3\2\2\2\u014f\u06c3\3\2\2\2\u0151\u06cc\3\2\2\2\u0153"+ + "\u06d4\3\2\2\2\u0155\u06de\3\2\2\2\u0157\u06e8\3\2\2\2\u0159\u06f4\3\2"+ + "\2\2\u015b\u06ff\3\2\2\2\u015d\u0707\3\2\2\2\u015f\u070d\3\2\2\2\u0161"+ + "\u0715\3\2\2\2\u0163\u071e\3\2\2\2\u0165\u0728\3\2\2\2\u0167\u0730\3\2"+ + "\2\2\u0169\u073b\3\2\2\2\u016b\u0746\3\2\2\2\u016d\u074c\3\2\2\2\u016f"+ + "\u0752\3\2\2\2\u0171\u0758\3\2\2\2\u0173\u0765\3\2\2\2\u0175\u0772\3\2"+ + "\2\2\u0177\u077a\3\2\2\2\u0179\u0781\3\2\2\2\u017b\u078c\3\2\2\2\u017d"+ + "\u0794\3\2\2\2\u017f\u079b\3\2\2\2\u0181\u07a2\3\2\2\2\u0183\u07aa\3\2"+ + "\2\2\u0185\u07b0\3\2\2\2\u0187\u07b9\3\2\2\2\u0189\u07c0\3\2\2\2\u018b"+ + "\u07d1\3\2\2\2\u018d\u07d3\3\2\2\2\u018f\u07d8\3\2\2\2\u0191\u07de\3\2"+ + "\2\2\u0193\u07e7\3\2\2\2\u0195\u07ee\3\2\2\2\u0197\u07f2\3\2\2\2\u0199"+ + "\u07f7\3\2\2\2\u019b\u07fe\3\2\2\2\u019d\u0805\3\2\2\2\u019f\u080c\3\2"+ + "\2\2\u01a1\u0811\3\2\2\2\u01a3\u081b\3\2\2\2\u01a5\u0821\3\2\2\2\u01a7"+ + "\u0831\3\2\2\2\u01a9\u083e\3\2\2\2\u01ab\u0842\3\2\2\2\u01ad\u0848\3\2"+ + "\2\2\u01af\u084d\3\2\2\2\u01b1\u0852\3\2\2\2\u01b3\u0859\3\2\2\2\u01b5"+ + "\u085e\3\2\2\2\u01b7\u0863\3\2\2\2\u01b9\u086a\3\2\2\2\u01bb\u0870\3\2"+ + "\2\2\u01bd\u087b\3\2\2\2\u01bf\u0882\3\2\2\2\u01c1\u088b\3\2\2\2\u01c3"+ + "\u0892\3\2\2\2\u01c5\u0899\3\2\2\2\u01c7\u08a3\3\2\2\2\u01c9\u08a9\3\2"+ + "\2\2\u01cb\u08b0\3\2\2\2\u01cd\u08bc\3\2\2\2\u01cf\u08d7\3\2\2\2\u01d1"+ + "\u08d9\3\2\2\2\u01d3\u08e4\3\2\2\2\u01d5\u08e9\3\2\2\2\u01d7\u08ec\3\2"+ + "\2\2\u01d9\u08f2\3\2\2\2\u01db\u08fb\3\2\2\2\u01dd\u0907\3\2\2\2\u01df"+ + "\u0914\3\2\2\2\u01e1\u091e\3\2\2\2\u01e3\u0923\3\2\2\2\u01e5\u0928\3\2"+ + "\2\2\u01e7\u0931\3\2\2\2\u01e9\u0936\3\2\2\2\u01eb\u0940\3\2\2\2\u01ed"+ + "\u094a\3\2\2\2\u01ef\u0952\3\2\2\2\u01f1\u0958\3\2\2\2\u01f3\u095f\3\2"+ + "\2\2\u01f5\u0967\3\2\2\2\u01f7\u096e\3\2\2\2\u01f9\u0974\3\2\2\2\u01fb"+ + "\u097b\3\2\2\2\u01fd\u097f\3\2\2\2\u01ff\u0984\3\2\2\2\u0201\u098a\3\2"+ + "\2\2\u0203\u0991\3\2\2\2\u0205\u0996\3\2\2\2\u0207\u099c\3\2\2\2\u0209"+ + "\u09a1\3\2\2\2\u020b\u09a7\3\2\2\2\u020d\u09ae\3\2\2\2\u020f\u09b3\3\2"+ + "\2\2\u0211\u09bb\3\2\2\2\u0213\u09bd\3\2\2\2\u0215\u09c1\3\2\2\2\u0217"+ + "\u09c4\3\2\2\2\u0219\u09c7\3\2\2\2\u021b\u09cd\3\2\2\2\u021d\u09cf\3\2"+ + "\2\2\u021f\u09d5\3\2\2\2\u0221\u09d7\3\2\2\2\u0223\u09d9\3\2\2\2\u0225"+ + "\u09db\3\2\2\2\u0227\u09dd\3\2\2\2\u0229\u09df\3\2\2\2\u022b\u09e1\3\2"+ + "\2\2\u022d\u09e5\3\2\2\2\u022f\u09e7\3\2\2\2\u0231\u09e9\3\2\2\2\u0233"+ + "\u09eb\3\2\2\2\u0235\u09ee\3\2\2\2\u0237\u0a04\3\2\2\2\u0239\u0a07\3\2"+ + "\2\2\u023b\u0a0e\3\2\2\2\u023d\u0a15\3\2\2\2\u023f\u0a1c\3\2\2\2\u0241"+ + "\u0a2b\3\2\2\2\u0243\u0a2d\3\2\2\2\u0245\u0a41\3\2\2\2\u0247\u0a57\3\2"+ + "\2\2\u0249\u0a5c\3\2\2\2\u024b\u0a60\3\2\2\2\u024d\u0a7d\3\2\2\2\u024f"+ + "\u0a7f\3\2\2\2\u0251\u0a88\3\2\2\2\u0253\u0a8a\3\2\2\2\u0255\u0a8c\3\2"+ + "\2\2\u0257\u0a9d\3\2\2\2\u0259\u0aae\3\2\2\2\u025b\u0ab4\3\2\2\2\u025d"+ + "\u025e\7=\2\2\u025e\4\3\2\2\2\u025f\u0260\7*\2\2\u0260\6\3\2\2\2\u0261"+ + "\u0262\7+\2\2\u0262\b\3\2\2\2\u0263\u0264\7.\2\2\u0264\n\3\2\2\2\u0265"+ + "\u0266\7\60\2\2\u0266\f\3\2\2\2\u0267\u0268\7\61\2\2\u0268\u0269\7,\2"+ + "\2\u0269\u026a\7-\2\2\u026a\16\3\2\2\2\u026b\u026c\7,\2\2\u026c\u026d"+ + "\7\61\2\2\u026d\20\3\2\2\2\u026e\u026f\7/\2\2\u026f\u0270\7@\2\2\u0270"+ + "\22\3\2\2\2\u0271\u0272\7]\2\2\u0272\24\3\2\2\2\u0273\u0274\7_\2\2\u0274"+ + "\26\3\2\2\2\u0275\u0276\7<\2\2\u0276\30\3\2\2\2\u0277\u0278\7C\2\2\u0278"+ + "\u0279\7F\2\2\u0279\u027a\7F\2\2\u027a\32\3\2\2\2\u027b\u027c\7C\2\2\u027c"+ + "\u027d\7H\2\2\u027d\u027e\7V\2\2\u027e\u027f\7G\2\2\u027f\u0280\7T\2\2"+ + "\u0280\34\3\2\2\2\u0281\u0282\7C\2\2\u0282\u0283\7N\2\2\u0283\u0284\7"+ + "N\2\2\u0284\36\3\2\2\2\u0285\u0286\7C\2\2\u0286\u0287\7N\2\2\u0287\u0288"+ + "\7V\2\2\u0288\u0289\7G\2\2\u0289\u028a\7T\2\2\u028a \3\2\2\2\u028b\u028c"+ + "\7C\2\2\u028c\u028d\7P\2\2\u028d\u028e\7C\2\2\u028e\u028f\7N\2\2\u028f"+ + "\u0290\7[\2\2\u0290\u0291\7\\\2\2\u0291\u0292\7G\2\2\u0292\"\3\2\2\2\u0293"+ + "\u0294\7C\2\2\u0294\u0295\7P\2\2\u0295\u0296\7F\2\2\u0296$\3\2\2\2\u0297"+ + "\u0298\7C\2\2\u0298\u0299\7P\2\2\u0299\u029a\7V\2\2\u029a\u029b\7K\2\2"+ + "\u029b&\3\2\2\2\u029c\u029d\7C\2\2\u029d\u029e\7P\2\2\u029e\u029f\7[\2"+ + "\2\u029f(\3\2\2\2\u02a0\u02a1\7C\2\2\u02a1\u02a2\7T\2\2\u02a2\u02a3\7"+ + "E\2\2\u02a3\u02a4\7J\2\2\u02a4\u02a5\7K\2\2\u02a5\u02a6\7X\2\2\u02a6\u02a7"+ + "\7G\2\2\u02a7*\3\2\2\2\u02a8\u02a9\7C\2\2\u02a9\u02aa\7T\2\2\u02aa\u02ab"+ + "\7T\2\2\u02ab\u02ac\7C\2\2\u02ac\u02ad\7[\2\2\u02ad,\3\2\2\2\u02ae\u02af"+ + "\7C\2\2\u02af\u02b0\7U\2\2\u02b0.\3\2\2\2\u02b1\u02b2\7C\2\2\u02b2\u02b3"+ + "\7U\2\2\u02b3\u02b4\7E\2\2\u02b4\60\3\2\2\2\u02b5\u02b6\7C\2\2\u02b6\u02b7"+ + "\7V\2\2\u02b7\62\3\2\2\2\u02b8\u02b9\7C\2\2\u02b9\u02ba\7W\2\2\u02ba\u02bb"+ + "\7V\2\2\u02bb\u02bc\7J\2\2\u02bc\u02bd\7Q\2\2\u02bd\u02be\7T\2\2\u02be"+ + "\u02bf\7K\2\2\u02bf\u02c0\7\\\2\2\u02c0\u02c1\7C\2\2\u02c1\u02c2\7V\2"+ + "\2\u02c2\u02c3\7K\2\2\u02c3\u02c4\7Q\2\2\u02c4\u02c5\7P\2\2\u02c5\64\3"+ + "\2\2\2\u02c6\u02c7\7D\2\2\u02c7\u02c8\7G\2\2\u02c8\u02c9\7V\2\2\u02c9"+ + "\u02ca\7Y\2\2\u02ca\u02cb\7G\2\2\u02cb\u02cc\7G\2\2\u02cc\u02cd\7P\2\2"+ + "\u02cd\66\3\2\2\2\u02ce\u02cf\7D\2\2\u02cf\u02d0\7Q\2\2\u02d0\u02d1\7"+ + "V\2\2\u02d1\u02d2\7J\2\2\u02d28\3\2\2\2\u02d3\u02d4\7D\2\2\u02d4\u02d5"+ + "\7W\2\2\u02d5\u02d6\7E\2\2\u02d6\u02d7\7M\2\2\u02d7\u02d8\7G\2\2\u02d8"+ + "\u02d9\7V\2\2\u02d9:\3\2\2\2\u02da\u02db\7D\2\2\u02db\u02dc\7W\2\2\u02dc"+ + "\u02dd\7E\2\2\u02dd\u02de\7M\2\2\u02de\u02df\7G\2\2\u02df\u02e0\7V\2\2"+ + "\u02e0\u02e1\7U\2\2\u02e1<\3\2\2\2\u02e2\u02e3\7D\2\2\u02e3\u02e4\7[\2"+ + "\2\u02e4>\3\2\2\2\u02e5\u02e6\7E\2\2\u02e6\u02e7\7C\2\2\u02e7\u02e8\7"+ + "E\2\2\u02e8\u02e9\7J\2\2\u02e9\u02ea\7G\2\2\u02ea@\3\2\2\2\u02eb\u02ec"+ + "\7E\2\2\u02ec\u02ed\7C\2\2\u02ed\u02ee\7U\2\2\u02ee\u02ef\7E\2\2\u02ef"+ + "\u02f0\7C\2\2\u02f0\u02f1\7F\2\2\u02f1\u02f2\7G\2\2\u02f2B\3\2\2\2\u02f3"+ + "\u02f4\7E\2\2\u02f4\u02f5\7C\2\2\u02f5\u02f6\7U\2\2\u02f6\u02f7\7G\2\2"+ + "\u02f7D\3\2\2\2\u02f8\u02f9\7E\2\2\u02f9\u02fa\7C\2\2\u02fa\u02fb\7U\2"+ + "\2\u02fb\u02fc\7V\2\2\u02fcF\3\2\2\2\u02fd\u02fe\7E\2\2\u02fe\u02ff\7"+ + "J\2\2\u02ff\u0300\7C\2\2\u0300\u0301\7P\2\2\u0301\u0302\7I\2\2\u0302\u0303"+ + "\7G\2\2\u0303H\3\2\2\2\u0304\u0305\7E\2\2\u0305\u0306\7J\2\2\u0306\u0307"+ + "\7G\2\2\u0307\u0308\7E\2\2\u0308\u0309\7M\2\2\u0309J\3\2\2\2\u030a\u030b"+ + "\7E\2\2\u030b\u030c\7N\2\2\u030c\u030d\7G\2\2\u030d\u030e\7C\2\2\u030e"+ + "\u030f\7T\2\2\u030fL\3\2\2\2\u0310\u0311\7E\2\2\u0311\u0312\7N\2\2\u0312"+ + "\u0313\7W\2\2\u0313\u0314\7U\2\2\u0314\u0315\7V\2\2\u0315\u0316\7G\2\2"+ + "\u0316\u0317\7T\2\2\u0317N\3\2\2\2\u0318\u0319\7E\2\2\u0319\u031a\7N\2"+ + "\2\u031a\u031b\7W\2\2\u031b\u031c\7U\2\2\u031c\u031d\7V\2\2\u031d\u031e"+ + "\7G\2\2\u031e\u031f\7T\2\2\u031f\u0320\7G\2\2\u0320\u0321\7F\2\2\u0321"+ + "P\3\2\2\2\u0322\u0323\7E\2\2\u0323\u0324\7Q\2\2\u0324\u0325\7F\2\2\u0325"+ + "\u0326\7G\2\2\u0326\u0327\7I\2\2\u0327\u0328\7G\2\2\u0328\u0329\7P\2\2"+ + "\u0329R\3\2\2\2\u032a\u032b\7E\2\2\u032b\u032c\7Q\2\2\u032c\u032d\7N\2"+ + "\2\u032d\u032e\7N\2\2\u032e\u032f\7C\2\2\u032f\u0330\7V\2\2\u0330\u0331"+ + "\7G\2\2\u0331T\3\2\2\2\u0332\u0333\7E\2\2\u0333\u0334\7Q\2\2\u0334\u0335"+ + "\7N\2\2\u0335\u0336\7N\2\2\u0336\u0337\7G\2\2\u0337\u0338\7E\2\2\u0338"+ + "\u0339\7V\2\2\u0339\u033a\7K\2\2\u033a\u033b\7Q\2\2\u033b\u033c\7P\2\2"+ + "\u033cV\3\2\2\2\u033d\u033e\7E\2\2\u033e\u033f\7Q\2\2\u033f\u0340\7N\2"+ + "\2\u0340\u0341\7W\2\2\u0341\u0342\7O\2\2\u0342\u0343\7P\2\2\u0343X\3\2"+ + "\2\2\u0344\u0345\7E\2\2\u0345\u0346\7Q\2\2\u0346\u0347\7N\2\2\u0347\u0348"+ + "\7W\2\2\u0348\u0349\7O\2\2\u0349\u034a\7P\2\2\u034a\u034b\7U\2\2\u034b"+ + "Z\3\2\2\2\u034c\u034d\7E\2\2\u034d\u034e\7Q\2\2\u034e\u034f\7O\2\2\u034f"+ + "\u0350\7O\2\2\u0350\u0351\7G\2\2\u0351\u0352\7P\2\2\u0352\u0353\7V\2\2"+ + "\u0353\\\3\2\2\2\u0354\u0355\7E\2\2\u0355\u0356\7Q\2\2\u0356\u0357\7O"+ + "\2\2\u0357\u0358\7O\2\2\u0358\u0359\7K\2\2\u0359\u035a\7V\2\2\u035a^\3"+ + "\2\2\2\u035b\u035c\7E\2\2\u035c\u035d\7Q\2\2\u035d\u035e\7O\2\2\u035e"+ + "\u035f\7R\2\2\u035f\u0360\7C\2\2\u0360\u0361\7E\2\2\u0361\u0362\7V\2\2"+ + "\u0362`\3\2\2\2\u0363\u0364\7E\2\2\u0364\u0365\7Q\2\2\u0365\u0366\7O\2"+ + "\2\u0366\u0367\7R\2\2\u0367\u0368\7C\2\2\u0368\u0369\7E\2\2\u0369\u036a"+ + "\7V\2\2\u036a\u036b\7K\2\2\u036b\u036c\7Q\2\2\u036c\u036d\7P\2\2\u036d"+ + "\u036e\7U\2\2\u036eb\3\2\2\2\u036f\u0370\7E\2\2\u0370\u0371\7Q\2\2\u0371"+ + "\u0372\7O\2\2\u0372\u0373\7R\2\2\u0373\u0374\7W\2\2\u0374\u0375\7V\2\2"+ + "\u0375\u0376\7G\2\2\u0376d\3\2\2\2\u0377\u0378\7E\2\2\u0378\u0379\7Q\2"+ + "\2\u0379\u037a\7P\2\2\u037a\u037b\7E\2\2\u037b\u037c\7C\2\2\u037c\u037d"+ + "\7V\2\2\u037d\u037e\7G\2\2\u037e\u037f\7P\2\2\u037f\u0380\7C\2\2\u0380"+ + "\u0381\7V\2\2\u0381\u0382\7G\2\2\u0382f\3\2\2\2\u0383\u0384\7E\2\2\u0384"+ + "\u0385\7Q\2\2\u0385\u0386\7P\2\2\u0386\u0387\7U\2\2\u0387\u0388\7V\2\2"+ + "\u0388\u0389\7T\2\2\u0389\u038a\7C\2\2\u038a\u038b\7K\2\2\u038b\u038c"+ + "\7P\2\2\u038c\u038d\7V\2\2\u038dh\3\2\2\2\u038e\u038f\7E\2\2\u038f\u0390"+ + "\7Q\2\2\u0390\u0391\7U\2\2\u0391\u0392\7V\2\2\u0392j\3\2\2\2\u0393\u0394"+ + "\7E\2\2\u0394\u0395\7T\2\2\u0395\u0396\7G\2\2\u0396\u0397\7C\2\2\u0397"+ + "\u0398\7V\2\2\u0398\u0399\7G\2\2\u0399l\3\2\2\2\u039a\u039b\7E\2\2\u039b"+ + "\u039c\7T\2\2\u039c\u039d\7Q\2\2\u039d\u039e\7U\2\2\u039e\u039f\7U\2\2"+ + "\u039fn\3\2\2\2\u03a0\u03a1\7E\2\2\u03a1\u03a2\7W\2\2\u03a2\u03a3\7D\2"+ + "\2\u03a3\u03a4\7G\2\2\u03a4p\3\2\2\2\u03a5\u03a6\7E\2\2\u03a6\u03a7\7"+ + "W\2\2\u03a7\u03a8\7T\2\2\u03a8\u03a9\7T\2\2\u03a9\u03aa\7G\2\2\u03aa\u03ab"+ + "\7P\2\2\u03ab\u03ac\7V\2\2\u03acr\3\2\2\2\u03ad\u03ae\7E\2\2\u03ae\u03af"+ + "\7W\2\2\u03af\u03b0\7T\2\2\u03b0\u03b1\7T\2\2\u03b1\u03b2\7G\2\2\u03b2"+ + "\u03b3\7P\2\2\u03b3\u03b4\7V\2\2\u03b4\u03b5\7a\2\2\u03b5\u03b6\7F\2\2"+ + "\u03b6\u03b7\7C\2\2\u03b7\u03b8\7V\2\2\u03b8\u03b9\7G\2\2\u03b9t\3\2\2"+ + "\2\u03ba\u03bb\7E\2\2\u03bb\u03bc\7W\2\2\u03bc\u03bd\7T\2\2\u03bd\u03be"+ + "\7T\2\2\u03be\u03bf\7G\2\2\u03bf\u03c0\7P\2\2\u03c0\u03c1\7V\2\2\u03c1"+ + "\u03c2\7a\2\2\u03c2\u03c3\7V\2\2\u03c3\u03c4\7K\2\2\u03c4\u03c5\7O\2\2"+ + "\u03c5\u03c6\7G\2\2\u03c6v\3\2\2\2\u03c7\u03c8\7E\2\2\u03c8\u03c9\7W\2"+ + "\2\u03c9\u03ca\7T\2\2\u03ca\u03cb\7T\2\2\u03cb\u03cc\7G\2\2\u03cc\u03cd"+ + "\7P\2\2\u03cd\u03ce\7V\2\2\u03ce\u03cf\7a\2\2\u03cf\u03d0\7V\2\2\u03d0"+ + "\u03d1\7K\2\2\u03d1\u03d2\7O\2\2\u03d2\u03d3\7G\2\2\u03d3\u03d4\7U\2\2"+ + "\u03d4\u03d5\7V\2\2\u03d5\u03d6\7C\2\2\u03d6\u03d7\7O\2\2\u03d7\u03d8"+ + "\7R\2\2\u03d8x\3\2\2\2\u03d9\u03da\7E\2\2\u03da\u03db\7W\2\2\u03db\u03dc"+ + "\7T\2\2\u03dc\u03dd\7T\2\2\u03dd\u03de\7G\2\2\u03de\u03df\7P\2\2\u03df"+ + "\u03e0\7V\2\2\u03e0\u03e1\7a\2\2\u03e1\u03e2\7W\2\2\u03e2\u03e3\7U\2\2"+ + "\u03e3\u03e4\7G\2\2\u03e4\u03e5\7T\2\2\u03e5z\3\2\2\2\u03e6\u03e7\7F\2"+ + "\2\u03e7\u03e8\7C\2\2\u03e8\u03e9\7V\2\2\u03e9\u03ea\7C\2\2\u03ea|\3\2"+ + "\2\2\u03eb\u03ec\7F\2\2\u03ec\u03ed\7C\2\2\u03ed\u03ee\7V\2\2\u03ee\u03ef"+ + "\7C\2\2\u03ef\u03f0\7D\2\2\u03f0\u03f1\7C\2\2\u03f1\u03f2\7U\2\2\u03f2"+ + "\u03f3\7G\2\2\u03f3~\3\2\2\2\u03f4\u03f5\7F\2\2\u03f5\u03f6\7C\2\2\u03f6"+ + "\u03f7\7V\2\2\u03f7\u03f8\7C\2\2\u03f8\u03f9\7D\2\2\u03f9\u03fa\7C\2\2"+ + "\u03fa\u03fb\7U\2\2\u03fb\u03fc\7G\2\2\u03fc\u0405\7U\2\2\u03fd\u03fe"+ + "\7U\2\2\u03fe\u03ff\7E\2\2\u03ff\u0400\7J\2\2\u0400\u0401\7G\2\2\u0401"+ + "\u0402\7O\2\2\u0402\u0403\7C\2\2\u0403\u0405\7U\2\2\u0404\u03f4\3\2\2"+ + "\2\u0404\u03fd\3\2\2\2\u0405\u0080\3\2\2\2\u0406\u0407\7F\2\2\u0407\u0408"+ + "\7C\2\2\u0408\u0409\7[\2\2\u0409\u0082\3\2\2\2\u040a\u040b\7F\2\2\u040b"+ + "\u040c\7D\2\2\u040c\u040d\7R\2\2\u040d\u040e\7T\2\2\u040e\u040f\7Q\2\2"+ + "\u040f\u0410\7R\2\2\u0410\u0411\7G\2\2\u0411\u0412\7T\2\2\u0412\u0413"+ + "\7V\2\2\u0413\u0414\7K\2\2\u0414\u0415\7G\2\2\u0415\u0416\7U\2\2\u0416"+ + "\u0084\3\2\2\2\u0417\u0418\7F\2\2\u0418\u0419\7G\2\2\u0419\u041a\7H\2"+ + "\2\u041a\u041b\7K\2\2\u041b\u041c\7P\2\2\u041c\u041d\7G\2\2\u041d\u041e"+ + "\7F\2\2\u041e\u0086\3\2\2\2\u041f\u0420\7F\2\2\u0420\u0421\7G\2\2\u0421"+ + "\u0422\7N\2\2\u0422\u0423\7G\2\2\u0423\u0424\7V\2\2\u0424\u0425\7G\2\2"+ + "\u0425\u0088\3\2\2\2\u0426\u0427\7F\2\2\u0427\u0428\7G\2\2\u0428\u0429"+ + "\7N\2\2\u0429\u042a\7K\2\2\u042a\u042b\7O\2\2\u042b\u042c\7K\2\2\u042c"+ + "\u042d\7V\2\2\u042d\u042e\7G\2\2\u042e\u042f\7F\2\2\u042f\u008a\3\2\2"+ + "\2\u0430\u0431\7F\2\2\u0431\u0432\7G\2\2\u0432\u0433\7U\2\2\u0433\u0434"+ + "\7E\2\2\u0434\u008c\3\2\2\2\u0435\u0436\7F\2\2\u0436\u0437\7G\2\2\u0437"+ + "\u0438\7U\2\2\u0438\u0439\7E\2\2\u0439\u043a\7T\2\2\u043a\u043b\7K\2\2"+ + "\u043b\u043c\7D\2\2\u043c\u043d\7G\2\2\u043d\u008e\3\2\2\2\u043e\u043f"+ + "\7F\2\2\u043f\u0440\7H\2\2\u0440\u0441\7U\2\2\u0441\u0090\3\2\2\2\u0442"+ + "\u0443\7F\2\2\u0443\u0444\7K\2\2\u0444\u0445\7T\2\2\u0445\u0446\7G\2\2"+ + "\u0446\u0447\7E\2\2\u0447\u0448\7V\2\2\u0448\u0449\7Q\2\2\u0449\u044a"+ + "\7T\2\2\u044a\u044b\7K\2\2\u044b\u044c\7G\2\2\u044c\u044d\7U\2\2\u044d"+ + "\u0092\3\2\2\2\u044e\u044f\7F\2\2\u044f\u0450\7K\2\2\u0450\u0451\7T\2"+ + "\2\u0451\u0452\7G\2\2\u0452\u0453\7E\2\2\u0453\u0454\7V\2\2\u0454\u0455"+ + "\7Q\2\2\u0455\u0456\7T\2\2\u0456\u0457\7[\2\2\u0457\u0094\3\2\2\2\u0458"+ + "\u0459\7F\2\2\u0459\u045a\7K\2\2\u045a\u045b\7U\2\2\u045b\u045c\7V\2\2"+ + "\u045c\u045d\7K\2\2\u045d\u045e\7P\2\2\u045e\u045f\7E\2\2\u045f\u0460"+ + "\7V\2\2\u0460\u0096\3\2\2\2\u0461\u0462\7F\2\2\u0462\u0463\7K\2\2\u0463"+ + "\u0464\7U\2\2\u0464\u0465\7V\2\2\u0465\u0466\7T\2\2\u0466\u0467\7K\2\2"+ + "\u0467\u0468\7D\2\2\u0468\u0469\7W\2\2\u0469\u046a\7V\2\2\u046a\u046b"+ + "\7G\2\2\u046b\u0098\3\2\2\2\u046c\u046d\7F\2\2\u046d\u046e\7T\2\2\u046e"+ + "\u046f\7Q\2\2\u046f\u0470\7R\2\2\u0470\u009a\3\2\2\2\u0471\u0472\7G\2"+ + "\2\u0472\u0473\7N\2\2\u0473\u0474\7U\2\2\u0474\u0475\7G\2\2\u0475\u009c"+ + "\3\2\2\2\u0476\u0477\7G\2\2\u0477\u0478\7P\2\2\u0478\u0479\7F\2\2\u0479"+ + "\u009e\3\2\2\2\u047a\u047b\7G\2\2\u047b\u047c\7U\2\2\u047c\u047d\7E\2"+ + "\2\u047d\u047e\7C\2\2\u047e\u047f\7R\2\2\u047f\u0480\7G\2\2\u0480\u00a0"+ + "\3\2\2\2\u0481\u0482\7G\2\2\u0482\u0483\7U\2\2\u0483\u0484\7E\2\2\u0484"+ + "\u0485\7C\2\2\u0485\u0486\7R\2\2\u0486\u0487\7G\2\2\u0487\u0488\7F\2\2"+ + "\u0488\u00a2\3\2\2\2\u0489\u048a\7G\2\2\u048a\u048b\7Z\2\2\u048b\u048c"+ + "\7E\2\2\u048c\u048d\7G\2\2\u048d\u048e\7R\2\2\u048e\u048f\7V\2\2\u048f"+ + "\u00a4\3\2\2\2\u0490\u0491\7G\2\2\u0491\u0492\7Z\2\2\u0492\u0493\7E\2"+ + "\2\u0493\u0494\7J\2\2\u0494\u0495\7C\2\2\u0495\u0496\7P\2\2\u0496\u0497"+ + "\7I\2\2\u0497\u0498\7G\2\2\u0498\u00a6\3\2\2\2\u0499\u049a\7G\2\2\u049a"+ + "\u049b\7Z\2\2\u049b\u049c\7K\2\2\u049c\u049d\7U\2\2\u049d\u049e\7V\2\2"+ + "\u049e\u049f\7U\2\2\u049f\u00a8\3\2\2\2\u04a0\u04a1\7G\2\2\u04a1\u04a2"+ + "\7Z\2\2\u04a2\u04a3\7R\2\2\u04a3\u04a4\7N\2\2\u04a4\u04a5\7C\2\2\u04a5"+ + "\u04a6\7K\2\2\u04a6\u04a7\7P\2\2\u04a7\u00aa\3\2\2\2\u04a8\u04a9\7G\2"+ + "\2\u04a9\u04aa\7Z\2\2\u04aa\u04ab\7R\2\2\u04ab\u04ac\7Q\2\2\u04ac\u04ad"+ + "\7T\2\2\u04ad\u04ae\7V\2\2\u04ae\u00ac\3\2\2\2\u04af\u04b0\7G\2\2\u04b0"+ + "\u04b1\7Z\2\2\u04b1\u04b2\7V\2\2\u04b2\u04b3\7G\2\2\u04b3\u04b4\7P\2\2"+ + "\u04b4\u04b5\7F\2\2\u04b5\u04b6\7G\2\2\u04b6\u04b7\7F\2\2\u04b7\u00ae"+ + "\3\2\2\2\u04b8\u04b9\7G\2\2\u04b9\u04ba\7Z\2\2\u04ba\u04bb\7V\2\2\u04bb"+ + "\u04bc\7G\2\2\u04bc\u04bd\7T\2\2\u04bd\u04be\7P\2\2\u04be\u04bf\7C\2\2"+ + "\u04bf\u04c0\7N\2\2\u04c0\u00b0\3\2\2\2\u04c1\u04c2\7G\2\2\u04c2\u04c3"+ + "\7Z\2\2\u04c3\u04c4\7V\2\2\u04c4\u04c5\7T\2\2\u04c5\u04c6\7C\2\2\u04c6"+ + "\u04c7\7E\2\2\u04c7\u04c8\7V\2\2\u04c8\u00b2\3\2\2\2\u04c9\u04ca\7H\2"+ + "\2\u04ca\u04cb\7C\2\2\u04cb\u04cc\7N\2\2\u04cc\u04cd\7U\2\2\u04cd\u04ce"+ + "\7G\2\2\u04ce\u00b4\3\2\2\2\u04cf\u04d0\7H\2\2\u04d0\u04d1\7G\2\2\u04d1"+ + "\u04d2\7V\2\2\u04d2\u04d3\7E\2\2\u04d3\u04d4\7J\2\2\u04d4\u00b6\3\2\2"+ + "\2\u04d5\u04d6\7H\2\2\u04d6\u04d7\7K\2\2\u04d7\u04d8\7G\2\2\u04d8\u04d9"+ + "\7N\2\2\u04d9\u04da\7F\2\2\u04da\u04db\7U\2\2\u04db\u00b8\3\2\2\2\u04dc"+ + "\u04dd\7H\2\2\u04dd\u04de\7K\2\2\u04de\u04df\7N\2\2\u04df\u04e0\7V\2\2"+ + "\u04e0\u04e1\7G\2\2\u04e1\u04e2\7T\2\2\u04e2\u00ba\3\2\2\2\u04e3\u04e4"+ + "\7H\2\2\u04e4\u04e5\7K\2\2\u04e5\u04e6\7N\2\2\u04e6\u04e7\7G\2\2\u04e7"+ + "\u04e8\7H\2\2\u04e8\u04e9\7Q\2\2\u04e9\u04ea\7T\2\2\u04ea\u04eb\7O\2\2"+ + "\u04eb\u04ec\7C\2\2\u04ec\u04ed\7V\2\2\u04ed\u00bc\3\2\2\2\u04ee\u04ef"+ + "\7H\2\2\u04ef\u04f0\7K\2\2\u04f0\u04f1\7T\2\2\u04f1\u04f2\7U\2\2\u04f2"+ + "\u04f3\7V\2\2\u04f3\u00be\3\2\2\2\u04f4\u04f5\7H\2\2\u04f5\u04f6\7Q\2"+ + "\2\u04f6\u04f7\7N\2\2\u04f7\u04f8\7N\2\2\u04f8\u04f9\7Q\2\2\u04f9\u04fa"+ + "\7Y\2\2\u04fa\u04fb\7K\2\2\u04fb\u04fc\7P\2\2\u04fc\u04fd\7I\2\2\u04fd"+ + "\u00c0\3\2\2\2\u04fe\u04ff\7H\2\2\u04ff\u0500\7Q\2\2\u0500\u0501\7T\2"+ + "\2\u0501\u00c2\3\2\2\2\u0502\u0503\7H\2\2\u0503\u0504\7Q\2\2\u0504\u0505"+ + "\7T\2\2\u0505\u0506\7G\2\2\u0506\u0507\7K\2\2\u0507\u0508\7I\2\2\u0508"+ + "\u0509\7P\2\2\u0509\u00c4\3\2\2\2\u050a\u050b\7H\2\2\u050b\u050c\7Q\2"+ + "\2\u050c\u050d\7T\2\2\u050d\u050e\7O\2\2\u050e\u050f\7C\2\2\u050f\u0510"+ + "\7V\2\2\u0510\u00c6\3\2\2\2\u0511\u0512\7H\2\2\u0512\u0513\7Q\2\2\u0513"+ + "\u0514\7T\2\2\u0514\u0515\7O\2\2\u0515\u0516\7C\2\2\u0516\u0517\7V\2\2"+ + "\u0517\u0518\7V\2\2\u0518\u0519\7G\2\2\u0519\u051a\7F\2\2\u051a\u00c8"+ + "\3\2\2\2\u051b\u051c\7H\2\2\u051c\u051d\7T\2\2\u051d\u051e\7Q\2\2\u051e"+ + "\u051f\7O\2\2\u051f\u00ca\3\2\2\2\u0520\u0521\7H\2\2\u0521\u0522\7W\2"+ + "\2\u0522\u0523\7N\2\2\u0523\u0524\7N\2\2\u0524\u00cc\3\2\2\2\u0525\u0526"+ + "\7H\2\2\u0526\u0527\7W\2\2\u0527\u0528\7P\2\2\u0528\u0529\7E\2\2\u0529"+ + "\u052a\7V\2\2\u052a\u052b\7K\2\2\u052b\u052c\7Q\2\2\u052c\u052d\7P\2\2"+ + "\u052d\u00ce\3\2\2\2\u052e\u052f\7H\2\2\u052f\u0530\7W\2\2\u0530\u0531"+ + "\7P\2\2\u0531\u0532\7E\2\2\u0532\u0533\7V\2\2\u0533\u0534\7K\2\2\u0534"+ + "\u0535\7Q\2\2\u0535\u0536\7P\2\2\u0536\u0537\7U\2\2\u0537\u00d0\3\2\2"+ + "\2\u0538\u0539\7I\2\2\u0539\u053a\7N\2\2\u053a\u053b\7Q\2\2\u053b\u053c"+ + "\7D\2\2\u053c\u053d\7C\2\2\u053d\u053e\7N\2\2\u053e\u00d2\3\2\2\2\u053f"+ + "\u0540\7I\2\2\u0540\u0541\7T\2\2\u0541\u0542\7C\2\2\u0542\u0543\7P\2\2"+ + "\u0543\u0544\7V\2\2\u0544\u00d4\3\2\2\2\u0545\u0546\7I\2\2\u0546\u0547"+ + "\7T\2\2\u0547\u0548\7Q\2\2\u0548\u0549\7W\2\2\u0549\u054a\7R\2\2\u054a"+ + "\u00d6\3\2\2\2\u054b\u054c\7I\2\2\u054c\u054d\7T\2\2\u054d\u054e\7Q\2"+ + "\2\u054e\u054f\7W\2\2\u054f\u0550\7R\2\2\u0550\u0551\7K\2\2\u0551\u0552"+ + "\7P\2\2\u0552\u0553\7I\2\2\u0553\u00d8\3\2\2\2\u0554\u0555\7J\2\2\u0555"+ + "\u0556\7C\2\2\u0556\u0557\7X\2\2\u0557\u0558\7K\2\2\u0558\u0559\7P\2\2"+ + "\u0559\u055a\7I\2\2\u055a\u00da\3\2\2\2\u055b\u055c\7J\2\2\u055c\u055d"+ + "\7Q\2\2\u055d\u055e\7W\2\2\u055e\u055f\7T\2\2\u055f\u00dc\3\2\2\2\u0560"+ + "\u0561\7K\2\2\u0561\u0562\7H\2\2\u0562\u00de\3\2\2\2\u0563\u0564\7K\2"+ + "\2\u0564\u0565\7I\2\2\u0565\u0566\7P\2\2\u0566\u0567\7Q\2\2\u0567\u0568"+ + "\7T\2\2\u0568\u0569\7G\2\2\u0569\u00e0\3\2\2\2\u056a\u056b\7K\2\2\u056b"+ + "\u056c\7O\2\2\u056c\u056d\7R\2\2\u056d\u056e\7Q\2\2\u056e\u056f\7T\2\2"+ + "\u056f\u0570\7V\2\2\u0570\u00e2\3\2\2\2\u0571\u0572\7K\2\2\u0572\u0573"+ + "\7P\2\2\u0573\u00e4\3\2\2\2\u0574\u0575\7K\2\2\u0575\u0576\7P\2\2\u0576"+ + "\u0577\7F\2\2\u0577\u0578\7G\2\2\u0578\u0579\7Z\2\2\u0579\u00e6\3\2\2"+ + "\2\u057a\u057b\7K\2\2\u057b\u057c\7P\2\2\u057c\u057d\7F\2\2\u057d\u057e"+ + "\7G\2\2\u057e\u057f\7Z\2\2\u057f\u0580\7G\2\2\u0580\u0581\7U\2\2\u0581"+ + "\u00e8\3\2\2\2\u0582\u0583\7K\2\2\u0583\u0584\7P\2\2\u0584\u0585\7P\2"+ + "\2\u0585\u0586\7G\2\2\u0586\u0587\7T\2\2\u0587\u00ea\3\2\2\2\u0588\u0589"+ + "\7K\2\2\u0589\u058a\7P\2\2\u058a\u058b\7R\2\2\u058b\u058c\7C\2\2\u058c"+ + "\u058d\7V\2\2\u058d\u058e\7J\2\2\u058e\u00ec\3\2\2\2\u058f\u0590\7K\2"+ + "\2\u0590\u0591\7P\2\2\u0591\u0592\7R\2\2\u0592\u0593\7W\2\2\u0593\u0594"+ + "\7V\2\2\u0594\u0595\7H\2\2\u0595\u0596\7Q\2\2\u0596\u0597\7T\2\2\u0597"+ + "\u0598\7O\2\2\u0598\u0599\7C\2\2\u0599\u059a\7V\2\2\u059a\u00ee\3\2\2"+ + "\2\u059b\u059c\7K\2\2\u059c\u059d\7P\2\2\u059d\u059e\7U\2\2\u059e\u059f"+ + "\7G\2\2\u059f\u05a0\7T\2\2\u05a0\u05a1\7V\2\2\u05a1\u00f0\3\2\2\2\u05a2"+ + "\u05a3\7K\2\2\u05a3\u05a4\7P\2\2\u05a4\u05a5\7V\2\2\u05a5\u05a6\7G\2\2"+ + "\u05a6\u05a7\7T\2\2\u05a7\u05a8\7U\2\2\u05a8\u05a9\7G\2\2\u05a9\u05aa"+ + "\7E\2\2\u05aa\u05ab\7V\2\2\u05ab\u00f2\3\2\2\2\u05ac\u05ad\7K\2\2\u05ad"+ + "\u05ae\7P\2\2\u05ae\u05af\7V\2\2\u05af\u05b0\7G\2\2\u05b0\u05b1\7T\2\2"+ + "\u05b1\u05b2\7X\2\2\u05b2\u05b3\7C\2\2\u05b3\u05b4\7N\2\2\u05b4\u00f4"+ + "\3\2\2\2\u05b5\u05b6\7K\2\2\u05b6\u05b7\7P\2\2\u05b7\u05b8\7V\2\2\u05b8"+ + "\u05b9\7Q\2\2\u05b9\u00f6\3\2\2\2\u05ba\u05bb\7K\2\2\u05bb\u05bc\7U\2"+ + "\2\u05bc\u00f8\3\2\2\2\u05bd\u05be\7K\2\2\u05be\u05bf\7V\2\2\u05bf\u05c0"+ + "\7G\2\2\u05c0\u05c1\7O\2\2\u05c1\u05c2\7U\2\2\u05c2\u00fa\3\2\2\2\u05c3"+ + "\u05c4\7L\2\2\u05c4\u05c5\7Q\2\2\u05c5\u05c6\7K\2\2\u05c6\u05c7\7P\2\2"+ + "\u05c7\u00fc\3\2\2\2\u05c8\u05c9\7M\2\2\u05c9\u05ca\7G\2\2\u05ca\u05cb"+ + "\7[\2\2\u05cb\u05cc\7U\2\2\u05cc\u00fe\3\2\2\2\u05cd\u05ce\7N\2\2\u05ce"+ + "\u05cf\7C\2\2\u05cf\u05d0\7U\2\2\u05d0\u05d1\7V\2\2\u05d1\u0100\3\2\2"+ + "\2\u05d2\u05d3\7N\2\2\u05d3\u05d4\7C\2\2\u05d4\u05d5\7V\2\2\u05d5\u05d6"+ + "\7G\2\2\u05d6\u05d7\7T\2\2\u05d7\u05d8\7C\2\2\u05d8\u05d9\7N\2\2\u05d9"+ + "\u0102\3\2\2\2\u05da\u05db\7N\2\2\u05db\u05dc\7C\2\2\u05dc\u05dd\7\\\2"+ + "\2\u05dd\u05de\7[\2\2\u05de\u0104\3\2\2\2\u05df\u05e0\7N\2\2\u05e0\u05e1"+ + "\7G\2\2\u05e1\u05e2\7C\2\2\u05e2\u05e3\7F\2\2\u05e3\u05e4\7K\2\2\u05e4"+ + "\u05e5\7P\2\2\u05e5\u05e6\7I\2\2\u05e6\u0106\3\2\2\2\u05e7\u05e8\7N\2"+ + "\2\u05e8\u05e9\7G\2\2\u05e9\u05ea\7H\2\2\u05ea\u05eb\7V\2\2\u05eb\u0108"+ + "\3\2\2\2\u05ec\u05ed\7N\2\2\u05ed\u05ee\7K\2\2\u05ee\u05ef\7M\2\2\u05ef"+ + "\u05f0\7G\2\2\u05f0\u010a\3\2\2\2\u05f1\u05f2\7N\2\2\u05f2\u05f3\7K\2"+ + "\2\u05f3\u05f4\7O\2\2\u05f4\u05f5\7K\2\2\u05f5\u05f6\7V\2\2\u05f6\u010c"+ + "\3\2\2\2\u05f7\u05f8\7N\2\2\u05f8\u05f9\7K\2\2\u05f9\u05fa\7P\2\2\u05fa"+ + "\u05fb\7G\2\2\u05fb\u05fc\7U\2\2\u05fc\u010e\3\2\2\2\u05fd\u05fe\7N\2"+ + "\2\u05fe\u05ff\7K\2\2\u05ff\u0600\7U\2\2\u0600\u0601\7V\2\2\u0601\u0110"+ + "\3\2\2\2\u0602\u0603\7N\2\2\u0603\u0604\7Q\2\2\u0604\u0605\7C\2\2\u0605"+ + "\u0606\7F\2\2\u0606\u0112\3\2\2\2\u0607\u0608\7N\2\2\u0608\u0609\7Q\2"+ + "\2\u0609\u060a\7E\2\2\u060a\u060b\7C\2\2\u060b\u060c\7N\2\2\u060c\u0114"+ + "\3\2\2\2\u060d\u060e\7N\2\2\u060e\u060f\7Q\2\2\u060f\u0610\7E\2\2\u0610"+ + "\u0611\7C\2\2\u0611\u0612\7V\2\2\u0612\u0613\7K\2\2\u0613\u0614\7Q\2\2"+ + "\u0614\u0615\7P\2\2\u0615\u0116\3\2\2\2\u0616\u0617\7N\2\2\u0617\u0618"+ + "\7Q\2\2\u0618\u0619\7E\2\2\u0619\u061a\7M\2\2\u061a\u0118\3\2\2\2\u061b"+ + "\u061c\7N\2\2\u061c\u061d\7Q\2\2\u061d\u061e\7E\2\2\u061e\u061f\7M\2\2"+ + "\u061f\u0620\7U\2\2\u0620\u011a\3\2\2\2\u0621\u0622\7N\2\2\u0622\u0623"+ + "\7Q\2\2\u0623\u0624\7I\2\2\u0624\u0625\7K\2\2\u0625\u0626\7E\2\2\u0626"+ + "\u0627\7C\2\2\u0627\u0628\7N\2\2\u0628\u011c\3\2\2\2\u0629\u062a\7O\2"+ + "\2\u062a\u062b\7C\2\2\u062b\u062c\7E\2\2\u062c\u062d\7T\2\2\u062d\u062e"+ + "\7Q\2\2\u062e\u011e\3\2\2\2\u062f\u0630\7O\2\2\u0630\u0631\7C\2\2\u0631"+ + "\u0632\7R\2\2\u0632\u0120\3\2\2\2\u0633\u0634\7O\2\2\u0634\u0635\7C\2"+ + "\2\u0635\u0636\7V\2\2\u0636\u0637\7E\2\2\u0637\u0638\7J\2\2\u0638\u0639"+ + "\7G\2\2\u0639\u063a\7F\2\2\u063a\u0122\3\2\2\2\u063b\u063c\7O\2\2\u063c"+ + "\u063d\7G\2\2\u063d\u063e\7T\2\2\u063e\u063f\7I\2\2\u063f\u0640\7G\2\2"+ + "\u0640\u0124\3\2\2\2\u0641\u0642\7O\2\2\u0642\u0643\7K\2\2\u0643\u0644"+ + "\7P\2\2\u0644\u0645\7W\2\2\u0645\u0646\7V\2\2\u0646\u0647\7G\2\2\u0647"+ + "\u0126\3\2\2\2\u0648\u0649\7O\2\2\u0649\u064a\7Q\2\2\u064a\u064b\7P\2"+ + "\2\u064b\u064c\7V\2\2\u064c\u064d\7J\2\2\u064d\u0128\3\2\2\2\u064e\u064f"+ + "\7O\2\2\u064f\u0650\7U\2\2\u0650\u0651\7E\2\2\u0651\u0652\7M\2\2\u0652"+ + "\u012a\3\2\2\2\u0653\u0654\7P\2\2\u0654\u0655\7C\2\2\u0655\u0656\7O\2"+ + "\2\u0656\u0657\7G\2\2\u0657\u0658\7U\2\2\u0658\u0659\7R\2\2\u0659\u065a"+ + "\7C\2\2\u065a\u065b\7E\2\2\u065b\u065c\7G\2\2\u065c\u012c\3\2\2\2\u065d"+ + "\u065e\7P\2\2\u065e\u065f\7C\2\2\u065f\u0660\7O\2\2\u0660\u0661\7G\2\2"+ + "\u0661\u0662\7U\2\2\u0662\u0663\7R\2\2\u0663\u0664\7C\2\2\u0664\u0665"+ + "\7E\2\2\u0665\u0666\7G\2\2\u0666\u0667\7U\2\2\u0667\u012e\3\2\2\2\u0668"+ + "\u0669\7P\2\2\u0669\u066a\7C\2\2\u066a\u066b\7V\2\2\u066b\u066c\7W\2\2"+ + "\u066c\u066d\7T\2\2\u066d\u066e\7C\2\2\u066e\u066f\7N\2\2\u066f\u0130"+ + "\3\2\2\2\u0670\u0671\7P\2\2\u0671\u0672\7Q\2\2\u0672\u0132\3\2\2\2\u0673"+ + "\u0674\7P\2\2\u0674\u0675\7Q\2\2\u0675\u0678\7V\2\2\u0676\u0678\7#\2\2"+ + "\u0677\u0673\3\2\2\2\u0677\u0676\3\2\2\2\u0678\u0134\3\2\2\2\u0679\u067a"+ + "\7P\2\2\u067a\u067b\7W\2\2\u067b\u067c\7N\2\2\u067c\u067d\7N\2\2\u067d"+ + "\u0136\3\2\2\2\u067e\u067f\7P\2\2\u067f\u0680\7W\2\2\u0680\u0681\7N\2"+ + "\2\u0681\u0682\7N\2\2\u0682\u0683\7U\2\2\u0683\u0138\3\2\2\2\u0684\u0685"+ + "\7Q\2\2\u0685\u0686\7H\2\2\u0686\u013a\3\2\2\2\u0687\u0688\7Q\2\2\u0688"+ + "\u0689\7P\2\2\u0689\u013c\3\2\2\2\u068a\u068b\7Q\2\2\u068b\u068c\7P\2"+ + "\2\u068c\u068d\7N\2\2\u068d\u068e\7[\2\2\u068e\u013e\3\2\2\2\u068f\u0690"+ + "\7Q\2\2\u0690\u0691\7R\2\2\u0691\u0692\7V\2\2\u0692\u0693\7K\2\2\u0693"+ + "\u0694\7Q\2\2\u0694\u0695\7P\2\2\u0695\u0140\3\2\2\2\u0696\u0697\7Q\2"+ + "\2\u0697\u0698\7R\2\2\u0698\u0699\7V\2\2\u0699\u069a\7K\2\2\u069a\u069b"+ + "\7Q\2\2\u069b\u069c\7P\2\2\u069c\u069d\7U\2\2\u069d\u0142\3\2\2\2\u069e"+ + "\u069f\7Q\2\2\u069f\u06a0\7T\2\2\u06a0\u0144\3\2\2\2\u06a1\u06a2\7Q\2"+ + "\2\u06a2\u06a3\7T\2\2\u06a3\u06a4\7F\2\2\u06a4\u06a5\7G\2\2\u06a5\u06a6"+ + "\7T\2\2\u06a6\u0146\3\2\2\2\u06a7\u06a8\7Q\2\2\u06a8\u06a9\7W\2\2\u06a9"+ + "\u06aa\7V\2\2\u06aa\u0148\3\2\2\2\u06ab\u06ac\7Q\2\2\u06ac\u06ad\7W\2"+ + "\2\u06ad\u06ae\7V\2\2\u06ae\u06af\7G\2\2\u06af\u06b0\7T\2\2\u06b0\u014a"+ + "\3\2\2\2\u06b1\u06b2\7Q\2\2\u06b2\u06b3\7W\2\2\u06b3\u06b4\7V\2\2\u06b4"+ + "\u06b5\7R\2\2\u06b5\u06b6\7W\2\2\u06b6\u06b7\7V\2\2\u06b7\u06b8\7H\2\2"+ + "\u06b8\u06b9\7Q\2\2\u06b9\u06ba\7T\2\2\u06ba\u06bb\7O\2\2\u06bb\u06bc"+ + "\7C\2\2\u06bc\u06bd\7V\2\2\u06bd\u014c\3\2\2\2\u06be\u06bf\7Q\2\2\u06bf"+ + "\u06c0\7X\2\2\u06c0\u06c1\7G\2\2\u06c1\u06c2\7T\2\2\u06c2\u014e\3\2\2"+ + "\2\u06c3\u06c4\7Q\2\2\u06c4\u06c5\7X\2\2\u06c5\u06c6\7G\2\2\u06c6\u06c7"+ + "\7T\2\2\u06c7\u06c8\7N\2\2\u06c8\u06c9\7C\2\2\u06c9\u06ca\7R\2\2\u06ca"+ + "\u06cb\7U\2\2\u06cb\u0150\3\2\2\2\u06cc\u06cd\7Q\2\2\u06cd\u06ce\7X\2"+ + "\2\u06ce\u06cf\7G\2\2\u06cf\u06d0\7T\2\2\u06d0\u06d1\7N\2\2\u06d1\u06d2"+ + "\7C\2\2\u06d2\u06d3\7[\2\2\u06d3\u0152\3\2\2\2\u06d4\u06d5\7Q\2\2\u06d5"+ + "\u06d6\7X\2\2\u06d6\u06d7\7G\2\2\u06d7\u06d8\7T\2\2\u06d8\u06d9\7Y\2\2"+ + "\u06d9\u06da\7T\2\2\u06da\u06db\7K\2\2\u06db\u06dc\7V\2\2\u06dc\u06dd"+ + "\7G\2\2\u06dd\u0154\3\2\2\2\u06de\u06df\7R\2\2\u06df\u06e0\7C\2\2\u06e0"+ + "\u06e1\7T\2\2\u06e1\u06e2\7V\2\2\u06e2\u06e3\7K\2\2\u06e3\u06e4\7V\2\2"+ + "\u06e4\u06e5\7K\2\2\u06e5\u06e6\7Q\2\2\u06e6\u06e7\7P\2\2\u06e7\u0156"+ + "\3\2\2\2\u06e8\u06e9\7R\2\2\u06e9\u06ea\7C\2\2\u06ea\u06eb\7T\2\2\u06eb"+ + "\u06ec\7V\2\2\u06ec\u06ed\7K\2\2\u06ed\u06ee\7V\2\2\u06ee\u06ef\7K\2\2"+ + "\u06ef\u06f0\7Q\2\2\u06f0\u06f1\7P\2\2\u06f1\u06f2\7G\2\2\u06f2\u06f3"+ + "\7F\2\2\u06f3\u0158\3\2\2\2\u06f4\u06f5\7R\2\2\u06f5\u06f6\7C\2\2\u06f6"+ + "\u06f7\7T\2\2\u06f7\u06f8\7V\2\2\u06f8\u06f9\7K\2\2\u06f9\u06fa\7V\2\2"+ + "\u06fa\u06fb\7K\2\2\u06fb\u06fc\7Q\2\2\u06fc\u06fd\7P\2\2\u06fd\u06fe"+ + "\7U\2\2\u06fe\u015a\3\2\2\2\u06ff\u0700\7R\2\2\u0700\u0701\7G\2\2\u0701"+ + "\u0702\7T\2\2\u0702\u0703\7E\2\2\u0703\u0704\7G\2\2\u0704\u0705\7P\2\2"+ + "\u0705\u0706\7V\2\2\u0706\u015c\3\2\2\2\u0707\u0708\7R\2\2\u0708\u0709"+ + "\7K\2\2\u0709\u070a\7X\2\2\u070a\u070b\7Q\2\2\u070b\u070c\7V\2\2\u070c"+ + "\u015e\3\2\2\2\u070d\u070e\7R\2\2\u070e\u070f\7N\2\2\u070f\u0710\7C\2"+ + "\2\u0710\u0711\7E\2\2\u0711\u0712\7K\2\2\u0712\u0713\7P\2\2\u0713\u0714"+ + "\7I\2\2\u0714\u0160\3\2\2\2\u0715\u0716\7R\2\2\u0716\u0717\7Q\2\2\u0717"+ + "\u0718\7U\2\2\u0718\u0719\7K\2\2\u0719\u071a\7V\2\2\u071a\u071b\7K\2\2"+ + "\u071b\u071c\7Q\2\2\u071c\u071d\7P\2\2\u071d\u0162\3\2\2\2\u071e\u071f"+ + "\7R\2\2\u071f\u0720\7T\2\2\u0720\u0721\7G\2\2\u0721\u0722\7E\2\2\u0722"+ + "\u0723\7G\2\2\u0723\u0724\7F\2\2\u0724\u0725\7K\2\2\u0725\u0726\7P\2\2"+ + "\u0726\u0727\7I\2\2\u0727\u0164\3\2\2\2\u0728\u0729\7R\2\2\u0729\u072a"+ + "\7T\2\2\u072a\u072b\7K\2\2\u072b\u072c\7O\2\2\u072c\u072d\7C\2\2\u072d"+ + "\u072e\7T\2\2\u072e\u072f\7[\2\2\u072f\u0166\3\2\2\2\u0730\u0731\7R\2"+ + "\2\u0731\u0732\7T\2\2\u0732\u0733\7K\2\2\u0733\u0734\7P\2\2\u0734\u0735"+ + "\7E\2\2\u0735\u0736\7K\2\2\u0736\u0737\7R\2\2\u0737\u0738\7C\2\2\u0738"+ + "\u0739\7N\2\2\u0739\u073a\7U\2\2\u073a\u0168\3\2\2\2\u073b\u073c\7R\2"+ + "\2\u073c\u073d\7T\2\2\u073d\u073e\7Q\2\2\u073e\u073f\7R\2\2\u073f\u0740"+ + "\7G\2\2\u0740\u0741\7T\2\2\u0741\u0742\7V\2\2\u0742\u0743\7K\2\2\u0743"+ + "\u0744\7G\2\2\u0744\u0745\7U\2\2\u0745\u016a\3\2\2\2\u0746\u0747\7R\2"+ + "\2\u0747\u0748\7W\2\2\u0748\u0749\7T\2\2\u0749\u074a\7I\2\2\u074a\u074b"+ + "\7G\2\2\u074b\u016c\3\2\2\2\u074c\u074d\7S\2\2\u074d\u074e\7W\2\2\u074e"+ + "\u074f\7G\2\2\u074f\u0750\7T\2\2\u0750\u0751\7[\2\2\u0751\u016e\3\2\2"+ + "\2\u0752\u0753\7T\2\2\u0753\u0754\7C\2\2\u0754\u0755\7P\2\2\u0755\u0756"+ + "\7I\2\2\u0756\u0757\7G\2\2\u0757\u0170\3\2\2\2\u0758\u0759\7T\2\2\u0759"+ + "\u075a\7G\2\2\u075a\u075b\7E\2\2\u075b\u075c\7Q\2\2\u075c\u075d\7T\2\2"+ + "\u075d\u075e\7F\2\2\u075e\u075f\7T\2\2\u075f\u0760\7G\2\2\u0760\u0761"+ + "\7C\2\2\u0761\u0762\7F\2\2\u0762\u0763\7G\2\2\u0763\u0764\7T\2\2\u0764"+ + "\u0172\3\2\2\2\u0765\u0766\7T\2\2\u0766\u0767\7G\2\2\u0767\u0768\7E\2"+ + "\2\u0768\u0769\7Q\2\2\u0769\u076a\7T\2\2\u076a\u076b\7F\2\2\u076b\u076c"+ + "\7Y\2\2\u076c\u076d\7T\2\2\u076d\u076e\7K\2\2\u076e\u076f\7V\2\2\u076f"+ + "\u0770\7G\2\2\u0770\u0771\7T\2\2\u0771\u0174\3\2\2\2\u0772\u0773\7T\2"+ + "\2\u0773\u0774\7G\2\2\u0774\u0775\7E\2\2\u0775\u0776\7Q\2\2\u0776\u0777"+ + "\7X\2\2\u0777\u0778\7G\2\2\u0778\u0779\7T\2\2\u0779\u0176\3\2\2\2\u077a"+ + "\u077b\7T\2\2\u077b\u077c\7G\2\2\u077c\u077d\7F\2\2\u077d\u077e\7W\2\2"+ + "\u077e\u077f\7E\2\2\u077f\u0780\7G\2\2\u0780\u0178\3\2\2\2\u0781\u0782"+ + "\7T\2\2\u0782\u0783\7G\2\2\u0783\u0784\7H\2\2\u0784\u0785\7G\2\2\u0785"+ + "\u0786\7T\2\2\u0786\u0787\7G\2\2\u0787\u0788\7P\2\2\u0788\u0789\7E\2\2"+ + "\u0789\u078a\7G\2\2\u078a\u078b\7U\2\2\u078b\u017a\3\2\2\2\u078c\u078d"+ + "\7T\2\2\u078d\u078e\7G\2\2\u078e\u078f\7H\2\2\u078f\u0790\7T\2\2\u0790"+ + "\u0791\7G\2\2\u0791\u0792\7U\2\2\u0792\u0793\7J\2\2\u0793\u017c\3\2\2"+ + "\2\u0794\u0795\7T\2\2\u0795\u0796\7G\2\2\u0796\u0797\7P\2\2\u0797\u0798"+ + "\7C\2\2\u0798\u0799\7O\2\2\u0799\u079a\7G\2\2\u079a\u017e\3\2\2\2\u079b"+ + "\u079c\7T\2\2\u079c\u079d\7G\2\2\u079d\u079e\7R\2\2\u079e\u079f\7C\2\2"+ + "\u079f\u07a0\7K\2\2\u07a0\u07a1\7T\2\2\u07a1\u0180\3\2\2\2\u07a2\u07a3"+ + "\7T\2\2\u07a3\u07a4\7G\2\2\u07a4\u07a5\7R\2\2\u07a5\u07a6\7N\2\2\u07a6"+ + "\u07a7\7C\2\2\u07a7\u07a8\7E\2\2\u07a8\u07a9\7G\2\2\u07a9\u0182\3\2\2"+ + "\2\u07aa\u07ab\7T\2\2\u07ab\u07ac\7G\2\2\u07ac\u07ad\7U\2\2\u07ad\u07ae"+ + "\7G\2\2\u07ae\u07af\7V\2\2\u07af\u0184\3\2\2\2\u07b0\u07b1\7T\2\2\u07b1"+ + "\u07b2\7G\2\2\u07b2\u07b3\7U\2\2\u07b3\u07b4\7V\2\2\u07b4\u07b5\7T\2\2"+ + "\u07b5\u07b6\7K\2\2\u07b6\u07b7\7E\2\2\u07b7\u07b8\7V\2\2\u07b8\u0186"+ + "\3\2\2\2\u07b9\u07ba\7T\2\2\u07ba\u07bb\7G\2\2\u07bb\u07bc\7X\2\2\u07bc"+ + "\u07bd\7Q\2\2\u07bd\u07be\7M\2\2\u07be\u07bf\7G\2\2\u07bf\u0188\3\2\2"+ + "\2\u07c0\u07c1\7T\2\2\u07c1\u07c2\7K\2\2\u07c2\u07c3\7I\2\2\u07c3\u07c4"+ + "\7J\2\2\u07c4\u07c5\7V\2\2\u07c5\u018a\3\2\2\2\u07c6\u07c7\7T\2\2\u07c7"+ + "\u07c8\7N\2\2\u07c8\u07c9\7K\2\2\u07c9\u07ca\7M\2\2\u07ca\u07d2\7G\2\2"+ + "\u07cb\u07cc\7T\2\2\u07cc\u07cd\7G\2\2\u07cd\u07ce\7I\2\2\u07ce\u07cf"+ + "\7G\2\2\u07cf\u07d0\7Z\2\2\u07d0\u07d2\7R\2\2\u07d1\u07c6\3\2\2\2\u07d1"+ + "\u07cb\3\2\2\2\u07d2\u018c\3\2\2\2\u07d3\u07d4\7T\2\2\u07d4\u07d5\7Q\2"+ + "\2\u07d5\u07d6\7N\2\2\u07d6\u07d7\7G\2\2\u07d7\u018e\3\2\2\2\u07d8\u07d9"+ + "\7T\2\2\u07d9\u07da\7Q\2\2\u07da\u07db\7N\2\2\u07db\u07dc\7G\2\2\u07dc"+ + "\u07dd\7U\2\2\u07dd\u0190\3\2\2\2\u07de\u07df\7T\2\2\u07df\u07e0\7Q\2"+ + "\2\u07e0\u07e1\7N\2\2\u07e1\u07e2\7N\2\2\u07e2\u07e3\7D\2\2\u07e3\u07e4"+ + "\7C\2\2\u07e4\u07e5\7E\2\2\u07e5\u07e6\7M\2\2\u07e6\u0192\3\2\2\2\u07e7"+ + "\u07e8\7T\2\2\u07e8\u07e9\7Q\2\2\u07e9\u07ea\7N\2\2\u07ea\u07eb\7N\2\2"+ + "\u07eb\u07ec\7W\2\2\u07ec\u07ed\7R\2\2\u07ed\u0194\3\2\2\2\u07ee\u07ef"+ + "\7T\2\2\u07ef\u07f0\7Q\2\2\u07f0\u07f1\7Y\2\2\u07f1\u0196\3\2\2\2\u07f2"+ + "\u07f3\7T\2\2\u07f3\u07f4\7Q\2\2\u07f4\u07f5\7Y\2\2\u07f5\u07f6\7U\2\2"+ + "\u07f6\u0198\3\2\2\2\u07f7\u07f8\7U\2\2\u07f8\u07f9\7E\2\2\u07f9\u07fa"+ + "\7J\2\2\u07fa\u07fb\7G\2\2\u07fb\u07fc\7O\2\2\u07fc\u07fd\7C\2\2\u07fd"+ + "\u019a\3\2\2\2\u07fe\u07ff\7U\2\2\u07ff\u0800\7G\2\2\u0800\u0801\7E\2"+ + "\2\u0801\u0802\7Q\2\2\u0802\u0803\7P\2\2\u0803\u0804\7F\2\2\u0804\u019c"+ + "\3\2\2\2\u0805\u0806\7U\2\2\u0806\u0807\7G\2\2\u0807\u0808\7N\2\2\u0808"+ + "\u0809\7G\2\2\u0809\u080a\7E\2\2\u080a\u080b\7V\2\2\u080b\u019e\3\2\2"+ + "\2\u080c\u080d\7U\2\2\u080d\u080e\7G\2\2\u080e\u080f\7O\2\2\u080f\u0810"+ + "\7K\2\2\u0810\u01a0\3\2\2\2\u0811\u0812\7U\2\2\u0812\u0813\7G\2\2\u0813"+ + "\u0814\7R\2\2\u0814\u0815\7C\2\2\u0815\u0816\7T\2\2\u0816\u0817\7C\2\2"+ + "\u0817\u0818\7V\2\2\u0818\u0819\7G\2\2\u0819\u081a\7F\2\2\u081a\u01a2"+ + "\3\2\2\2\u081b\u081c\7U\2\2\u081c\u081d\7G\2\2\u081d\u081e\7T\2\2\u081e"+ + "\u081f\7F\2\2\u081f\u0820\7G\2\2\u0820\u01a4\3\2\2\2\u0821\u0822\7U\2"+ + "\2\u0822\u0823\7G\2\2\u0823\u0824\7T\2\2\u0824\u0825\7F\2\2\u0825\u0826"+ + "\7G\2\2\u0826\u0827\7R\2\2\u0827\u0828\7T\2\2\u0828\u0829\7Q\2\2\u0829"+ + "\u082a\7R\2\2\u082a\u082b\7G\2\2\u082b\u082c\7T\2\2\u082c\u082d\7V\2\2"+ + "\u082d\u082e\7K\2\2\u082e\u082f\7G\2\2\u082f\u0830\7U\2\2\u0830\u01a6"+ + "\3\2\2\2\u0831\u0832\7U\2\2\u0832\u0833\7G\2\2\u0833\u0834\7U\2\2\u0834"+ + "\u0835\7U\2\2\u0835\u0836\7K\2\2\u0836\u0837\7Q\2\2\u0837\u0838\7P\2\2"+ + "\u0838\u0839\7a\2\2\u0839\u083a\7W\2\2\u083a\u083b\7U\2\2\u083b\u083c"+ + "\7G\2\2\u083c\u083d\7T\2\2\u083d\u01a8\3\2\2\2\u083e\u083f\7U\2\2\u083f"+ + "\u0840\7G\2\2\u0840\u0841\7V\2\2\u0841\u01aa\3\2\2\2\u0842\u0843\7O\2"+ + "\2\u0843\u0844\7K\2\2\u0844\u0845\7P\2\2\u0845\u0846\7W\2\2\u0846\u0847"+ + "\7U\2\2\u0847\u01ac\3\2\2\2\u0848\u0849\7U\2\2\u0849\u084a\7G\2\2\u084a"+ + "\u084b\7V\2\2\u084b\u084c\7U\2\2\u084c\u01ae\3\2\2\2\u084d\u084e\7U\2"+ + "\2\u084e\u084f\7J\2\2\u084f\u0850\7Q\2\2\u0850\u0851\7Y\2\2\u0851\u01b0"+ + "\3\2\2\2\u0852\u0853\7U\2\2\u0853\u0854\7M\2\2\u0854\u0855\7G\2\2\u0855"+ + "\u0856\7Y\2\2\u0856\u0857\7G\2\2\u0857\u0858\7F\2\2\u0858\u01b2\3\2\2"+ + "\2\u0859\u085a\7U\2\2\u085a\u085b\7Q\2\2\u085b\u085c\7O\2\2\u085c\u085d"+ + "\7G\2\2\u085d\u01b4\3\2\2\2\u085e\u085f\7U\2\2\u085f\u0860\7Q\2\2\u0860"+ + "\u0861\7T\2\2\u0861\u0862\7V\2\2\u0862\u01b6\3\2\2\2\u0863\u0864\7U\2"+ + "\2\u0864\u0865\7Q\2\2\u0865\u0866\7T\2\2\u0866\u0867\7V\2\2\u0867\u0868"+ + "\7G\2\2\u0868\u0869\7F\2\2\u0869\u01b8\3\2\2\2\u086a\u086b\7U\2\2\u086b"+ + "\u086c\7V\2\2\u086c\u086d\7C\2\2\u086d\u086e\7T\2\2\u086e\u086f\7V\2\2"+ + "\u086f\u01ba\3\2\2\2\u0870\u0871\7U\2\2\u0871\u0872\7V\2\2\u0872\u0873"+ + "\7C\2\2\u0873\u0874\7V\2\2\u0874\u0875\7K\2\2\u0875\u0876\7U\2\2\u0876"+ + "\u0877\7V\2\2\u0877\u0878\7K\2\2\u0878\u0879\7E\2\2\u0879\u087a\7U\2\2"+ + "\u087a\u01bc\3\2\2\2\u087b\u087c\7U\2\2\u087c\u087d\7V\2\2\u087d\u087e"+ + "\7Q\2\2\u087e\u087f\7T\2\2\u087f\u0880\7G\2\2\u0880\u0881\7F\2\2\u0881"+ + "\u01be\3\2\2\2\u0882\u0883\7U\2\2\u0883\u0884\7V\2\2\u0884\u0885\7T\2"+ + "\2\u0885\u0886\7C\2\2\u0886\u0887\7V\2\2\u0887\u0888\7K\2\2\u0888\u0889"+ + "\7H\2\2\u0889\u088a\7[\2\2\u088a\u01c0\3\2\2\2\u088b\u088c\7U\2\2\u088c"+ + "\u088d\7V\2\2\u088d\u088e\7T\2\2\u088e\u088f\7W\2\2\u088f\u0890\7E\2\2"+ + "\u0890\u0891\7V\2\2\u0891\u01c2\3\2\2\2\u0892\u0893\7U\2\2\u0893\u0894"+ + "\7W\2\2\u0894\u0895\7D\2\2\u0895\u0896\7U\2\2\u0896\u0897\7V\2\2\u0897"+ + "\u0898\7T\2\2\u0898\u01c4\3\2\2\2\u0899\u089a\7U\2\2\u089a\u089b\7W\2"+ + "\2\u089b\u089c\7D\2\2\u089c\u089d\7U\2\2\u089d\u089e\7V\2\2\u089e\u089f"+ + "\7T\2\2\u089f\u08a0\7K\2\2\u08a0\u08a1\7P\2\2\u08a1\u08a2\7I\2\2\u08a2"+ + "\u01c6\3\2\2\2\u08a3\u08a4\7V\2\2\u08a4\u08a5\7C\2\2\u08a5\u08a6\7D\2"+ + "\2\u08a6\u08a7\7N\2\2\u08a7\u08a8\7G\2\2\u08a8\u01c8\3\2\2\2\u08a9\u08aa"+ + "\7V\2\2\u08aa\u08ab\7C\2\2\u08ab\u08ac\7D\2\2\u08ac\u08ad\7N\2\2\u08ad"+ + "\u08ae\7G\2\2\u08ae\u08af\7U\2\2\u08af\u01ca\3\2\2\2\u08b0\u08b1\7V\2"+ + "\2\u08b1\u08b2\7C\2\2\u08b2\u08b3\7D\2\2\u08b3\u08b4\7N\2\2\u08b4\u08b5"+ + "\7G\2\2\u08b5\u08b6\7U\2\2\u08b6\u08b7\7C\2\2\u08b7\u08b8\7O\2\2\u08b8"+ + "\u08b9\7R\2\2\u08b9\u08ba\7N\2\2\u08ba\u08bb\7G\2\2\u08bb\u01cc\3\2\2"+ + "\2\u08bc\u08bd\7V\2\2\u08bd\u08be\7D\2\2\u08be\u08bf\7N\2\2\u08bf\u08c0"+ + "\7R\2\2\u08c0\u08c1\7T\2\2\u08c1\u08c2\7Q\2\2\u08c2\u08c3\7R\2\2\u08c3"+ + "\u08c4\7G\2\2\u08c4\u08c5\7T\2\2\u08c5\u08c6\7V\2\2\u08c6\u08c7\7K\2\2"+ + "\u08c7\u08c8\7G\2\2\u08c8\u08c9\7U\2\2\u08c9\u01ce\3\2\2\2\u08ca\u08cb"+ + "\7V\2\2\u08cb\u08cc\7G\2\2\u08cc\u08cd\7O\2\2\u08cd\u08ce\7R\2\2\u08ce"+ + "\u08cf\7Q\2\2\u08cf\u08d0\7T\2\2\u08d0\u08d1\7C\2\2\u08d1\u08d2\7T\2\2"+ + "\u08d2\u08d8\7[\2\2\u08d3\u08d4\7V\2\2\u08d4\u08d5\7G\2\2\u08d5\u08d6"+ + "\7O\2\2\u08d6\u08d8\7R\2\2\u08d7\u08ca\3\2\2\2\u08d7\u08d3\3\2\2\2\u08d8"+ + "\u01d0\3\2\2\2\u08d9\u08da\7V\2\2\u08da\u08db\7G\2\2\u08db\u08dc\7T\2"+ + "\2\u08dc\u08dd\7O\2\2\u08dd\u08de\7K\2\2\u08de\u08df\7P\2\2\u08df\u08e0"+ + "\7C\2\2\u08e0\u08e1\7V\2\2\u08e1\u08e2\7G\2\2\u08e2\u08e3\7F\2\2\u08e3"+ + "\u01d2\3\2\2\2\u08e4\u08e5\7V\2\2\u08e5\u08e6\7J\2\2\u08e6\u08e7\7G\2"+ + "\2\u08e7\u08e8\7P\2\2\u08e8\u01d4\3\2\2\2\u08e9\u08ea\7V\2\2\u08ea\u08eb"+ + "\7Q\2\2\u08eb\u01d6\3\2\2\2\u08ec\u08ed\7V\2\2\u08ed\u08ee\7Q\2\2\u08ee"+ + "\u08ef\7W\2\2\u08ef\u08f0\7E\2\2\u08f0\u08f1\7J\2\2\u08f1\u01d8\3\2\2"+ + "\2\u08f2\u08f3\7V\2\2\u08f3\u08f4\7T\2\2\u08f4\u08f5\7C\2\2\u08f5\u08f6"+ + "\7K\2\2\u08f6\u08f7\7N\2\2\u08f7\u08f8\7K\2\2\u08f8\u08f9\7P\2\2\u08f9"+ + "\u08fa\7I\2\2\u08fa\u01da\3\2\2\2\u08fb\u08fc\7V\2\2\u08fc\u08fd\7T\2"+ + "\2\u08fd\u08fe\7C\2\2\u08fe\u08ff\7P\2\2\u08ff\u0900\7U\2\2\u0900\u0901"+ + "\7C\2\2\u0901\u0902\7E\2\2\u0902\u0903\7V\2\2\u0903\u0904\7K\2\2\u0904"+ + "\u0905\7Q\2\2\u0905\u0906\7P\2\2\u0906\u01dc\3\2\2\2\u0907\u0908\7V\2"+ + "\2\u0908\u0909\7T\2\2\u0909\u090a\7C\2\2\u090a\u090b\7P\2\2\u090b\u090c"+ + "\7U\2\2\u090c\u090d\7C\2\2\u090d\u090e\7E\2\2\u090e\u090f\7V\2\2\u090f"+ + "\u0910\7K\2\2\u0910\u0911\7Q\2\2\u0911\u0912\7P\2\2\u0912\u0913\7U\2\2"+ + "\u0913\u01de\3\2\2\2\u0914\u0915\7V\2\2\u0915\u0916\7T\2\2\u0916\u0917"+ + "\7C\2\2\u0917\u0918\7P\2\2\u0918\u0919\7U\2\2\u0919\u091a\7H\2\2\u091a"+ + "\u091b\7Q\2\2\u091b\u091c\7T\2\2\u091c\u091d\7O\2\2\u091d\u01e0\3\2\2"+ + "\2\u091e\u091f\7V\2\2\u091f\u0920\7T\2\2\u0920\u0921\7K\2\2\u0921\u0922"+ + "\7O\2\2\u0922\u01e2\3\2\2\2\u0923\u0924\7V\2\2\u0924\u0925\7T\2\2\u0925"+ + "\u0926\7W\2\2\u0926\u0927\7G\2\2\u0927\u01e4\3\2\2\2\u0928\u0929\7V\2"+ + "\2\u0929\u092a\7T\2\2\u092a\u092b\7W\2\2\u092b\u092c\7P\2\2\u092c\u092d"+ + "\7E\2\2\u092d\u092e\7C\2\2\u092e\u092f\7V\2\2\u092f\u0930\7G\2\2\u0930"+ + "\u01e6\3\2\2\2\u0931\u0932\7V\2\2\u0932\u0933\7[\2\2\u0933\u0934\7R\2"+ + "\2\u0934\u0935\7G\2\2\u0935\u01e8\3\2\2\2\u0936\u0937\7W\2\2\u0937\u0938"+ + "\7P\2\2\u0938\u0939\7C\2\2\u0939\u093a\7T\2\2\u093a\u093b\7E\2\2\u093b"+ + "\u093c\7J\2\2\u093c\u093d\7K\2\2\u093d\u093e\7X\2\2\u093e\u093f\7G\2\2"+ + "\u093f\u01ea\3\2\2\2\u0940\u0941\7W\2\2\u0941\u0942\7P\2\2\u0942\u0943"+ + "\7D\2\2\u0943\u0944\7Q\2\2\u0944\u0945\7W\2\2\u0945\u0946\7P\2\2\u0946"+ + "\u0947\7F\2\2\u0947\u0948\7G\2\2\u0948\u0949\7F\2\2\u0949\u01ec\3\2\2"+ + "\2\u094a\u094b\7W\2\2\u094b\u094c\7P\2\2\u094c\u094d\7E\2\2\u094d\u094e"+ + "\7C\2\2\u094e\u094f\7E\2\2\u094f\u0950\7J\2\2\u0950\u0951\7G\2\2\u0951"+ + "\u01ee\3\2\2\2\u0952\u0953\7W\2\2\u0953\u0954\7P\2\2\u0954\u0955\7K\2"+ + "\2\u0955\u0956\7Q\2\2\u0956\u0957\7P\2\2\u0957\u01f0\3\2\2\2\u0958\u0959"+ + "\7W\2\2\u0959\u095a\7P\2\2\u095a\u095b\7K\2\2\u095b\u095c\7S\2\2\u095c"+ + "\u095d\7W\2\2\u095d\u095e\7G\2\2\u095e\u01f2\3\2\2\2\u095f\u0960\7W\2"+ + "\2\u0960\u0961\7P\2\2\u0961\u0962\7M\2\2\u0962\u0963\7P\2\2\u0963\u0964"+ + "\7Q\2\2\u0964\u0965\7Y\2\2\u0965\u0966\7P\2\2\u0966\u01f4\3\2\2\2\u0967"+ + "\u0968\7W\2\2\u0968\u0969\7P\2\2\u0969\u096a\7N\2\2\u096a\u096b\7Q\2\2"+ + "\u096b\u096c\7E\2\2\u096c\u096d\7M\2\2\u096d\u01f6\3\2\2\2\u096e\u096f"+ + "\7W\2\2\u096f\u0970\7P\2\2\u0970\u0971\7U\2\2\u0971\u0972\7G\2\2\u0972"+ + "\u0973\7V\2\2\u0973\u01f8\3\2\2\2\u0974\u0975\7W\2\2\u0975\u0976\7R\2"+ + "\2\u0976\u0977\7F\2\2\u0977\u0978\7C\2\2\u0978\u0979\7V\2\2\u0979\u097a"+ + "\7G\2\2\u097a\u01fa\3\2\2\2\u097b\u097c\7W\2\2\u097c\u097d\7U\2\2\u097d"+ + "\u097e\7G\2\2\u097e\u01fc\3\2\2\2\u097f\u0980\7W\2\2\u0980\u0981\7U\2"+ + "\2\u0981\u0982\7G\2\2\u0982\u0983\7T\2\2\u0983\u01fe\3\2\2\2\u0984\u0985"+ + "\7W\2\2\u0985\u0986\7U\2\2\u0986\u0987\7K\2\2\u0987\u0988\7P\2\2\u0988"+ + "\u0989\7I\2\2\u0989\u0200\3\2\2\2\u098a\u098b\7X\2\2\u098b\u098c\7C\2"+ + "\2\u098c\u098d\7N\2\2\u098d\u098e\7W\2\2\u098e\u098f\7G\2\2\u098f\u0990"+ + "\7U\2\2\u0990\u0202\3\2\2\2\u0991\u0992\7X\2\2\u0992\u0993\7K\2\2\u0993"+ + "\u0994\7G\2\2\u0994\u0995\7Y\2\2\u0995\u0204\3\2\2\2\u0996\u0997\7X\2"+ + "\2\u0997\u0998\7K\2\2\u0998\u0999\7G\2\2\u0999\u099a\7Y\2\2\u099a\u099b"+ + "\7U\2\2\u099b\u0206\3\2\2\2\u099c\u099d\7Y\2\2\u099d\u099e\7J\2\2\u099e"+ + "\u099f\7G\2\2\u099f\u09a0\7P\2\2\u09a0\u0208\3\2\2\2\u09a1\u09a2\7Y\2"+ + "\2\u09a2\u09a3\7J\2\2\u09a3\u09a4\7G\2\2\u09a4\u09a5\7T\2\2\u09a5\u09a6"+ + "\7G\2\2\u09a6\u020a\3\2\2\2\u09a7\u09a8\7Y\2\2\u09a8\u09a9\7K\2\2\u09a9"+ + "\u09aa\7P\2\2\u09aa\u09ab\7F\2\2\u09ab\u09ac\7Q\2\2\u09ac\u09ad\7Y\2\2"+ + "\u09ad\u020c\3\2\2\2\u09ae\u09af\7Y\2\2\u09af\u09b0\7K\2\2\u09b0\u09b1"+ + "\7V\2\2\u09b1\u09b2\7J\2\2\u09b2\u020e\3\2\2\2\u09b3\u09b4\7[\2\2\u09b4"+ + "\u09b5\7G\2\2\u09b5\u09b6\7C\2\2\u09b6\u09b7\7T\2\2\u09b7\u0210\3\2\2"+ + "\2\u09b8\u09bc\7?\2\2\u09b9\u09ba\7?\2\2\u09ba\u09bc\7?\2\2\u09bb\u09b8"+ + "\3\2\2\2\u09bb\u09b9\3\2\2\2\u09bc\u0212\3\2\2\2\u09bd\u09be\7>\2\2\u09be"+ + "\u09bf\7?\2\2\u09bf\u09c0\7@\2\2\u09c0\u0214\3\2\2\2\u09c1\u09c2\7>\2"+ + "\2\u09c2\u09c3\7@\2\2\u09c3\u0216\3\2\2\2\u09c4\u09c5\7#\2\2\u09c5\u09c6"+ + "\7?\2\2\u09c6\u0218\3\2\2\2\u09c7\u09c8\7>\2\2\u09c8\u021a\3\2\2\2\u09c9"+ + "\u09ca\7>\2\2\u09ca\u09ce\7?\2\2\u09cb\u09cc\7#\2\2\u09cc\u09ce\7@\2\2"+ + "\u09cd\u09c9\3\2\2\2\u09cd\u09cb\3\2\2\2\u09ce\u021c\3\2\2\2\u09cf\u09d0"+ + "\7@\2\2\u09d0\u021e\3\2\2\2\u09d1\u09d2\7@\2\2\u09d2\u09d6\7?\2\2\u09d3"+ + "\u09d4\7#\2\2\u09d4\u09d6\7>\2\2\u09d5\u09d1\3\2\2\2\u09d5\u09d3\3\2\2"+ + "\2\u09d6\u0220\3\2\2\2\u09d7\u09d8\7-\2\2\u09d8\u0222\3\2\2\2\u09d9\u09da"+ + "\7/\2\2\u09da\u0224\3\2\2\2\u09db\u09dc\7,\2\2\u09dc\u0226\3\2\2\2\u09dd"+ + "\u09de\7\61\2\2\u09de\u0228\3\2\2\2\u09df\u09e0\7\'\2\2\u09e0\u022a\3"+ + "\2\2\2\u09e1\u09e2\7F\2\2\u09e2\u09e3\7K\2\2\u09e3\u09e4\7X\2\2\u09e4"+ + "\u022c\3\2\2\2\u09e5\u09e6\7\u0080\2\2\u09e6\u022e\3\2\2\2\u09e7\u09e8"+ + "\7(\2\2\u09e8\u0230\3\2\2\2\u09e9\u09ea\7~\2\2\u09ea\u0232\3\2\2\2\u09eb"+ + "\u09ec\7~\2\2\u09ec\u09ed\7~\2\2\u09ed\u0234\3\2\2\2\u09ee\u09ef\7`\2"+ + "\2\u09ef\u0236\3\2\2\2\u09f0\u09f6\7)\2\2\u09f1\u09f5\n\2\2\2\u09f2\u09f3"+ + "\7^\2\2\u09f3\u09f5\13\2\2\2\u09f4\u09f1\3\2\2\2\u09f4\u09f2\3\2\2\2\u09f5"+ + "\u09f8\3\2\2\2\u09f6\u09f4\3\2\2\2\u09f6\u09f7\3\2\2\2\u09f7\u09f9\3\2"+ + "\2\2\u09f8\u09f6\3\2\2\2\u09f9\u0a05\7)\2\2\u09fa\u0a00\7$\2\2\u09fb\u09ff"+ + "\n\3\2\2\u09fc\u09fd\7^\2\2\u09fd\u09ff\13\2\2\2\u09fe\u09fb\3\2\2\2\u09fe"+ + "\u09fc\3\2\2\2\u09ff\u0a02\3\2\2\2\u0a00\u09fe\3\2\2\2\u0a00\u0a01\3\2"+ + "\2\2\u0a01\u0a03\3\2\2\2\u0a02\u0a00\3\2\2\2\u0a03\u0a05\7$\2\2\u0a04"+ + "\u09f0\3\2\2\2\u0a04\u09fa\3\2\2\2\u0a05\u0238\3\2\2\2\u0a06\u0a08\5\u0251"+ + "\u0129\2\u0a07\u0a06\3\2\2\2\u0a08\u0a09\3\2\2\2\u0a09\u0a07\3\2\2\2\u0a09"+ + "\u0a0a\3\2\2\2\u0a0a\u0a0b\3\2\2\2\u0a0b\u0a0c\7N\2\2\u0a0c\u023a\3\2"+ + "\2\2\u0a0d\u0a0f\5\u0251\u0129\2\u0a0e\u0a0d\3\2\2\2\u0a0f\u0a10\3\2\2"+ + "\2\u0a10\u0a0e\3\2\2\2\u0a10\u0a11\3\2\2\2\u0a11\u0a12\3\2\2\2\u0a12\u0a13"+ + "\7U\2\2\u0a13\u023c\3\2\2\2\u0a14\u0a16\5\u0251\u0129\2\u0a15\u0a14\3"+ + "\2\2\2\u0a16\u0a17\3\2\2\2\u0a17\u0a15\3\2\2\2\u0a17\u0a18\3\2\2\2\u0a18"+ + "\u0a19\3\2\2\2\u0a19\u0a1a\7[\2\2\u0a1a\u023e\3\2\2\2\u0a1b\u0a1d\5\u0251"+ + "\u0129\2\u0a1c\u0a1b\3\2\2\2\u0a1d\u0a1e\3\2\2\2\u0a1e\u0a1c\3\2\2\2\u0a1e"+ + "\u0a1f\3\2\2\2\u0a1f\u0240\3\2\2\2\u0a20\u0a22\5\u0251\u0129\2\u0a21\u0a20"+ + "\3\2\2\2\u0a22\u0a23\3\2\2\2\u0a23\u0a21\3\2\2\2\u0a23\u0a24\3\2\2\2\u0a24"+ + "\u0a25\3\2\2\2\u0a25"; + private static final String _serializedATNSegment1 = + "\u0a26\5\u024f\u0128\2\u0a26\u0a2c\3\2\2\2\u0a27\u0a28\5\u024d\u0127\2"+ + "\u0a28\u0a29\5\u024f\u0128\2\u0a29\u0a2a\6\u0121\2\2\u0a2a\u0a2c\3\2\2"+ + "\2\u0a2b\u0a21\3\2\2\2\u0a2b\u0a27\3\2\2\2\u0a2c\u0242\3\2\2\2\u0a2d\u0a2e"+ + "\5\u024d\u0127\2\u0a2e\u0a2f\6\u0122\3\2\u0a2f\u0244\3\2\2\2\u0a30\u0a32"+ + "\5\u0251\u0129\2\u0a31\u0a30\3\2\2\2\u0a32\u0a33\3\2\2\2\u0a33\u0a31\3"+ + "\2\2\2\u0a33\u0a34\3\2\2\2\u0a34\u0a36\3\2\2\2\u0a35\u0a37\5\u024f\u0128"+ + "\2\u0a36\u0a35\3\2\2\2\u0a36\u0a37\3\2\2\2\u0a37\u0a38\3\2\2\2\u0a38\u0a39"+ + "\7F\2\2\u0a39\u0a42\3\2\2\2\u0a3a\u0a3c\5\u024d\u0127\2\u0a3b\u0a3d\5"+ + "\u024f\u0128\2\u0a3c\u0a3b\3\2\2\2\u0a3c\u0a3d\3\2\2\2\u0a3d\u0a3e\3\2"+ + "\2\2\u0a3e\u0a3f\7F\2\2\u0a3f\u0a40\6\u0123\4\2\u0a40\u0a42\3\2\2\2\u0a41"+ + "\u0a31\3\2\2\2\u0a41\u0a3a\3\2\2\2\u0a42\u0246\3\2\2\2\u0a43\u0a45\5\u0251"+ + "\u0129\2\u0a44\u0a43\3\2\2\2\u0a45\u0a46\3\2\2\2\u0a46\u0a44\3\2\2\2\u0a46"+ + "\u0a47\3\2\2\2\u0a47\u0a49\3\2\2\2\u0a48\u0a4a\5\u024f\u0128\2\u0a49\u0a48"+ + "\3\2\2\2\u0a49\u0a4a\3\2\2\2\u0a4a\u0a4b\3\2\2\2\u0a4b\u0a4c\7D\2\2\u0a4c"+ + "\u0a4d\7F\2\2\u0a4d\u0a58\3\2\2\2\u0a4e\u0a50\5\u024d\u0127\2\u0a4f\u0a51"+ + "\5\u024f\u0128\2\u0a50\u0a4f\3\2\2\2\u0a50\u0a51\3\2\2\2\u0a51\u0a52\3"+ + "\2\2\2\u0a52\u0a53\7D\2\2\u0a53\u0a54\7F\2\2\u0a54\u0a55\3\2\2\2\u0a55"+ + "\u0a56\6\u0124\5\2\u0a56\u0a58\3\2\2\2\u0a57\u0a44\3\2\2\2\u0a57\u0a4e"+ + "\3\2\2\2\u0a58\u0248\3\2\2\2\u0a59\u0a5d\5\u0253\u012a\2\u0a5a\u0a5d\5"+ + "\u0251\u0129\2\u0a5b\u0a5d\7a\2\2\u0a5c\u0a59\3\2\2\2\u0a5c\u0a5a\3\2"+ + "\2\2\u0a5c\u0a5b\3\2\2\2\u0a5d\u0a5e\3\2\2\2\u0a5e\u0a5c\3\2\2\2\u0a5e"+ + "\u0a5f\3\2\2\2\u0a5f\u024a\3\2\2\2\u0a60\u0a66\7b\2\2\u0a61\u0a65\n\4"+ + "\2\2\u0a62\u0a63\7b\2\2\u0a63\u0a65\7b\2\2\u0a64\u0a61\3\2\2\2\u0a64\u0a62"+ + "\3\2\2\2\u0a65\u0a68\3\2\2\2\u0a66\u0a64\3\2\2\2\u0a66\u0a67\3\2\2\2\u0a67"+ + "\u0a69\3\2\2\2\u0a68\u0a66\3\2\2\2\u0a69\u0a6a\7b\2\2\u0a6a\u024c\3\2"+ + "\2\2\u0a6b\u0a6d\5\u0251\u0129\2\u0a6c\u0a6b\3\2\2\2\u0a6d\u0a6e\3\2\2"+ + "\2\u0a6e\u0a6c\3\2\2\2\u0a6e\u0a6f\3\2\2\2\u0a6f\u0a70\3\2\2\2\u0a70\u0a74"+ + "\7\60\2\2\u0a71\u0a73\5\u0251\u0129\2\u0a72\u0a71\3\2\2\2\u0a73\u0a76"+ + "\3\2\2\2\u0a74\u0a72\3\2\2\2\u0a74\u0a75\3\2\2\2\u0a75\u0a7e\3\2\2\2\u0a76"+ + "\u0a74\3\2\2\2\u0a77\u0a79\7\60\2\2\u0a78\u0a7a\5\u0251\u0129\2\u0a79"+ + "\u0a78\3\2\2\2\u0a7a\u0a7b\3\2\2\2\u0a7b\u0a79\3\2\2\2\u0a7b\u0a7c\3\2"+ + "\2\2\u0a7c\u0a7e\3\2\2\2\u0a7d\u0a6c\3\2\2\2\u0a7d\u0a77\3\2\2\2\u0a7e"+ + "\u024e\3\2\2\2\u0a7f\u0a81\7G\2\2\u0a80\u0a82\t\5\2\2\u0a81\u0a80\3\2"+ + "\2\2\u0a81\u0a82\3\2\2\2\u0a82\u0a84\3\2\2\2\u0a83\u0a85\5\u0251\u0129"+ + "\2\u0a84\u0a83\3\2\2\2\u0a85\u0a86\3\2\2\2\u0a86\u0a84\3\2\2\2\u0a86\u0a87"+ + "\3\2\2\2\u0a87\u0250\3\2\2\2\u0a88\u0a89\t\6\2\2\u0a89\u0252\3\2\2\2\u0a8a"+ + "\u0a8b\t\7\2\2\u0a8b\u0254\3\2\2\2\u0a8c\u0a8d\7/\2\2\u0a8d\u0a8e\7/\2"+ + "\2\u0a8e\u0a92\3\2\2\2\u0a8f\u0a91\n\b\2\2\u0a90\u0a8f\3\2\2\2\u0a91\u0a94"+ + "\3\2\2\2\u0a92\u0a90\3\2\2\2\u0a92\u0a93\3\2\2\2\u0a93\u0a96\3\2\2\2\u0a94"+ + "\u0a92\3\2\2\2\u0a95\u0a97\7\17\2\2\u0a96\u0a95\3\2\2\2\u0a96\u0a97\3"+ + "\2\2\2\u0a97\u0a99\3\2\2\2\u0a98\u0a9a\7\f\2\2\u0a99\u0a98\3\2\2\2\u0a99"+ + "\u0a9a\3\2\2\2\u0a9a\u0a9b\3\2\2\2\u0a9b\u0a9c\b\u012b\2\2\u0a9c\u0256"+ + "\3\2\2\2\u0a9d\u0a9e\7\61\2\2\u0a9e\u0a9f\7,\2\2\u0a9f\u0aa0\3\2\2\2\u0aa0"+ + "\u0aa5\6\u012c\6\2\u0aa1\u0aa4\5\u0257\u012c\2\u0aa2\u0aa4\13\2\2\2\u0aa3"+ + "\u0aa1\3\2\2\2\u0aa3\u0aa2\3\2\2\2\u0aa4\u0aa7\3\2\2\2\u0aa5\u0aa6\3\2"+ + "\2\2\u0aa5\u0aa3\3\2\2\2\u0aa6\u0aa8\3\2\2\2\u0aa7\u0aa5\3\2\2\2\u0aa8"+ + "\u0aa9\7,\2\2\u0aa9\u0aaa\7\61\2\2\u0aaa\u0aab\3\2\2\2\u0aab\u0aac\b\u012c"+ + "\2\2\u0aac\u0258\3\2\2\2\u0aad\u0aaf\t\t\2\2\u0aae\u0aad\3\2\2\2\u0aaf"+ + "\u0ab0\3\2\2\2\u0ab0\u0aae\3\2\2\2\u0ab0\u0ab1\3\2\2\2\u0ab1\u0ab2\3\2"+ + "\2\2\u0ab2\u0ab3\b\u012d\2\2\u0ab3\u025a\3\2\2\2\u0ab4\u0ab5\13\2\2\2"+ + "\u0ab5\u025c\3\2\2\2-\2\u0404\u0677\u07d1\u08d7\u09bb\u09cd\u09d5\u09f4"+ + "\u09f6\u09fe\u0a00\u0a04\u0a09\u0a10\u0a17\u0a1e\u0a23\u0a2b\u0a33\u0a36"+ + "\u0a3c\u0a41\u0a46\u0a49\u0a50\u0a57\u0a5c\u0a5e\u0a64\u0a66\u0a6e\u0a74"+ + "\u0a7b\u0a7d\u0a81\u0a86\u0a92\u0a96\u0a99\u0aa3\u0aa5\u0ab0\3\2\3\2"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1 + }, + "" + ); + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/pysparkling/sql/ast/generated/SqlBaseLexer.tokens b/pysparkling/sql/ast/generated/SqlBaseLexer.tokens new file mode 100644 index 000000000..0d0385147 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseLexer.tokens @@ -0,0 +1,572 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +T__5=6 +T__6=7 +T__7=8 +T__8=9 +T__9=10 +T__10=11 +ADD=12 +AFTER=13 +ALL=14 +ALTER=15 +ANALYZE=16 +AND=17 +ANTI=18 +ANY=19 +ARCHIVE=20 +ARRAY=21 +AS=22 +ASC=23 +AT=24 +AUTHORIZATION=25 +BETWEEN=26 +BOTH=27 +BUCKET=28 +BUCKETS=29 +BY=30 +CACHE=31 +CASCADE=32 +CASE=33 +CAST=34 +CHANGE=35 +CHECK=36 +CLEAR=37 +CLUSTER=38 +CLUSTERED=39 +CODEGEN=40 +COLLATE=41 +COLLECTION=42 +COLUMN=43 +COLUMNS=44 +COMMENT=45 +COMMIT=46 +COMPACT=47 +COMPACTIONS=48 +COMPUTE=49 +CONCATENATE=50 +CONSTRAINT=51 +COST=52 +CREATE=53 +CROSS=54 +CUBE=55 +CURRENT=56 +CURRENT_DATE=57 +CURRENT_TIME=58 +CURRENT_TIMESTAMP=59 +CURRENT_USER=60 +DATA=61 +DATABASE=62 +DATABASES=63 +DAY=64 +DBPROPERTIES=65 +DEFINED=66 +DELETE=67 +DELIMITED=68 +DESC=69 +DESCRIBE=70 +DFS=71 +DIRECTORIES=72 +DIRECTORY=73 +DISTINCT=74 +DISTRIBUTE=75 +DROP=76 +ELSE=77 +END=78 +ESCAPE=79 +ESCAPED=80 +EXCEPT=81 +EXCHANGE=82 +EXISTS=83 +EXPLAIN=84 +EXPORT=85 +EXTENDED=86 +EXTERNAL=87 +EXTRACT=88 +FALSE=89 +FETCH=90 +FIELDS=91 +FILTER=92 +FILEFORMAT=93 +FIRST=94 +FOLLOWING=95 +FOR=96 +FOREIGN=97 +FORMAT=98 +FORMATTED=99 +FROM=100 +FULL=101 +FUNCTION=102 +FUNCTIONS=103 +GLOBAL=104 +GRANT=105 +GROUP=106 +GROUPING=107 +HAVING=108 +HOUR=109 +IF=110 +IGNORE=111 +IMPORT=112 +IN=113 +INDEX=114 +INDEXES=115 +INNER=116 +INPATH=117 +INPUTFORMAT=118 +INSERT=119 +INTERSECT=120 +INTERVAL=121 +INTO=122 +IS=123 +ITEMS=124 +JOIN=125 +KEYS=126 +LAST=127 +LATERAL=128 +LAZY=129 +LEADING=130 +LEFT=131 +LIKE=132 +LIMIT=133 +LINES=134 +LIST=135 +LOAD=136 +LOCAL=137 +LOCATION=138 +LOCK=139 +LOCKS=140 +LOGICAL=141 +MACRO=142 +MAP=143 +MATCHED=144 +MERGE=145 +MINUTE=146 +MONTH=147 +MSCK=148 +NAMESPACE=149 +NAMESPACES=150 +NATURAL=151 +NO=152 +NOT=153 +NULL=154 +NULLS=155 +OF=156 +ON=157 +ONLY=158 +OPTION=159 +OPTIONS=160 +OR=161 +ORDER=162 +OUT=163 +OUTER=164 +OUTPUTFORMAT=165 +OVER=166 +OVERLAPS=167 +OVERLAY=168 +OVERWRITE=169 +PARTITION=170 +PARTITIONED=171 +PARTITIONS=172 +PERCENTLIT=173 +PIVOT=174 +PLACING=175 +POSITION=176 +PRECEDING=177 +PRIMARY=178 +PRINCIPALS=179 +PROPERTIES=180 +PURGE=181 +QUERY=182 +RANGE=183 +RECORDREADER=184 +RECORDWRITER=185 +RECOVER=186 +REDUCE=187 +REFERENCES=188 +REFRESH=189 +RENAME=190 +REPAIR=191 +REPLACE=192 +RESET=193 +RESTRICT=194 +REVOKE=195 +RIGHT=196 +RLIKE=197 +ROLE=198 +ROLES=199 +ROLLBACK=200 +ROLLUP=201 +ROW=202 +ROWS=203 +SCHEMA=204 +SECOND=205 +SELECT=206 +SEMI=207 +SEPARATED=208 +SERDE=209 +SERDEPROPERTIES=210 +SESSION_USER=211 +SET=212 +SETMINUS=213 +SETS=214 +SHOW=215 +SKEWED=216 +SOME=217 +SORT=218 +SORTED=219 +START=220 +STATISTICS=221 +STORED=222 +STRATIFY=223 +STRUCT=224 +SUBSTR=225 +SUBSTRING=226 +TABLE=227 +TABLES=228 +TABLESAMPLE=229 +TBLPROPERTIES=230 +TEMPORARY=231 +TERMINATED=232 +THEN=233 +TO=234 +TOUCH=235 +TRAILING=236 +TRANSACTION=237 +TRANSACTIONS=238 +TRANSFORM=239 +TRIM=240 +TRUE=241 +TRUNCATE=242 +TYPE=243 +UNARCHIVE=244 +UNBOUNDED=245 +UNCACHE=246 +UNION=247 +UNIQUE=248 +UNKNOWN=249 +UNLOCK=250 +UNSET=251 +UPDATE=252 +USE=253 +USER=254 +USING=255 +VALUES=256 +VIEW=257 +VIEWS=258 +WHEN=259 +WHERE=260 +WINDOW=261 +WITH=262 +YEAR=263 +EQ=264 +NSEQ=265 +NEQ=266 +NEQJ=267 +LT=268 +LTE=269 +GT=270 +GTE=271 +PLUS=272 +MINUS=273 +ASTERISK=274 +SLASH=275 +PERCENT=276 +DIV=277 +TILDE=278 +AMPERSAND=279 +PIPE=280 +CONCAT_PIPE=281 +HAT=282 +STRING=283 +BIGINT_LITERAL=284 +SMALLINT_LITERAL=285 +TINYINT_LITERAL=286 +INTEGER_VALUE=287 +EXPONENT_VALUE=288 +DECIMAL_VALUE=289 +DOUBLE_LITERAL=290 +BIGDECIMAL_LITERAL=291 +IDENTIFIER=292 +BACKQUOTED_IDENTIFIER=293 +SIMPLE_COMMENT=294 +BRACKETED_COMMENT=295 +WS=296 +UNRECOGNIZED=297 +';'=1 +'('=2 +')'=3 +','=4 +'.'=5 +'/*+'=6 +'*/'=7 +'->'=8 +'['=9 +']'=10 +':'=11 +'ADD'=12 +'AFTER'=13 +'ALL'=14 +'ALTER'=15 +'ANALYZE'=16 +'AND'=17 +'ANTI'=18 +'ANY'=19 +'ARCHIVE'=20 +'ARRAY'=21 +'AS'=22 +'ASC'=23 +'AT'=24 +'AUTHORIZATION'=25 +'BETWEEN'=26 +'BOTH'=27 +'BUCKET'=28 +'BUCKETS'=29 +'BY'=30 +'CACHE'=31 +'CASCADE'=32 +'CASE'=33 +'CAST'=34 +'CHANGE'=35 +'CHECK'=36 +'CLEAR'=37 +'CLUSTER'=38 +'CLUSTERED'=39 +'CODEGEN'=40 +'COLLATE'=41 +'COLLECTION'=42 +'COLUMN'=43 +'COLUMNS'=44 +'COMMENT'=45 +'COMMIT'=46 +'COMPACT'=47 +'COMPACTIONS'=48 +'COMPUTE'=49 +'CONCATENATE'=50 +'CONSTRAINT'=51 +'COST'=52 +'CREATE'=53 +'CROSS'=54 +'CUBE'=55 +'CURRENT'=56 +'CURRENT_DATE'=57 +'CURRENT_TIME'=58 +'CURRENT_TIMESTAMP'=59 +'CURRENT_USER'=60 +'DATA'=61 +'DATABASE'=62 +'DAY'=64 +'DBPROPERTIES'=65 +'DEFINED'=66 +'DELETE'=67 +'DELIMITED'=68 +'DESC'=69 +'DESCRIBE'=70 +'DFS'=71 +'DIRECTORIES'=72 +'DIRECTORY'=73 +'DISTINCT'=74 +'DISTRIBUTE'=75 +'DROP'=76 +'ELSE'=77 +'END'=78 +'ESCAPE'=79 +'ESCAPED'=80 +'EXCEPT'=81 +'EXCHANGE'=82 +'EXISTS'=83 +'EXPLAIN'=84 +'EXPORT'=85 +'EXTENDED'=86 +'EXTERNAL'=87 +'EXTRACT'=88 +'FALSE'=89 +'FETCH'=90 +'FIELDS'=91 +'FILTER'=92 +'FILEFORMAT'=93 +'FIRST'=94 +'FOLLOWING'=95 +'FOR'=96 +'FOREIGN'=97 +'FORMAT'=98 +'FORMATTED'=99 +'FROM'=100 +'FULL'=101 +'FUNCTION'=102 +'FUNCTIONS'=103 +'GLOBAL'=104 +'GRANT'=105 +'GROUP'=106 +'GROUPING'=107 +'HAVING'=108 +'HOUR'=109 +'IF'=110 +'IGNORE'=111 +'IMPORT'=112 +'IN'=113 +'INDEX'=114 +'INDEXES'=115 +'INNER'=116 +'INPATH'=117 +'INPUTFORMAT'=118 +'INSERT'=119 +'INTERSECT'=120 +'INTERVAL'=121 +'INTO'=122 +'IS'=123 +'ITEMS'=124 +'JOIN'=125 +'KEYS'=126 +'LAST'=127 +'LATERAL'=128 +'LAZY'=129 +'LEADING'=130 +'LEFT'=131 +'LIKE'=132 +'LIMIT'=133 +'LINES'=134 +'LIST'=135 +'LOAD'=136 +'LOCAL'=137 +'LOCATION'=138 +'LOCK'=139 +'LOCKS'=140 +'LOGICAL'=141 +'MACRO'=142 +'MAP'=143 +'MATCHED'=144 +'MERGE'=145 +'MINUTE'=146 +'MONTH'=147 +'MSCK'=148 +'NAMESPACE'=149 +'NAMESPACES'=150 +'NATURAL'=151 +'NO'=152 +'NULL'=154 +'NULLS'=155 +'OF'=156 +'ON'=157 +'ONLY'=158 +'OPTION'=159 +'OPTIONS'=160 +'OR'=161 +'ORDER'=162 +'OUT'=163 +'OUTER'=164 +'OUTPUTFORMAT'=165 +'OVER'=166 +'OVERLAPS'=167 +'OVERLAY'=168 +'OVERWRITE'=169 +'PARTITION'=170 +'PARTITIONED'=171 +'PARTITIONS'=172 +'PERCENT'=173 +'PIVOT'=174 +'PLACING'=175 +'POSITION'=176 +'PRECEDING'=177 +'PRIMARY'=178 +'PRINCIPALS'=179 +'PROPERTIES'=180 +'PURGE'=181 +'QUERY'=182 +'RANGE'=183 +'RECORDREADER'=184 +'RECORDWRITER'=185 +'RECOVER'=186 +'REDUCE'=187 +'REFERENCES'=188 +'REFRESH'=189 +'RENAME'=190 +'REPAIR'=191 +'REPLACE'=192 +'RESET'=193 +'RESTRICT'=194 +'REVOKE'=195 +'RIGHT'=196 +'ROLE'=198 +'ROLES'=199 +'ROLLBACK'=200 +'ROLLUP'=201 +'ROW'=202 +'ROWS'=203 +'SCHEMA'=204 +'SECOND'=205 +'SELECT'=206 +'SEMI'=207 +'SEPARATED'=208 +'SERDE'=209 +'SERDEPROPERTIES'=210 +'SESSION_USER'=211 +'SET'=212 +'MINUS'=213 +'SETS'=214 +'SHOW'=215 +'SKEWED'=216 +'SOME'=217 +'SORT'=218 +'SORTED'=219 +'START'=220 +'STATISTICS'=221 +'STORED'=222 +'STRATIFY'=223 +'STRUCT'=224 +'SUBSTR'=225 +'SUBSTRING'=226 +'TABLE'=227 +'TABLES'=228 +'TABLESAMPLE'=229 +'TBLPROPERTIES'=230 +'TERMINATED'=232 +'THEN'=233 +'TO'=234 +'TOUCH'=235 +'TRAILING'=236 +'TRANSACTION'=237 +'TRANSACTIONS'=238 +'TRANSFORM'=239 +'TRIM'=240 +'TRUE'=241 +'TRUNCATE'=242 +'TYPE'=243 +'UNARCHIVE'=244 +'UNBOUNDED'=245 +'UNCACHE'=246 +'UNION'=247 +'UNIQUE'=248 +'UNKNOWN'=249 +'UNLOCK'=250 +'UNSET'=251 +'UPDATE'=252 +'USE'=253 +'USER'=254 +'USING'=255 +'VALUES'=256 +'VIEW'=257 +'VIEWS'=258 +'WHEN'=259 +'WHERE'=260 +'WINDOW'=261 +'WITH'=262 +'YEAR'=263 +'<=>'=265 +'<>'=266 +'!='=267 +'<'=268 +'>'=270 +'+'=272 +'-'=273 +'*'=274 +'/'=275 +'%'=276 +'DIV'=277 +'~'=278 +'&'=279 +'|'=280 +'||'=281 +'^'=282 diff --git a/pysparkling/sql/ast/generated/SqlBaseListener.java b/pysparkling/sql/ast/generated/SqlBaseListener.java new file mode 100644 index 000000000..62889c03b --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseListener.java @@ -0,0 +1,2967 @@ +// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link SqlBaseParser}. + */ +public interface SqlBaseListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link SqlBaseParser#singleStatement}. + * @param ctx the parse tree + */ + void enterSingleStatement(SqlBaseParser.SingleStatementContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#singleStatement}. + * @param ctx the parse tree + */ + void exitSingleStatement(SqlBaseParser.SingleStatementContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#singleExpression}. + * @param ctx the parse tree + */ + void enterSingleExpression(SqlBaseParser.SingleExpressionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#singleExpression}. + * @param ctx the parse tree + */ + void exitSingleExpression(SqlBaseParser.SingleExpressionContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#singleTableIdentifier}. + * @param ctx the parse tree + */ + void enterSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#singleTableIdentifier}. + * @param ctx the parse tree + */ + void exitSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#singleMultipartIdentifier}. + * @param ctx the parse tree + */ + void enterSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#singleMultipartIdentifier}. + * @param ctx the parse tree + */ + void exitSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#singleFunctionIdentifier}. + * @param ctx the parse tree + */ + void enterSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#singleFunctionIdentifier}. + * @param ctx the parse tree + */ + void exitSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#singleDataType}. + * @param ctx the parse tree + */ + void enterSingleDataType(SqlBaseParser.SingleDataTypeContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#singleDataType}. + * @param ctx the parse tree + */ + void exitSingleDataType(SqlBaseParser.SingleDataTypeContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#singleTableSchema}. + * @param ctx the parse tree + */ + void enterSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#singleTableSchema}. + * @param ctx the parse tree + */ + void exitSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx); + /** + * Enter a parse tree produced by the {@code statementDefault} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterStatementDefault(SqlBaseParser.StatementDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code statementDefault} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitStatementDefault(SqlBaseParser.StatementDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code dmlStatement} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDmlStatement(SqlBaseParser.DmlStatementContext ctx); + /** + * Exit a parse tree produced by the {@code dmlStatement} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDmlStatement(SqlBaseParser.DmlStatementContext ctx); + /** + * Enter a parse tree produced by the {@code use} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterUse(SqlBaseParser.UseContext ctx); + /** + * Exit a parse tree produced by the {@code use} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitUse(SqlBaseParser.UseContext ctx); + /** + * Enter a parse tree produced by the {@code createNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx); + /** + * Exit a parse tree produced by the {@code createNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx); + /** + * Enter a parse tree produced by the {@code setNamespaceProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code setNamespaceProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code setNamespaceLocation} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx); + /** + * Exit a parse tree produced by the {@code setNamespaceLocation} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx); + /** + * Enter a parse tree produced by the {@code dropNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDropNamespace(SqlBaseParser.DropNamespaceContext ctx); + /** + * Exit a parse tree produced by the {@code dropNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDropNamespace(SqlBaseParser.DropNamespaceContext ctx); + /** + * Enter a parse tree produced by the {@code showNamespaces} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx); + /** + * Exit a parse tree produced by the {@code showNamespaces} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx); + /** + * Enter a parse tree produced by the {@code createTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCreateTable(SqlBaseParser.CreateTableContext ctx); + /** + * Exit a parse tree produced by the {@code createTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCreateTable(SqlBaseParser.CreateTableContext ctx); + /** + * Enter a parse tree produced by the {@code createHiveTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx); + /** + * Exit a parse tree produced by the {@code createHiveTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx); + /** + * Enter a parse tree produced by the {@code createTableLike} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx); + /** + * Exit a parse tree produced by the {@code createTableLike} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx); + /** + * Enter a parse tree produced by the {@code replaceTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterReplaceTable(SqlBaseParser.ReplaceTableContext ctx); + /** + * Exit a parse tree produced by the {@code replaceTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitReplaceTable(SqlBaseParser.ReplaceTableContext ctx); + /** + * Enter a parse tree produced by the {@code analyze} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterAnalyze(SqlBaseParser.AnalyzeContext ctx); + /** + * Exit a parse tree produced by the {@code analyze} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitAnalyze(SqlBaseParser.AnalyzeContext ctx); + /** + * Enter a parse tree produced by the {@code addTableColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx); + /** + * Exit a parse tree produced by the {@code addTableColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx); + /** + * Enter a parse tree produced by the {@code renameTableColumn} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx); + /** + * Exit a parse tree produced by the {@code renameTableColumn} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx); + /** + * Enter a parse tree produced by the {@code dropTableColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx); + /** + * Exit a parse tree produced by the {@code dropTableColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx); + /** + * Enter a parse tree produced by the {@code renameTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterRenameTable(SqlBaseParser.RenameTableContext ctx); + /** + * Exit a parse tree produced by the {@code renameTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitRenameTable(SqlBaseParser.RenameTableContext ctx); + /** + * Enter a parse tree produced by the {@code setTableProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code setTableProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code unsetTableProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code unsetTableProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code alterTableAlterColumn} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx); + /** + * Exit a parse tree produced by the {@code alterTableAlterColumn} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx); + /** + * Enter a parse tree produced by the {@code hiveChangeColumn} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx); + /** + * Exit a parse tree produced by the {@code hiveChangeColumn} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx); + /** + * Enter a parse tree produced by the {@code hiveReplaceColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx); + /** + * Exit a parse tree produced by the {@code hiveReplaceColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx); + /** + * Enter a parse tree produced by the {@code setTableSerDe} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx); + /** + * Exit a parse tree produced by the {@code setTableSerDe} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx); + /** + * Enter a parse tree produced by the {@code addTablePartition} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx); + /** + * Exit a parse tree produced by the {@code addTablePartition} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx); + /** + * Enter a parse tree produced by the {@code renameTablePartition} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx); + /** + * Exit a parse tree produced by the {@code renameTablePartition} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx); + /** + * Enter a parse tree produced by the {@code dropTablePartitions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx); + /** + * Exit a parse tree produced by the {@code dropTablePartitions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx); + /** + * Enter a parse tree produced by the {@code setTableLocation} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterSetTableLocation(SqlBaseParser.SetTableLocationContext ctx); + /** + * Exit a parse tree produced by the {@code setTableLocation} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitSetTableLocation(SqlBaseParser.SetTableLocationContext ctx); + /** + * Enter a parse tree produced by the {@code recoverPartitions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx); + /** + * Exit a parse tree produced by the {@code recoverPartitions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx); + /** + * Enter a parse tree produced by the {@code dropTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDropTable(SqlBaseParser.DropTableContext ctx); + /** + * Exit a parse tree produced by the {@code dropTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDropTable(SqlBaseParser.DropTableContext ctx); + /** + * Enter a parse tree produced by the {@code dropView} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDropView(SqlBaseParser.DropViewContext ctx); + /** + * Exit a parse tree produced by the {@code dropView} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDropView(SqlBaseParser.DropViewContext ctx); + /** + * Enter a parse tree produced by the {@code createView} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCreateView(SqlBaseParser.CreateViewContext ctx); + /** + * Exit a parse tree produced by the {@code createView} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCreateView(SqlBaseParser.CreateViewContext ctx); + /** + * Enter a parse tree produced by the {@code createTempViewUsing} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx); + /** + * Exit a parse tree produced by the {@code createTempViewUsing} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx); + /** + * Enter a parse tree produced by the {@code alterViewQuery} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx); + /** + * Exit a parse tree produced by the {@code alterViewQuery} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx); + /** + * Enter a parse tree produced by the {@code createFunction} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCreateFunction(SqlBaseParser.CreateFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code createFunction} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCreateFunction(SqlBaseParser.CreateFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code dropFunction} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDropFunction(SqlBaseParser.DropFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code dropFunction} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDropFunction(SqlBaseParser.DropFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code explain} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterExplain(SqlBaseParser.ExplainContext ctx); + /** + * Exit a parse tree produced by the {@code explain} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitExplain(SqlBaseParser.ExplainContext ctx); + /** + * Enter a parse tree produced by the {@code showTables} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowTables(SqlBaseParser.ShowTablesContext ctx); + /** + * Exit a parse tree produced by the {@code showTables} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowTables(SqlBaseParser.ShowTablesContext ctx); + /** + * Enter a parse tree produced by the {@code showTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowTable(SqlBaseParser.ShowTableContext ctx); + /** + * Exit a parse tree produced by the {@code showTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowTable(SqlBaseParser.ShowTableContext ctx); + /** + * Enter a parse tree produced by the {@code showTblProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code showTblProperties} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code showColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowColumns(SqlBaseParser.ShowColumnsContext ctx); + /** + * Exit a parse tree produced by the {@code showColumns} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowColumns(SqlBaseParser.ShowColumnsContext ctx); + /** + * Enter a parse tree produced by the {@code showViews} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowViews(SqlBaseParser.ShowViewsContext ctx); + /** + * Exit a parse tree produced by the {@code showViews} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowViews(SqlBaseParser.ShowViewsContext ctx); + /** + * Enter a parse tree produced by the {@code showPartitions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowPartitions(SqlBaseParser.ShowPartitionsContext ctx); + /** + * Exit a parse tree produced by the {@code showPartitions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowPartitions(SqlBaseParser.ShowPartitionsContext ctx); + /** + * Enter a parse tree produced by the {@code showFunctions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowFunctions(SqlBaseParser.ShowFunctionsContext ctx); + /** + * Exit a parse tree produced by the {@code showFunctions} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowFunctions(SqlBaseParser.ShowFunctionsContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowCreateTable(SqlBaseParser.ShowCreateTableContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowCreateTable(SqlBaseParser.ShowCreateTableContext ctx); + /** + * Enter a parse tree produced by the {@code showCurrentNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx); + /** + * Exit a parse tree produced by the {@code showCurrentNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx); + /** + * Enter a parse tree produced by the {@code describeFunction} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code describeFunction} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code describeNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx); + /** + * Exit a parse tree produced by the {@code describeNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx); + /** + * Enter a parse tree produced by the {@code describeRelation} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDescribeRelation(SqlBaseParser.DescribeRelationContext ctx); + /** + * Exit a parse tree produced by the {@code describeRelation} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDescribeRelation(SqlBaseParser.DescribeRelationContext ctx); + /** + * Enter a parse tree produced by the {@code describeQuery} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterDescribeQuery(SqlBaseParser.DescribeQueryContext ctx); + /** + * Exit a parse tree produced by the {@code describeQuery} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitDescribeQuery(SqlBaseParser.DescribeQueryContext ctx); + /** + * Enter a parse tree produced by the {@code commentNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx); + /** + * Exit a parse tree produced by the {@code commentNamespace} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx); + /** + * Enter a parse tree produced by the {@code commentTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCommentTable(SqlBaseParser.CommentTableContext ctx); + /** + * Exit a parse tree produced by the {@code commentTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCommentTable(SqlBaseParser.CommentTableContext ctx); + /** + * Enter a parse tree produced by the {@code refreshTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterRefreshTable(SqlBaseParser.RefreshTableContext ctx); + /** + * Exit a parse tree produced by the {@code refreshTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitRefreshTable(SqlBaseParser.RefreshTableContext ctx); + /** + * Enter a parse tree produced by the {@code refreshResource} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterRefreshResource(SqlBaseParser.RefreshResourceContext ctx); + /** + * Exit a parse tree produced by the {@code refreshResource} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitRefreshResource(SqlBaseParser.RefreshResourceContext ctx); + /** + * Enter a parse tree produced by the {@code cacheTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterCacheTable(SqlBaseParser.CacheTableContext ctx); + /** + * Exit a parse tree produced by the {@code cacheTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitCacheTable(SqlBaseParser.CacheTableContext ctx); + /** + * Enter a parse tree produced by the {@code uncacheTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterUncacheTable(SqlBaseParser.UncacheTableContext ctx); + /** + * Exit a parse tree produced by the {@code uncacheTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitUncacheTable(SqlBaseParser.UncacheTableContext ctx); + /** + * Enter a parse tree produced by the {@code clearCache} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterClearCache(SqlBaseParser.ClearCacheContext ctx); + /** + * Exit a parse tree produced by the {@code clearCache} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitClearCache(SqlBaseParser.ClearCacheContext ctx); + /** + * Enter a parse tree produced by the {@code loadData} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterLoadData(SqlBaseParser.LoadDataContext ctx); + /** + * Exit a parse tree produced by the {@code loadData} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitLoadData(SqlBaseParser.LoadDataContext ctx); + /** + * Enter a parse tree produced by the {@code truncateTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterTruncateTable(SqlBaseParser.TruncateTableContext ctx); + /** + * Exit a parse tree produced by the {@code truncateTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitTruncateTable(SqlBaseParser.TruncateTableContext ctx); + /** + * Enter a parse tree produced by the {@code repairTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterRepairTable(SqlBaseParser.RepairTableContext ctx); + /** + * Exit a parse tree produced by the {@code repairTable} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitRepairTable(SqlBaseParser.RepairTableContext ctx); + /** + * Enter a parse tree produced by the {@code manageResource} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterManageResource(SqlBaseParser.ManageResourceContext ctx); + /** + * Exit a parse tree produced by the {@code manageResource} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitManageResource(SqlBaseParser.ManageResourceContext ctx); + /** + * Enter a parse tree produced by the {@code failNativeCommand} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx); + /** + * Exit a parse tree produced by the {@code failNativeCommand} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx); + /** + * Enter a parse tree produced by the {@code setConfiguration} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterSetConfiguration(SqlBaseParser.SetConfigurationContext ctx); + /** + * Exit a parse tree produced by the {@code setConfiguration} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitSetConfiguration(SqlBaseParser.SetConfigurationContext ctx); + /** + * Enter a parse tree produced by the {@code resetConfiguration} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void enterResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx); + /** + * Exit a parse tree produced by the {@code resetConfiguration} + * labeled alternative in {@link SqlBaseParser#statement}. + * @param ctx the parse tree + */ + void exitResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#unsupportedHiveNativeCommands}. + * @param ctx the parse tree + */ + void enterUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#unsupportedHiveNativeCommands}. + * @param ctx the parse tree + */ + void exitUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#createTableHeader}. + * @param ctx the parse tree + */ + void enterCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#createTableHeader}. + * @param ctx the parse tree + */ + void exitCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#replaceTableHeader}. + * @param ctx the parse tree + */ + void enterReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#replaceTableHeader}. + * @param ctx the parse tree + */ + void exitReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#bucketSpec}. + * @param ctx the parse tree + */ + void enterBucketSpec(SqlBaseParser.BucketSpecContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#bucketSpec}. + * @param ctx the parse tree + */ + void exitBucketSpec(SqlBaseParser.BucketSpecContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#skewSpec}. + * @param ctx the parse tree + */ + void enterSkewSpec(SqlBaseParser.SkewSpecContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#skewSpec}. + * @param ctx the parse tree + */ + void exitSkewSpec(SqlBaseParser.SkewSpecContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#locationSpec}. + * @param ctx the parse tree + */ + void enterLocationSpec(SqlBaseParser.LocationSpecContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#locationSpec}. + * @param ctx the parse tree + */ + void exitLocationSpec(SqlBaseParser.LocationSpecContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#commentSpec}. + * @param ctx the parse tree + */ + void enterCommentSpec(SqlBaseParser.CommentSpecContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#commentSpec}. + * @param ctx the parse tree + */ + void exitCommentSpec(SqlBaseParser.CommentSpecContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#query}. + * @param ctx the parse tree + */ + void enterQuery(SqlBaseParser.QueryContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#query}. + * @param ctx the parse tree + */ + void exitQuery(SqlBaseParser.QueryContext ctx); + /** + * Enter a parse tree produced by the {@code insertOverwriteTable} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void enterInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx); + /** + * Exit a parse tree produced by the {@code insertOverwriteTable} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void exitInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx); + /** + * Enter a parse tree produced by the {@code insertIntoTable} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void enterInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx); + /** + * Exit a parse tree produced by the {@code insertIntoTable} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void exitInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx); + /** + * Enter a parse tree produced by the {@code insertOverwriteHiveDir} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void enterInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx); + /** + * Exit a parse tree produced by the {@code insertOverwriteHiveDir} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void exitInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx); + /** + * Enter a parse tree produced by the {@code insertOverwriteDir} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void enterInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx); + /** + * Exit a parse tree produced by the {@code insertOverwriteDir} + * labeled alternative in {@link SqlBaseParser#insertInto}. + * @param ctx the parse tree + */ + void exitInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#partitionSpecLocation}. + * @param ctx the parse tree + */ + void enterPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#partitionSpecLocation}. + * @param ctx the parse tree + */ + void exitPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#partitionSpec}. + * @param ctx the parse tree + */ + void enterPartitionSpec(SqlBaseParser.PartitionSpecContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#partitionSpec}. + * @param ctx the parse tree + */ + void exitPartitionSpec(SqlBaseParser.PartitionSpecContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#partitionVal}. + * @param ctx the parse tree + */ + void enterPartitionVal(SqlBaseParser.PartitionValContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#partitionVal}. + * @param ctx the parse tree + */ + void exitPartitionVal(SqlBaseParser.PartitionValContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#namespace}. + * @param ctx the parse tree + */ + void enterNamespace(SqlBaseParser.NamespaceContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#namespace}. + * @param ctx the parse tree + */ + void exitNamespace(SqlBaseParser.NamespaceContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#describeFuncName}. + * @param ctx the parse tree + */ + void enterDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#describeFuncName}. + * @param ctx the parse tree + */ + void exitDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#describeColName}. + * @param ctx the parse tree + */ + void enterDescribeColName(SqlBaseParser.DescribeColNameContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#describeColName}. + * @param ctx the parse tree + */ + void exitDescribeColName(SqlBaseParser.DescribeColNameContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#ctes}. + * @param ctx the parse tree + */ + void enterCtes(SqlBaseParser.CtesContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#ctes}. + * @param ctx the parse tree + */ + void exitCtes(SqlBaseParser.CtesContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#namedQuery}. + * @param ctx the parse tree + */ + void enterNamedQuery(SqlBaseParser.NamedQueryContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#namedQuery}. + * @param ctx the parse tree + */ + void exitNamedQuery(SqlBaseParser.NamedQueryContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#tableProvider}. + * @param ctx the parse tree + */ + void enterTableProvider(SqlBaseParser.TableProviderContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#tableProvider}. + * @param ctx the parse tree + */ + void exitTableProvider(SqlBaseParser.TableProviderContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#createTableClauses}. + * @param ctx the parse tree + */ + void enterCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#createTableClauses}. + * @param ctx the parse tree + */ + void exitCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#tablePropertyList}. + * @param ctx the parse tree + */ + void enterTablePropertyList(SqlBaseParser.TablePropertyListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#tablePropertyList}. + * @param ctx the parse tree + */ + void exitTablePropertyList(SqlBaseParser.TablePropertyListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#tableProperty}. + * @param ctx the parse tree + */ + void enterTableProperty(SqlBaseParser.TablePropertyContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#tableProperty}. + * @param ctx the parse tree + */ + void exitTableProperty(SqlBaseParser.TablePropertyContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#tablePropertyKey}. + * @param ctx the parse tree + */ + void enterTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#tablePropertyKey}. + * @param ctx the parse tree + */ + void exitTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#tablePropertyValue}. + * @param ctx the parse tree + */ + void enterTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#tablePropertyValue}. + * @param ctx the parse tree + */ + void exitTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#constantList}. + * @param ctx the parse tree + */ + void enterConstantList(SqlBaseParser.ConstantListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#constantList}. + * @param ctx the parse tree + */ + void exitConstantList(SqlBaseParser.ConstantListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#nestedConstantList}. + * @param ctx the parse tree + */ + void enterNestedConstantList(SqlBaseParser.NestedConstantListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#nestedConstantList}. + * @param ctx the parse tree + */ + void exitNestedConstantList(SqlBaseParser.NestedConstantListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#createFileFormat}. + * @param ctx the parse tree + */ + void enterCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#createFileFormat}. + * @param ctx the parse tree + */ + void exitCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx); + /** + * Enter a parse tree produced by the {@code tableFileFormat} + * labeled alternative in {@link SqlBaseParser#fileFormat}. + * @param ctx the parse tree + */ + void enterTableFileFormat(SqlBaseParser.TableFileFormatContext ctx); + /** + * Exit a parse tree produced by the {@code tableFileFormat} + * labeled alternative in {@link SqlBaseParser#fileFormat}. + * @param ctx the parse tree + */ + void exitTableFileFormat(SqlBaseParser.TableFileFormatContext ctx); + /** + * Enter a parse tree produced by the {@code genericFileFormat} + * labeled alternative in {@link SqlBaseParser#fileFormat}. + * @param ctx the parse tree + */ + void enterGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx); + /** + * Exit a parse tree produced by the {@code genericFileFormat} + * labeled alternative in {@link SqlBaseParser#fileFormat}. + * @param ctx the parse tree + */ + void exitGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#storageHandler}. + * @param ctx the parse tree + */ + void enterStorageHandler(SqlBaseParser.StorageHandlerContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#storageHandler}. + * @param ctx the parse tree + */ + void exitStorageHandler(SqlBaseParser.StorageHandlerContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#resource}. + * @param ctx the parse tree + */ + void enterResource(SqlBaseParser.ResourceContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#resource}. + * @param ctx the parse tree + */ + void exitResource(SqlBaseParser.ResourceContext ctx); + /** + * Enter a parse tree produced by the {@code singleInsertQuery} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void enterSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx); + /** + * Exit a parse tree produced by the {@code singleInsertQuery} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void exitSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx); + /** + * Enter a parse tree produced by the {@code multiInsertQuery} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void enterMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx); + /** + * Exit a parse tree produced by the {@code multiInsertQuery} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void exitMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx); + /** + * Enter a parse tree produced by the {@code deleteFromTable} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void enterDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx); + /** + * Exit a parse tree produced by the {@code deleteFromTable} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void exitDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx); + /** + * Enter a parse tree produced by the {@code updateTable} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void enterUpdateTable(SqlBaseParser.UpdateTableContext ctx); + /** + * Exit a parse tree produced by the {@code updateTable} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void exitUpdateTable(SqlBaseParser.UpdateTableContext ctx); + /** + * Enter a parse tree produced by the {@code mergeIntoTable} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void enterMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx); + /** + * Exit a parse tree produced by the {@code mergeIntoTable} + * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. + * @param ctx the parse tree + */ + void exitMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#queryOrganization}. + * @param ctx the parse tree + */ + void enterQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#queryOrganization}. + * @param ctx the parse tree + */ + void exitQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#multiInsertQueryBody}. + * @param ctx the parse tree + */ + void enterMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#multiInsertQueryBody}. + * @param ctx the parse tree + */ + void exitMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx); + /** + * Enter a parse tree produced by the {@code queryTermDefault} + * labeled alternative in {@link SqlBaseParser#queryTerm}. + * @param ctx the parse tree + */ + void enterQueryTermDefault(SqlBaseParser.QueryTermDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code queryTermDefault} + * labeled alternative in {@link SqlBaseParser#queryTerm}. + * @param ctx the parse tree + */ + void exitQueryTermDefault(SqlBaseParser.QueryTermDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code setOperation} + * labeled alternative in {@link SqlBaseParser#queryTerm}. + * @param ctx the parse tree + */ + void enterSetOperation(SqlBaseParser.SetOperationContext ctx); + /** + * Exit a parse tree produced by the {@code setOperation} + * labeled alternative in {@link SqlBaseParser#queryTerm}. + * @param ctx the parse tree + */ + void exitSetOperation(SqlBaseParser.SetOperationContext ctx); + /** + * Enter a parse tree produced by the {@code queryPrimaryDefault} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterQueryPrimaryDefault(SqlBaseParser.QueryPrimaryDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code queryPrimaryDefault} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitQueryPrimaryDefault(SqlBaseParser.QueryPrimaryDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code fromStmt} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterFromStmt(SqlBaseParser.FromStmtContext ctx); + /** + * Exit a parse tree produced by the {@code fromStmt} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitFromStmt(SqlBaseParser.FromStmtContext ctx); + /** + * Enter a parse tree produced by the {@code table} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterTable(SqlBaseParser.TableContext ctx); + /** + * Exit a parse tree produced by the {@code table} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitTable(SqlBaseParser.TableContext ctx); + /** + * Enter a parse tree produced by the {@code inlineTableDefault1} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx); + /** + * Exit a parse tree produced by the {@code inlineTableDefault1} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx); + /** + * Enter a parse tree produced by the {@code subquery} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterSubquery(SqlBaseParser.SubqueryContext ctx); + /** + * Exit a parse tree produced by the {@code subquery} + * labeled alternative in {@link SqlBaseParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitSubquery(SqlBaseParser.SubqueryContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#sortItem}. + * @param ctx the parse tree + */ + void enterSortItem(SqlBaseParser.SortItemContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#sortItem}. + * @param ctx the parse tree + */ + void exitSortItem(SqlBaseParser.SortItemContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#fromStatement}. + * @param ctx the parse tree + */ + void enterFromStatement(SqlBaseParser.FromStatementContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#fromStatement}. + * @param ctx the parse tree + */ + void exitFromStatement(SqlBaseParser.FromStatementContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#fromStatementBody}. + * @param ctx the parse tree + */ + void enterFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#fromStatementBody}. + * @param ctx the parse tree + */ + void exitFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx); + /** + * Enter a parse tree produced by the {@code transformQuerySpecification} + * labeled alternative in {@link SqlBaseParser#querySpecification}. + * @param ctx the parse tree + */ + void enterTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx); + /** + * Exit a parse tree produced by the {@code transformQuerySpecification} + * labeled alternative in {@link SqlBaseParser#querySpecification}. + * @param ctx the parse tree + */ + void exitTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx); + /** + * Enter a parse tree produced by the {@code regularQuerySpecification} + * labeled alternative in {@link SqlBaseParser#querySpecification}. + * @param ctx the parse tree + */ + void enterRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx); + /** + * Exit a parse tree produced by the {@code regularQuerySpecification} + * labeled alternative in {@link SqlBaseParser#querySpecification}. + * @param ctx the parse tree + */ + void exitRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#transformClause}. + * @param ctx the parse tree + */ + void enterTransformClause(SqlBaseParser.TransformClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#transformClause}. + * @param ctx the parse tree + */ + void exitTransformClause(SqlBaseParser.TransformClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#selectClause}. + * @param ctx the parse tree + */ + void enterSelectClause(SqlBaseParser.SelectClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#selectClause}. + * @param ctx the parse tree + */ + void exitSelectClause(SqlBaseParser.SelectClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#setClause}. + * @param ctx the parse tree + */ + void enterSetClause(SqlBaseParser.SetClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#setClause}. + * @param ctx the parse tree + */ + void exitSetClause(SqlBaseParser.SetClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#matchedClause}. + * @param ctx the parse tree + */ + void enterMatchedClause(SqlBaseParser.MatchedClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#matchedClause}. + * @param ctx the parse tree + */ + void exitMatchedClause(SqlBaseParser.MatchedClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#notMatchedClause}. + * @param ctx the parse tree + */ + void enterNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#notMatchedClause}. + * @param ctx the parse tree + */ + void exitNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#matchedAction}. + * @param ctx the parse tree + */ + void enterMatchedAction(SqlBaseParser.MatchedActionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#matchedAction}. + * @param ctx the parse tree + */ + void exitMatchedAction(SqlBaseParser.MatchedActionContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#notMatchedAction}. + * @param ctx the parse tree + */ + void enterNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#notMatchedAction}. + * @param ctx the parse tree + */ + void exitNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#assignmentList}. + * @param ctx the parse tree + */ + void enterAssignmentList(SqlBaseParser.AssignmentListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#assignmentList}. + * @param ctx the parse tree + */ + void exitAssignmentList(SqlBaseParser.AssignmentListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#assignment}. + * @param ctx the parse tree + */ + void enterAssignment(SqlBaseParser.AssignmentContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#assignment}. + * @param ctx the parse tree + */ + void exitAssignment(SqlBaseParser.AssignmentContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#whereClause}. + * @param ctx the parse tree + */ + void enterWhereClause(SqlBaseParser.WhereClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#whereClause}. + * @param ctx the parse tree + */ + void exitWhereClause(SqlBaseParser.WhereClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#havingClause}. + * @param ctx the parse tree + */ + void enterHavingClause(SqlBaseParser.HavingClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#havingClause}. + * @param ctx the parse tree + */ + void exitHavingClause(SqlBaseParser.HavingClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#hint}. + * @param ctx the parse tree + */ + void enterHint(SqlBaseParser.HintContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#hint}. + * @param ctx the parse tree + */ + void exitHint(SqlBaseParser.HintContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#hintStatement}. + * @param ctx the parse tree + */ + void enterHintStatement(SqlBaseParser.HintStatementContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#hintStatement}. + * @param ctx the parse tree + */ + void exitHintStatement(SqlBaseParser.HintStatementContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#fromClause}. + * @param ctx the parse tree + */ + void enterFromClause(SqlBaseParser.FromClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#fromClause}. + * @param ctx the parse tree + */ + void exitFromClause(SqlBaseParser.FromClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#aggregationClause}. + * @param ctx the parse tree + */ + void enterAggregationClause(SqlBaseParser.AggregationClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#aggregationClause}. + * @param ctx the parse tree + */ + void exitAggregationClause(SqlBaseParser.AggregationClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#groupingSet}. + * @param ctx the parse tree + */ + void enterGroupingSet(SqlBaseParser.GroupingSetContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#groupingSet}. + * @param ctx the parse tree + */ + void exitGroupingSet(SqlBaseParser.GroupingSetContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#pivotClause}. + * @param ctx the parse tree + */ + void enterPivotClause(SqlBaseParser.PivotClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#pivotClause}. + * @param ctx the parse tree + */ + void exitPivotClause(SqlBaseParser.PivotClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#pivotColumn}. + * @param ctx the parse tree + */ + void enterPivotColumn(SqlBaseParser.PivotColumnContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#pivotColumn}. + * @param ctx the parse tree + */ + void exitPivotColumn(SqlBaseParser.PivotColumnContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#pivotValue}. + * @param ctx the parse tree + */ + void enterPivotValue(SqlBaseParser.PivotValueContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#pivotValue}. + * @param ctx the parse tree + */ + void exitPivotValue(SqlBaseParser.PivotValueContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#lateralView}. + * @param ctx the parse tree + */ + void enterLateralView(SqlBaseParser.LateralViewContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#lateralView}. + * @param ctx the parse tree + */ + void exitLateralView(SqlBaseParser.LateralViewContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#setQuantifier}. + * @param ctx the parse tree + */ + void enterSetQuantifier(SqlBaseParser.SetQuantifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#setQuantifier}. + * @param ctx the parse tree + */ + void exitSetQuantifier(SqlBaseParser.SetQuantifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#relation}. + * @param ctx the parse tree + */ + void enterRelation(SqlBaseParser.RelationContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#relation}. + * @param ctx the parse tree + */ + void exitRelation(SqlBaseParser.RelationContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#joinRelation}. + * @param ctx the parse tree + */ + void enterJoinRelation(SqlBaseParser.JoinRelationContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#joinRelation}. + * @param ctx the parse tree + */ + void exitJoinRelation(SqlBaseParser.JoinRelationContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#joinType}. + * @param ctx the parse tree + */ + void enterJoinType(SqlBaseParser.JoinTypeContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#joinType}. + * @param ctx the parse tree + */ + void exitJoinType(SqlBaseParser.JoinTypeContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#joinCriteria}. + * @param ctx the parse tree + */ + void enterJoinCriteria(SqlBaseParser.JoinCriteriaContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#joinCriteria}. + * @param ctx the parse tree + */ + void exitJoinCriteria(SqlBaseParser.JoinCriteriaContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#sample}. + * @param ctx the parse tree + */ + void enterSample(SqlBaseParser.SampleContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#sample}. + * @param ctx the parse tree + */ + void exitSample(SqlBaseParser.SampleContext ctx); + /** + * Enter a parse tree produced by the {@code sampleByPercentile} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void enterSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx); + /** + * Exit a parse tree produced by the {@code sampleByPercentile} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void exitSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx); + /** + * Enter a parse tree produced by the {@code sampleByRows} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void enterSampleByRows(SqlBaseParser.SampleByRowsContext ctx); + /** + * Exit a parse tree produced by the {@code sampleByRows} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void exitSampleByRows(SqlBaseParser.SampleByRowsContext ctx); + /** + * Enter a parse tree produced by the {@code sampleByBucket} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void enterSampleByBucket(SqlBaseParser.SampleByBucketContext ctx); + /** + * Exit a parse tree produced by the {@code sampleByBucket} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void exitSampleByBucket(SqlBaseParser.SampleByBucketContext ctx); + /** + * Enter a parse tree produced by the {@code sampleByBytes} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void enterSampleByBytes(SqlBaseParser.SampleByBytesContext ctx); + /** + * Exit a parse tree produced by the {@code sampleByBytes} + * labeled alternative in {@link SqlBaseParser#sampleMethod}. + * @param ctx the parse tree + */ + void exitSampleByBytes(SqlBaseParser.SampleByBytesContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#identifierList}. + * @param ctx the parse tree + */ + void enterIdentifierList(SqlBaseParser.IdentifierListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#identifierList}. + * @param ctx the parse tree + */ + void exitIdentifierList(SqlBaseParser.IdentifierListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#identifierSeq}. + * @param ctx the parse tree + */ + void enterIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#identifierSeq}. + * @param ctx the parse tree + */ + void exitIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#orderedIdentifierList}. + * @param ctx the parse tree + */ + void enterOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#orderedIdentifierList}. + * @param ctx the parse tree + */ + void exitOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#orderedIdentifier}. + * @param ctx the parse tree + */ + void enterOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#orderedIdentifier}. + * @param ctx the parse tree + */ + void exitOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#identifierCommentList}. + * @param ctx the parse tree + */ + void enterIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#identifierCommentList}. + * @param ctx the parse tree + */ + void exitIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#identifierComment}. + * @param ctx the parse tree + */ + void enterIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#identifierComment}. + * @param ctx the parse tree + */ + void exitIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx); + /** + * Enter a parse tree produced by the {@code tableName} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterTableName(SqlBaseParser.TableNameContext ctx); + /** + * Exit a parse tree produced by the {@code tableName} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitTableName(SqlBaseParser.TableNameContext ctx); + /** + * Enter a parse tree produced by the {@code aliasedQuery} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterAliasedQuery(SqlBaseParser.AliasedQueryContext ctx); + /** + * Exit a parse tree produced by the {@code aliasedQuery} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitAliasedQuery(SqlBaseParser.AliasedQueryContext ctx); + /** + * Enter a parse tree produced by the {@code aliasedRelation} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterAliasedRelation(SqlBaseParser.AliasedRelationContext ctx); + /** + * Exit a parse tree produced by the {@code aliasedRelation} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitAliasedRelation(SqlBaseParser.AliasedRelationContext ctx); + /** + * Enter a parse tree produced by the {@code inlineTableDefault2} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx); + /** + * Exit a parse tree produced by the {@code inlineTableDefault2} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx); + /** + * Enter a parse tree produced by the {@code tableValuedFunction} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code tableValuedFunction} + * labeled alternative in {@link SqlBaseParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#inlineTable}. + * @param ctx the parse tree + */ + void enterInlineTable(SqlBaseParser.InlineTableContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#inlineTable}. + * @param ctx the parse tree + */ + void exitInlineTable(SqlBaseParser.InlineTableContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#functionTable}. + * @param ctx the parse tree + */ + void enterFunctionTable(SqlBaseParser.FunctionTableContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#functionTable}. + * @param ctx the parse tree + */ + void exitFunctionTable(SqlBaseParser.FunctionTableContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#tableAlias}. + * @param ctx the parse tree + */ + void enterTableAlias(SqlBaseParser.TableAliasContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#tableAlias}. + * @param ctx the parse tree + */ + void exitTableAlias(SqlBaseParser.TableAliasContext ctx); + /** + * Enter a parse tree produced by the {@code rowFormatSerde} + * labeled alternative in {@link SqlBaseParser#rowFormat}. + * @param ctx the parse tree + */ + void enterRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx); + /** + * Exit a parse tree produced by the {@code rowFormatSerde} + * labeled alternative in {@link SqlBaseParser#rowFormat}. + * @param ctx the parse tree + */ + void exitRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx); + /** + * Enter a parse tree produced by the {@code rowFormatDelimited} + * labeled alternative in {@link SqlBaseParser#rowFormat}. + * @param ctx the parse tree + */ + void enterRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx); + /** + * Exit a parse tree produced by the {@code rowFormatDelimited} + * labeled alternative in {@link SqlBaseParser#rowFormat}. + * @param ctx the parse tree + */ + void exitRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#multipartIdentifierList}. + * @param ctx the parse tree + */ + void enterMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#multipartIdentifierList}. + * @param ctx the parse tree + */ + void exitMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#multipartIdentifier}. + * @param ctx the parse tree + */ + void enterMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#multipartIdentifier}. + * @param ctx the parse tree + */ + void exitMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#tableIdentifier}. + * @param ctx the parse tree + */ + void enterTableIdentifier(SqlBaseParser.TableIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#tableIdentifier}. + * @param ctx the parse tree + */ + void exitTableIdentifier(SqlBaseParser.TableIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#functionIdentifier}. + * @param ctx the parse tree + */ + void enterFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#functionIdentifier}. + * @param ctx the parse tree + */ + void exitFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#namedExpression}. + * @param ctx the parse tree + */ + void enterNamedExpression(SqlBaseParser.NamedExpressionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#namedExpression}. + * @param ctx the parse tree + */ + void exitNamedExpression(SqlBaseParser.NamedExpressionContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#namedExpressionSeq}. + * @param ctx the parse tree + */ + void enterNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#namedExpressionSeq}. + * @param ctx the parse tree + */ + void exitNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#transformList}. + * @param ctx the parse tree + */ + void enterTransformList(SqlBaseParser.TransformListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#transformList}. + * @param ctx the parse tree + */ + void exitTransformList(SqlBaseParser.TransformListContext ctx); + /** + * Enter a parse tree produced by the {@code identityTransform} + * labeled alternative in {@link SqlBaseParser#transform}. + * @param ctx the parse tree + */ + void enterIdentityTransform(SqlBaseParser.IdentityTransformContext ctx); + /** + * Exit a parse tree produced by the {@code identityTransform} + * labeled alternative in {@link SqlBaseParser#transform}. + * @param ctx the parse tree + */ + void exitIdentityTransform(SqlBaseParser.IdentityTransformContext ctx); + /** + * Enter a parse tree produced by the {@code applyTransform} + * labeled alternative in {@link SqlBaseParser#transform}. + * @param ctx the parse tree + */ + void enterApplyTransform(SqlBaseParser.ApplyTransformContext ctx); + /** + * Exit a parse tree produced by the {@code applyTransform} + * labeled alternative in {@link SqlBaseParser#transform}. + * @param ctx the parse tree + */ + void exitApplyTransform(SqlBaseParser.ApplyTransformContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#transformArgument}. + * @param ctx the parse tree + */ + void enterTransformArgument(SqlBaseParser.TransformArgumentContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#transformArgument}. + * @param ctx the parse tree + */ + void exitTransformArgument(SqlBaseParser.TransformArgumentContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#expression}. + * @param ctx the parse tree + */ + void enterExpression(SqlBaseParser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#expression}. + * @param ctx the parse tree + */ + void exitExpression(SqlBaseParser.ExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code logicalNot} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterLogicalNot(SqlBaseParser.LogicalNotContext ctx); + /** + * Exit a parse tree produced by the {@code logicalNot} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitLogicalNot(SqlBaseParser.LogicalNotContext ctx); + /** + * Enter a parse tree produced by the {@code predicated} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterPredicated(SqlBaseParser.PredicatedContext ctx); + /** + * Exit a parse tree produced by the {@code predicated} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitPredicated(SqlBaseParser.PredicatedContext ctx); + /** + * Enter a parse tree produced by the {@code exists} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterExists(SqlBaseParser.ExistsContext ctx); + /** + * Exit a parse tree produced by the {@code exists} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitExists(SqlBaseParser.ExistsContext ctx); + /** + * Enter a parse tree produced by the {@code logicalBinary} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterLogicalBinary(SqlBaseParser.LogicalBinaryContext ctx); + /** + * Exit a parse tree produced by the {@code logicalBinary} + * labeled alternative in {@link SqlBaseParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitLogicalBinary(SqlBaseParser.LogicalBinaryContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#predicate}. + * @param ctx the parse tree + */ + void enterPredicate(SqlBaseParser.PredicateContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#predicate}. + * @param ctx the parse tree + */ + void exitPredicate(SqlBaseParser.PredicateContext ctx); + /** + * Enter a parse tree produced by the {@code valueExpressionDefault} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void enterValueExpressionDefault(SqlBaseParser.ValueExpressionDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code valueExpressionDefault} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void exitValueExpressionDefault(SqlBaseParser.ValueExpressionDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code comparison} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void enterComparison(SqlBaseParser.ComparisonContext ctx); + /** + * Exit a parse tree produced by the {@code comparison} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void exitComparison(SqlBaseParser.ComparisonContext ctx); + /** + * Enter a parse tree produced by the {@code arithmeticBinary} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void enterArithmeticBinary(SqlBaseParser.ArithmeticBinaryContext ctx); + /** + * Exit a parse tree produced by the {@code arithmeticBinary} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void exitArithmeticBinary(SqlBaseParser.ArithmeticBinaryContext ctx); + /** + * Enter a parse tree produced by the {@code arithmeticUnary} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void enterArithmeticUnary(SqlBaseParser.ArithmeticUnaryContext ctx); + /** + * Exit a parse tree produced by the {@code arithmeticUnary} + * labeled alternative in {@link SqlBaseParser#valueExpression}. + * @param ctx the parse tree + */ + void exitArithmeticUnary(SqlBaseParser.ArithmeticUnaryContext ctx); + /** + * Enter a parse tree produced by the {@code struct} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterStruct(SqlBaseParser.StructContext ctx); + /** + * Exit a parse tree produced by the {@code struct} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitStruct(SqlBaseParser.StructContext ctx); + /** + * Enter a parse tree produced by the {@code dereference} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterDereference(SqlBaseParser.DereferenceContext ctx); + /** + * Exit a parse tree produced by the {@code dereference} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitDereference(SqlBaseParser.DereferenceContext ctx); + /** + * Enter a parse tree produced by the {@code simpleCase} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSimpleCase(SqlBaseParser.SimpleCaseContext ctx); + /** + * Exit a parse tree produced by the {@code simpleCase} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSimpleCase(SqlBaseParser.SimpleCaseContext ctx); + /** + * Enter a parse tree produced by the {@code columnReference} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterColumnReference(SqlBaseParser.ColumnReferenceContext ctx); + /** + * Exit a parse tree produced by the {@code columnReference} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitColumnReference(SqlBaseParser.ColumnReferenceContext ctx); + /** + * Enter a parse tree produced by the {@code rowConstructor} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterRowConstructor(SqlBaseParser.RowConstructorContext ctx); + /** + * Exit a parse tree produced by the {@code rowConstructor} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitRowConstructor(SqlBaseParser.RowConstructorContext ctx); + /** + * Enter a parse tree produced by the {@code last} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterLast(SqlBaseParser.LastContext ctx); + /** + * Exit a parse tree produced by the {@code last} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitLast(SqlBaseParser.LastContext ctx); + /** + * Enter a parse tree produced by the {@code star} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterStar(SqlBaseParser.StarContext ctx); + /** + * Exit a parse tree produced by the {@code star} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitStar(SqlBaseParser.StarContext ctx); + /** + * Enter a parse tree produced by the {@code overlay} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterOverlay(SqlBaseParser.OverlayContext ctx); + /** + * Exit a parse tree produced by the {@code overlay} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitOverlay(SqlBaseParser.OverlayContext ctx); + /** + * Enter a parse tree produced by the {@code subscript} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSubscript(SqlBaseParser.SubscriptContext ctx); + /** + * Exit a parse tree produced by the {@code subscript} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSubscript(SqlBaseParser.SubscriptContext ctx); + /** + * Enter a parse tree produced by the {@code subqueryExpression} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSubqueryExpression(SqlBaseParser.SubqueryExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code subqueryExpression} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSubqueryExpression(SqlBaseParser.SubqueryExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code substring} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSubstring(SqlBaseParser.SubstringContext ctx); + /** + * Exit a parse tree produced by the {@code substring} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSubstring(SqlBaseParser.SubstringContext ctx); + /** + * Enter a parse tree produced by the {@code currentDatetime} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx); + /** + * Exit a parse tree produced by the {@code currentDatetime} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx); + /** + * Enter a parse tree produced by the {@code cast} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCast(SqlBaseParser.CastContext ctx); + /** + * Exit a parse tree produced by the {@code cast} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCast(SqlBaseParser.CastContext ctx); + /** + * Enter a parse tree produced by the {@code constantDefault} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterConstantDefault(SqlBaseParser.ConstantDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code constantDefault} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitConstantDefault(SqlBaseParser.ConstantDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code lambda} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterLambda(SqlBaseParser.LambdaContext ctx); + /** + * Exit a parse tree produced by the {@code lambda} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitLambda(SqlBaseParser.LambdaContext ctx); + /** + * Enter a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterParenthesizedExpression(SqlBaseParser.ParenthesizedExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitParenthesizedExpression(SqlBaseParser.ParenthesizedExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code extract} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterExtract(SqlBaseParser.ExtractContext ctx); + /** + * Exit a parse tree produced by the {@code extract} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitExtract(SqlBaseParser.ExtractContext ctx); + /** + * Enter a parse tree produced by the {@code trim} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterTrim(SqlBaseParser.TrimContext ctx); + /** + * Exit a parse tree produced by the {@code trim} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitTrim(SqlBaseParser.TrimContext ctx); + /** + * Enter a parse tree produced by the {@code functionCall} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterFunctionCall(SqlBaseParser.FunctionCallContext ctx); + /** + * Exit a parse tree produced by the {@code functionCall} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitFunctionCall(SqlBaseParser.FunctionCallContext ctx); + /** + * Enter a parse tree produced by the {@code searchedCase} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSearchedCase(SqlBaseParser.SearchedCaseContext ctx); + /** + * Exit a parse tree produced by the {@code searchedCase} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSearchedCase(SqlBaseParser.SearchedCaseContext ctx); + /** + * Enter a parse tree produced by the {@code position} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterPosition(SqlBaseParser.PositionContext ctx); + /** + * Exit a parse tree produced by the {@code position} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitPosition(SqlBaseParser.PositionContext ctx); + /** + * Enter a parse tree produced by the {@code first} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterFirst(SqlBaseParser.FirstContext ctx); + /** + * Exit a parse tree produced by the {@code first} + * labeled alternative in {@link SqlBaseParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitFirst(SqlBaseParser.FirstContext ctx); + /** + * Enter a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void enterNullLiteral(SqlBaseParser.NullLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void exitNullLiteral(SqlBaseParser.NullLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code intervalLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void enterIntervalLiteral(SqlBaseParser.IntervalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code intervalLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void exitIntervalLiteral(SqlBaseParser.IntervalLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code typeConstructor} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void enterTypeConstructor(SqlBaseParser.TypeConstructorContext ctx); + /** + * Exit a parse tree produced by the {@code typeConstructor} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void exitTypeConstructor(SqlBaseParser.TypeConstructorContext ctx); + /** + * Enter a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void enterNumericLiteral(SqlBaseParser.NumericLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void exitNumericLiteral(SqlBaseParser.NumericLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void enterBooleanLiteral(SqlBaseParser.BooleanLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void exitBooleanLiteral(SqlBaseParser.BooleanLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void enterStringLiteral(SqlBaseParser.StringLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link SqlBaseParser#constant}. + * @param ctx the parse tree + */ + void exitStringLiteral(SqlBaseParser.StringLiteralContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#comparisonOperator}. + * @param ctx the parse tree + */ + void enterComparisonOperator(SqlBaseParser.ComparisonOperatorContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#comparisonOperator}. + * @param ctx the parse tree + */ + void exitComparisonOperator(SqlBaseParser.ComparisonOperatorContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#arithmeticOperator}. + * @param ctx the parse tree + */ + void enterArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#arithmeticOperator}. + * @param ctx the parse tree + */ + void exitArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#predicateOperator}. + * @param ctx the parse tree + */ + void enterPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#predicateOperator}. + * @param ctx the parse tree + */ + void exitPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#booleanValue}. + * @param ctx the parse tree + */ + void enterBooleanValue(SqlBaseParser.BooleanValueContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#booleanValue}. + * @param ctx the parse tree + */ + void exitBooleanValue(SqlBaseParser.BooleanValueContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#interval}. + * @param ctx the parse tree + */ + void enterInterval(SqlBaseParser.IntervalContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#interval}. + * @param ctx the parse tree + */ + void exitInterval(SqlBaseParser.IntervalContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#errorCapturingMultiUnitsInterval}. + * @param ctx the parse tree + */ + void enterErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#errorCapturingMultiUnitsInterval}. + * @param ctx the parse tree + */ + void exitErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#multiUnitsInterval}. + * @param ctx the parse tree + */ + void enterMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#multiUnitsInterval}. + * @param ctx the parse tree + */ + void exitMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#errorCapturingUnitToUnitInterval}. + * @param ctx the parse tree + */ + void enterErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#errorCapturingUnitToUnitInterval}. + * @param ctx the parse tree + */ + void exitErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#unitToUnitInterval}. + * @param ctx the parse tree + */ + void enterUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#unitToUnitInterval}. + * @param ctx the parse tree + */ + void exitUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#intervalValue}. + * @param ctx the parse tree + */ + void enterIntervalValue(SqlBaseParser.IntervalValueContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#intervalValue}. + * @param ctx the parse tree + */ + void exitIntervalValue(SqlBaseParser.IntervalValueContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#intervalUnit}. + * @param ctx the parse tree + */ + void enterIntervalUnit(SqlBaseParser.IntervalUnitContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#intervalUnit}. + * @param ctx the parse tree + */ + void exitIntervalUnit(SqlBaseParser.IntervalUnitContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#colPosition}. + * @param ctx the parse tree + */ + void enterColPosition(SqlBaseParser.ColPositionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#colPosition}. + * @param ctx the parse tree + */ + void exitColPosition(SqlBaseParser.ColPositionContext ctx); + /** + * Enter a parse tree produced by the {@code complexDataType} + * labeled alternative in {@link SqlBaseParser#dataType}. + * @param ctx the parse tree + */ + void enterComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx); + /** + * Exit a parse tree produced by the {@code complexDataType} + * labeled alternative in {@link SqlBaseParser#dataType}. + * @param ctx the parse tree + */ + void exitComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx); + /** + * Enter a parse tree produced by the {@code primitiveDataType} + * labeled alternative in {@link SqlBaseParser#dataType}. + * @param ctx the parse tree + */ + void enterPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx); + /** + * Exit a parse tree produced by the {@code primitiveDataType} + * labeled alternative in {@link SqlBaseParser#dataType}. + * @param ctx the parse tree + */ + void exitPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPositionList}. + * @param ctx the parse tree + */ + void enterQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPositionList}. + * @param ctx the parse tree + */ + void exitQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPosition}. + * @param ctx the parse tree + */ + void enterQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPosition}. + * @param ctx the parse tree + */ + void exitQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#colTypeList}. + * @param ctx the parse tree + */ + void enterColTypeList(SqlBaseParser.ColTypeListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#colTypeList}. + * @param ctx the parse tree + */ + void exitColTypeList(SqlBaseParser.ColTypeListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#colType}. + * @param ctx the parse tree + */ + void enterColType(SqlBaseParser.ColTypeContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#colType}. + * @param ctx the parse tree + */ + void exitColType(SqlBaseParser.ColTypeContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#complexColTypeList}. + * @param ctx the parse tree + */ + void enterComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#complexColTypeList}. + * @param ctx the parse tree + */ + void exitComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#complexColType}. + * @param ctx the parse tree + */ + void enterComplexColType(SqlBaseParser.ComplexColTypeContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#complexColType}. + * @param ctx the parse tree + */ + void exitComplexColType(SqlBaseParser.ComplexColTypeContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#whenClause}. + * @param ctx the parse tree + */ + void enterWhenClause(SqlBaseParser.WhenClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#whenClause}. + * @param ctx the parse tree + */ + void exitWhenClause(SqlBaseParser.WhenClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#windowClause}. + * @param ctx the parse tree + */ + void enterWindowClause(SqlBaseParser.WindowClauseContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#windowClause}. + * @param ctx the parse tree + */ + void exitWindowClause(SqlBaseParser.WindowClauseContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#namedWindow}. + * @param ctx the parse tree + */ + void enterNamedWindow(SqlBaseParser.NamedWindowContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#namedWindow}. + * @param ctx the parse tree + */ + void exitNamedWindow(SqlBaseParser.NamedWindowContext ctx); + /** + * Enter a parse tree produced by the {@code windowRef} + * labeled alternative in {@link SqlBaseParser#windowSpec}. + * @param ctx the parse tree + */ + void enterWindowRef(SqlBaseParser.WindowRefContext ctx); + /** + * Exit a parse tree produced by the {@code windowRef} + * labeled alternative in {@link SqlBaseParser#windowSpec}. + * @param ctx the parse tree + */ + void exitWindowRef(SqlBaseParser.WindowRefContext ctx); + /** + * Enter a parse tree produced by the {@code windowDef} + * labeled alternative in {@link SqlBaseParser#windowSpec}. + * @param ctx the parse tree + */ + void enterWindowDef(SqlBaseParser.WindowDefContext ctx); + /** + * Exit a parse tree produced by the {@code windowDef} + * labeled alternative in {@link SqlBaseParser#windowSpec}. + * @param ctx the parse tree + */ + void exitWindowDef(SqlBaseParser.WindowDefContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#windowFrame}. + * @param ctx the parse tree + */ + void enterWindowFrame(SqlBaseParser.WindowFrameContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#windowFrame}. + * @param ctx the parse tree + */ + void exitWindowFrame(SqlBaseParser.WindowFrameContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#frameBound}. + * @param ctx the parse tree + */ + void enterFrameBound(SqlBaseParser.FrameBoundContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#frameBound}. + * @param ctx the parse tree + */ + void exitFrameBound(SqlBaseParser.FrameBoundContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#qualifiedNameList}. + * @param ctx the parse tree + */ + void enterQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#qualifiedNameList}. + * @param ctx the parse tree + */ + void exitQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#functionName}. + * @param ctx the parse tree + */ + void enterFunctionName(SqlBaseParser.FunctionNameContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#functionName}. + * @param ctx the parse tree + */ + void exitFunctionName(SqlBaseParser.FunctionNameContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#qualifiedName}. + * @param ctx the parse tree + */ + void enterQualifiedName(SqlBaseParser.QualifiedNameContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#qualifiedName}. + * @param ctx the parse tree + */ + void exitQualifiedName(SqlBaseParser.QualifiedNameContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#errorCapturingIdentifier}. + * @param ctx the parse tree + */ + void enterErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#errorCapturingIdentifier}. + * @param ctx the parse tree + */ + void exitErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code errorIdent} + * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void enterErrorIdent(SqlBaseParser.ErrorIdentContext ctx); + /** + * Exit a parse tree produced by the {@code errorIdent} + * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void exitErrorIdent(SqlBaseParser.ErrorIdentContext ctx); + /** + * Enter a parse tree produced by the {@code realIdent} + * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void enterRealIdent(SqlBaseParser.RealIdentContext ctx); + /** + * Exit a parse tree produced by the {@code realIdent} + * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void exitRealIdent(SqlBaseParser.RealIdentContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#identifier}. + * @param ctx the parse tree + */ + void enterIdentifier(SqlBaseParser.IdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#identifier}. + * @param ctx the parse tree + */ + void exitIdentifier(SqlBaseParser.IdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link SqlBaseParser#strictIdentifier}. + * @param ctx the parse tree + */ + void enterUnquotedIdentifier(SqlBaseParser.UnquotedIdentifierContext ctx); + /** + * Exit a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link SqlBaseParser#strictIdentifier}. + * @param ctx the parse tree + */ + void exitUnquotedIdentifier(SqlBaseParser.UnquotedIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code quotedIdentifierAlternative} + * labeled alternative in {@link SqlBaseParser#strictIdentifier}. + * @param ctx the parse tree + */ + void enterQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx); + /** + * Exit a parse tree produced by the {@code quotedIdentifierAlternative} + * labeled alternative in {@link SqlBaseParser#strictIdentifier}. + * @param ctx the parse tree + */ + void exitQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#quotedIdentifier}. + * @param ctx the parse tree + */ + void enterQuotedIdentifier(SqlBaseParser.QuotedIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#quotedIdentifier}. + * @param ctx the parse tree + */ + void exitQuotedIdentifier(SqlBaseParser.QuotedIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code exponentLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code exponentLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterDecimalLiteral(SqlBaseParser.DecimalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitDecimalLiteral(SqlBaseParser.DecimalLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code legacyDecimalLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code legacyDecimalLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterIntegerLiteral(SqlBaseParser.IntegerLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitIntegerLiteral(SqlBaseParser.IntegerLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code bigIntLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code bigIntLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code smallIntLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code smallIntLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code tinyIntLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code tinyIntLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code doubleLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterDoubleLiteral(SqlBaseParser.DoubleLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code doubleLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitDoubleLiteral(SqlBaseParser.DoubleLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code bigDecimalLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void enterBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code bigDecimalLiteral} + * labeled alternative in {@link SqlBaseParser#number}. + * @param ctx the parse tree + */ + void exitBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#alterColumnAction}. + * @param ctx the parse tree + */ + void enterAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#alterColumnAction}. + * @param ctx the parse tree + */ + void exitAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#ansiNonReserved}. + * @param ctx the parse tree + */ + void enterAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#ansiNonReserved}. + * @param ctx the parse tree + */ + void exitAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#strictNonReserved}. + * @param ctx the parse tree + */ + void enterStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#strictNonReserved}. + * @param ctx the parse tree + */ + void exitStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx); + /** + * Enter a parse tree produced by {@link SqlBaseParser#nonReserved}. + * @param ctx the parse tree + */ + void enterNonReserved(SqlBaseParser.NonReservedContext ctx); + /** + * Exit a parse tree produced by {@link SqlBaseParser#nonReserved}. + * @param ctx the parse tree + */ + void exitNonReserved(SqlBaseParser.NonReservedContext ctx); +} \ No newline at end of file diff --git a/pysparkling/sql/ast/generated/SqlBaseParser.java b/pysparkling/sql/ast/generated/SqlBaseParser.java new file mode 100644 index 000000000..9449fb1d4 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseParser.java @@ -0,0 +1,20067 @@ +// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class SqlBaseParser extends Parser { + static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, + T__9=10, T__10=11, ADD=12, AFTER=13, ALL=14, ALTER=15, ANALYZE=16, AND=17, + ANTI=18, ANY=19, ARCHIVE=20, ARRAY=21, AS=22, ASC=23, AT=24, AUTHORIZATION=25, + BETWEEN=26, BOTH=27, BUCKET=28, BUCKETS=29, BY=30, CACHE=31, CASCADE=32, + CASE=33, CAST=34, CHANGE=35, CHECK=36, CLEAR=37, CLUSTER=38, CLUSTERED=39, + CODEGEN=40, COLLATE=41, COLLECTION=42, COLUMN=43, COLUMNS=44, COMMENT=45, + COMMIT=46, COMPACT=47, COMPACTIONS=48, COMPUTE=49, CONCATENATE=50, CONSTRAINT=51, + COST=52, CREATE=53, CROSS=54, CUBE=55, CURRENT=56, CURRENT_DATE=57, CURRENT_TIME=58, + CURRENT_TIMESTAMP=59, CURRENT_USER=60, DATA=61, DATABASE=62, DATABASES=63, + DAY=64, DBPROPERTIES=65, DEFINED=66, DELETE=67, DELIMITED=68, DESC=69, + DESCRIBE=70, DFS=71, DIRECTORIES=72, DIRECTORY=73, DISTINCT=74, DISTRIBUTE=75, + DROP=76, ELSE=77, END=78, ESCAPE=79, ESCAPED=80, EXCEPT=81, EXCHANGE=82, + EXISTS=83, EXPLAIN=84, EXPORT=85, EXTENDED=86, EXTERNAL=87, EXTRACT=88, + FALSE=89, FETCH=90, FIELDS=91, FILTER=92, FILEFORMAT=93, FIRST=94, FOLLOWING=95, + FOR=96, FOREIGN=97, FORMAT=98, FORMATTED=99, FROM=100, FULL=101, FUNCTION=102, + FUNCTIONS=103, GLOBAL=104, GRANT=105, GROUP=106, GROUPING=107, HAVING=108, + HOUR=109, IF=110, IGNORE=111, IMPORT=112, IN=113, INDEX=114, INDEXES=115, + INNER=116, INPATH=117, INPUTFORMAT=118, INSERT=119, INTERSECT=120, INTERVAL=121, + INTO=122, IS=123, ITEMS=124, JOIN=125, KEYS=126, LAST=127, LATERAL=128, + LAZY=129, LEADING=130, LEFT=131, LIKE=132, LIMIT=133, LINES=134, LIST=135, + LOAD=136, LOCAL=137, LOCATION=138, LOCK=139, LOCKS=140, LOGICAL=141, MACRO=142, + MAP=143, MATCHED=144, MERGE=145, MINUTE=146, MONTH=147, MSCK=148, NAMESPACE=149, + NAMESPACES=150, NATURAL=151, NO=152, NOT=153, NULL=154, NULLS=155, OF=156, + ON=157, ONLY=158, OPTION=159, OPTIONS=160, OR=161, ORDER=162, OUT=163, + OUTER=164, OUTPUTFORMAT=165, OVER=166, OVERLAPS=167, OVERLAY=168, OVERWRITE=169, + PARTITION=170, PARTITIONED=171, PARTITIONS=172, PERCENTLIT=173, PIVOT=174, + PLACING=175, POSITION=176, PRECEDING=177, PRIMARY=178, PRINCIPALS=179, + PROPERTIES=180, PURGE=181, QUERY=182, RANGE=183, RECORDREADER=184, RECORDWRITER=185, + RECOVER=186, REDUCE=187, REFERENCES=188, REFRESH=189, RENAME=190, REPAIR=191, + REPLACE=192, RESET=193, RESTRICT=194, REVOKE=195, RIGHT=196, RLIKE=197, + ROLE=198, ROLES=199, ROLLBACK=200, ROLLUP=201, ROW=202, ROWS=203, SCHEMA=204, + SECOND=205, SELECT=206, SEMI=207, SEPARATED=208, SERDE=209, SERDEPROPERTIES=210, + SESSION_USER=211, SET=212, SETMINUS=213, SETS=214, SHOW=215, SKEWED=216, + SOME=217, SORT=218, SORTED=219, START=220, STATISTICS=221, STORED=222, + STRATIFY=223, STRUCT=224, SUBSTR=225, SUBSTRING=226, TABLE=227, TABLES=228, + TABLESAMPLE=229, TBLPROPERTIES=230, TEMPORARY=231, TERMINATED=232, THEN=233, + TO=234, TOUCH=235, TRAILING=236, TRANSACTION=237, TRANSACTIONS=238, TRANSFORM=239, + TRIM=240, TRUE=241, TRUNCATE=242, TYPE=243, UNARCHIVE=244, UNBOUNDED=245, + UNCACHE=246, UNION=247, UNIQUE=248, UNKNOWN=249, UNLOCK=250, UNSET=251, + UPDATE=252, USE=253, USER=254, USING=255, VALUES=256, VIEW=257, VIEWS=258, + WHEN=259, WHERE=260, WINDOW=261, WITH=262, YEAR=263, EQ=264, NSEQ=265, + NEQ=266, NEQJ=267, LT=268, LTE=269, GT=270, GTE=271, PLUS=272, MINUS=273, + ASTERISK=274, SLASH=275, PERCENT=276, DIV=277, TILDE=278, AMPERSAND=279, + PIPE=280, CONCAT_PIPE=281, HAT=282, STRING=283, BIGINT_LITERAL=284, SMALLINT_LITERAL=285, + TINYINT_LITERAL=286, INTEGER_VALUE=287, EXPONENT_VALUE=288, DECIMAL_VALUE=289, + DOUBLE_LITERAL=290, BIGDECIMAL_LITERAL=291, IDENTIFIER=292, BACKQUOTED_IDENTIFIER=293, + SIMPLE_COMMENT=294, BRACKETED_COMMENT=295, WS=296, UNRECOGNIZED=297; + public static final int + RULE_singleStatement = 0, RULE_singleExpression = 1, RULE_singleTableIdentifier = 2, + RULE_singleMultipartIdentifier = 3, RULE_singleFunctionIdentifier = 4, + RULE_singleDataType = 5, RULE_singleTableSchema = 6, RULE_statement = 7, + RULE_unsupportedHiveNativeCommands = 8, RULE_createTableHeader = 9, RULE_replaceTableHeader = 10, + RULE_bucketSpec = 11, RULE_skewSpec = 12, RULE_locationSpec = 13, RULE_commentSpec = 14, + RULE_query = 15, RULE_insertInto = 16, RULE_partitionSpecLocation = 17, + RULE_partitionSpec = 18, RULE_partitionVal = 19, RULE_namespace = 20, + RULE_describeFuncName = 21, RULE_describeColName = 22, RULE_ctes = 23, + RULE_namedQuery = 24, RULE_tableProvider = 25, RULE_createTableClauses = 26, + RULE_tablePropertyList = 27, RULE_tableProperty = 28, RULE_tablePropertyKey = 29, + RULE_tablePropertyValue = 30, RULE_constantList = 31, RULE_nestedConstantList = 32, + RULE_createFileFormat = 33, RULE_fileFormat = 34, RULE_storageHandler = 35, + RULE_resource = 36, RULE_dmlStatementNoWith = 37, RULE_queryOrganization = 38, + RULE_multiInsertQueryBody = 39, RULE_queryTerm = 40, RULE_queryPrimary = 41, + RULE_sortItem = 42, RULE_fromStatement = 43, RULE_fromStatementBody = 44, + RULE_querySpecification = 45, RULE_transformClause = 46, RULE_selectClause = 47, + RULE_setClause = 48, RULE_matchedClause = 49, RULE_notMatchedClause = 50, + RULE_matchedAction = 51, RULE_notMatchedAction = 52, RULE_assignmentList = 53, + RULE_assignment = 54, RULE_whereClause = 55, RULE_havingClause = 56, RULE_hint = 57, + RULE_hintStatement = 58, RULE_fromClause = 59, RULE_aggregationClause = 60, + RULE_groupingSet = 61, RULE_pivotClause = 62, RULE_pivotColumn = 63, RULE_pivotValue = 64, + RULE_lateralView = 65, RULE_setQuantifier = 66, RULE_relation = 67, RULE_joinRelation = 68, + RULE_joinType = 69, RULE_joinCriteria = 70, RULE_sample = 71, RULE_sampleMethod = 72, + RULE_identifierList = 73, RULE_identifierSeq = 74, RULE_orderedIdentifierList = 75, + RULE_orderedIdentifier = 76, RULE_identifierCommentList = 77, RULE_identifierComment = 78, + RULE_relationPrimary = 79, RULE_inlineTable = 80, RULE_functionTable = 81, + RULE_tableAlias = 82, RULE_rowFormat = 83, RULE_multipartIdentifierList = 84, + RULE_multipartIdentifier = 85, RULE_tableIdentifier = 86, RULE_functionIdentifier = 87, + RULE_namedExpression = 88, RULE_namedExpressionSeq = 89, RULE_transformList = 90, + RULE_transform = 91, RULE_transformArgument = 92, RULE_expression = 93, + RULE_booleanExpression = 94, RULE_predicate = 95, RULE_valueExpression = 96, + RULE_primaryExpression = 97, RULE_constant = 98, RULE_comparisonOperator = 99, + RULE_arithmeticOperator = 100, RULE_predicateOperator = 101, RULE_booleanValue = 102, + RULE_interval = 103, RULE_errorCapturingMultiUnitsInterval = 104, RULE_multiUnitsInterval = 105, + RULE_errorCapturingUnitToUnitInterval = 106, RULE_unitToUnitInterval = 107, + RULE_intervalValue = 108, RULE_intervalUnit = 109, RULE_colPosition = 110, + RULE_dataType = 111, RULE_qualifiedColTypeWithPositionList = 112, RULE_qualifiedColTypeWithPosition = 113, + RULE_colTypeList = 114, RULE_colType = 115, RULE_complexColTypeList = 116, + RULE_complexColType = 117, RULE_whenClause = 118, RULE_windowClause = 119, + RULE_namedWindow = 120, RULE_windowSpec = 121, RULE_windowFrame = 122, + RULE_frameBound = 123, RULE_qualifiedNameList = 124, RULE_functionName = 125, + RULE_qualifiedName = 126, RULE_errorCapturingIdentifier = 127, RULE_errorCapturingIdentifierExtra = 128, + RULE_identifier = 129, RULE_strictIdentifier = 130, RULE_quotedIdentifier = 131, + RULE_number = 132, RULE_alterColumnAction = 133, RULE_ansiNonReserved = 134, + RULE_strictNonReserved = 135, RULE_nonReserved = 136; + public static final String[] ruleNames = { + "singleStatement", "singleExpression", "singleTableIdentifier", "singleMultipartIdentifier", + "singleFunctionIdentifier", "singleDataType", "singleTableSchema", "statement", + "unsupportedHiveNativeCommands", "createTableHeader", "replaceTableHeader", + "bucketSpec", "skewSpec", "locationSpec", "commentSpec", "query", "insertInto", + "partitionSpecLocation", "partitionSpec", "partitionVal", "namespace", + "describeFuncName", "describeColName", "ctes", "namedQuery", "tableProvider", + "createTableClauses", "tablePropertyList", "tableProperty", "tablePropertyKey", + "tablePropertyValue", "constantList", "nestedConstantList", "createFileFormat", + "fileFormat", "storageHandler", "resource", "dmlStatementNoWith", "queryOrganization", + "multiInsertQueryBody", "queryTerm", "queryPrimary", "sortItem", "fromStatement", + "fromStatementBody", "querySpecification", "transformClause", "selectClause", + "setClause", "matchedClause", "notMatchedClause", "matchedAction", "notMatchedAction", + "assignmentList", "assignment", "whereClause", "havingClause", "hint", + "hintStatement", "fromClause", "aggregationClause", "groupingSet", "pivotClause", + "pivotColumn", "pivotValue", "lateralView", "setQuantifier", "relation", + "joinRelation", "joinType", "joinCriteria", "sample", "sampleMethod", + "identifierList", "identifierSeq", "orderedIdentifierList", "orderedIdentifier", + "identifierCommentList", "identifierComment", "relationPrimary", "inlineTable", + "functionTable", "tableAlias", "rowFormat", "multipartIdentifierList", + "multipartIdentifier", "tableIdentifier", "functionIdentifier", "namedExpression", + "namedExpressionSeq", "transformList", "transform", "transformArgument", + "expression", "booleanExpression", "predicate", "valueExpression", "primaryExpression", + "constant", "comparisonOperator", "arithmeticOperator", "predicateOperator", + "booleanValue", "interval", "errorCapturingMultiUnitsInterval", "multiUnitsInterval", + "errorCapturingUnitToUnitInterval", "unitToUnitInterval", "intervalValue", + "intervalUnit", "colPosition", "dataType", "qualifiedColTypeWithPositionList", + "qualifiedColTypeWithPosition", "colTypeList", "colType", "complexColTypeList", + "complexColType", "whenClause", "windowClause", "namedWindow", "windowSpec", + "windowFrame", "frameBound", "qualifiedNameList", "functionName", "qualifiedName", + "errorCapturingIdentifier", "errorCapturingIdentifierExtra", "identifier", + "strictIdentifier", "quotedIdentifier", "number", "alterColumnAction", + "ansiNonReserved", "strictNonReserved", "nonReserved" + }; + + private static final String[] _LITERAL_NAMES = { + null, "';'", "'('", "')'", "','", "'.'", "'/*+'", "'*/'", "'->'", "'['", + "']'", "':'", "'ADD'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", + "'ANTI'", "'ANY'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", + "'BETWEEN'", "'BOTH'", "'BUCKET'", "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", + "'CASE'", "'CAST'", "'CHANGE'", "'CHECK'", "'CLEAR'", "'CLUSTER'", "'CLUSTERED'", + "'CODEGEN'", "'COLLATE'", "'COLLECTION'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", + "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", "'COMPUTE'", "'CONCATENATE'", + "'CONSTRAINT'", "'COST'", "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", + "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", + "'DATA'", "'DATABASE'", null, "'DAY'", "'DBPROPERTIES'", "'DEFINED'", + "'DELETE'", "'DELIMITED'", "'DESC'", "'DESCRIBE'", "'DFS'", "'DIRECTORIES'", + "'DIRECTORY'", "'DISTINCT'", "'DISTRIBUTE'", "'DROP'", "'ELSE'", "'END'", + "'ESCAPE'", "'ESCAPED'", "'EXCEPT'", "'EXCHANGE'", "'EXISTS'", "'EXPLAIN'", + "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", "'FALSE'", "'FETCH'", + "'FIELDS'", "'FILTER'", "'FILEFORMAT'", "'FIRST'", "'FOLLOWING'", "'FOR'", + "'FOREIGN'", "'FORMAT'", "'FORMATTED'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GLOBAL'", "'GRANT'", "'GROUP'", "'GROUPING'", "'HAVING'", + "'HOUR'", "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", "'INDEX'", "'INDEXES'", + "'INNER'", "'INPATH'", "'INPUTFORMAT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", + "'INTO'", "'IS'", "'ITEMS'", "'JOIN'", "'KEYS'", "'LAST'", "'LATERAL'", + "'LAZY'", "'LEADING'", "'LEFT'", "'LIKE'", "'LIMIT'", "'LINES'", "'LIST'", + "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCKS'", "'LOGICAL'", "'MACRO'", + "'MAP'", "'MATCHED'", "'MERGE'", "'MINUTE'", "'MONTH'", "'MSCK'", "'NAMESPACE'", + "'NAMESPACES'", "'NATURAL'", "'NO'", null, "'NULL'", "'NULLS'", "'OF'", + "'ON'", "'ONLY'", "'OPTION'", "'OPTIONS'", "'OR'", "'ORDER'", "'OUT'", + "'OUTER'", "'OUTPUTFORMAT'", "'OVER'", "'OVERLAPS'", "'OVERLAY'", "'OVERWRITE'", + "'PARTITION'", "'PARTITIONED'", "'PARTITIONS'", "'PERCENT'", "'PIVOT'", + "'PLACING'", "'POSITION'", "'PRECEDING'", "'PRIMARY'", "'PRINCIPALS'", + "'PROPERTIES'", "'PURGE'", "'QUERY'", "'RANGE'", "'RECORDREADER'", "'RECORDWRITER'", + "'RECOVER'", "'REDUCE'", "'REFERENCES'", "'REFRESH'", "'RENAME'", "'REPAIR'", + "'REPLACE'", "'RESET'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", null, "'ROLE'", + "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEMA'", "'SECOND'", + "'SELECT'", "'SEMI'", "'SEPARATED'", "'SERDE'", "'SERDEPROPERTIES'", "'SESSION_USER'", + "'SET'", "'MINUS'", "'SETS'", "'SHOW'", "'SKEWED'", "'SOME'", "'SORT'", + "'SORTED'", "'START'", "'STATISTICS'", "'STORED'", "'STRATIFY'", "'STRUCT'", + "'SUBSTR'", "'SUBSTRING'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'", + null, "'TERMINATED'", "'THEN'", "'TO'", "'TOUCH'", "'TRAILING'", "'TRANSACTION'", + "'TRANSACTIONS'", "'TRANSFORM'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", + "'UNARCHIVE'", "'UNBOUNDED'", "'UNCACHE'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", + "'UNLOCK'", "'UNSET'", "'UPDATE'", "'USE'", "'USER'", "'USING'", "'VALUES'", + "'VIEW'", "'VIEWS'", "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'YEAR'", + null, "'<=>'", "'<>'", "'!='", "'<'", null, "'>'", null, "'+'", "'-'", + "'*'", "'/'", "'%'", "'DIV'", "'~'", "'&'", "'|'", "'||'", "'^'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, null, null, null, null, null, null, null, null, null, null, null, + "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANTI", "ANY", "ARCHIVE", + "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", "BOTH", "BUCKET", + "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", "CAST", "CHANGE", "CHECK", + "CLEAR", "CLUSTER", "CLUSTERED", "CODEGEN", "COLLATE", "COLLECTION", "COLUMN", + "COLUMNS", "COMMENT", "COMMIT", "COMPACT", "COMPACTIONS", "COMPUTE", "CONCATENATE", + "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", + "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", "DATABASE", + "DATABASES", "DAY", "DBPROPERTIES", "DEFINED", "DELETE", "DELIMITED", + "DESC", "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", "DISTINCT", "DISTRIBUTE", + "DROP", "ELSE", "END", "ESCAPE", "ESCAPED", "EXCEPT", "EXCHANGE", "EXISTS", + "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", + "FIELDS", "FILTER", "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", "FOREIGN", + "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GLOBAL", + "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", "IF", "IGNORE", "IMPORT", + "IN", "INDEX", "INDEXES", "INNER", "INPATH", "INPUTFORMAT", "INSERT", + "INTERSECT", "INTERVAL", "INTO", "IS", "ITEMS", "JOIN", "KEYS", "LAST", + "LATERAL", "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", "LIST", + "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", "MACRO", "MAP", + "MATCHED", "MERGE", "MINUTE", "MONTH", "MSCK", "NAMESPACE", "NAMESPACES", + "NATURAL", "NO", "NOT", "NULL", "NULLS", "OF", "ON", "ONLY", "OPTION", + "OPTIONS", "OR", "ORDER", "OUT", "OUTER", "OUTPUTFORMAT", "OVER", "OVERLAPS", + "OVERLAY", "OVERWRITE", "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", + "PIVOT", "PLACING", "POSITION", "PRECEDING", "PRIMARY", "PRINCIPALS", + "PROPERTIES", "PURGE", "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", + "RECOVER", "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", "REPLACE", + "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLES", "ROLLBACK", + "ROLLUP", "ROW", "ROWS", "SCHEMA", "SECOND", "SELECT", "SEMI", "SEPARATED", + "SERDE", "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", "SETS", + "SHOW", "SKEWED", "SOME", "SORT", "SORTED", "START", "STATISTICS", "STORED", + "STRATIFY", "STRUCT", "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", + "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", "TRAILING", + "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", "TRUE", "TRUNCATE", + "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", "UNION", "UNIQUE", "UNKNOWN", + "UNLOCK", "UNSET", "UPDATE", "USE", "USER", "USING", "VALUES", "VIEW", + "VIEWS", "WHEN", "WHERE", "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", + "NEQJ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", + "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", "HAT", + "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", + "EXPONENT_VALUE", "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "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; + } + + @Override + public String getGrammarFileName() { return "SqlBase.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + + """ + When false, INTERSECT is given the greater precedence over the other set + operations (UNION, EXCEPT and MINUS) as per the SQL standard. + """ + legacy_setops_precedence_enbled = False + + """ + When false, a literal with an exponent would be converted into + double type rather than decimal type. + """ + legacy_exponent_literal_as_decimal_enabled = False + + """ + When false, CREATE TABLE syntax without a provider will use + the value of spark.sql.sources.default as its provider. + """ + legacy_create_hive_table_by_default_enabled = False + + """ + When true, the behavior of keywords follows ANSI SQL standard. + """ + SQL_standard_keyword_behavior = False + + def isValidDecimal(self): + """ + Verify whether current token is a valid decimal token (which contains dot). + Returns true if the character that follows the token is not a digit or letter or underscore. + + For example: + For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. + For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. + For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. + For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed + by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' + which is not a digit or letter or underscore. + """ + nextChar = self._input.LA(1) + if 'A' <= nextChar <= 'Z' or '0' <= nextChar <= '9' or nextChar == '_': + return False + else: + return True + + def isHint(self): + """ + This method will be called when we see '/*' and try to match it as a bracketed comment. + If the next character is '+', it should be parsed as hint later, and we cannot match + it as a bracketed comment. + + Returns true if the next character is '+'. + """ + nextChar = self._input.LA(1) + if nextChar == '+': + return True + else: + return False + + public SqlBaseParser(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(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterSingleStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleStatement(this); + } + } + + public final SingleStatementContext singleStatement() throws RecognitionException { + SingleStatementContext _localctx = new SingleStatementContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_singleStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(274); + statement(); + setState(278); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__0) { + { + { + setState(275); + match(T__0); + } + } + setState(280); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(281); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleExpressionContext extends ParserRuleContext { + public NamedExpressionContext namedExpression() { + return getRuleContext(NamedExpressionContext.class,0); + } + public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } + public SingleExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleExpression(this); + } + } + + public final SingleExpressionContext singleExpression() throws RecognitionException { + SingleExpressionContext _localctx = new SingleExpressionContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_singleExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(283); + namedExpression(); + setState(284); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleTableIdentifierContext extends ParserRuleContext { + public TableIdentifierContext tableIdentifier() { + return getRuleContext(TableIdentifierContext.class,0); + } + public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } + public SingleTableIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleTableIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleTableIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleTableIdentifier(this); + } + } + + public final SingleTableIdentifierContext singleTableIdentifier() throws RecognitionException { + SingleTableIdentifierContext _localctx = new SingleTableIdentifierContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_singleTableIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(286); + tableIdentifier(); + setState(287); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleMultipartIdentifierContext extends ParserRuleContext { + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } + public SingleMultipartIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleMultipartIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleMultipartIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleMultipartIdentifier(this); + } + } + + public final SingleMultipartIdentifierContext singleMultipartIdentifier() throws RecognitionException { + SingleMultipartIdentifierContext _localctx = new SingleMultipartIdentifierContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_singleMultipartIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(289); + multipartIdentifier(); + setState(290); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleFunctionIdentifierContext extends ParserRuleContext { + public FunctionIdentifierContext functionIdentifier() { + return getRuleContext(FunctionIdentifierContext.class,0); + } + public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } + public SingleFunctionIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleFunctionIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleFunctionIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleFunctionIdentifier(this); + } + } + + public final SingleFunctionIdentifierContext singleFunctionIdentifier() throws RecognitionException { + SingleFunctionIdentifierContext _localctx = new SingleFunctionIdentifierContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_singleFunctionIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(292); + functionIdentifier(); + setState(293); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleDataTypeContext extends ParserRuleContext { + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } + public SingleDataTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleDataType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleDataType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleDataType(this); + } + } + + public final SingleDataTypeContext singleDataType() throws RecognitionException { + SingleDataTypeContext _localctx = new SingleDataTypeContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_singleDataType); + try { + enterOuterAlt(_localctx, 1); + { + setState(295); + dataType(); + setState(296); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleTableSchemaContext extends ParserRuleContext { + public ColTypeListContext colTypeList() { + return getRuleContext(ColTypeListContext.class,0); + } + public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } + public SingleTableSchemaContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleTableSchema; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleTableSchema(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleTableSchema(this); + } + } + + public final SingleTableSchemaContext singleTableSchema() throws RecognitionException { + SingleTableSchemaContext _localctx = new SingleTableSchemaContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_singleTableSchema); + try { + enterOuterAlt(_localctx, 1); + { + setState(298); + colTypeList(); + setState(299); + 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(SqlBaseParser.EXPLAIN, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public TerminalNode LOGICAL() { return getToken(SqlBaseParser.LOGICAL, 0); } + public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } + public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } + public TerminalNode CODEGEN() { return getToken(SqlBaseParser.CODEGEN, 0); } + public TerminalNode COST() { return getToken(SqlBaseParser.COST, 0); } + public ExplainContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExplain(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExplain(this); + } + } + public static class ResetConfigurationContext extends StatementContext { + public TerminalNode RESET() { return getToken(SqlBaseParser.RESET, 0); } + public ResetConfigurationContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterResetConfiguration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitResetConfiguration(this); + } + } + public static class AlterViewQueryContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public AlterViewQueryContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAlterViewQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAlterViewQuery(this); + } + } + public static class UseContext extends StatementContext { + public TerminalNode USE() { return getToken(SqlBaseParser.USE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } + public UseContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUse(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUse(this); + } + } + public static class DropNamespaceContext extends StatementContext { + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public NamespaceContext namespace() { + return getRuleContext(NamespaceContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public TerminalNode RESTRICT() { return getToken(SqlBaseParser.RESTRICT, 0); } + public TerminalNode CASCADE() { return getToken(SqlBaseParser.CASCADE, 0); } + public DropNamespaceContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropNamespace(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropNamespace(this); + } + } + public static class CreateTempViewUsingContext extends StatementContext { + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public TableIdentifierContext tableIdentifier() { + return getRuleContext(TableIdentifierContext.class,0); + } + public TableProviderContext tableProvider() { + return getRuleContext(TableProviderContext.class,0); + } + public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } + public ColTypeListContext colTypeList() { + return getRuleContext(ColTypeListContext.class,0); + } + public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public CreateTempViewUsingContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTempViewUsing(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTempViewUsing(this); + } + } + public static class RenameTableContext extends StatementContext { + public MultipartIdentifierContext from_; + public MultipartIdentifierContext to; + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } + public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public RenameTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRenameTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRenameTable(this); + } + } + public static class FailNativeCommandContext extends StatementContext { + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } + public UnsupportedHiveNativeCommandsContext unsupportedHiveNativeCommands() { + return getRuleContext(UnsupportedHiveNativeCommandsContext.class,0); + } + public FailNativeCommandContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFailNativeCommand(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFailNativeCommand(this); + } + } + public static class ClearCacheContext extends StatementContext { + public TerminalNode CLEAR() { return getToken(SqlBaseParser.CLEAR, 0); } + public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } + public ClearCacheContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterClearCache(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitClearCache(this); + } + } + public static class DropViewContext extends StatementContext { + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public DropViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropView(this); + } + } + public static class ShowTablesContext extends StatementContext { + public Token pattern; + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public ShowTablesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowTables(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowTables(this); + } + } + public static class RecoverPartitionsContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode RECOVER() { return getToken(SqlBaseParser.RECOVER, 0); } + public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } + public RecoverPartitionsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRecoverPartitions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRecoverPartitions(this); + } + } + public static class ShowCurrentNamespaceContext extends StatementContext { + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } + public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } + public ShowCurrentNamespaceContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowCurrentNamespace(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowCurrentNamespace(this); + } + } + public static class RenameTablePartitionContext extends StatementContext { + public PartitionSpecContext from_; + public PartitionSpecContext to; + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } + public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } + public List partitionSpec() { + return getRuleContexts(PartitionSpecContext.class); + } + public PartitionSpecContext partitionSpec(int i) { + return getRuleContext(PartitionSpecContext.class,i); + } + public RenameTablePartitionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRenameTablePartition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRenameTablePartition(this); + } + } + public static class RepairTableContext extends StatementContext { + public TerminalNode MSCK() { return getToken(SqlBaseParser.MSCK, 0); } + public TerminalNode REPAIR() { return getToken(SqlBaseParser.REPAIR, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public RepairTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRepairTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRepairTable(this); + } + } + public static class RefreshResourceContext extends StatementContext { + public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public RefreshResourceContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRefreshResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRefreshResource(this); + } + } + public static class ShowCreateTableContext extends StatementContext { + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } + public ShowCreateTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowCreateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowCreateTable(this); + } + } + public static class ShowNamespacesContext extends StatementContext { + public Token pattern; + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode DATABASES() { return getToken(SqlBaseParser.DATABASES, 0); } + public TerminalNode NAMESPACES() { return getToken(SqlBaseParser.NAMESPACES, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public ShowNamespacesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowNamespaces(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowNamespaces(this); + } + } + public static class ShowColumnsContext extends StatementContext { + public MultipartIdentifierContext table; + public MultipartIdentifierContext ns; + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public List FROM() { return getTokens(SqlBaseParser.FROM); } + public TerminalNode FROM(int i) { + return getToken(SqlBaseParser.FROM, i); + } + public List IN() { return getTokens(SqlBaseParser.IN); } + public TerminalNode IN(int i) { + return getToken(SqlBaseParser.IN, i); + } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public ShowColumnsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowColumns(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowColumns(this); + } + } + public static class ReplaceTableContext extends StatementContext { + public ReplaceTableHeaderContext replaceTableHeader() { + return getRuleContext(ReplaceTableHeaderContext.class,0); + } + public TableProviderContext tableProvider() { + return getRuleContext(TableProviderContext.class,0); + } + public CreateTableClausesContext createTableClauses() { + return getRuleContext(CreateTableClausesContext.class,0); + } + public ColTypeListContext colTypeList() { + return getRuleContext(ColTypeListContext.class,0); + } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public ReplaceTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterReplaceTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitReplaceTable(this); + } + } + public static class AddTablePartitionContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public List partitionSpecLocation() { + return getRuleContexts(PartitionSpecLocationContext.class); + } + public PartitionSpecLocationContext partitionSpecLocation(int i) { + return getRuleContext(PartitionSpecLocationContext.class,i); + } + public AddTablePartitionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAddTablePartition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAddTablePartition(this); + } + } + public static class SetNamespaceLocationContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public NamespaceContext namespace() { + return getRuleContext(NamespaceContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public LocationSpecContext locationSpec() { + return getRuleContext(LocationSpecContext.class,0); + } + public SetNamespaceLocationContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetNamespaceLocation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetNamespaceLocation(this); + } + } + public static class RefreshTableContext extends StatementContext { + public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public RefreshTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRefreshTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRefreshTable(this); + } + } + public static class SetNamespacePropertiesContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public NamespaceContext namespace() { + return getRuleContext(NamespaceContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public TerminalNode DBPROPERTIES() { return getToken(SqlBaseParser.DBPROPERTIES, 0); } + public TerminalNode PROPERTIES() { return getToken(SqlBaseParser.PROPERTIES, 0); } + public SetNamespacePropertiesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetNamespaceProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetNamespaceProperties(this); + } + } + public static class ManageResourceContext extends StatementContext { + public Token op; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } + public TerminalNode LIST() { return getToken(SqlBaseParser.LIST, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public ManageResourceContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterManageResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitManageResource(this); + } + } + public static class AnalyzeContext extends StatementContext { + public TerminalNode ANALYZE() { return getToken(SqlBaseParser.ANALYZE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode COMPUTE() { return getToken(SqlBaseParser.COMPUTE, 0); } + public TerminalNode STATISTICS() { return getToken(SqlBaseParser.STATISTICS, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public IdentifierSeqContext identifierSeq() { + return getRuleContext(IdentifierSeqContext.class,0); + } + public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } + public AnalyzeContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAnalyze(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAnalyze(this); + } + } + public static class CreateHiveTableContext extends StatementContext { + public ColTypeListContext columns; + public ColTypeListContext partitionColumns; + public IdentifierListContext partitionColumnNames; + public TablePropertyListContext tableProps; + public CreateTableHeaderContext createTableHeader() { + return getRuleContext(CreateTableHeaderContext.class,0); + } + public List commentSpec() { + return getRuleContexts(CommentSpecContext.class); + } + public CommentSpecContext commentSpec(int i) { + return getRuleContext(CommentSpecContext.class,i); + } + public List bucketSpec() { + return getRuleContexts(BucketSpecContext.class); + } + public BucketSpecContext bucketSpec(int i) { + return getRuleContext(BucketSpecContext.class,i); + } + public List skewSpec() { + return getRuleContexts(SkewSpecContext.class); + } + public SkewSpecContext skewSpec(int i) { + return getRuleContext(SkewSpecContext.class,i); + } + public List rowFormat() { + return getRuleContexts(RowFormatContext.class); + } + public RowFormatContext rowFormat(int i) { + return getRuleContext(RowFormatContext.class,i); + } + public List createFileFormat() { + return getRuleContexts(CreateFileFormatContext.class); + } + public CreateFileFormatContext createFileFormat(int i) { + return getRuleContext(CreateFileFormatContext.class,i); + } + public List locationSpec() { + return getRuleContexts(LocationSpecContext.class); + } + public LocationSpecContext locationSpec(int i) { + return getRuleContext(LocationSpecContext.class,i); + } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public List colTypeList() { + return getRuleContexts(ColTypeListContext.class); + } + public ColTypeListContext colTypeList(int i) { + return getRuleContext(ColTypeListContext.class,i); + } + public List PARTITIONED() { return getTokens(SqlBaseParser.PARTITIONED); } + public TerminalNode PARTITIONED(int i) { + return getToken(SqlBaseParser.PARTITIONED, i); + } + public List BY() { return getTokens(SqlBaseParser.BY); } + public TerminalNode BY(int i) { + return getToken(SqlBaseParser.BY, i); + } + public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } + public TerminalNode TBLPROPERTIES(int i) { + return getToken(SqlBaseParser.TBLPROPERTIES, i); + } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public List tablePropertyList() { + return getRuleContexts(TablePropertyListContext.class); + } + public TablePropertyListContext tablePropertyList(int i) { + return getRuleContext(TablePropertyListContext.class,i); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public CreateHiveTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateHiveTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateHiveTable(this); + } + } + public static class CreateFunctionContext extends StatementContext { + public Token className; + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } + public List resource() { + return getRuleContexts(ResourceContext.class); + } + public ResourceContext resource(int i) { + return getRuleContext(ResourceContext.class,i); + } + public CreateFunctionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateFunction(this); + } + } + public static class ShowTableContext extends StatementContext { + public MultipartIdentifierContext ns; + public Token pattern; + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowTable(this); + } + } + public static class HiveReplaceColumnsContext extends StatementContext { + public MultipartIdentifierContext table; + public QualifiedColTypeWithPositionListContext columns; + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public QualifiedColTypeWithPositionListContext qualifiedColTypeWithPositionList() { + return getRuleContext(QualifiedColTypeWithPositionListContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public HiveReplaceColumnsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHiveReplaceColumns(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHiveReplaceColumns(this); + } + } + public static class CommentNamespaceContext extends StatementContext { + public Token comment; + public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } + public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } + public NamespaceContext namespace() { + return getRuleContext(NamespaceContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public CommentNamespaceContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCommentNamespace(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCommentNamespace(this); + } + } + public static class CreateTableContext extends StatementContext { + public CreateTableHeaderContext createTableHeader() { + return getRuleContext(CreateTableHeaderContext.class,0); + } + public CreateTableClausesContext createTableClauses() { + return getRuleContext(CreateTableClausesContext.class,0); + } + public ColTypeListContext colTypeList() { + return getRuleContext(ColTypeListContext.class,0); + } + public TableProviderContext tableProvider() { + return getRuleContext(TableProviderContext.class,0); + } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public CreateTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTable(this); + } + } + public static class DmlStatementContext extends StatementContext { + public DmlStatementNoWithContext dmlStatementNoWith() { + return getRuleContext(DmlStatementNoWithContext.class,0); + } + public CtesContext ctes() { + return getRuleContext(CtesContext.class,0); + } + public DmlStatementContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDmlStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDmlStatement(this); + } + } + public static class CreateTableLikeContext extends StatementContext { + public TableIdentifierContext target; + public TableIdentifierContext source; + public TablePropertyListContext tableProps; + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public List tableIdentifier() { + return getRuleContexts(TableIdentifierContext.class); + } + public TableIdentifierContext tableIdentifier(int i) { + return getRuleContext(TableIdentifierContext.class,i); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public List tableProvider() { + return getRuleContexts(TableProviderContext.class); + } + public TableProviderContext tableProvider(int i) { + return getRuleContext(TableProviderContext.class,i); + } + public List rowFormat() { + return getRuleContexts(RowFormatContext.class); + } + public RowFormatContext rowFormat(int i) { + return getRuleContext(RowFormatContext.class,i); + } + public List createFileFormat() { + return getRuleContexts(CreateFileFormatContext.class); + } + public CreateFileFormatContext createFileFormat(int i) { + return getRuleContext(CreateFileFormatContext.class,i); + } + public List locationSpec() { + return getRuleContexts(LocationSpecContext.class); + } + public LocationSpecContext locationSpec(int i) { + return getRuleContext(LocationSpecContext.class,i); + } + public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } + public TerminalNode TBLPROPERTIES(int i) { + return getToken(SqlBaseParser.TBLPROPERTIES, i); + } + public List tablePropertyList() { + return getRuleContexts(TablePropertyListContext.class); + } + public TablePropertyListContext tablePropertyList(int i) { + return getRuleContext(TablePropertyListContext.class,i); + } + public CreateTableLikeContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTableLike(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTableLike(this); + } + } + public static class UncacheTableContext extends StatementContext { + public TerminalNode UNCACHE() { return getToken(SqlBaseParser.UNCACHE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public UncacheTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUncacheTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUncacheTable(this); + } + } + public static class DropFunctionContext extends StatementContext { + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public DropFunctionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropFunction(this); + } + } + public static class DescribeRelationContext extends StatementContext { + public Token option; + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public DescribeColNameContext describeColName() { + return getRuleContext(DescribeColNameContext.class,0); + } + public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } + public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } + public DescribeRelationContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeRelation(this); + } + } + public static class LoadDataContext extends StatementContext { + public Token path; + public TerminalNode LOAD() { return getToken(SqlBaseParser.LOAD, 0); } + public TerminalNode DATA() { return getToken(SqlBaseParser.DATA, 0); } + public TerminalNode INPATH() { return getToken(SqlBaseParser.INPATH, 0); } + public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } + public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public LoadDataContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLoadData(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLoadData(this); + } + } + public static class ShowPartitionsContext extends StatementContext { + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public ShowPartitionsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowPartitions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowPartitions(this); + } + } + public static class DescribeFunctionContext extends StatementContext { + public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } + public DescribeFuncNameContext describeFuncName() { + return getRuleContext(DescribeFuncNameContext.class,0); + } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } + public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } + public DescribeFunctionContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeFunction(this); + } + } + public static class RenameTableColumnContext extends StatementContext { + public MultipartIdentifierContext table; + public MultipartIdentifierContext from_; + public ErrorCapturingIdentifierContext to; + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } + public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } + public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public RenameTableColumnContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRenameTableColumn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRenameTableColumn(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 SqlBaseListener ) ((SqlBaseListener)listener).enterStatementDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStatementDefault(this); + } + } + public static class HiveChangeColumnContext extends StatementContext { + public MultipartIdentifierContext table; + public MultipartIdentifierContext colName; + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } + public ColTypeContext colType() { + return getRuleContext(ColTypeContext.class,0); + } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } + public ColPositionContext colPosition() { + return getRuleContext(ColPositionContext.class,0); + } + public HiveChangeColumnContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHiveChangeColumn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHiveChangeColumn(this); + } + } + public static class DescribeQueryContext extends StatementContext { + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } + public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); } + public DescribeQueryContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeQuery(this); + } + } + public static class TruncateTableContext extends StatementContext { + public TerminalNode TRUNCATE() { return getToken(SqlBaseParser.TRUNCATE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TruncateTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTruncateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTruncateTable(this); + } + } + public static class SetTableSerDeContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } + public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public SetTableSerDeContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetTableSerDe(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetTableSerDe(this); + } + } + public static class CreateViewContext extends StatementContext { + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public IdentifierCommentListContext identifierCommentList() { + return getRuleContext(IdentifierCommentListContext.class,0); + } + public List commentSpec() { + return getRuleContexts(CommentSpecContext.class); + } + public CommentSpecContext commentSpec(int i) { + return getRuleContext(CommentSpecContext.class,i); + } + public List PARTITIONED() { return getTokens(SqlBaseParser.PARTITIONED); } + public TerminalNode PARTITIONED(int i) { + return getToken(SqlBaseParser.PARTITIONED, i); + } + public List ON() { return getTokens(SqlBaseParser.ON); } + public TerminalNode ON(int i) { + return getToken(SqlBaseParser.ON, i); + } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } + public TerminalNode TBLPROPERTIES(int i) { + return getToken(SqlBaseParser.TBLPROPERTIES, i); + } + public List tablePropertyList() { + return getRuleContexts(TablePropertyListContext.class); + } + public TablePropertyListContext tablePropertyList(int i) { + return getRuleContext(TablePropertyListContext.class,i); + } + public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } + public CreateViewContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateView(this); + } + } + public static class DropTablePartitionsContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public List partitionSpec() { + return getRuleContexts(PartitionSpecContext.class); + } + public PartitionSpecContext partitionSpec(int i) { + return getRuleContext(PartitionSpecContext.class,i); + } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } + public DropTablePartitionsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropTablePartitions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropTablePartitions(this); + } + } + public static class SetConfigurationContext extends StatementContext { + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public SetConfigurationContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetConfiguration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetConfiguration(this); + } + } + public static class DropTableContext extends StatementContext { + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } + public DropTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropTable(this); + } + } + public static class DescribeNamespaceContext extends StatementContext { + public NamespaceContext namespace() { + return getRuleContext(NamespaceContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } + public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } + public DescribeNamespaceContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeNamespace(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeNamespace(this); + } + } + public static class AlterTableAlterColumnContext extends StatementContext { + public MultipartIdentifierContext table; + public MultipartIdentifierContext column; + public List ALTER() { return getTokens(SqlBaseParser.ALTER); } + public TerminalNode ALTER(int i) { + return getToken(SqlBaseParser.ALTER, i); + } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } + public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } + public AlterColumnActionContext alterColumnAction() { + return getRuleContext(AlterColumnActionContext.class,0); + } + public AlterTableAlterColumnContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAlterTableAlterColumn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAlterTableAlterColumn(this); + } + } + public static class CommentTableContext extends StatementContext { + public Token comment; + public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } + public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public CommentTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCommentTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCommentTable(this); + } + } + public static class CreateNamespaceContext extends StatementContext { + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public NamespaceContext namespace() { + return getRuleContext(NamespaceContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public List commentSpec() { + return getRuleContexts(CommentSpecContext.class); + } + public CommentSpecContext commentSpec(int i) { + return getRuleContext(CommentSpecContext.class,i); + } + public List locationSpec() { + return getRuleContexts(LocationSpecContext.class); + } + public LocationSpecContext locationSpec(int i) { + return getRuleContext(LocationSpecContext.class,i); + } + public List WITH() { return getTokens(SqlBaseParser.WITH); } + public TerminalNode WITH(int i) { + return getToken(SqlBaseParser.WITH, i); + } + public List tablePropertyList() { + return getRuleContexts(TablePropertyListContext.class); + } + public TablePropertyListContext tablePropertyList(int i) { + return getRuleContext(TablePropertyListContext.class,i); + } + public List DBPROPERTIES() { return getTokens(SqlBaseParser.DBPROPERTIES); } + public TerminalNode DBPROPERTIES(int i) { + return getToken(SqlBaseParser.DBPROPERTIES, i); + } + public List PROPERTIES() { return getTokens(SqlBaseParser.PROPERTIES); } + public TerminalNode PROPERTIES(int i) { + return getToken(SqlBaseParser.PROPERTIES, i); + } + public CreateNamespaceContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateNamespace(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateNamespace(this); + } + } + public static class ShowTblPropertiesContext extends StatementContext { + public MultipartIdentifierContext table; + public TablePropertyKeyContext key; + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TablePropertyKeyContext tablePropertyKey() { + return getRuleContext(TablePropertyKeyContext.class,0); + } + public ShowTblPropertiesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowTblProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowTblProperties(this); + } + } + public static class UnsetTablePropertiesContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode UNSET() { return getToken(SqlBaseParser.UNSET, 0); } + public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public UnsetTablePropertiesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnsetTableProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnsetTableProperties(this); + } + } + public static class SetTableLocationContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public LocationSpecContext locationSpec() { + return getRuleContext(LocationSpecContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public SetTableLocationContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetTableLocation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetTableLocation(this); + } + } + public static class DropTableColumnsContext extends StatementContext { + public MultipartIdentifierListContext columns; + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public MultipartIdentifierListContext multipartIdentifierList() { + return getRuleContext(MultipartIdentifierListContext.class,0); + } + public DropTableColumnsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropTableColumns(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropTableColumns(this); + } + } + public static class ShowViewsContext extends StatementContext { + public Token pattern; + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode VIEWS() { return getToken(SqlBaseParser.VIEWS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public ShowViewsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowViews(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowViews(this); + } + } + public static class ShowFunctionsContext extends StatementContext { + public Token pattern; + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode FUNCTIONS() { return getToken(SqlBaseParser.FUNCTIONS, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public ShowFunctionsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowFunctions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowFunctions(this); + } + } + public static class CacheTableContext extends StatementContext { + public TablePropertyListContext options; + public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode LAZY() { return getToken(SqlBaseParser.LAZY, 0); } + public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public CacheTableContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCacheTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCacheTable(this); + } + } + public static class AddTableColumnsContext extends StatementContext { + public QualifiedColTypeWithPositionListContext columns; + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } + public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public QualifiedColTypeWithPositionListContext qualifiedColTypeWithPositionList() { + return getRuleContext(QualifiedColTypeWithPositionListContext.class,0); + } + public AddTableColumnsContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAddTableColumns(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAddTableColumns(this); + } + } + public static class SetTablePropertiesContext extends StatementContext { + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public SetTablePropertiesContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetTableProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetTableProperties(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_statement); + int _la; + try { + int _alt; + setState(1025); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) { + case 1: + _localctx = new StatementDefaultContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(301); + query(); + } + break; + case 2: + _localctx = new DmlStatementContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(303); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(302); + ctes(); + } + } + + setState(305); + dmlStatementNoWith(); + } + break; + case 3: + _localctx = new UseContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(306); + match(USE); + setState(308); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { + case 1: + { + setState(307); + match(NAMESPACE); + } + break; + } + setState(310); + multipartIdentifier(); + } + break; + case 4: + _localctx = new CreateNamespaceContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(311); + match(CREATE); + setState(312); + namespace(); + setState(316); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { + case 1: + { + setState(313); + match(IF); + setState(314); + match(NOT); + setState(315); + match(EXISTS); + } + break; + } + setState(318); + multipartIdentifier(); + setState(326); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMENT || _la==LOCATION || _la==WITH) { + { + setState(324); + _errHandler.sync(this); + switch (_input.LA(1)) { + case COMMENT: + { + setState(319); + commentSpec(); + } + break; + case LOCATION: + { + setState(320); + locationSpec(); + } + break; + case WITH: + { + { + setState(321); + match(WITH); + setState(322); + _la = _input.LA(1); + if ( !(_la==DBPROPERTIES || _la==PROPERTIES) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(323); + tablePropertyList(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(328); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 5: + _localctx = new SetNamespacePropertiesContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(329); + match(ALTER); + setState(330); + namespace(); + setState(331); + multipartIdentifier(); + setState(332); + match(SET); + setState(333); + _la = _input.LA(1); + if ( !(_la==DBPROPERTIES || _la==PROPERTIES) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(334); + tablePropertyList(); + } + break; + case 6: + _localctx = new SetNamespaceLocationContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(336); + match(ALTER); + setState(337); + namespace(); + setState(338); + multipartIdentifier(); + setState(339); + match(SET); + setState(340); + locationSpec(); + } + break; + case 7: + _localctx = new DropNamespaceContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(342); + match(DROP); + setState(343); + namespace(); + setState(346); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { + case 1: + { + setState(344); + match(IF); + setState(345); + match(EXISTS); + } + break; + } + setState(348); + multipartIdentifier(); + setState(350); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASCADE || _la==RESTRICT) { + { + setState(349); + _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 8: + _localctx = new ShowNamespacesContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(352); + match(SHOW); + setState(353); + _la = _input.LA(1); + if ( !(_la==DATABASES || _la==NAMESPACES) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(356); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(354); + _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(355); + multipartIdentifier(); + } + } + + setState(362); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==STRING) { + { + setState(359); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(358); + match(LIKE); + } + } + + setState(361); + ((ShowNamespacesContext)_localctx).pattern = match(STRING); + } + } + + } + break; + case 9: + _localctx = new CreateTableContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(364); + if (!(not self.legacy_create_hive_table_by_default_enabled)) throw new FailedPredicateException(this, "not self.legacy_create_hive_table_by_default_enabled"); + setState(365); + createTableHeader(); + setState(370); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { + case 1: + { + setState(366); + match(T__1); + setState(367); + colTypeList(); + setState(368); + match(T__2); + } + break; + } + setState(373); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(372); + tableProvider(); + } + } + + setState(375); + createTableClauses(); + setState(380); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { + { + setState(377); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(376); + match(AS); + } + } + + setState(379); + query(); + } + } + + } + break; + case 10: + _localctx = new CreateTableContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(382); + if (!(self.legacy_create_hive_table_by_default_enabled)) throw new FailedPredicateException(this, "self.legacy_create_hive_table_by_default_enabled"); + setState(383); + createTableHeader(); + setState(388); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(384); + match(T__1); + setState(385); + colTypeList(); + setState(386); + match(T__2); + } + } + + setState(390); + tableProvider(); + setState(391); + createTableClauses(); + setState(396); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { + { + setState(393); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(392); + match(AS); + } + } + + setState(395); + query(); + } + } + + } + break; + case 11: + _localctx = new CreateHiveTableContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(398); + createTableHeader(); + setState(403); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) { + case 1: + { + setState(399); + match(T__1); + setState(400); + ((CreateHiveTableContext)_localctx).columns = colTypeList(); + setState(401); + match(T__2); + } + break; + } + setState(426); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CLUSTERED || _la==COMMENT || _la==LOCATION || _la==PARTITIONED || ((((_la - 202)) & ~0x3f) == 0 && ((1L << (_la - 202)) & ((1L << (ROW - 202)) | (1L << (SKEWED - 202)) | (1L << (STORED - 202)) | (1L << (TBLPROPERTIES - 202)))) != 0)) { + { + setState(424); + _errHandler.sync(this); + switch (_input.LA(1)) { + case COMMENT: + { + setState(405); + commentSpec(); + } + break; + case PARTITIONED: + { + setState(415); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + { + setState(406); + match(PARTITIONED); + setState(407); + match(BY); + setState(408); + match(T__1); + setState(409); + ((CreateHiveTableContext)_localctx).partitionColumns = colTypeList(); + setState(410); + match(T__2); + } + break; + case 2: + { + setState(412); + match(PARTITIONED); + setState(413); + match(BY); + setState(414); + ((CreateHiveTableContext)_localctx).partitionColumnNames = identifierList(); + } + break; + } + } + break; + case CLUSTERED: + { + setState(417); + bucketSpec(); + } + break; + case SKEWED: + { + setState(418); + skewSpec(); + } + break; + case ROW: + { + setState(419); + rowFormat(); + } + break; + case STORED: + { + setState(420); + createFileFormat(); + } + break; + case LOCATION: + { + setState(421); + locationSpec(); + } + break; + case TBLPROPERTIES: + { + { + setState(422); + match(TBLPROPERTIES); + setState(423); + ((CreateHiveTableContext)_localctx).tableProps = tablePropertyList(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(428); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(433); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { + { + setState(430); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(429); + match(AS); + } + } + + setState(432); + query(); + } + } + + } + break; + case 12: + _localctx = new CreateTableLikeContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(435); + match(CREATE); + setState(436); + match(TABLE); + setState(440); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { + case 1: + { + setState(437); + match(IF); + setState(438); + match(NOT); + setState(439); + match(EXISTS); + } + break; + } + setState(442); + ((CreateTableLikeContext)_localctx).target = tableIdentifier(); + setState(443); + match(LIKE); + setState(444); + ((CreateTableLikeContext)_localctx).source = tableIdentifier(); + setState(453); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LOCATION || ((((_la - 202)) & ~0x3f) == 0 && ((1L << (_la - 202)) & ((1L << (ROW - 202)) | (1L << (STORED - 202)) | (1L << (TBLPROPERTIES - 202)) | (1L << (USING - 202)))) != 0)) { + { + setState(451); + _errHandler.sync(this); + switch (_input.LA(1)) { + case USING: + { + setState(445); + tableProvider(); + } + break; + case ROW: + { + setState(446); + rowFormat(); + } + break; + case STORED: + { + setState(447); + createFileFormat(); + } + break; + case LOCATION: + { + setState(448); + locationSpec(); + } + break; + case TBLPROPERTIES: + { + { + setState(449); + match(TBLPROPERTIES); + setState(450); + ((CreateTableLikeContext)_localctx).tableProps = tablePropertyList(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(455); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 13: + _localctx = new ReplaceTableContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(456); + replaceTableHeader(); + setState(461); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(457); + match(T__1); + setState(458); + colTypeList(); + setState(459); + match(T__2); + } + } + + setState(463); + tableProvider(); + setState(464); + createTableClauses(); + setState(469); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { + { + setState(466); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(465); + match(AS); + } + } + + setState(468); + query(); + } + } + + } + break; + case 14: + _localctx = new AnalyzeContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(471); + match(ANALYZE); + setState(472); + match(TABLE); + setState(473); + multipartIdentifier(); + setState(475); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(474); + partitionSpec(); + } + } + + setState(477); + match(COMPUTE); + setState(478); + match(STATISTICS); + setState(486); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { + case 1: + { + setState(479); + identifier(); + } + break; + case 2: + { + setState(480); + match(FOR); + setState(481); + match(COLUMNS); + setState(482); + identifierSeq(); + } + break; + case 3: + { + setState(483); + match(FOR); + setState(484); + match(ALL); + setState(485); + match(COLUMNS); + } + break; + } + } + break; + case 15: + _localctx = new AddTableColumnsContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(488); + match(ALTER); + setState(489); + match(TABLE); + setState(490); + multipartIdentifier(); + setState(491); + match(ADD); + setState(492); + _la = _input.LA(1); + if ( !(_la==COLUMN || _la==COLUMNS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(493); + ((AddTableColumnsContext)_localctx).columns = qualifiedColTypeWithPositionList(); + } + break; + case 16: + _localctx = new AddTableColumnsContext(_localctx); + enterOuterAlt(_localctx, 16); + { + setState(495); + match(ALTER); + setState(496); + match(TABLE); + setState(497); + multipartIdentifier(); + setState(498); + match(ADD); + setState(499); + _la = _input.LA(1); + if ( !(_la==COLUMN || _la==COLUMNS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(500); + match(T__1); + setState(501); + ((AddTableColumnsContext)_localctx).columns = qualifiedColTypeWithPositionList(); + setState(502); + match(T__2); + } + break; + case 17: + _localctx = new RenameTableColumnContext(_localctx); + enterOuterAlt(_localctx, 17); + { + setState(504); + match(ALTER); + setState(505); + match(TABLE); + setState(506); + ((RenameTableColumnContext)_localctx).table = multipartIdentifier(); + setState(507); + match(RENAME); + setState(508); + match(COLUMN); + setState(509); + ((RenameTableColumnContext)_localctx).from_ = multipartIdentifier(); + setState(510); + match(TO); + setState(511); + ((RenameTableColumnContext)_localctx).to = errorCapturingIdentifier(); + } + break; + case 18: + _localctx = new DropTableColumnsContext(_localctx); + enterOuterAlt(_localctx, 18); + { + setState(513); + match(ALTER); + setState(514); + match(TABLE); + setState(515); + multipartIdentifier(); + setState(516); + match(DROP); + setState(517); + _la = _input.LA(1); + if ( !(_la==COLUMN || _la==COLUMNS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(518); + match(T__1); + setState(519); + ((DropTableColumnsContext)_localctx).columns = multipartIdentifierList(); + setState(520); + match(T__2); + } + break; + case 19: + _localctx = new DropTableColumnsContext(_localctx); + enterOuterAlt(_localctx, 19); + { + setState(522); + match(ALTER); + setState(523); + match(TABLE); + setState(524); + multipartIdentifier(); + setState(525); + match(DROP); + setState(526); + _la = _input.LA(1); + if ( !(_la==COLUMN || _la==COLUMNS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(527); + ((DropTableColumnsContext)_localctx).columns = multipartIdentifierList(); + } + break; + case 20: + _localctx = new RenameTableContext(_localctx); + enterOuterAlt(_localctx, 20); + { + setState(529); + match(ALTER); + setState(530); + _la = _input.LA(1); + if ( !(_la==TABLE || _la==VIEW) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(531); + ((RenameTableContext)_localctx).from_ = multipartIdentifier(); + setState(532); + match(RENAME); + setState(533); + match(TO); + setState(534); + ((RenameTableContext)_localctx).to = multipartIdentifier(); + } + break; + case 21: + _localctx = new SetTablePropertiesContext(_localctx); + enterOuterAlt(_localctx, 21); + { + setState(536); + match(ALTER); + setState(537); + _la = _input.LA(1); + if ( !(_la==TABLE || _la==VIEW) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(538); + multipartIdentifier(); + setState(539); + match(SET); + setState(540); + match(TBLPROPERTIES); + setState(541); + tablePropertyList(); + } + break; + case 22: + _localctx = new UnsetTablePropertiesContext(_localctx); + enterOuterAlt(_localctx, 22); + { + setState(543); + match(ALTER); + setState(544); + _la = _input.LA(1); + if ( !(_la==TABLE || _la==VIEW) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(545); + multipartIdentifier(); + setState(546); + match(UNSET); + setState(547); + match(TBLPROPERTIES); + setState(550); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(548); + match(IF); + setState(549); + match(EXISTS); + } + } + + setState(552); + tablePropertyList(); + } + break; + case 23: + _localctx = new AlterTableAlterColumnContext(_localctx); + enterOuterAlt(_localctx, 23); + { + setState(554); + match(ALTER); + setState(555); + match(TABLE); + setState(556); + ((AlterTableAlterColumnContext)_localctx).table = multipartIdentifier(); + setState(557); + _la = _input.LA(1); + if ( !(_la==ALTER || _la==CHANGE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(559); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { + case 1: + { + setState(558); + match(COLUMN); + } + break; + } + setState(561); + ((AlterTableAlterColumnContext)_localctx).column = multipartIdentifier(); + setState(563); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AFTER || _la==COMMENT || _la==DROP || _la==FIRST || _la==SET || _la==TYPE) { + { + setState(562); + alterColumnAction(); + } + } + + } + break; + case 24: + _localctx = new HiveChangeColumnContext(_localctx); + enterOuterAlt(_localctx, 24); + { + setState(565); + match(ALTER); + setState(566); + match(TABLE); + setState(567); + ((HiveChangeColumnContext)_localctx).table = multipartIdentifier(); + setState(569); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(568); + partitionSpec(); + } + } + + setState(571); + match(CHANGE); + setState(573); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { + case 1: + { + setState(572); + match(COLUMN); + } + break; + } + setState(575); + ((HiveChangeColumnContext)_localctx).colName = multipartIdentifier(); + setState(576); + colType(); + setState(578); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AFTER || _la==FIRST) { + { + setState(577); + colPosition(); + } + } + + } + break; + case 25: + _localctx = new HiveReplaceColumnsContext(_localctx); + enterOuterAlt(_localctx, 25); + { + setState(580); + match(ALTER); + setState(581); + match(TABLE); + setState(582); + ((HiveReplaceColumnsContext)_localctx).table = multipartIdentifier(); + setState(584); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(583); + partitionSpec(); + } + } + + setState(586); + match(REPLACE); + setState(587); + match(COLUMNS); + setState(588); + match(T__1); + setState(589); + ((HiveReplaceColumnsContext)_localctx).columns = qualifiedColTypeWithPositionList(); + setState(590); + match(T__2); + } + break; + case 26: + _localctx = new SetTableSerDeContext(_localctx); + enterOuterAlt(_localctx, 26); + { + setState(592); + match(ALTER); + setState(593); + match(TABLE); + setState(594); + multipartIdentifier(); + setState(596); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(595); + partitionSpec(); + } + } + + setState(598); + match(SET); + setState(599); + match(SERDE); + setState(600); + match(STRING); + setState(604); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(601); + match(WITH); + setState(602); + match(SERDEPROPERTIES); + setState(603); + tablePropertyList(); + } + } + + } + break; + case 27: + _localctx = new SetTableSerDeContext(_localctx); + enterOuterAlt(_localctx, 27); + { + setState(606); + match(ALTER); + setState(607); + match(TABLE); + setState(608); + multipartIdentifier(); + setState(610); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(609); + partitionSpec(); + } + } + + setState(612); + match(SET); + setState(613); + match(SERDEPROPERTIES); + setState(614); + tablePropertyList(); + } + break; + case 28: + _localctx = new AddTablePartitionContext(_localctx); + enterOuterAlt(_localctx, 28); + { + setState(616); + match(ALTER); + setState(617); + _la = _input.LA(1); + if ( !(_la==TABLE || _la==VIEW) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(618); + multipartIdentifier(); + setState(619); + match(ADD); + setState(623); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(620); + match(IF); + setState(621); + match(NOT); + setState(622); + match(EXISTS); + } + } + + setState(626); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(625); + partitionSpecLocation(); + } + } + setState(628); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==PARTITION ); + } + break; + case 29: + _localctx = new RenameTablePartitionContext(_localctx); + enterOuterAlt(_localctx, 29); + { + setState(630); + match(ALTER); + setState(631); + match(TABLE); + setState(632); + multipartIdentifier(); + setState(633); + ((RenameTablePartitionContext)_localctx).from_ = partitionSpec(); + setState(634); + match(RENAME); + setState(635); + match(TO); + setState(636); + ((RenameTablePartitionContext)_localctx).to = partitionSpec(); + } + break; + case 30: + _localctx = new DropTablePartitionsContext(_localctx); + enterOuterAlt(_localctx, 30); + { + setState(638); + match(ALTER); + setState(639); + _la = _input.LA(1); + if ( !(_la==TABLE || _la==VIEW) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(640); + multipartIdentifier(); + setState(641); + match(DROP); + setState(644); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(642); + match(IF); + setState(643); + match(EXISTS); + } + } + + setState(646); + partitionSpec(); + setState(651); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(647); + match(T__3); + setState(648); + partitionSpec(); + } + } + setState(653); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(655); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PURGE) { + { + setState(654); + match(PURGE); + } + } + + } + break; + case 31: + _localctx = new SetTableLocationContext(_localctx); + enterOuterAlt(_localctx, 31); + { + setState(657); + match(ALTER); + setState(658); + match(TABLE); + setState(659); + multipartIdentifier(); + setState(661); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(660); + partitionSpec(); + } + } + + setState(663); + match(SET); + setState(664); + locationSpec(); + } + break; + case 32: + _localctx = new RecoverPartitionsContext(_localctx); + enterOuterAlt(_localctx, 32); + { + setState(666); + match(ALTER); + setState(667); + match(TABLE); + setState(668); + multipartIdentifier(); + setState(669); + match(RECOVER); + setState(670); + match(PARTITIONS); + } + break; + case 33: + _localctx = new DropTableContext(_localctx); + enterOuterAlt(_localctx, 33); + { + setState(672); + match(DROP); + setState(673); + match(TABLE); + setState(676); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) { + case 1: + { + setState(674); + match(IF); + setState(675); + match(EXISTS); + } + break; + } + setState(678); + multipartIdentifier(); + setState(680); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PURGE) { + { + setState(679); + match(PURGE); + } + } + + } + break; + case 34: + _localctx = new DropViewContext(_localctx); + enterOuterAlt(_localctx, 34); + { + setState(682); + match(DROP); + setState(683); + match(VIEW); + setState(686); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) { + case 1: + { + setState(684); + match(IF); + setState(685); + match(EXISTS); + } + break; + } + setState(688); + multipartIdentifier(); + } + break; + case 35: + _localctx = new CreateViewContext(_localctx); + enterOuterAlt(_localctx, 35); + { + setState(689); + match(CREATE); + setState(692); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OR) { + { + setState(690); + match(OR); + setState(691); + match(REPLACE); + } + } + + setState(698); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==TEMPORARY) { + { + setState(695); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL) { + { + setState(694); + match(GLOBAL); + } + } + + setState(697); + match(TEMPORARY); + } + } + + setState(700); + match(VIEW); + setState(704); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { + case 1: + { + setState(701); + match(IF); + setState(702); + match(NOT); + setState(703); + match(EXISTS); + } + break; + } + setState(706); + multipartIdentifier(); + setState(708); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(707); + identifierCommentList(); + } + } + + setState(718); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMENT || _la==PARTITIONED || _la==TBLPROPERTIES) { + { + setState(716); + _errHandler.sync(this); + switch (_input.LA(1)) { + case COMMENT: + { + setState(710); + commentSpec(); + } + break; + case PARTITIONED: + { + { + setState(711); + match(PARTITIONED); + setState(712); + match(ON); + setState(713); + identifierList(); + } + } + break; + case TBLPROPERTIES: + { + { + setState(714); + match(TBLPROPERTIES); + setState(715); + tablePropertyList(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(720); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(721); + match(AS); + setState(722); + query(); + } + break; + case 36: + _localctx = new CreateTempViewUsingContext(_localctx); + enterOuterAlt(_localctx, 36); + { + setState(724); + match(CREATE); + setState(727); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OR) { + { + setState(725); + match(OR); + setState(726); + match(REPLACE); + } + } + + setState(730); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL) { + { + setState(729); + match(GLOBAL); + } + } + + setState(732); + match(TEMPORARY); + setState(733); + match(VIEW); + setState(734); + tableIdentifier(); + setState(739); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(735); + match(T__1); + setState(736); + colTypeList(); + setState(737); + match(T__2); + } + } + + setState(741); + tableProvider(); + setState(744); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OPTIONS) { + { + setState(742); + match(OPTIONS); + setState(743); + tablePropertyList(); + } + } + + } + break; + case 37: + _localctx = new AlterViewQueryContext(_localctx); + enterOuterAlt(_localctx, 37); + { + setState(746); + match(ALTER); + setState(747); + match(VIEW); + setState(748); + multipartIdentifier(); + setState(750); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(749); + match(AS); + } + } + + setState(752); + query(); + } + break; + case 38: + _localctx = new CreateFunctionContext(_localctx); + enterOuterAlt(_localctx, 38); + { + setState(754); + match(CREATE); + setState(757); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OR) { + { + setState(755); + match(OR); + setState(756); + match(REPLACE); + } + } + + setState(760); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(759); + match(TEMPORARY); + } + } + + setState(762); + match(FUNCTION); + setState(766); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { + case 1: + { + setState(763); + match(IF); + setState(764); + match(NOT); + setState(765); + match(EXISTS); + } + break; + } + setState(768); + multipartIdentifier(); + setState(769); + match(AS); + setState(770); + ((CreateFunctionContext)_localctx).className = match(STRING); + setState(780); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(771); + match(USING); + setState(772); + resource(); + setState(777); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(773); + match(T__3); + setState(774); + resource(); + } + } + setState(779); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + } + break; + case 39: + _localctx = new DropFunctionContext(_localctx); + enterOuterAlt(_localctx, 39); + { + setState(782); + match(DROP); + setState(784); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(783); + match(TEMPORARY); + } + } + + setState(786); + match(FUNCTION); + setState(789); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) { + case 1: + { + setState(787); + match(IF); + setState(788); + match(EXISTS); + } + break; + } + setState(791); + multipartIdentifier(); + } + break; + case 40: + _localctx = new ExplainContext(_localctx); + enterOuterAlt(_localctx, 40); + { + setState(792); + match(EXPLAIN); + setState(794); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) { + case 1: + { + setState(793); + _la = _input.LA(1); + if ( !(_la==CODEGEN || _la==COST || ((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (EXTENDED - 86)) | (1L << (FORMATTED - 86)) | (1L << (LOGICAL - 86)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + setState(796); + statement(); + } + break; + case 41: + _localctx = new ShowTablesContext(_localctx); + enterOuterAlt(_localctx, 41); + { + setState(797); + match(SHOW); + setState(798); + match(TABLES); + setState(801); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(799); + _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(800); + multipartIdentifier(); + } + } + + setState(807); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==STRING) { + { + setState(804); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(803); + match(LIKE); + } + } + + setState(806); + ((ShowTablesContext)_localctx).pattern = match(STRING); + } + } + + } + break; + case 42: + _localctx = new ShowTableContext(_localctx); + enterOuterAlt(_localctx, 42); + { + setState(809); + match(SHOW); + setState(810); + match(TABLE); + setState(811); + match(EXTENDED); + setState(814); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(812); + _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(813); + ((ShowTableContext)_localctx).ns = multipartIdentifier(); + } + } + + setState(816); + match(LIKE); + setState(817); + ((ShowTableContext)_localctx).pattern = match(STRING); + setState(819); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(818); + partitionSpec(); + } + } + + } + break; + case 43: + _localctx = new ShowTblPropertiesContext(_localctx); + enterOuterAlt(_localctx, 43); + { + setState(821); + match(SHOW); + setState(822); + match(TBLPROPERTIES); + setState(823); + ((ShowTblPropertiesContext)_localctx).table = multipartIdentifier(); + setState(828); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1) { + { + setState(824); + match(T__1); + setState(825); + ((ShowTblPropertiesContext)_localctx).key = tablePropertyKey(); + setState(826); + match(T__2); + } + } + + } + break; + case 44: + _localctx = new ShowColumnsContext(_localctx); + enterOuterAlt(_localctx, 44); + { + setState(830); + match(SHOW); + setState(831); + match(COLUMNS); + setState(832); + _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(833); + ((ShowColumnsContext)_localctx).table = multipartIdentifier(); + setState(836); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(834); + _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(835); + ((ShowColumnsContext)_localctx).ns = multipartIdentifier(); + } + } + + } + break; + case 45: + _localctx = new ShowViewsContext(_localctx); + enterOuterAlt(_localctx, 45); + { + setState(838); + match(SHOW); + setState(839); + match(VIEWS); + setState(842); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(840); + _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(841); + multipartIdentifier(); + } + } + + setState(848); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==STRING) { + { + setState(845); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(844); + match(LIKE); + } + } + + setState(847); + ((ShowViewsContext)_localctx).pattern = match(STRING); + } + } + + } + break; + case 46: + _localctx = new ShowPartitionsContext(_localctx); + enterOuterAlt(_localctx, 46); + { + setState(850); + match(SHOW); + setState(851); + match(PARTITIONS); + setState(852); + multipartIdentifier(); + setState(854); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(853); + partitionSpec(); + } + } + + } + break; + case 47: + _localctx = new ShowFunctionsContext(_localctx); + enterOuterAlt(_localctx, 47); + { + setState(856); + match(SHOW); + setState(858); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,82,_ctx) ) { + case 1: + { + setState(857); + identifier(); + } + break; + } + setState(860); + match(FUNCTIONS); + setState(868); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) { + case 1: + { + setState(862); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) { + case 1: + { + setState(861); + match(LIKE); + } + break; + } + setState(866); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) { + case 1: + { + setState(864); + multipartIdentifier(); + } + break; + case 2: + { + setState(865); + ((ShowFunctionsContext)_localctx).pattern = match(STRING); + } + break; + } + } + break; + } + } + break; + case 48: + _localctx = new ShowCreateTableContext(_localctx); + enterOuterAlt(_localctx, 48); + { + setState(870); + match(SHOW); + setState(871); + match(CREATE); + setState(872); + match(TABLE); + setState(873); + multipartIdentifier(); + setState(876); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(874); + match(AS); + setState(875); + match(SERDE); + } + } + + } + break; + case 49: + _localctx = new ShowCurrentNamespaceContext(_localctx); + enterOuterAlt(_localctx, 49); + { + setState(878); + match(SHOW); + setState(879); + match(CURRENT); + setState(880); + match(NAMESPACE); + } + break; + case 50: + _localctx = new DescribeFunctionContext(_localctx); + enterOuterAlt(_localctx, 50); + { + setState(881); + _la = _input.LA(1); + if ( !(_la==DESC || _la==DESCRIBE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(882); + match(FUNCTION); + setState(884); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { + case 1: + { + setState(883); + match(EXTENDED); + } + break; + } + setState(886); + describeFuncName(); + } + break; + case 51: + _localctx = new DescribeNamespaceContext(_localctx); + enterOuterAlt(_localctx, 51); + { + setState(887); + _la = _input.LA(1); + if ( !(_la==DESC || _la==DESCRIBE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(888); + namespace(); + setState(890); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) { + case 1: + { + setState(889); + match(EXTENDED); + } + break; + } + setState(892); + multipartIdentifier(); + } + break; + case 52: + _localctx = new DescribeRelationContext(_localctx); + enterOuterAlt(_localctx, 52); + { + setState(894); + _la = _input.LA(1); + if ( !(_la==DESC || _la==DESCRIBE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(896); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) { + case 1: + { + setState(895); + match(TABLE); + } + break; + } + setState(899); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) { + case 1: + { + setState(898); + ((DescribeRelationContext)_localctx).option = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==EXTENDED || _la==FORMATTED) ) { + ((DescribeRelationContext)_localctx).option = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + setState(901); + multipartIdentifier(); + setState(903); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) { + case 1: + { + setState(902); + partitionSpec(); + } + break; + } + setState(906); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) { + case 1: + { + setState(905); + describeColName(); + } + break; + } + } + break; + case 53: + _localctx = new DescribeQueryContext(_localctx); + enterOuterAlt(_localctx, 53); + { + setState(908); + _la = _input.LA(1); + if ( !(_la==DESC || _la==DESCRIBE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(910); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==QUERY) { + { + setState(909); + match(QUERY); + } + } + + setState(912); + query(); + } + break; + case 54: + _localctx = new CommentNamespaceContext(_localctx); + enterOuterAlt(_localctx, 54); + { + setState(913); + match(COMMENT); + setState(914); + match(ON); + setState(915); + namespace(); + setState(916); + multipartIdentifier(); + setState(917); + match(IS); + setState(918); + ((CommentNamespaceContext)_localctx).comment = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==NULL || _la==STRING) ) { + ((CommentNamespaceContext)_localctx).comment = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 55: + _localctx = new CommentTableContext(_localctx); + enterOuterAlt(_localctx, 55); + { + setState(920); + match(COMMENT); + setState(921); + match(ON); + setState(922); + match(TABLE); + setState(923); + multipartIdentifier(); + setState(924); + match(IS); + setState(925); + ((CommentTableContext)_localctx).comment = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==NULL || _la==STRING) ) { + ((CommentTableContext)_localctx).comment = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 56: + _localctx = new RefreshTableContext(_localctx); + enterOuterAlt(_localctx, 56); + { + setState(927); + match(REFRESH); + setState(928); + match(TABLE); + setState(929); + multipartIdentifier(); + } + break; + case 57: + _localctx = new RefreshResourceContext(_localctx); + enterOuterAlt(_localctx, 57); + { + setState(930); + match(REFRESH); + setState(938); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) { + case 1: + { + setState(931); + match(STRING); + } + break; + case 2: + { + setState(935); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,94,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(932); + matchWildcard(); + } + } + } + setState(937); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,94,_ctx); + } + } + break; + } + } + break; + case 58: + _localctx = new CacheTableContext(_localctx); + enterOuterAlt(_localctx, 58); + { + setState(940); + match(CACHE); + setState(942); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LAZY) { + { + setState(941); + match(LAZY); + } + } + + setState(944); + match(TABLE); + setState(945); + multipartIdentifier(); + setState(948); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OPTIONS) { + { + setState(946); + match(OPTIONS); + setState(947); + ((CacheTableContext)_localctx).options = tablePropertyList(); + } + } + + setState(954); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { + { + setState(951); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(950); + match(AS); + } + } + + setState(953); + query(); + } + } + + } + break; + case 59: + _localctx = new UncacheTableContext(_localctx); + enterOuterAlt(_localctx, 59); + { + setState(956); + match(UNCACHE); + setState(957); + match(TABLE); + setState(960); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) { + case 1: + { + setState(958); + match(IF); + setState(959); + match(EXISTS); + } + break; + } + setState(962); + multipartIdentifier(); + } + break; + case 60: + _localctx = new ClearCacheContext(_localctx); + enterOuterAlt(_localctx, 60); + { + setState(963); + match(CLEAR); + setState(964); + match(CACHE); + } + break; + case 61: + _localctx = new LoadDataContext(_localctx); + enterOuterAlt(_localctx, 61); + { + setState(965); + match(LOAD); + setState(966); + match(DATA); + setState(968); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LOCAL) { + { + setState(967); + match(LOCAL); + } + } + + setState(970); + match(INPATH); + setState(971); + ((LoadDataContext)_localctx).path = match(STRING); + setState(973); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OVERWRITE) { + { + setState(972); + match(OVERWRITE); + } + } + + setState(975); + match(INTO); + setState(976); + match(TABLE); + setState(977); + multipartIdentifier(); + setState(979); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(978); + partitionSpec(); + } + } + + } + break; + case 62: + _localctx = new TruncateTableContext(_localctx); + enterOuterAlt(_localctx, 62); + { + setState(981); + match(TRUNCATE); + setState(982); + match(TABLE); + setState(983); + multipartIdentifier(); + setState(985); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(984); + partitionSpec(); + } + } + + } + break; + case 63: + _localctx = new RepairTableContext(_localctx); + enterOuterAlt(_localctx, 63); + { + setState(987); + match(MSCK); + setState(988); + match(REPAIR); + setState(989); + match(TABLE); + setState(990); + multipartIdentifier(); + } + break; + case 64: + _localctx = new ManageResourceContext(_localctx); + enterOuterAlt(_localctx, 64); + { + setState(991); + ((ManageResourceContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ADD || _la==LIST) ) { + ((ManageResourceContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(992); + identifier(); + setState(1000); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) { + case 1: + { + setState(993); + match(STRING); + } + break; + case 2: + { + setState(997); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,105,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(994); + matchWildcard(); + } + } + } + setState(999); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,105,_ctx); + } + } + break; + } + } + break; + case 65: + _localctx = new FailNativeCommandContext(_localctx); + enterOuterAlt(_localctx, 65); + { + setState(1002); + match(SET); + setState(1003); + match(ROLE); + setState(1007); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,107,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(1004); + matchWildcard(); + } + } + } + setState(1009); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,107,_ctx); + } + } + break; + case 66: + _localctx = new SetConfigurationContext(_localctx); + enterOuterAlt(_localctx, 66); + { + setState(1010); + match(SET); + setState(1014); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,108,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(1011); + matchWildcard(); + } + } + } + setState(1016); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,108,_ctx); + } + } + break; + case 67: + _localctx = new ResetConfigurationContext(_localctx); + enterOuterAlt(_localctx, 67); + { + setState(1017); + match(RESET); + } + break; + case 68: + _localctx = new FailNativeCommandContext(_localctx); + enterOuterAlt(_localctx, 68); + { + setState(1018); + unsupportedHiveNativeCommands(); + setState(1022); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,109,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(1019); + matchWildcard(); + } + } + } + setState(1024); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,109,_ctx); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnsupportedHiveNativeCommandsContext extends ParserRuleContext { + public Token kw1; + public Token kw2; + public Token kw3; + public Token kw4; + public Token kw5; + public Token kw6; + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public TerminalNode GRANT() { return getToken(SqlBaseParser.GRANT, 0); } + public TerminalNode REVOKE() { return getToken(SqlBaseParser.REVOKE, 0); } + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode PRINCIPALS() { return getToken(SqlBaseParser.PRINCIPALS, 0); } + public TerminalNode ROLES() { return getToken(SqlBaseParser.ROLES, 0); } + public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } + public TerminalNode EXPORT() { return getToken(SqlBaseParser.EXPORT, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode IMPORT() { return getToken(SqlBaseParser.IMPORT, 0); } + public TerminalNode COMPACTIONS() { return getToken(SqlBaseParser.COMPACTIONS, 0); } + public TerminalNode TRANSACTIONS() { return getToken(SqlBaseParser.TRANSACTIONS, 0); } + public TerminalNode INDEXES() { return getToken(SqlBaseParser.INDEXES, 0); } + public TerminalNode LOCKS() { return getToken(SqlBaseParser.LOCKS, 0); } + public TerminalNode INDEX() { return getToken(SqlBaseParser.INDEX, 0); } + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode LOCK() { return getToken(SqlBaseParser.LOCK, 0); } + public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } + public TerminalNode UNLOCK() { return getToken(SqlBaseParser.UNLOCK, 0); } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode MACRO() { return getToken(SqlBaseParser.MACRO, 0); } + public TableIdentifierContext tableIdentifier() { + return getRuleContext(TableIdentifierContext.class,0); + } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } + public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } + public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } + public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } + public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } + public TerminalNode EXCHANGE() { return getToken(SqlBaseParser.EXCHANGE, 0); } + public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } + public TerminalNode ARCHIVE() { return getToken(SqlBaseParser.ARCHIVE, 0); } + public TerminalNode UNARCHIVE() { return getToken(SqlBaseParser.UNARCHIVE, 0); } + public TerminalNode TOUCH() { return getToken(SqlBaseParser.TOUCH, 0); } + public TerminalNode COMPACT() { return getToken(SqlBaseParser.COMPACT, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode CONCATENATE() { return getToken(SqlBaseParser.CONCATENATE, 0); } + public TerminalNode FILEFORMAT() { return getToken(SqlBaseParser.FILEFORMAT, 0); } + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public TerminalNode START() { return getToken(SqlBaseParser.START, 0); } + public TerminalNode TRANSACTION() { return getToken(SqlBaseParser.TRANSACTION, 0); } + public TerminalNode COMMIT() { return getToken(SqlBaseParser.COMMIT, 0); } + public TerminalNode ROLLBACK() { return getToken(SqlBaseParser.ROLLBACK, 0); } + public TerminalNode DFS() { return getToken(SqlBaseParser.DFS, 0); } + public UnsupportedHiveNativeCommandsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedHiveNativeCommands; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnsupportedHiveNativeCommands(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnsupportedHiveNativeCommands(this); + } + } + + public final UnsupportedHiveNativeCommandsContext unsupportedHiveNativeCommands() throws RecognitionException { + UnsupportedHiveNativeCommandsContext _localctx = new UnsupportedHiveNativeCommandsContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_unsupportedHiveNativeCommands); + int _la; + try { + setState(1195); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,118,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1027); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(CREATE); + setState(1028); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1029); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DROP); + setState(1030); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1031); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(GRANT); + setState(1033); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) { + case 1: + { + setState(1032); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); + } + break; + } + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1035); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(REVOKE); + setState(1037); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) { + case 1: + { + setState(1036); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); + } + break; + } + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1039); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1040); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(GRANT); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1041); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1042); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); + setState(1044); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) { + case 1: + { + setState(1043); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(GRANT); + } + break; + } + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(1046); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1047); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(PRINCIPALS); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(1048); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1049); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLES); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(1050); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1051); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(CURRENT); + setState(1052); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(ROLES); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(1053); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(EXPORT); + setState(1054); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(1055); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(IMPORT); + setState(1056); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(1057); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1058); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(COMPACTIONS); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(1059); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1060); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(CREATE); + setState(1061); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(TABLE); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(1062); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1063); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TRANSACTIONS); + } + break; + case 15: + enterOuterAlt(_localctx, 15); + { + setState(1064); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1065); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEXES); + } + break; + case 16: + enterOuterAlt(_localctx, 16); + { + setState(1066); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); + setState(1067); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(LOCKS); + } + break; + case 17: + enterOuterAlt(_localctx, 17); + { + setState(1068); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(CREATE); + setState(1069); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEX); + } + break; + case 18: + enterOuterAlt(_localctx, 18); + { + setState(1070); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DROP); + setState(1071); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEX); + } + break; + case 19: + enterOuterAlt(_localctx, 19); + { + setState(1072); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1073); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEX); + } + break; + case 20: + enterOuterAlt(_localctx, 20); + { + setState(1074); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(LOCK); + setState(1075); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + } + break; + case 21: + enterOuterAlt(_localctx, 21); + { + setState(1076); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(LOCK); + setState(1077); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(DATABASE); + } + break; + case 22: + enterOuterAlt(_localctx, 22); + { + setState(1078); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(UNLOCK); + setState(1079); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + } + break; + case 23: + enterOuterAlt(_localctx, 23); + { + setState(1080); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(UNLOCK); + setState(1081); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(DATABASE); + } + break; + case 24: + enterOuterAlt(_localctx, 24); + { + setState(1082); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(CREATE); + setState(1083); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TEMPORARY); + setState(1084); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(MACRO); + } + break; + case 25: + enterOuterAlt(_localctx, 25); + { + setState(1085); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DROP); + setState(1086); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TEMPORARY); + setState(1087); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(MACRO); + } + break; + case 26: + enterOuterAlt(_localctx, 26); + { + setState(1088); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1089); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1090); + tableIdentifier(); + setState(1091); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); + setState(1092); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(CLUSTERED); + } + break; + case 27: + enterOuterAlt(_localctx, 27); + { + setState(1094); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1095); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1096); + tableIdentifier(); + setState(1097); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(CLUSTERED); + setState(1098); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(BY); + } + break; + case 28: + enterOuterAlt(_localctx, 28); + { + setState(1100); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1101); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1102); + tableIdentifier(); + setState(1103); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); + setState(1104); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(SORTED); + } + break; + case 29: + enterOuterAlt(_localctx, 29); + { + setState(1106); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1107); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1108); + tableIdentifier(); + setState(1109); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(SKEWED); + setState(1110); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(BY); + } + break; + case 30: + enterOuterAlt(_localctx, 30); + { + setState(1112); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1113); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1114); + tableIdentifier(); + setState(1115); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); + setState(1116); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(SKEWED); + } + break; + case 31: + enterOuterAlt(_localctx, 31); + { + setState(1118); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1119); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1120); + tableIdentifier(); + setState(1121); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); + setState(1122); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(STORED); + setState(1123); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw5 = match(AS); + setState(1124); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw6 = match(DIRECTORIES); + } + break; + case 32: + enterOuterAlt(_localctx, 32); + { + setState(1126); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1127); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1128); + tableIdentifier(); + setState(1129); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(SET); + setState(1130); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(SKEWED); + setState(1131); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw5 = match(LOCATION); + } + break; + case 33: + enterOuterAlt(_localctx, 33); + { + setState(1133); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1134); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1135); + tableIdentifier(); + setState(1136); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(EXCHANGE); + setState(1137); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(PARTITION); + } + break; + case 34: + enterOuterAlt(_localctx, 34); + { + setState(1139); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1140); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1141); + tableIdentifier(); + setState(1142); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(ARCHIVE); + setState(1143); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(PARTITION); + } + break; + case 35: + enterOuterAlt(_localctx, 35); + { + setState(1145); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1146); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1147); + tableIdentifier(); + setState(1148); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(UNARCHIVE); + setState(1149); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(PARTITION); + } + break; + case 36: + enterOuterAlt(_localctx, 36); + { + setState(1151); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1152); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1153); + tableIdentifier(); + setState(1154); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(TOUCH); + } + break; + case 37: + enterOuterAlt(_localctx, 37); + { + setState(1156); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1157); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1158); + tableIdentifier(); + setState(1160); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(1159); + partitionSpec(); + } + } + + setState(1162); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(COMPACT); + } + break; + case 38: + enterOuterAlt(_localctx, 38); + { + setState(1164); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1165); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1166); + tableIdentifier(); + setState(1168); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(1167); + partitionSpec(); + } + } + + setState(1170); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(CONCATENATE); + } + break; + case 39: + enterOuterAlt(_localctx, 39); + { + setState(1172); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1173); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1174); + tableIdentifier(); + setState(1176); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(1175); + partitionSpec(); + } + } + + setState(1178); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(SET); + setState(1179); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(FILEFORMAT); + } + break; + case 40: + enterOuterAlt(_localctx, 40); + { + setState(1181); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); + setState(1182); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); + setState(1183); + tableIdentifier(); + setState(1185); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(1184); + partitionSpec(); + } + } + + setState(1187); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(REPLACE); + setState(1188); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(COLUMNS); + } + break; + case 41: + enterOuterAlt(_localctx, 41); + { + setState(1190); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(START); + setState(1191); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TRANSACTION); + } + break; + case 42: + enterOuterAlt(_localctx, 42); + { + setState(1192); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(COMMIT); + } + break; + case 43: + enterOuterAlt(_localctx, 43); + { + setState(1193); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ROLLBACK); + } + break; + case 44: + enterOuterAlt(_localctx, 44); + { + setState(1194); + ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DFS); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CreateTableHeaderContext extends ParserRuleContext { + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode EXTERNAL() { return getToken(SqlBaseParser.EXTERNAL, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public CreateTableHeaderContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_createTableHeader; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTableHeader(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTableHeader(this); + } + } + + public final CreateTableHeaderContext createTableHeader() throws RecognitionException { + CreateTableHeaderContext _localctx = new CreateTableHeaderContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_createTableHeader); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1197); + match(CREATE); + setState(1199); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(1198); + match(TEMPORARY); + } + } + + setState(1202); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTERNAL) { + { + setState(1201); + match(EXTERNAL); + } + } + + setState(1204); + match(TABLE); + setState(1208); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,121,_ctx) ) { + case 1: + { + setState(1205); + match(IF); + setState(1206); + match(NOT); + setState(1207); + match(EXISTS); + } + break; + } + setState(1210); + multipartIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReplaceTableHeaderContext extends ParserRuleContext { + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } + public ReplaceTableHeaderContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_replaceTableHeader; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterReplaceTableHeader(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitReplaceTableHeader(this); + } + } + + public final ReplaceTableHeaderContext replaceTableHeader() throws RecognitionException { + ReplaceTableHeaderContext _localctx = new ReplaceTableHeaderContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_replaceTableHeader); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1214); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CREATE) { + { + setState(1212); + match(CREATE); + setState(1213); + match(OR); + } + } + + setState(1216); + match(REPLACE); + setState(1217); + match(TABLE); + setState(1218); + multipartIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BucketSpecContext extends ParserRuleContext { + public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } + public List BY() { return getTokens(SqlBaseParser.BY); } + public TerminalNode BY(int i) { + return getToken(SqlBaseParser.BY, i); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } + public TerminalNode BUCKETS() { return getToken(SqlBaseParser.BUCKETS, 0); } + public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } + public OrderedIdentifierListContext orderedIdentifierList() { + return getRuleContext(OrderedIdentifierListContext.class,0); + } + public BucketSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_bucketSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBucketSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBucketSpec(this); + } + } + + public final BucketSpecContext bucketSpec() throws RecognitionException { + BucketSpecContext _localctx = new BucketSpecContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_bucketSpec); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1220); + match(CLUSTERED); + setState(1221); + match(BY); + setState(1222); + identifierList(); + setState(1226); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SORTED) { + { + setState(1223); + match(SORTED); + setState(1224); + match(BY); + setState(1225); + orderedIdentifierList(); + } + } + + setState(1228); + match(INTO); + setState(1229); + match(INTEGER_VALUE); + setState(1230); + match(BUCKETS); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SkewSpecContext extends ParserRuleContext { + public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } + public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } + public ConstantListContext constantList() { + return getRuleContext(ConstantListContext.class,0); + } + public NestedConstantListContext nestedConstantList() { + return getRuleContext(NestedConstantListContext.class,0); + } + public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } + public SkewSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_skewSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSkewSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSkewSpec(this); + } + } + + public final SkewSpecContext skewSpec() throws RecognitionException { + SkewSpecContext _localctx = new SkewSpecContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_skewSpec); + try { + enterOuterAlt(_localctx, 1); + { + setState(1232); + match(SKEWED); + setState(1233); + match(BY); + setState(1234); + identifierList(); + setState(1235); + match(ON); + setState(1238); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) { + case 1: + { + setState(1236); + constantList(); + } + break; + case 2: + { + setState(1237); + nestedConstantList(); + } + break; + } + setState(1243); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) { + case 1: + { + setState(1240); + match(STORED); + setState(1241); + match(AS); + setState(1242); + match(DIRECTORIES); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LocationSpecContext extends ParserRuleContext { + public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public LocationSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_locationSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLocationSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLocationSpec(this); + } + } + + public final LocationSpecContext locationSpec() throws RecognitionException { + LocationSpecContext _localctx = new LocationSpecContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_locationSpec); + try { + enterOuterAlt(_localctx, 1); + { + setState(1245); + match(LOCATION); + setState(1246); + match(STRING); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CommentSpecContext extends ParserRuleContext { + public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public CommentSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_commentSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCommentSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCommentSpec(this); + } + } + + public final CommentSpecContext commentSpec() throws RecognitionException { + CommentSpecContext _localctx = new CommentSpecContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_commentSpec); + try { + enterOuterAlt(_localctx, 1); + { + setState(1248); + match(COMMENT); + setState(1249); + match(STRING); + } + } + 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 QueryTermContext queryTerm() { + return getRuleContext(QueryTermContext.class,0); + } + public QueryOrganizationContext queryOrganization() { + return getRuleContext(QueryOrganizationContext.class,0); + } + public CtesContext ctes() { + return getRuleContext(CtesContext.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 SqlBaseListener ) ((SqlBaseListener)listener).enterQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQuery(this); + } + } + + public final QueryContext query() throws RecognitionException { + QueryContext _localctx = new QueryContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_query); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1252); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(1251); + ctes(); + } + } + + setState(1254); + queryTerm(0); + setState(1255); + queryOrganization(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InsertIntoContext extends ParserRuleContext { + public InsertIntoContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_insertInto; } + + public InsertIntoContext() { } + public void copyFrom(InsertIntoContext ctx) { + super.copyFrom(ctx); + } + } + public static class InsertOverwriteHiveDirContext extends InsertIntoContext { + public Token path; + public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } + public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } + public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } + public RowFormatContext rowFormat() { + return getRuleContext(RowFormatContext.class,0); + } + public CreateFileFormatContext createFileFormat() { + return getRuleContext(CreateFileFormatContext.class,0); + } + public InsertOverwriteHiveDirContext(InsertIntoContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertOverwriteHiveDir(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertOverwriteHiveDir(this); + } + } + public static class InsertOverwriteDirContext extends InsertIntoContext { + public Token path; + public TablePropertyListContext options; + public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } + public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } + public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } + public TableProviderContext tableProvider() { + return getRuleContext(TableProviderContext.class,0); + } + public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } + public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public InsertOverwriteDirContext(InsertIntoContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertOverwriteDir(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertOverwriteDir(this); + } + } + public static class InsertOverwriteTableContext extends InsertIntoContext { + public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } + public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public InsertOverwriteTableContext(InsertIntoContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertOverwriteTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertOverwriteTable(this); + } + } + public static class InsertIntoTableContext extends InsertIntoContext { + public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } + public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public InsertIntoTableContext(InsertIntoContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertIntoTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertIntoTable(this); + } + } + + public final InsertIntoContext insertInto() throws RecognitionException { + InsertIntoContext _localctx = new InsertIntoContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_insertInto); + int _la; + try { + setState(1312); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,139,_ctx) ) { + case 1: + _localctx = new InsertOverwriteTableContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1257); + match(INSERT); + setState(1258); + match(OVERWRITE); + setState(1260); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,127,_ctx) ) { + case 1: + { + setState(1259); + match(TABLE); + } + break; + } + setState(1262); + multipartIdentifier(); + setState(1269); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(1263); + partitionSpec(); + setState(1267); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1264); + match(IF); + setState(1265); + match(NOT); + setState(1266); + match(EXISTS); + } + } + + } + } + + } + break; + case 2: + _localctx = new InsertIntoTableContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1271); + match(INSERT); + setState(1272); + match(INTO); + setState(1274); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) { + case 1: + { + setState(1273); + match(TABLE); + } + break; + } + setState(1276); + multipartIdentifier(); + setState(1278); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(1277); + partitionSpec(); + } + } + + setState(1283); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1280); + match(IF); + setState(1281); + match(NOT); + setState(1282); + match(EXISTS); + } + } + + } + break; + case 3: + _localctx = new InsertOverwriteHiveDirContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1285); + match(INSERT); + setState(1286); + match(OVERWRITE); + setState(1288); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LOCAL) { + { + setState(1287); + match(LOCAL); + } + } + + setState(1290); + match(DIRECTORY); + setState(1291); + ((InsertOverwriteHiveDirContext)_localctx).path = match(STRING); + setState(1293); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ROW) { + { + setState(1292); + rowFormat(); + } + } + + setState(1296); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STORED) { + { + setState(1295); + createFileFormat(); + } + } + + } + break; + case 4: + _localctx = new InsertOverwriteDirContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1298); + match(INSERT); + setState(1299); + match(OVERWRITE); + setState(1301); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LOCAL) { + { + setState(1300); + match(LOCAL); + } + } + + setState(1303); + match(DIRECTORY); + setState(1305); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STRING) { + { + setState(1304); + ((InsertOverwriteDirContext)_localctx).path = match(STRING); + } + } + + setState(1307); + tableProvider(); + setState(1310); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OPTIONS) { + { + setState(1308); + match(OPTIONS); + setState(1309); + ((InsertOverwriteDirContext)_localctx).options = tablePropertyList(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PartitionSpecLocationContext extends ParserRuleContext { + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public LocationSpecContext locationSpec() { + return getRuleContext(LocationSpecContext.class,0); + } + public PartitionSpecLocationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionSpecLocation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPartitionSpecLocation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPartitionSpecLocation(this); + } + } + + public final PartitionSpecLocationContext partitionSpecLocation() throws RecognitionException { + PartitionSpecLocationContext _localctx = new PartitionSpecLocationContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_partitionSpecLocation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1314); + partitionSpec(); + setState(1316); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LOCATION) { + { + setState(1315); + locationSpec(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PartitionSpecContext extends ParserRuleContext { + public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } + public List partitionVal() { + return getRuleContexts(PartitionValContext.class); + } + public PartitionValContext partitionVal(int i) { + return getRuleContext(PartitionValContext.class,i); + } + public PartitionSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPartitionSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPartitionSpec(this); + } + } + + public final PartitionSpecContext partitionSpec() throws RecognitionException { + PartitionSpecContext _localctx = new PartitionSpecContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_partitionSpec); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1318); + match(PARTITION); + setState(1319); + match(T__1); + setState(1320); + partitionVal(); + setState(1325); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1321); + match(T__3); + setState(1322); + partitionVal(); + } + } + setState(1327); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1328); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PartitionValContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQ() { return getToken(SqlBaseParser.EQ, 0); } + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public PartitionValContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionVal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPartitionVal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPartitionVal(this); + } + } + + public final PartitionValContext partitionVal() throws RecognitionException { + PartitionValContext _localctx = new PartitionValContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_partitionVal); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1330); + identifier(); + setState(1333); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQ) { + { + setState(1331); + match(EQ); + setState(1332); + constant(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamespaceContext extends ParserRuleContext { + public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } + public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } + public TerminalNode SCHEMA() { return getToken(SqlBaseParser.SCHEMA, 0); } + public NamespaceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namespace; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamespace(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamespace(this); + } + } + + public final NamespaceContext namespace() throws RecognitionException { + NamespaceContext _localctx = new NamespaceContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_namespace); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1335); + _la = _input.LA(1); + if ( !(_la==DATABASE || _la==NAMESPACE || _la==SCHEMA) ) { + _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 DescribeFuncNameContext extends ParserRuleContext { + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public ComparisonOperatorContext comparisonOperator() { + return getRuleContext(ComparisonOperatorContext.class,0); + } + public ArithmeticOperatorContext arithmeticOperator() { + return getRuleContext(ArithmeticOperatorContext.class,0); + } + public PredicateOperatorContext predicateOperator() { + return getRuleContext(PredicateOperatorContext.class,0); + } + public DescribeFuncNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_describeFuncName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeFuncName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeFuncName(this); + } + } + + public final DescribeFuncNameContext describeFuncName() throws RecognitionException { + DescribeFuncNameContext _localctx = new DescribeFuncNameContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_describeFuncName); + try { + setState(1342); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,143,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1337); + qualifiedName(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1338); + match(STRING); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1339); + comparisonOperator(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1340); + arithmeticOperator(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1341); + predicateOperator(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DescribeColNameContext extends ParserRuleContext { + public IdentifierContext identifier; + public List nameParts = new ArrayList(); + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public DescribeColNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_describeColName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeColName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeColName(this); + } + } + + public final DescribeColNameContext describeColName() throws RecognitionException { + DescribeColNameContext _localctx = new DescribeColNameContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_describeColName); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1344); + ((DescribeColNameContext)_localctx).identifier = identifier(); + ((DescribeColNameContext)_localctx).nameParts.add(((DescribeColNameContext)_localctx).identifier); + setState(1349); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(1345); + match(T__4); + setState(1346); + ((DescribeColNameContext)_localctx).identifier = identifier(); + ((DescribeColNameContext)_localctx).nameParts.add(((DescribeColNameContext)_localctx).identifier); + } + } + setState(1351); + _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 CtesContext extends ParserRuleContext { + public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } + public List namedQuery() { + return getRuleContexts(NamedQueryContext.class); + } + public NamedQueryContext namedQuery(int i) { + return getRuleContext(NamedQueryContext.class,i); + } + public CtesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ctes; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCtes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCtes(this); + } + } + + public final CtesContext ctes() throws RecognitionException { + CtesContext _localctx = new CtesContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_ctes); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1352); + match(WITH); + setState(1353); + namedQuery(); + setState(1358); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1354); + match(T__3); + setState(1355); + namedQuery(); + } + } + setState(1360); + _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 NamedQueryContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext name; + public IdentifierListContext columnAliases; + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.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 SqlBaseListener ) ((SqlBaseListener)listener).enterNamedQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedQuery(this); + } + } + + public final NamedQueryContext namedQuery() throws RecognitionException { + NamedQueryContext _localctx = new NamedQueryContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_namedQuery); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1361); + ((NamedQueryContext)_localctx).name = errorCapturingIdentifier(); + setState(1363); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) { + case 1: + { + setState(1362); + ((NamedQueryContext)_localctx).columnAliases = identifierList(); + } + break; + } + setState(1366); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(1365); + match(AS); + } + } + + setState(1368); + match(T__1); + setState(1369); + query(); + setState(1370); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TableProviderContext extends ParserRuleContext { + public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TableProviderContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableProvider; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableProvider(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableProvider(this); + } + } + + public final TableProviderContext tableProvider() throws RecognitionException { + TableProviderContext _localctx = new TableProviderContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_tableProvider); + try { + enterOuterAlt(_localctx, 1); + { + setState(1372); + match(USING); + setState(1373); + multipartIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CreateTableClausesContext extends ParserRuleContext { + public TablePropertyListContext options; + public TransformListContext partitioning; + public TablePropertyListContext tableProps; + public List bucketSpec() { + return getRuleContexts(BucketSpecContext.class); + } + public BucketSpecContext bucketSpec(int i) { + return getRuleContext(BucketSpecContext.class,i); + } + public List locationSpec() { + return getRuleContexts(LocationSpecContext.class); + } + public LocationSpecContext locationSpec(int i) { + return getRuleContext(LocationSpecContext.class,i); + } + public List commentSpec() { + return getRuleContexts(CommentSpecContext.class); + } + public CommentSpecContext commentSpec(int i) { + return getRuleContext(CommentSpecContext.class,i); + } + public List OPTIONS() { return getTokens(SqlBaseParser.OPTIONS); } + public TerminalNode OPTIONS(int i) { + return getToken(SqlBaseParser.OPTIONS, i); + } + public List PARTITIONED() { return getTokens(SqlBaseParser.PARTITIONED); } + public TerminalNode PARTITIONED(int i) { + return getToken(SqlBaseParser.PARTITIONED, i); + } + public List BY() { return getTokens(SqlBaseParser.BY); } + public TerminalNode BY(int i) { + return getToken(SqlBaseParser.BY, i); + } + public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } + public TerminalNode TBLPROPERTIES(int i) { + return getToken(SqlBaseParser.TBLPROPERTIES, i); + } + public List tablePropertyList() { + return getRuleContexts(TablePropertyListContext.class); + } + public TablePropertyListContext tablePropertyList(int i) { + return getRuleContext(TablePropertyListContext.class,i); + } + public List transformList() { + return getRuleContexts(TransformListContext.class); + } + public TransformListContext transformList(int i) { + return getRuleContext(TransformListContext.class,i); + } + public CreateTableClausesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_createTableClauses; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTableClauses(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTableClauses(this); + } + } + + public final CreateTableClausesContext createTableClauses() throws RecognitionException { + CreateTableClausesContext _localctx = new CreateTableClausesContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_createTableClauses); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1387); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==CLUSTERED || _la==COMMENT || ((((_la - 138)) & ~0x3f) == 0 && ((1L << (_la - 138)) & ((1L << (LOCATION - 138)) | (1L << (OPTIONS - 138)) | (1L << (PARTITIONED - 138)))) != 0) || _la==TBLPROPERTIES) { + { + setState(1385); + _errHandler.sync(this); + switch (_input.LA(1)) { + case OPTIONS: + { + { + setState(1375); + match(OPTIONS); + setState(1376); + ((CreateTableClausesContext)_localctx).options = tablePropertyList(); + } + } + break; + case PARTITIONED: + { + { + setState(1377); + match(PARTITIONED); + setState(1378); + match(BY); + setState(1379); + ((CreateTableClausesContext)_localctx).partitioning = transformList(); + } + } + break; + case CLUSTERED: + { + setState(1380); + bucketSpec(); + } + break; + case LOCATION: + { + setState(1381); + locationSpec(); + } + break; + case COMMENT: + { + setState(1382); + commentSpec(); + } + break; + case TBLPROPERTIES: + { + { + setState(1383); + match(TBLPROPERTIES); + setState(1384); + ((CreateTableClausesContext)_localctx).tableProps = tablePropertyList(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(1389); + _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 TablePropertyListContext extends ParserRuleContext { + public List tableProperty() { + return getRuleContexts(TablePropertyContext.class); + } + public TablePropertyContext tableProperty(int i) { + return getRuleContext(TablePropertyContext.class,i); + } + public TablePropertyListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tablePropertyList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTablePropertyList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTablePropertyList(this); + } + } + + public final TablePropertyListContext tablePropertyList() throws RecognitionException { + TablePropertyListContext _localctx = new TablePropertyListContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_tablePropertyList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1390); + match(T__1); + setState(1391); + tableProperty(); + setState(1396); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1392); + match(T__3); + setState(1393); + tableProperty(); + } + } + setState(1398); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1399); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TablePropertyContext extends ParserRuleContext { + public TablePropertyKeyContext key; + public TablePropertyValueContext value; + public TablePropertyKeyContext tablePropertyKey() { + return getRuleContext(TablePropertyKeyContext.class,0); + } + public TablePropertyValueContext tablePropertyValue() { + return getRuleContext(TablePropertyValueContext.class,0); + } + public TerminalNode EQ() { return getToken(SqlBaseParser.EQ, 0); } + public TablePropertyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableProperty; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableProperty(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableProperty(this); + } + } + + public final TablePropertyContext tableProperty() throws RecognitionException { + TablePropertyContext _localctx = new TablePropertyContext(_ctx, getState()); + enterRule(_localctx, 56, RULE_tableProperty); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1401); + ((TablePropertyContext)_localctx).key = tablePropertyKey(); + setState(1406); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FALSE || ((((_la - 241)) & ~0x3f) == 0 && ((1L << (_la - 241)) & ((1L << (TRUE - 241)) | (1L << (EQ - 241)) | (1L << (STRING - 241)) | (1L << (INTEGER_VALUE - 241)) | (1L << (DECIMAL_VALUE - 241)))) != 0)) { + { + setState(1403); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQ) { + { + setState(1402); + match(EQ); + } + } + + setState(1405); + ((TablePropertyContext)_localctx).value = tablePropertyValue(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TablePropertyKeyContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TablePropertyKeyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tablePropertyKey; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTablePropertyKey(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTablePropertyKey(this); + } + } + + public final TablePropertyKeyContext tablePropertyKey() throws RecognitionException { + TablePropertyKeyContext _localctx = new TablePropertyKeyContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_tablePropertyKey); + int _la; + try { + setState(1417); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,154,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1408); + identifier(); + setState(1413); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(1409); + match(T__4); + setState(1410); + identifier(); + } + } + setState(1415); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1416); + match(STRING); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TablePropertyValueContext extends ParserRuleContext { + public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } + public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } + public BooleanValueContext booleanValue() { + return getRuleContext(BooleanValueContext.class,0); + } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TablePropertyValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tablePropertyValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTablePropertyValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTablePropertyValue(this); + } + } + + public final TablePropertyValueContext tablePropertyValue() throws RecognitionException { + TablePropertyValueContext _localctx = new TablePropertyValueContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_tablePropertyValue); + try { + setState(1423); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INTEGER_VALUE: + enterOuterAlt(_localctx, 1); + { + setState(1419); + match(INTEGER_VALUE); + } + break; + case DECIMAL_VALUE: + enterOuterAlt(_localctx, 2); + { + setState(1420); + match(DECIMAL_VALUE); + } + break; + case FALSE: + case TRUE: + enterOuterAlt(_localctx, 3); + { + setState(1421); + booleanValue(); + } + break; + case STRING: + enterOuterAlt(_localctx, 4); + { + setState(1422); + match(STRING); + } + 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 ConstantListContext extends ParserRuleContext { + public List constant() { + return getRuleContexts(ConstantContext.class); + } + public ConstantContext constant(int i) { + return getRuleContext(ConstantContext.class,i); + } + public ConstantListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterConstantList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitConstantList(this); + } + } + + public final ConstantListContext constantList() throws RecognitionException { + ConstantListContext _localctx = new ConstantListContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_constantList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1425); + match(T__1); + setState(1426); + constant(); + setState(1431); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1427); + match(T__3); + setState(1428); + constant(); + } + } + setState(1433); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1434); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NestedConstantListContext extends ParserRuleContext { + public List constantList() { + return getRuleContexts(ConstantListContext.class); + } + public ConstantListContext constantList(int i) { + return getRuleContext(ConstantListContext.class,i); + } + public NestedConstantListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_nestedConstantList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNestedConstantList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNestedConstantList(this); + } + } + + public final NestedConstantListContext nestedConstantList() throws RecognitionException { + NestedConstantListContext _localctx = new NestedConstantListContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_nestedConstantList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1436); + match(T__1); + setState(1437); + constantList(); + setState(1442); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1438); + match(T__3); + setState(1439); + constantList(); + } + } + setState(1444); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1445); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CreateFileFormatContext extends ParserRuleContext { + public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public FileFormatContext fileFormat() { + return getRuleContext(FileFormatContext.class,0); + } + public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } + public StorageHandlerContext storageHandler() { + return getRuleContext(StorageHandlerContext.class,0); + } + public CreateFileFormatContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_createFileFormat; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateFileFormat(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateFileFormat(this); + } + } + + public final CreateFileFormatContext createFileFormat() throws RecognitionException { + CreateFileFormatContext _localctx = new CreateFileFormatContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_createFileFormat); + try { + setState(1453); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1447); + match(STORED); + setState(1448); + match(AS); + setState(1449); + fileFormat(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1450); + match(STORED); + setState(1451); + match(BY); + setState(1452); + storageHandler(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FileFormatContext extends ParserRuleContext { + public FileFormatContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fileFormat; } + + public FileFormatContext() { } + public void copyFrom(FileFormatContext ctx) { + super.copyFrom(ctx); + } + } + public static class TableFileFormatContext extends FileFormatContext { + public Token inFmt; + public Token outFmt; + public TerminalNode INPUTFORMAT() { return getToken(SqlBaseParser.INPUTFORMAT, 0); } + public TerminalNode OUTPUTFORMAT() { return getToken(SqlBaseParser.OUTPUTFORMAT, 0); } + public List STRING() { return getTokens(SqlBaseParser.STRING); } + public TerminalNode STRING(int i) { + return getToken(SqlBaseParser.STRING, i); + } + public TableFileFormatContext(FileFormatContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableFileFormat(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableFileFormat(this); + } + } + public static class GenericFileFormatContext extends FileFormatContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public GenericFileFormatContext(FileFormatContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterGenericFileFormat(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitGenericFileFormat(this); + } + } + + public final FileFormatContext fileFormat() throws RecognitionException { + FileFormatContext _localctx = new FileFormatContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_fileFormat); + try { + setState(1460); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,159,_ctx) ) { + case 1: + _localctx = new TableFileFormatContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1455); + match(INPUTFORMAT); + setState(1456); + ((TableFileFormatContext)_localctx).inFmt = match(STRING); + setState(1457); + match(OUTPUTFORMAT); + setState(1458); + ((TableFileFormatContext)_localctx).outFmt = match(STRING); + } + break; + case 2: + _localctx = new GenericFileFormatContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1459); + identifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StorageHandlerContext extends ParserRuleContext { + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } + public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public StorageHandlerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_storageHandler; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStorageHandler(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStorageHandler(this); + } + } + + public final StorageHandlerContext storageHandler() throws RecognitionException { + StorageHandlerContext _localctx = new StorageHandlerContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_storageHandler); + try { + enterOuterAlt(_localctx, 1); + { + setState(1462); + match(STRING); + setState(1466); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,160,_ctx) ) { + case 1: + { + setState(1463); + match(WITH); + setState(1464); + match(SERDEPROPERTIES); + setState(1465); + tablePropertyList(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ResourceContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public ResourceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_resource; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitResource(this); + } + } + + public final ResourceContext resource() throws RecognitionException { + ResourceContext _localctx = new ResourceContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_resource); + try { + enterOuterAlt(_localctx, 1); + { + setState(1468); + identifier(); + setState(1469); + match(STRING); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DmlStatementNoWithContext extends ParserRuleContext { + public DmlStatementNoWithContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dmlStatementNoWith; } + + public DmlStatementNoWithContext() { } + public void copyFrom(DmlStatementNoWithContext ctx) { + super.copyFrom(ctx); + } + } + public static class DeleteFromTableContext extends DmlStatementNoWithContext { + public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public DeleteFromTableContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDeleteFromTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDeleteFromTable(this); + } + } + public static class SingleInsertQueryContext extends DmlStatementNoWithContext { + public InsertIntoContext insertInto() { + return getRuleContext(InsertIntoContext.class,0); + } + public QueryTermContext queryTerm() { + return getRuleContext(QueryTermContext.class,0); + } + public QueryOrganizationContext queryOrganization() { + return getRuleContext(QueryOrganizationContext.class,0); + } + public SingleInsertQueryContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleInsertQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleInsertQuery(this); + } + } + public static class MultiInsertQueryContext extends DmlStatementNoWithContext { + public FromClauseContext fromClause() { + return getRuleContext(FromClauseContext.class,0); + } + public List multiInsertQueryBody() { + return getRuleContexts(MultiInsertQueryBodyContext.class); + } + public MultiInsertQueryBodyContext multiInsertQueryBody(int i) { + return getRuleContext(MultiInsertQueryBodyContext.class,i); + } + public MultiInsertQueryContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultiInsertQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultiInsertQuery(this); + } + } + public static class UpdateTableContext extends DmlStatementNoWithContext { + public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public SetClauseContext setClause() { + return getRuleContext(SetClauseContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public UpdateTableContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUpdateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUpdateTable(this); + } + } + public static class MergeIntoTableContext extends DmlStatementNoWithContext { + public MultipartIdentifierContext target; + public TableAliasContext targetAlias; + public MultipartIdentifierContext source; + public QueryContext sourceQuery; + public TableAliasContext sourceAlias; + public BooleanExpressionContext mergeCondition; + public TerminalNode MERGE() { return getToken(SqlBaseParser.MERGE, 0); } + public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } + public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } + public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public List tableAlias() { + return getRuleContexts(TableAliasContext.class); + } + public TableAliasContext tableAlias(int i) { + return getRuleContext(TableAliasContext.class,i); + } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public List matchedClause() { + return getRuleContexts(MatchedClauseContext.class); + } + public MatchedClauseContext matchedClause(int i) { + return getRuleContext(MatchedClauseContext.class,i); + } + public List notMatchedClause() { + return getRuleContexts(NotMatchedClauseContext.class); + } + public NotMatchedClauseContext notMatchedClause(int i) { + return getRuleContext(NotMatchedClauseContext.class,i); + } + public MergeIntoTableContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMergeIntoTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMergeIntoTable(this); + } + } + + public final DmlStatementNoWithContext dmlStatementNoWith() throws RecognitionException { + DmlStatementNoWithContext _localctx = new DmlStatementNoWithContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_dmlStatementNoWith); + int _la; + try { + int _alt; + setState(1522); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INSERT: + _localctx = new SingleInsertQueryContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1471); + insertInto(); + setState(1472); + queryTerm(0); + setState(1473); + queryOrganization(); + } + break; + case FROM: + _localctx = new MultiInsertQueryContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1475); + fromClause(); + setState(1477); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1476); + multiInsertQueryBody(); + } + } + setState(1479); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==INSERT ); + } + break; + case DELETE: + _localctx = new DeleteFromTableContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1481); + match(DELETE); + setState(1482); + match(FROM); + setState(1483); + multipartIdentifier(); + setState(1484); + tableAlias(); + setState(1486); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1485); + whereClause(); + } + } + + } + break; + case UPDATE: + _localctx = new UpdateTableContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1488); + match(UPDATE); + setState(1489); + multipartIdentifier(); + setState(1490); + tableAlias(); + setState(1491); + setClause(); + setState(1493); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1492); + whereClause(); + } + } + + } + break; + case MERGE: + _localctx = new MergeIntoTableContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1495); + match(MERGE); + setState(1496); + match(INTO); + setState(1497); + ((MergeIntoTableContext)_localctx).target = multipartIdentifier(); + setState(1498); + ((MergeIntoTableContext)_localctx).targetAlias = tableAlias(); + setState(1499); + match(USING); + setState(1505); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) { + case 1: + { + setState(1500); + ((MergeIntoTableContext)_localctx).source = multipartIdentifier(); + } + break; + case 2: + { + setState(1501); + match(T__1); + setState(1502); + ((MergeIntoTableContext)_localctx).sourceQuery = query(); + setState(1503); + match(T__2); + } + break; + } + setState(1507); + ((MergeIntoTableContext)_localctx).sourceAlias = tableAlias(); + setState(1508); + match(ON); + setState(1509); + ((MergeIntoTableContext)_localctx).mergeCondition = booleanExpression(0); + setState(1513); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,165,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1510); + matchedClause(); + } + } + } + setState(1515); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,165,_ctx); + } + setState(1519); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==WHEN) { + { + { + setState(1516); + notMatchedClause(); + } + } + setState(1521); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QueryOrganizationContext extends ParserRuleContext { + public SortItemContext sortItem; + public List order = new ArrayList(); + public ExpressionContext expression; + public List clusterBy = new ArrayList(); + public List distributeBy = new ArrayList(); + public List sort = new ArrayList(); + public ExpressionContext limit; + public TerminalNode ORDER() { return getToken(SqlBaseParser.ORDER, 0); } + public List BY() { return getTokens(SqlBaseParser.BY); } + public TerminalNode BY(int i) { + return getToken(SqlBaseParser.BY, i); + } + public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } + public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } + public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } + public WindowClauseContext windowClause() { + return getRuleContext(WindowClauseContext.class,0); + } + public TerminalNode LIMIT() { return getToken(SqlBaseParser.LIMIT, 0); } + public List sortItem() { + return getRuleContexts(SortItemContext.class); + } + public SortItemContext sortItem(int i) { + return getRuleContext(SortItemContext.class,i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } + public QueryOrganizationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_queryOrganization; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQueryOrganization(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQueryOrganization(this); + } + } + + public final QueryOrganizationContext queryOrganization() throws RecognitionException { + QueryOrganizationContext _localctx = new QueryOrganizationContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_queryOrganization); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1534); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) { + case 1: + { + setState(1524); + match(ORDER); + setState(1525); + match(BY); + setState(1526); + ((QueryOrganizationContext)_localctx).sortItem = sortItem(); + ((QueryOrganizationContext)_localctx).order.add(((QueryOrganizationContext)_localctx).sortItem); + setState(1531); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,168,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1527); + match(T__3); + setState(1528); + ((QueryOrganizationContext)_localctx).sortItem = sortItem(); + ((QueryOrganizationContext)_localctx).order.add(((QueryOrganizationContext)_localctx).sortItem); + } + } + } + setState(1533); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,168,_ctx); + } + } + break; + } + setState(1546); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) { + case 1: + { + setState(1536); + match(CLUSTER); + setState(1537); + match(BY); + setState(1538); + ((QueryOrganizationContext)_localctx).expression = expression(); + ((QueryOrganizationContext)_localctx).clusterBy.add(((QueryOrganizationContext)_localctx).expression); + setState(1543); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,170,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1539); + match(T__3); + setState(1540); + ((QueryOrganizationContext)_localctx).expression = expression(); + ((QueryOrganizationContext)_localctx).clusterBy.add(((QueryOrganizationContext)_localctx).expression); + } + } + } + setState(1545); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,170,_ctx); + } + } + break; + } + setState(1558); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,173,_ctx) ) { + case 1: + { + setState(1548); + match(DISTRIBUTE); + setState(1549); + match(BY); + setState(1550); + ((QueryOrganizationContext)_localctx).expression = expression(); + ((QueryOrganizationContext)_localctx).distributeBy.add(((QueryOrganizationContext)_localctx).expression); + setState(1555); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,172,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1551); + match(T__3); + setState(1552); + ((QueryOrganizationContext)_localctx).expression = expression(); + ((QueryOrganizationContext)_localctx).distributeBy.add(((QueryOrganizationContext)_localctx).expression); + } + } + } + setState(1557); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,172,_ctx); + } + } + break; + } + setState(1570); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,175,_ctx) ) { + case 1: + { + setState(1560); + match(SORT); + setState(1561); + match(BY); + setState(1562); + ((QueryOrganizationContext)_localctx).sortItem = sortItem(); + ((QueryOrganizationContext)_localctx).sort.add(((QueryOrganizationContext)_localctx).sortItem); + setState(1567); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,174,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1563); + match(T__3); + setState(1564); + ((QueryOrganizationContext)_localctx).sortItem = sortItem(); + ((QueryOrganizationContext)_localctx).sort.add(((QueryOrganizationContext)_localctx).sortItem); + } + } + } + setState(1569); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,174,_ctx); + } + } + break; + } + setState(1573); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) { + case 1: + { + setState(1572); + windowClause(); + } + break; + } + setState(1580); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) { + case 1: + { + setState(1575); + match(LIMIT); + setState(1578); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,177,_ctx) ) { + case 1: + { + setState(1576); + match(ALL); + } + break; + case 2: + { + setState(1577); + ((QueryOrganizationContext)_localctx).limit = expression(); + } + break; + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MultiInsertQueryBodyContext extends ParserRuleContext { + public InsertIntoContext insertInto() { + return getRuleContext(InsertIntoContext.class,0); + } + public FromStatementBodyContext fromStatementBody() { + return getRuleContext(FromStatementBodyContext.class,0); + } + public MultiInsertQueryBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multiInsertQueryBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultiInsertQueryBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultiInsertQueryBody(this); + } + } + + public final MultiInsertQueryBodyContext multiInsertQueryBody() throws RecognitionException { + MultiInsertQueryBodyContext _localctx = new MultiInsertQueryBodyContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_multiInsertQueryBody); + try { + enterOuterAlt(_localctx, 1); + { + setState(1582); + insertInto(); + setState(1583); + fromStatementBody(); + } + } + 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 SqlBaseListener ) ((SqlBaseListener)listener).enterQueryTermDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQueryTermDefault(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(SqlBaseParser.INTERSECT, 0); } + public TerminalNode UNION() { return getToken(SqlBaseParser.UNION, 0); } + public TerminalNode EXCEPT() { return getToken(SqlBaseParser.EXCEPT, 0); } + public TerminalNode SETMINUS() { return getToken(SqlBaseParser.SETMINUS, 0); } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public SetOperationContext(QueryTermContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetOperation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetOperation(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 = 80; + enterRecursionRule(_localctx, 80, RULE_queryTerm, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new QueryTermDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(1586); + queryPrimary(); + } + _ctx.stop = _input.LT(-1); + setState(1611); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,183,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(1609); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,182,_ctx) ) { + case 1: + { + _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); + ((SetOperationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); + setState(1588); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(1589); + if (!(self.legacy_setops_precedence_enbled)) throw new FailedPredicateException(this, "self.legacy_setops_precedence_enbled"); + setState(1590); + ((SetOperationContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==EXCEPT || _la==INTERSECT || _la==SETMINUS || _la==UNION) ) { + ((SetOperationContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1592); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(1591); + setQuantifier(); + } + } + + setState(1594); + ((SetOperationContext)_localctx).right = queryTerm(4); + } + break; + case 2: + { + _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); + ((SetOperationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); + setState(1595); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(1596); + if (!(not self.legacy_setops_precedence_enbled)) throw new FailedPredicateException(this, "not self.legacy_setops_precedence_enbled"); + setState(1597); + ((SetOperationContext)_localctx).operator = match(INTERSECT); + setState(1599); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(1598); + setQuantifier(); + } + } + + setState(1601); + ((SetOperationContext)_localctx).right = queryTerm(3); + } + break; + case 3: + { + _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); + ((SetOperationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); + setState(1602); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(1603); + if (!(not self.legacy_setops_precedence_enbled)) throw new FailedPredicateException(this, "not self.legacy_setops_precedence_enbled"); + setState(1604); + ((SetOperationContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==EXCEPT || _la==SETMINUS || _la==UNION) ) { + ((SetOperationContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1606); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(1605); + setQuantifier(); + } + } + + setState(1608); + ((SetOperationContext)_localctx).right = queryTerm(2); + } + break; + } + } + } + setState(1613); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,183,_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 QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public SubqueryContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSubquery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubquery(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 SqlBaseListener ) ((SqlBaseListener)listener).enterQueryPrimaryDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQueryPrimaryDefault(this); + } + } + public static class InlineTableDefault1Context extends QueryPrimaryContext { + public InlineTableContext inlineTable() { + return getRuleContext(InlineTableContext.class,0); + } + public InlineTableDefault1Context(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInlineTableDefault1(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInlineTableDefault1(this); + } + } + public static class FromStmtContext extends QueryPrimaryContext { + public FromStatementContext fromStatement() { + return getRuleContext(FromStatementContext.class,0); + } + public FromStmtContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromStmt(this); + } + } + public static class TableContext extends QueryPrimaryContext { + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TableContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTable(this); + } + } + + public final QueryPrimaryContext queryPrimary() throws RecognitionException { + QueryPrimaryContext _localctx = new QueryPrimaryContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_queryPrimary); + try { + setState(1623); + _errHandler.sync(this); + switch (_input.LA(1)) { + case MAP: + case REDUCE: + case SELECT: + _localctx = new QueryPrimaryDefaultContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1614); + querySpecification(); + } + break; + case FROM: + _localctx = new FromStmtContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1615); + fromStatement(); + } + break; + case TABLE: + _localctx = new TableContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1616); + match(TABLE); + setState(1617); + multipartIdentifier(); + } + break; + case VALUES: + _localctx = new InlineTableDefault1Context(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1618); + inlineTable(); + } + break; + case T__1: + _localctx = new SubqueryContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1619); + match(T__1); + setState(1620); + query(); + setState(1621); + 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 nullOrder; + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } + public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } + public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterSortItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSortItem(this); + } + } + + public final SortItemContext sortItem() throws RecognitionException { + SortItemContext _localctx = new SortItemContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_sortItem); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1625); + expression(); + setState(1627); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) { + case 1: + { + setState(1626); + ((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(); + } + } + break; + } + setState(1631); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,186,_ctx) ) { + case 1: + { + setState(1629); + match(NULLS); + setState(1630); + ((SortItemContext)_localctx).nullOrder = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FIRST || _la==LAST) ) { + ((SortItemContext)_localctx).nullOrder = (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 FromStatementContext extends ParserRuleContext { + public FromClauseContext fromClause() { + return getRuleContext(FromClauseContext.class,0); + } + public List fromStatementBody() { + return getRuleContexts(FromStatementBodyContext.class); + } + public FromStatementBodyContext fromStatementBody(int i) { + return getRuleContext(FromStatementBodyContext.class,i); + } + public FromStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fromStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromStatement(this); + } + } + + public final FromStatementContext fromStatement() throws RecognitionException { + FromStatementContext _localctx = new FromStatementContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_fromStatement); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1633); + fromClause(); + setState(1635); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(1634); + fromStatementBody(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1637); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,187,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FromStatementBodyContext extends ParserRuleContext { + public TransformClauseContext transformClause() { + return getRuleContext(TransformClauseContext.class,0); + } + public QueryOrganizationContext queryOrganization() { + return getRuleContext(QueryOrganizationContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public SelectClauseContext selectClause() { + return getRuleContext(SelectClauseContext.class,0); + } + public List lateralView() { + return getRuleContexts(LateralViewContext.class); + } + public LateralViewContext lateralView(int i) { + return getRuleContext(LateralViewContext.class,i); + } + public AggregationClauseContext aggregationClause() { + return getRuleContext(AggregationClauseContext.class,0); + } + public HavingClauseContext havingClause() { + return getRuleContext(HavingClauseContext.class,0); + } + public WindowClauseContext windowClause() { + return getRuleContext(WindowClauseContext.class,0); + } + public FromStatementBodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fromStatementBody; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromStatementBody(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromStatementBody(this); + } + } + + public final FromStatementBodyContext fromStatementBody() throws RecognitionException { + FromStatementBodyContext _localctx = new FromStatementBodyContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_fromStatementBody); + try { + int _alt; + setState(1666); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1639); + transformClause(); + setState(1641); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,188,_ctx) ) { + case 1: + { + setState(1640); + whereClause(); + } + break; + } + setState(1643); + queryOrganization(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1645); + selectClause(); + setState(1649); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,189,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1646); + lateralView(); + } + } + } + setState(1651); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,189,_ctx); + } + setState(1653); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,190,_ctx) ) { + case 1: + { + setState(1652); + whereClause(); + } + break; + } + setState(1656); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) { + case 1: + { + setState(1655); + aggregationClause(); + } + break; + } + setState(1659); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,192,_ctx) ) { + case 1: + { + setState(1658); + havingClause(); + } + break; + } + setState(1662); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,193,_ctx) ) { + case 1: + { + setState(1661); + windowClause(); + } + break; + } + setState(1664); + queryOrganization(); + } + break; + } + } + 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 QuerySpecificationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_querySpecification; } + + public QuerySpecificationContext() { } + public void copyFrom(QuerySpecificationContext ctx) { + super.copyFrom(ctx); + } + } + public static class RegularQuerySpecificationContext extends QuerySpecificationContext { + public SelectClauseContext selectClause() { + return getRuleContext(SelectClauseContext.class,0); + } + public FromClauseContext fromClause() { + return getRuleContext(FromClauseContext.class,0); + } + public List lateralView() { + return getRuleContexts(LateralViewContext.class); + } + public LateralViewContext lateralView(int i) { + return getRuleContext(LateralViewContext.class,i); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public AggregationClauseContext aggregationClause() { + return getRuleContext(AggregationClauseContext.class,0); + } + public HavingClauseContext havingClause() { + return getRuleContext(HavingClauseContext.class,0); + } + public WindowClauseContext windowClause() { + return getRuleContext(WindowClauseContext.class,0); + } + public RegularQuerySpecificationContext(QuerySpecificationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRegularQuerySpecification(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRegularQuerySpecification(this); + } + } + public static class TransformQuerySpecificationContext extends QuerySpecificationContext { + public TransformClauseContext transformClause() { + return getRuleContext(TransformClauseContext.class,0); + } + public FromClauseContext fromClause() { + return getRuleContext(FromClauseContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public TransformQuerySpecificationContext(QuerySpecificationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformQuerySpecification(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformQuerySpecification(this); + } + } + + public final QuerySpecificationContext querySpecification() throws RecognitionException { + QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_querySpecification); + try { + int _alt; + setState(1697); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,203,_ctx) ) { + case 1: + _localctx = new TransformQuerySpecificationContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1668); + transformClause(); + setState(1670); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) { + case 1: + { + setState(1669); + fromClause(); + } + break; + } + setState(1673); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) { + case 1: + { + setState(1672); + whereClause(); + } + break; + } + } + break; + case 2: + _localctx = new RegularQuerySpecificationContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1675); + selectClause(); + setState(1677); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) { + case 1: + { + setState(1676); + fromClause(); + } + break; + } + setState(1682); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,198,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1679); + lateralView(); + } + } + } + setState(1684); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,198,_ctx); + } + setState(1686); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) { + case 1: + { + setState(1685); + whereClause(); + } + break; + } + setState(1689); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) { + case 1: + { + setState(1688); + aggregationClause(); + } + break; + } + setState(1692); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) { + case 1: + { + setState(1691); + havingClause(); + } + break; + } + setState(1695); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) { + case 1: + { + setState(1694); + windowClause(); + } + break; + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TransformClauseContext extends ParserRuleContext { + public Token kind; + public RowFormatContext inRowFormat; + public Token recordWriter; + public Token script; + public RowFormatContext outRowFormat; + public Token recordReader; + public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } + public List STRING() { return getTokens(SqlBaseParser.STRING); } + public TerminalNode STRING(int i) { + return getToken(SqlBaseParser.STRING, i); + } + public TerminalNode SELECT() { return getToken(SqlBaseParser.SELECT, 0); } + public NamedExpressionSeqContext namedExpressionSeq() { + return getRuleContext(NamedExpressionSeqContext.class,0); + } + public TerminalNode TRANSFORM() { return getToken(SqlBaseParser.TRANSFORM, 0); } + public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } + public TerminalNode REDUCE() { return getToken(SqlBaseParser.REDUCE, 0); } + public TerminalNode RECORDWRITER() { return getToken(SqlBaseParser.RECORDWRITER, 0); } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public TerminalNode RECORDREADER() { return getToken(SqlBaseParser.RECORDREADER, 0); } + public List rowFormat() { + return getRuleContexts(RowFormatContext.class); + } + public RowFormatContext rowFormat(int i) { + return getRuleContext(RowFormatContext.class,i); + } + public IdentifierSeqContext identifierSeq() { + return getRuleContext(IdentifierSeqContext.class,0); + } + public ColTypeListContext colTypeList() { + return getRuleContext(ColTypeListContext.class,0); + } + public TransformClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_transformClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformClause(this); + } + } + + public final TransformClauseContext transformClause() throws RecognitionException { + TransformClauseContext _localctx = new TransformClauseContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_transformClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1709); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SELECT: + { + setState(1699); + match(SELECT); + setState(1700); + ((TransformClauseContext)_localctx).kind = match(TRANSFORM); + setState(1701); + match(T__1); + setState(1702); + namedExpressionSeq(); + setState(1703); + match(T__2); + } + break; + case MAP: + { + setState(1705); + ((TransformClauseContext)_localctx).kind = match(MAP); + setState(1706); + namedExpressionSeq(); + } + break; + case REDUCE: + { + setState(1707); + ((TransformClauseContext)_localctx).kind = match(REDUCE); + setState(1708); + namedExpressionSeq(); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1712); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ROW) { + { + setState(1711); + ((TransformClauseContext)_localctx).inRowFormat = rowFormat(); + } + } + + setState(1716); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==RECORDWRITER) { + { + setState(1714); + match(RECORDWRITER); + setState(1715); + ((TransformClauseContext)_localctx).recordWriter = match(STRING); + } + } + + setState(1718); + match(USING); + setState(1719); + ((TransformClauseContext)_localctx).script = match(STRING); + setState(1732); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,209,_ctx) ) { + case 1: + { + setState(1720); + match(AS); + setState(1730); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) { + case 1: + { + setState(1721); + identifierSeq(); + } + break; + case 2: + { + setState(1722); + colTypeList(); + } + break; + case 3: + { + { + setState(1723); + match(T__1); + setState(1726); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) { + case 1: + { + setState(1724); + identifierSeq(); + } + break; + case 2: + { + setState(1725); + colTypeList(); + } + break; + } + setState(1728); + match(T__2); + } + } + break; + } + } + break; + } + setState(1735); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,210,_ctx) ) { + case 1: + { + setState(1734); + ((TransformClauseContext)_localctx).outRowFormat = rowFormat(); + } + break; + } + setState(1739); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,211,_ctx) ) { + case 1: + { + setState(1737); + match(RECORDREADER); + setState(1738); + ((TransformClauseContext)_localctx).recordReader = match(STRING); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SelectClauseContext extends ParserRuleContext { + public HintContext hint; + public List hints = new ArrayList(); + public TerminalNode SELECT() { return getToken(SqlBaseParser.SELECT, 0); } + public NamedExpressionSeqContext namedExpressionSeq() { + return getRuleContext(NamedExpressionSeqContext.class,0); + } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public List hint() { + return getRuleContexts(HintContext.class); + } + public HintContext hint(int i) { + return getRuleContext(HintContext.class,i); + } + public SelectClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_selectClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSelectClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSelectClause(this); + } + } + + public final SelectClauseContext selectClause() throws RecognitionException { + SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_selectClause); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1741); + match(SELECT); + setState(1745); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,212,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1742); + ((SelectClauseContext)_localctx).hint = hint(); + ((SelectClauseContext)_localctx).hints.add(((SelectClauseContext)_localctx).hint); + } + } + } + setState(1747); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,212,_ctx); + } + setState(1749); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,213,_ctx) ) { + case 1: + { + setState(1748); + setQuantifier(); + } + break; + } + setState(1751); + namedExpressionSeq(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SetClauseContext extends ParserRuleContext { + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public AssignmentListContext assignmentList() { + return getRuleContext(AssignmentListContext.class,0); + } + public SetClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_setClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetClause(this); + } + } + + public final SetClauseContext setClause() throws RecognitionException { + SetClauseContext _localctx = new SetClauseContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_setClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1753); + match(SET); + setState(1754); + assignmentList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MatchedClauseContext extends ParserRuleContext { + public BooleanExpressionContext matchedCond; + public TerminalNode WHEN() { return getToken(SqlBaseParser.WHEN, 0); } + public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } + public TerminalNode THEN() { return getToken(SqlBaseParser.THEN, 0); } + public MatchedActionContext matchedAction() { + return getRuleContext(MatchedActionContext.class,0); + } + public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public MatchedClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_matchedClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMatchedClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMatchedClause(this); + } + } + + public final MatchedClauseContext matchedClause() throws RecognitionException { + MatchedClauseContext _localctx = new MatchedClauseContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_matchedClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1756); + match(WHEN); + setState(1757); + match(MATCHED); + setState(1760); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AND) { + { + setState(1758); + match(AND); + setState(1759); + ((MatchedClauseContext)_localctx).matchedCond = booleanExpression(0); + } + } + + setState(1762); + match(THEN); + setState(1763); + matchedAction(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NotMatchedClauseContext extends ParserRuleContext { + public BooleanExpressionContext notMatchedCond; + public TerminalNode WHEN() { return getToken(SqlBaseParser.WHEN, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } + public TerminalNode THEN() { return getToken(SqlBaseParser.THEN, 0); } + public NotMatchedActionContext notMatchedAction() { + return getRuleContext(NotMatchedActionContext.class,0); + } + public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public NotMatchedClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_notMatchedClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNotMatchedClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNotMatchedClause(this); + } + } + + public final NotMatchedClauseContext notMatchedClause() throws RecognitionException { + NotMatchedClauseContext _localctx = new NotMatchedClauseContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_notMatchedClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1765); + match(WHEN); + setState(1766); + match(NOT); + setState(1767); + match(MATCHED); + setState(1770); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AND) { + { + setState(1768); + match(AND); + setState(1769); + ((NotMatchedClauseContext)_localctx).notMatchedCond = booleanExpression(0); + } + } + + setState(1772); + match(THEN); + setState(1773); + notMatchedAction(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MatchedActionContext extends ParserRuleContext { + public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } + public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } + public AssignmentListContext assignmentList() { + return getRuleContext(AssignmentListContext.class,0); + } + public MatchedActionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_matchedAction; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMatchedAction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMatchedAction(this); + } + } + + public final MatchedActionContext matchedAction() throws RecognitionException { + MatchedActionContext _localctx = new MatchedActionContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_matchedAction); + try { + setState(1782); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1775); + match(DELETE); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1776); + match(UPDATE); + setState(1777); + match(SET); + setState(1778); + match(ASTERISK); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1779); + match(UPDATE); + setState(1780); + match(SET); + setState(1781); + assignmentList(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NotMatchedActionContext extends ParserRuleContext { + public MultipartIdentifierListContext columns; + public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } + public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } + public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public MultipartIdentifierListContext multipartIdentifierList() { + return getRuleContext(MultipartIdentifierListContext.class,0); + } + public NotMatchedActionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_notMatchedAction; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNotMatchedAction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNotMatchedAction(this); + } + } + + public final NotMatchedActionContext notMatchedAction() throws RecognitionException { + NotMatchedActionContext _localctx = new NotMatchedActionContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_notMatchedAction); + int _la; + try { + setState(1802); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,218,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1784); + match(INSERT); + setState(1785); + match(ASTERISK); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1786); + match(INSERT); + setState(1787); + match(T__1); + setState(1788); + ((NotMatchedActionContext)_localctx).columns = multipartIdentifierList(); + setState(1789); + match(T__2); + setState(1790); + match(VALUES); + setState(1791); + match(T__1); + setState(1792); + expression(); + setState(1797); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1793); + match(T__3); + setState(1794); + expression(); + } + } + setState(1799); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1800); + 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 AssignmentListContext extends ParserRuleContext { + public List assignment() { + return getRuleContexts(AssignmentContext.class); + } + public AssignmentContext assignment(int i) { + return getRuleContext(AssignmentContext.class,i); + } + public AssignmentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAssignmentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAssignmentList(this); + } + } + + public final AssignmentListContext assignmentList() throws RecognitionException { + AssignmentListContext _localctx = new AssignmentListContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_assignmentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1804); + assignment(); + setState(1809); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1805); + match(T__3); + setState(1806); + assignment(); + } + } + setState(1811); + _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 AssignmentContext extends ParserRuleContext { + public MultipartIdentifierContext key; + public ExpressionContext value; + public TerminalNode EQ() { return getToken(SqlBaseParser.EQ, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public AssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAssignment(this); + } + } + + public final AssignmentContext assignment() throws RecognitionException { + AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(1812); + ((AssignmentContext)_localctx).key = multipartIdentifier(); + setState(1813); + match(EQ); + setState(1814); + ((AssignmentContext)_localctx).value = expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WhereClauseContext extends ParserRuleContext { + public TerminalNode WHERE() { return getToken(SqlBaseParser.WHERE, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public WhereClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whereClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWhereClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWhereClause(this); + } + } + + public final WhereClauseContext whereClause() throws RecognitionException { + WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_whereClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1816); + match(WHERE); + setState(1817); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class HavingClauseContext extends ParserRuleContext { + public TerminalNode HAVING() { return getToken(SqlBaseParser.HAVING, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public HavingClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_havingClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHavingClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHavingClause(this); + } + } + + public final HavingClauseContext havingClause() throws RecognitionException { + HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_havingClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1819); + match(HAVING); + setState(1820); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class HintContext extends ParserRuleContext { + public HintStatementContext hintStatement; + public List hintStatements = new ArrayList(); + public List hintStatement() { + return getRuleContexts(HintStatementContext.class); + } + public HintStatementContext hintStatement(int i) { + return getRuleContext(HintStatementContext.class,i); + } + public HintContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_hint; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHint(this); + } + } + + public final HintContext hint() throws RecognitionException { + HintContext _localctx = new HintContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_hint); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1822); + match(T__5); + setState(1823); + ((HintContext)_localctx).hintStatement = hintStatement(); + ((HintContext)_localctx).hintStatements.add(((HintContext)_localctx).hintStatement); + setState(1830); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,221,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1825); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,220,_ctx) ) { + case 1: + { + setState(1824); + match(T__3); + } + break; + } + setState(1827); + ((HintContext)_localctx).hintStatement = hintStatement(); + ((HintContext)_localctx).hintStatements.add(((HintContext)_localctx).hintStatement); + } + } + } + setState(1832); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,221,_ctx); + } + setState(1833); + match(T__6); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class HintStatementContext extends ParserRuleContext { + public IdentifierContext hintName; + public PrimaryExpressionContext primaryExpression; + public List parameters = new ArrayList(); + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public List primaryExpression() { + return getRuleContexts(PrimaryExpressionContext.class); + } + public PrimaryExpressionContext primaryExpression(int i) { + return getRuleContext(PrimaryExpressionContext.class,i); + } + public HintStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_hintStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHintStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHintStatement(this); + } + } + + public final HintStatementContext hintStatement() throws RecognitionException { + HintStatementContext _localctx = new HintStatementContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_hintStatement); + int _la; + try { + setState(1848); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1835); + ((HintStatementContext)_localctx).hintName = identifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1836); + ((HintStatementContext)_localctx).hintName = identifier(); + setState(1837); + match(T__1); + setState(1838); + ((HintStatementContext)_localctx).primaryExpression = primaryExpression(0); + ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).primaryExpression); + setState(1843); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1839); + match(T__3); + setState(1840); + ((HintStatementContext)_localctx).primaryExpression = primaryExpression(0); + ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).primaryExpression); + } + } + setState(1845); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1846); + 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 FromClauseContext extends ParserRuleContext { + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public List relation() { + return getRuleContexts(RelationContext.class); + } + public RelationContext relation(int i) { + return getRuleContext(RelationContext.class,i); + } + public List lateralView() { + return getRuleContexts(LateralViewContext.class); + } + public LateralViewContext lateralView(int i) { + return getRuleContext(LateralViewContext.class,i); + } + public PivotClauseContext pivotClause() { + return getRuleContext(PivotClauseContext.class,0); + } + public FromClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fromClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromClause(this); + } + } + + public final FromClauseContext fromClause() throws RecognitionException { + FromClauseContext _localctx = new FromClauseContext(_ctx, getState()); + enterRule(_localctx, 118, RULE_fromClause); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1850); + match(FROM); + setState(1851); + relation(); + setState(1856); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,224,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1852); + match(T__3); + setState(1853); + relation(); + } + } + } + setState(1858); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,224,_ctx); + } + setState(1862); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,225,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1859); + lateralView(); + } + } + } + setState(1864); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,225,_ctx); + } + setState(1866); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,226,_ctx) ) { + case 1: + { + setState(1865); + pivotClause(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AggregationClauseContext extends ParserRuleContext { + public ExpressionContext expression; + public List groupingExpressions = new ArrayList(); + public Token kind; + public TerminalNode GROUP() { return getToken(SqlBaseParser.GROUP, 0); } + public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } + public TerminalNode SETS() { return getToken(SqlBaseParser.SETS, 0); } + public List groupingSet() { + return getRuleContexts(GroupingSetContext.class); + } + public GroupingSetContext groupingSet(int i) { + return getRuleContext(GroupingSetContext.class,i); + } + public TerminalNode ROLLUP() { return getToken(SqlBaseParser.ROLLUP, 0); } + public TerminalNode CUBE() { return getToken(SqlBaseParser.CUBE, 0); } + public TerminalNode GROUPING() { return getToken(SqlBaseParser.GROUPING, 0); } + public AggregationClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_aggregationClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAggregationClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAggregationClause(this); + } + } + + public final AggregationClauseContext aggregationClause() throws RecognitionException { + AggregationClauseContext _localctx = new AggregationClauseContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_aggregationClause); + int _la; + try { + int _alt; + setState(1912); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,231,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1868); + match(GROUP); + setState(1869); + match(BY); + setState(1870); + ((AggregationClauseContext)_localctx).expression = expression(); + ((AggregationClauseContext)_localctx).groupingExpressions.add(((AggregationClauseContext)_localctx).expression); + setState(1875); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,227,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1871); + match(T__3); + setState(1872); + ((AggregationClauseContext)_localctx).expression = expression(); + ((AggregationClauseContext)_localctx).groupingExpressions.add(((AggregationClauseContext)_localctx).expression); + } + } + } + setState(1877); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,227,_ctx); + } + setState(1895); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,229,_ctx) ) { + case 1: + { + setState(1878); + match(WITH); + setState(1879); + ((AggregationClauseContext)_localctx).kind = match(ROLLUP); + } + break; + case 2: + { + setState(1880); + match(WITH); + setState(1881); + ((AggregationClauseContext)_localctx).kind = match(CUBE); + } + break; + case 3: + { + setState(1882); + ((AggregationClauseContext)_localctx).kind = match(GROUPING); + setState(1883); + match(SETS); + setState(1884); + match(T__1); + setState(1885); + groupingSet(); + setState(1890); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1886); + match(T__3); + setState(1887); + groupingSet(); + } + } + setState(1892); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1893); + match(T__2); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1897); + match(GROUP); + setState(1898); + match(BY); + setState(1899); + ((AggregationClauseContext)_localctx).kind = match(GROUPING); + setState(1900); + match(SETS); + setState(1901); + match(T__1); + setState(1902); + groupingSet(); + setState(1907); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1903); + match(T__3); + setState(1904); + groupingSet(); + } + } + setState(1909); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1910); + 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 SqlBaseListener ) ((SqlBaseListener)listener).enterGroupingSet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitGroupingSet(this); + } + } + + public final GroupingSetContext groupingSet() throws RecognitionException { + GroupingSetContext _localctx = new GroupingSetContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_groupingSet); + int _la; + try { + setState(1927); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1914); + match(T__1); + setState(1923); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) { + case 1: + { + setState(1915); + expression(); + setState(1920); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1916); + match(T__3); + setState(1917); + expression(); + } + } + setState(1922); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + setState(1925); + match(T__2); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1926); + expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PivotClauseContext extends ParserRuleContext { + public NamedExpressionSeqContext aggregates; + public PivotValueContext pivotValue; + public List pivotValues = new ArrayList(); + public TerminalNode PIVOT() { return getToken(SqlBaseParser.PIVOT, 0); } + public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } + public PivotColumnContext pivotColumn() { + return getRuleContext(PivotColumnContext.class,0); + } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public NamedExpressionSeqContext namedExpressionSeq() { + return getRuleContext(NamedExpressionSeqContext.class,0); + } + public List pivotValue() { + return getRuleContexts(PivotValueContext.class); + } + public PivotValueContext pivotValue(int i) { + return getRuleContext(PivotValueContext.class,i); + } + public PivotClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pivotClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPivotClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPivotClause(this); + } + } + + public final PivotClauseContext pivotClause() throws RecognitionException { + PivotClauseContext _localctx = new PivotClauseContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_pivotClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1929); + match(PIVOT); + setState(1930); + match(T__1); + setState(1931); + ((PivotClauseContext)_localctx).aggregates = namedExpressionSeq(); + setState(1932); + match(FOR); + setState(1933); + pivotColumn(); + setState(1934); + match(IN); + setState(1935); + match(T__1); + setState(1936); + ((PivotClauseContext)_localctx).pivotValue = pivotValue(); + ((PivotClauseContext)_localctx).pivotValues.add(((PivotClauseContext)_localctx).pivotValue); + setState(1941); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1937); + match(T__3); + setState(1938); + ((PivotClauseContext)_localctx).pivotValue = pivotValue(); + ((PivotClauseContext)_localctx).pivotValues.add(((PivotClauseContext)_localctx).pivotValue); + } + } + setState(1943); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1944); + match(T__2); + setState(1945); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PivotColumnContext extends ParserRuleContext { + public IdentifierContext identifier; + public List identifiers = new ArrayList(); + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public PivotColumnContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pivotColumn; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPivotColumn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPivotColumn(this); + } + } + + public final PivotColumnContext pivotColumn() throws RecognitionException { + PivotColumnContext _localctx = new PivotColumnContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_pivotColumn); + int _la; + try { + setState(1959); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,237,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1947); + ((PivotColumnContext)_localctx).identifier = identifier(); + ((PivotColumnContext)_localctx).identifiers.add(((PivotColumnContext)_localctx).identifier); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1948); + match(T__1); + setState(1949); + ((PivotColumnContext)_localctx).identifier = identifier(); + ((PivotColumnContext)_localctx).identifiers.add(((PivotColumnContext)_localctx).identifier); + setState(1954); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1950); + match(T__3); + setState(1951); + ((PivotColumnContext)_localctx).identifier = identifier(); + ((PivotColumnContext)_localctx).identifiers.add(((PivotColumnContext)_localctx).identifier); + } + } + setState(1956); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1957); + 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 PivotValueContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public PivotValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pivotValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPivotValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPivotValue(this); + } + } + + public final PivotValueContext pivotValue() throws RecognitionException { + PivotValueContext _localctx = new PivotValueContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_pivotValue); + try { + enterOuterAlt(_localctx, 1); + { + setState(1961); + expression(); + setState(1966); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) { + case 1: + { + setState(1963); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,238,_ctx) ) { + case 1: + { + setState(1962); + match(AS); + } + break; + } + setState(1965); + identifier(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LateralViewContext extends ParserRuleContext { + public IdentifierContext tblName; + public IdentifierContext identifier; + public List colName = new ArrayList(); + public TerminalNode LATERAL() { return getToken(SqlBaseParser.LATERAL, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 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 TerminalNode OUTER() { return getToken(SqlBaseParser.OUTER, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public LateralViewContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lateralView; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLateralView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLateralView(this); + } + } + + public final LateralViewContext lateralView() throws RecognitionException { + LateralViewContext _localctx = new LateralViewContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_lateralView); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1968); + match(LATERAL); + setState(1969); + match(VIEW); + setState(1971); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,240,_ctx) ) { + case 1: + { + setState(1970); + match(OUTER); + } + break; + } + setState(1973); + qualifiedName(); + setState(1974); + match(T__1); + setState(1983); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,242,_ctx) ) { + case 1: + { + setState(1975); + expression(); + setState(1980); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(1976); + match(T__3); + setState(1977); + expression(); + } + } + setState(1982); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + setState(1985); + match(T__2); + setState(1986); + ((LateralViewContext)_localctx).tblName = identifier(); + setState(1998); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,245,_ctx) ) { + case 1: + { + setState(1988); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,243,_ctx) ) { + case 1: + { + setState(1987); + match(AS); + } + break; + } + setState(1990); + ((LateralViewContext)_localctx).identifier = identifier(); + ((LateralViewContext)_localctx).colName.add(((LateralViewContext)_localctx).identifier); + setState(1995); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,244,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1991); + match(T__3); + setState(1992); + ((LateralViewContext)_localctx).identifier = identifier(); + ((LateralViewContext)_localctx).colName.add(((LateralViewContext)_localctx).identifier); + } + } + } + setState(1997); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,244,_ctx); + } + } + break; + } + } + } + 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(SqlBaseParser.DISTINCT, 0); } + public TerminalNode ALL() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterSetQuantifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetQuantifier(this); + } + } + + public final SetQuantifierContext setQuantifier() throws RecognitionException { + SetQuantifierContext _localctx = new SetQuantifierContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_setQuantifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2000); + _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 RelationContext extends ParserRuleContext { + public RelationPrimaryContext relationPrimary() { + return getRuleContext(RelationPrimaryContext.class,0); + } + public List joinRelation() { + return getRuleContexts(JoinRelationContext.class); + } + public JoinRelationContext joinRelation(int i) { + return getRuleContext(JoinRelationContext.class,i); + } + public RelationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRelation(this); + } + } + + public final RelationContext relation() throws RecognitionException { + RelationContext _localctx = new RelationContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_relation); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2002); + relationPrimary(); + setState(2006); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,246,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2003); + joinRelation(); + } + } + } + setState(2008); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,246,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class JoinRelationContext extends ParserRuleContext { + public RelationPrimaryContext right; + public TerminalNode JOIN() { return getToken(SqlBaseParser.JOIN, 0); } + public RelationPrimaryContext relationPrimary() { + return getRuleContext(RelationPrimaryContext.class,0); + } + public JoinTypeContext joinType() { + return getRuleContext(JoinTypeContext.class,0); + } + public JoinCriteriaContext joinCriteria() { + return getRuleContext(JoinCriteriaContext.class,0); + } + public TerminalNode NATURAL() { return getToken(SqlBaseParser.NATURAL, 0); } + public JoinRelationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_joinRelation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterJoinRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitJoinRelation(this); + } + } + + public final JoinRelationContext joinRelation() throws RecognitionException { + JoinRelationContext _localctx = new JoinRelationContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_joinRelation); + try { + setState(2020); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ANTI: + case CROSS: + case FULL: + case INNER: + case JOIN: + case LEFT: + case RIGHT: + case SEMI: + enterOuterAlt(_localctx, 1); + { + { + setState(2009); + joinType(); + } + setState(2010); + match(JOIN); + setState(2011); + ((JoinRelationContext)_localctx).right = relationPrimary(); + setState(2013); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) { + case 1: + { + setState(2012); + joinCriteria(); + } + break; + } + } + break; + case NATURAL: + enterOuterAlt(_localctx, 2); + { + setState(2015); + match(NATURAL); + setState(2016); + joinType(); + setState(2017); + match(JOIN); + setState(2018); + ((JoinRelationContext)_localctx).right = relationPrimary(); + } + 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 JoinTypeContext extends ParserRuleContext { + public TerminalNode INNER() { return getToken(SqlBaseParser.INNER, 0); } + public TerminalNode CROSS() { return getToken(SqlBaseParser.CROSS, 0); } + public TerminalNode LEFT() { return getToken(SqlBaseParser.LEFT, 0); } + public TerminalNode OUTER() { return getToken(SqlBaseParser.OUTER, 0); } + public TerminalNode SEMI() { return getToken(SqlBaseParser.SEMI, 0); } + public TerminalNode RIGHT() { return getToken(SqlBaseParser.RIGHT, 0); } + public TerminalNode FULL() { return getToken(SqlBaseParser.FULL, 0); } + public TerminalNode ANTI() { return getToken(SqlBaseParser.ANTI, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterJoinType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitJoinType(this); + } + } + + public final JoinTypeContext joinType() throws RecognitionException { + JoinTypeContext _localctx = new JoinTypeContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_joinType); + int _la; + try { + setState(2046); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,255,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2023); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INNER) { + { + setState(2022); + match(INNER); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2025); + match(CROSS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2026); + match(LEFT); + setState(2028); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(2027); + match(OUTER); + } + } + + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2031); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT) { + { + setState(2030); + match(LEFT); + } + } + + setState(2033); + match(SEMI); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2034); + match(RIGHT); + setState(2036); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(2035); + match(OUTER); + } + } + + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2038); + match(FULL); + setState(2040); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(2039); + match(OUTER); + } + } + + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2043); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT) { + { + setState(2042); + match(LEFT); + } + } + + setState(2045); + match(ANTI); + } + break; + } + } + 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(SqlBaseParser.ON, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + 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 SqlBaseListener ) ((SqlBaseListener)listener).enterJoinCriteria(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitJoinCriteria(this); + } + } + + public final JoinCriteriaContext joinCriteria() throws RecognitionException { + JoinCriteriaContext _localctx = new JoinCriteriaContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_joinCriteria); + try { + setState(2052); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ON: + enterOuterAlt(_localctx, 1); + { + setState(2048); + match(ON); + setState(2049); + booleanExpression(0); + } + break; + case USING: + enterOuterAlt(_localctx, 2); + { + setState(2050); + match(USING); + setState(2051); + identifierList(); + } + 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 SampleContext extends ParserRuleContext { + public TerminalNode TABLESAMPLE() { return getToken(SqlBaseParser.TABLESAMPLE, 0); } + public SampleMethodContext sampleMethod() { + return getRuleContext(SampleMethodContext.class,0); + } + public SampleContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sample; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSample(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSample(this); + } + } + + public final SampleContext sample() throws RecognitionException { + SampleContext _localctx = new SampleContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_sample); + try { + enterOuterAlt(_localctx, 1); + { + setState(2054); + match(TABLESAMPLE); + setState(2055); + match(T__1); + setState(2057); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,257,_ctx) ) { + case 1: + { + setState(2056); + sampleMethod(); + } + break; + } + setState(2059); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SampleMethodContext extends ParserRuleContext { + public SampleMethodContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sampleMethod; } + + public SampleMethodContext() { } + public void copyFrom(SampleMethodContext ctx) { + super.copyFrom(ctx); + } + } + public static class SampleByRowsContext extends SampleMethodContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } + public SampleByRowsContext(SampleMethodContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByRows(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByRows(this); + } + } + public static class SampleByPercentileContext extends SampleMethodContext { + public Token negativeSign; + public Token percentage; + public TerminalNode PERCENTLIT() { return getToken(SqlBaseParser.PERCENTLIT, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } + public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public SampleByPercentileContext(SampleMethodContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByPercentile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByPercentile(this); + } + } + public static class SampleByBucketContext extends SampleMethodContext { + public Token sampleType; + public Token numerator; + public Token denominator; + public TerminalNode OUT() { return getToken(SqlBaseParser.OUT, 0); } + public TerminalNode OF() { return getToken(SqlBaseParser.OF, 0); } + public TerminalNode BUCKET() { return getToken(SqlBaseParser.BUCKET, 0); } + public List INTEGER_VALUE() { return getTokens(SqlBaseParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(SqlBaseParser.INTEGER_VALUE, i); + } + public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public SampleByBucketContext(SampleMethodContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByBucket(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByBucket(this); + } + } + public static class SampleByBytesContext extends SampleMethodContext { + public ExpressionContext bytes; + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SampleByBytesContext(SampleMethodContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByBytes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByBytes(this); + } + } + + public final SampleMethodContext sampleMethod() throws RecognitionException { + SampleMethodContext _localctx = new SampleMethodContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_sampleMethod); + int _la; + try { + setState(2085); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,261,_ctx) ) { + case 1: + _localctx = new SampleByPercentileContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2062); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2061); + ((SampleByPercentileContext)_localctx).negativeSign = match(MINUS); + } + } + + setState(2064); + ((SampleByPercentileContext)_localctx).percentage = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==INTEGER_VALUE || _la==DECIMAL_VALUE) ) { + ((SampleByPercentileContext)_localctx).percentage = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2065); + match(PERCENTLIT); + } + break; + case 2: + _localctx = new SampleByRowsContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2066); + expression(); + setState(2067); + match(ROWS); + } + break; + case 3: + _localctx = new SampleByBucketContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2069); + ((SampleByBucketContext)_localctx).sampleType = match(BUCKET); + setState(2070); + ((SampleByBucketContext)_localctx).numerator = match(INTEGER_VALUE); + setState(2071); + match(OUT); + setState(2072); + match(OF); + setState(2073); + ((SampleByBucketContext)_localctx).denominator = match(INTEGER_VALUE); + setState(2082); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(2074); + match(ON); + setState(2080); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,259,_ctx) ) { + case 1: + { + setState(2075); + identifier(); + } + break; + case 2: + { + setState(2076); + qualifiedName(); + setState(2077); + match(T__1); + setState(2078); + match(T__2); + } + break; + } + } + } + + } + break; + case 4: + _localctx = new SampleByBytesContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2084); + ((SampleByBytesContext)_localctx).bytes = expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierListContext extends ParserRuleContext { + public IdentifierSeqContext identifierSeq() { + return getRuleContext(IdentifierSeqContext.class,0); + } + public IdentifierListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierList(this); + } + } + + public final IdentifierListContext identifierList() throws RecognitionException { + IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_identifierList); + try { + enterOuterAlt(_localctx, 1); + { + setState(2087); + match(T__1); + setState(2088); + identifierSeq(); + setState(2089); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierSeqContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext errorCapturingIdentifier; + public List ident = new ArrayList(); + public List errorCapturingIdentifier() { + return getRuleContexts(ErrorCapturingIdentifierContext.class); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { + return getRuleContext(ErrorCapturingIdentifierContext.class,i); + } + public IdentifierSeqContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierSeq; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierSeq(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierSeq(this); + } + } + + public final IdentifierSeqContext identifierSeq() throws RecognitionException { + IdentifierSeqContext _localctx = new IdentifierSeqContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_identifierSeq); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2091); + ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); + setState(2096); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,262,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2092); + match(T__3); + setState(2093); + ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); + } + } + } + setState(2098); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,262,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class OrderedIdentifierListContext extends ParserRuleContext { + public List orderedIdentifier() { + return getRuleContexts(OrderedIdentifierContext.class); + } + public OrderedIdentifierContext orderedIdentifier(int i) { + return getRuleContext(OrderedIdentifierContext.class,i); + } + public OrderedIdentifierListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_orderedIdentifierList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterOrderedIdentifierList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitOrderedIdentifierList(this); + } + } + + public final OrderedIdentifierListContext orderedIdentifierList() throws RecognitionException { + OrderedIdentifierListContext _localctx = new OrderedIdentifierListContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_orderedIdentifierList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2099); + match(T__1); + setState(2100); + orderedIdentifier(); + setState(2105); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2101); + match(T__3); + setState(2102); + orderedIdentifier(); + } + } + setState(2107); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2108); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class OrderedIdentifierContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext ident; + public Token ordering; + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public OrderedIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_orderedIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterOrderedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitOrderedIdentifier(this); + } + } + + public final OrderedIdentifierContext orderedIdentifier() throws RecognitionException { + OrderedIdentifierContext _localctx = new OrderedIdentifierContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_orderedIdentifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2110); + ((OrderedIdentifierContext)_localctx).ident = errorCapturingIdentifier(); + setState(2112); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ASC || _la==DESC) { + { + setState(2111); + ((OrderedIdentifierContext)_localctx).ordering = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ASC || _la==DESC) ) { + ((OrderedIdentifierContext)_localctx).ordering = (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 IdentifierCommentListContext extends ParserRuleContext { + public List identifierComment() { + return getRuleContexts(IdentifierCommentContext.class); + } + public IdentifierCommentContext identifierComment(int i) { + return getRuleContext(IdentifierCommentContext.class,i); + } + public IdentifierCommentListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierCommentList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierCommentList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierCommentList(this); + } + } + + public final IdentifierCommentListContext identifierCommentList() throws RecognitionException { + IdentifierCommentListContext _localctx = new IdentifierCommentListContext(_ctx, getState()); + enterRule(_localctx, 154, RULE_identifierCommentList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2114); + match(T__1); + setState(2115); + identifierComment(); + setState(2120); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2116); + match(T__3); + setState(2117); + identifierComment(); + } + } + setState(2122); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2123); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierCommentContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public IdentifierCommentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierComment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierComment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierComment(this); + } + } + + public final IdentifierCommentContext identifierComment() throws RecognitionException { + IdentifierCommentContext _localctx = new IdentifierCommentContext(_ctx, getState()); + enterRule(_localctx, 156, RULE_identifierComment); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2125); + identifier(); + setState(2127); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(2126); + commentSpec(); + } + } + + } + } + 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 TableValuedFunctionContext extends RelationPrimaryContext { + public FunctionTableContext functionTable() { + return getRuleContext(FunctionTableContext.class,0); + } + public TableValuedFunctionContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableValuedFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableValuedFunction(this); + } + } + public static class InlineTableDefault2Context extends RelationPrimaryContext { + public InlineTableContext inlineTable() { + return getRuleContext(InlineTableContext.class,0); + } + public InlineTableDefault2Context(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInlineTableDefault2(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInlineTableDefault2(this); + } + } + public static class AliasedRelationContext extends RelationPrimaryContext { + public RelationContext relation() { + return getRuleContext(RelationContext.class,0); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public SampleContext sample() { + return getRuleContext(SampleContext.class,0); + } + public AliasedRelationContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAliasedRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAliasedRelation(this); + } + } + public static class AliasedQueryContext extends RelationPrimaryContext { + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public SampleContext sample() { + return getRuleContext(SampleContext.class,0); + } + public AliasedQueryContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAliasedQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAliasedQuery(this); + } + } + public static class TableNameContext extends RelationPrimaryContext { + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public SampleContext sample() { + return getRuleContext(SampleContext.class,0); + } + public TableNameContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableName(this); + } + } + + public final RelationPrimaryContext relationPrimary() throws RecognitionException { + RelationPrimaryContext _localctx = new RelationPrimaryContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_relationPrimary); + try { + setState(2153); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,270,_ctx) ) { + case 1: + _localctx = new TableNameContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2129); + multipartIdentifier(); + setState(2131); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,267,_ctx) ) { + case 1: + { + setState(2130); + sample(); + } + break; + } + setState(2133); + tableAlias(); + } + break; + case 2: + _localctx = new AliasedQueryContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2135); + match(T__1); + setState(2136); + query(); + setState(2137); + match(T__2); + setState(2139); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,268,_ctx) ) { + case 1: + { + setState(2138); + sample(); + } + break; + } + setState(2141); + tableAlias(); + } + break; + case 3: + _localctx = new AliasedRelationContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2143); + match(T__1); + setState(2144); + relation(); + setState(2145); + match(T__2); + setState(2147); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,269,_ctx) ) { + case 1: + { + setState(2146); + sample(); + } + break; + } + setState(2149); + tableAlias(); + } + break; + case 4: + _localctx = new InlineTableDefault2Context(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2151); + inlineTable(); + } + break; + case 5: + _localctx = new TableValuedFunctionContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2152); + functionTable(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InlineTableContext extends ParserRuleContext { + public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public InlineTableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inlineTable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInlineTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInlineTable(this); + } + } + + public final InlineTableContext inlineTable() throws RecognitionException { + InlineTableContext _localctx = new InlineTableContext(_ctx, getState()); + enterRule(_localctx, 160, RULE_inlineTable); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2155); + match(VALUES); + setState(2156); + expression(); + setState(2161); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,271,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2157); + match(T__3); + setState(2158); + expression(); + } + } + } + setState(2163); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,271,_ctx); + } + setState(2164); + tableAlias(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionTableContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext funcName; + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public FunctionTableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionTable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionTable(this); + } + } + + public final FunctionTableContext functionTable() throws RecognitionException { + FunctionTableContext _localctx = new FunctionTableContext(_ctx, getState()); + enterRule(_localctx, 162, RULE_functionTable); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2166); + ((FunctionTableContext)_localctx).funcName = errorCapturingIdentifier(); + setState(2167); + match(T__1); + setState(2176); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,273,_ctx) ) { + case 1: + { + setState(2168); + expression(); + setState(2173); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2169); + match(T__3); + setState(2170); + expression(); + } + } + setState(2175); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + setState(2178); + match(T__2); + setState(2179); + tableAlias(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TableAliasContext extends ParserRuleContext { + public StrictIdentifierContext strictIdentifier() { + return getRuleContext(StrictIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TableAliasContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableAlias; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableAlias(this); + } + } + + public final TableAliasContext tableAlias() throws RecognitionException { + TableAliasContext _localctx = new TableAliasContext(_ctx, getState()); + enterRule(_localctx, 164, RULE_tableAlias); + try { + enterOuterAlt(_localctx, 1); + { + setState(2188); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) { + case 1: + { + setState(2182); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,274,_ctx) ) { + case 1: + { + setState(2181); + match(AS); + } + break; + } + setState(2184); + strictIdentifier(); + setState(2186); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,275,_ctx) ) { + case 1: + { + setState(2185); + identifierList(); + } + break; + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RowFormatContext extends ParserRuleContext { + public RowFormatContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_rowFormat; } + + public RowFormatContext() { } + public void copyFrom(RowFormatContext ctx) { + super.copyFrom(ctx); + } + } + public static class RowFormatSerdeContext extends RowFormatContext { + public Token name; + public TablePropertyListContext props; + public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } + public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } + public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } + public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } + public TablePropertyListContext tablePropertyList() { + return getRuleContext(TablePropertyListContext.class,0); + } + public RowFormatSerdeContext(RowFormatContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRowFormatSerde(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRowFormatSerde(this); + } + } + public static class RowFormatDelimitedContext extends RowFormatContext { + public Token fieldsTerminatedBy; + public Token escapedBy; + public Token collectionItemsTerminatedBy; + public Token keysTerminatedBy; + public Token linesSeparatedBy; + public Token nullDefinedAs; + public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } + public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } + public TerminalNode DELIMITED() { return getToken(SqlBaseParser.DELIMITED, 0); } + public TerminalNode FIELDS() { return getToken(SqlBaseParser.FIELDS, 0); } + public List TERMINATED() { return getTokens(SqlBaseParser.TERMINATED); } + public TerminalNode TERMINATED(int i) { + return getToken(SqlBaseParser.TERMINATED, i); + } + public List BY() { return getTokens(SqlBaseParser.BY); } + public TerminalNode BY(int i) { + return getToken(SqlBaseParser.BY, i); + } + public TerminalNode COLLECTION() { return getToken(SqlBaseParser.COLLECTION, 0); } + public TerminalNode ITEMS() { return getToken(SqlBaseParser.ITEMS, 0); } + public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } + public TerminalNode KEYS() { return getToken(SqlBaseParser.KEYS, 0); } + public TerminalNode LINES() { return getToken(SqlBaseParser.LINES, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public TerminalNode DEFINED() { return getToken(SqlBaseParser.DEFINED, 0); } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public List STRING() { return getTokens(SqlBaseParser.STRING); } + public TerminalNode STRING(int i) { + return getToken(SqlBaseParser.STRING, i); + } + public TerminalNode ESCAPED() { return getToken(SqlBaseParser.ESCAPED, 0); } + public RowFormatDelimitedContext(RowFormatContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRowFormatDelimited(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRowFormatDelimited(this); + } + } + + public final RowFormatContext rowFormat() throws RecognitionException { + RowFormatContext _localctx = new RowFormatContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_rowFormat); + try { + setState(2239); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,284,_ctx) ) { + case 1: + _localctx = new RowFormatSerdeContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2190); + match(ROW); + setState(2191); + match(FORMAT); + setState(2192); + match(SERDE); + setState(2193); + ((RowFormatSerdeContext)_localctx).name = match(STRING); + setState(2197); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,277,_ctx) ) { + case 1: + { + setState(2194); + match(WITH); + setState(2195); + match(SERDEPROPERTIES); + setState(2196); + ((RowFormatSerdeContext)_localctx).props = tablePropertyList(); + } + break; + } + } + break; + case 2: + _localctx = new RowFormatDelimitedContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2199); + match(ROW); + setState(2200); + match(FORMAT); + setState(2201); + match(DELIMITED); + setState(2211); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,279,_ctx) ) { + case 1: + { + setState(2202); + match(FIELDS); + setState(2203); + match(TERMINATED); + setState(2204); + match(BY); + setState(2205); + ((RowFormatDelimitedContext)_localctx).fieldsTerminatedBy = match(STRING); + setState(2209); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,278,_ctx) ) { + case 1: + { + setState(2206); + match(ESCAPED); + setState(2207); + match(BY); + setState(2208); + ((RowFormatDelimitedContext)_localctx).escapedBy = match(STRING); + } + break; + } + } + break; + } + setState(2218); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,280,_ctx) ) { + case 1: + { + setState(2213); + match(COLLECTION); + setState(2214); + match(ITEMS); + setState(2215); + match(TERMINATED); + setState(2216); + match(BY); + setState(2217); + ((RowFormatDelimitedContext)_localctx).collectionItemsTerminatedBy = match(STRING); + } + break; + } + setState(2225); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,281,_ctx) ) { + case 1: + { + setState(2220); + match(MAP); + setState(2221); + match(KEYS); + setState(2222); + match(TERMINATED); + setState(2223); + match(BY); + setState(2224); + ((RowFormatDelimitedContext)_localctx).keysTerminatedBy = match(STRING); + } + break; + } + setState(2231); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,282,_ctx) ) { + case 1: + { + setState(2227); + match(LINES); + setState(2228); + match(TERMINATED); + setState(2229); + match(BY); + setState(2230); + ((RowFormatDelimitedContext)_localctx).linesSeparatedBy = match(STRING); + } + break; + } + setState(2237); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,283,_ctx) ) { + case 1: + { + setState(2233); + match(NULL); + setState(2234); + match(DEFINED); + setState(2235); + match(AS); + setState(2236); + ((RowFormatDelimitedContext)_localctx).nullDefinedAs = match(STRING); + } + break; + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MultipartIdentifierListContext extends ParserRuleContext { + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public MultipartIdentifierListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multipartIdentifierList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultipartIdentifierList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultipartIdentifierList(this); + } + } + + public final MultipartIdentifierListContext multipartIdentifierList() throws RecognitionException { + MultipartIdentifierListContext _localctx = new MultipartIdentifierListContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_multipartIdentifierList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2241); + multipartIdentifier(); + setState(2246); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2242); + match(T__3); + setState(2243); + multipartIdentifier(); + } + } + setState(2248); + _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 MultipartIdentifierContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext errorCapturingIdentifier; + public List parts = new ArrayList(); + public List errorCapturingIdentifier() { + return getRuleContexts(ErrorCapturingIdentifierContext.class); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { + return getRuleContext(ErrorCapturingIdentifierContext.class,i); + } + public MultipartIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multipartIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultipartIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultipartIdentifier(this); + } + } + + public final MultipartIdentifierContext multipartIdentifier() throws RecognitionException { + MultipartIdentifierContext _localctx = new MultipartIdentifierContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_multipartIdentifier); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2249); + ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); + setState(2254); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,286,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2250); + match(T__4); + setState(2251); + ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); + } + } + } + setState(2256); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,286,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TableIdentifierContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext db; + public ErrorCapturingIdentifierContext table; + public List errorCapturingIdentifier() { + return getRuleContexts(ErrorCapturingIdentifierContext.class); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { + return getRuleContext(ErrorCapturingIdentifierContext.class,i); + } + public TableIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableIdentifier(this); + } + } + + public final TableIdentifierContext tableIdentifier() throws RecognitionException { + TableIdentifierContext _localctx = new TableIdentifierContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_tableIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(2260); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,287,_ctx) ) { + case 1: + { + setState(2257); + ((TableIdentifierContext)_localctx).db = errorCapturingIdentifier(); + setState(2258); + match(T__4); + } + break; + } + setState(2262); + ((TableIdentifierContext)_localctx).table = errorCapturingIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionIdentifierContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext db; + public ErrorCapturingIdentifierContext function; + public List errorCapturingIdentifier() { + return getRuleContexts(ErrorCapturingIdentifierContext.class); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { + return getRuleContext(ErrorCapturingIdentifierContext.class,i); + } + public FunctionIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionIdentifier(this); + } + } + + public final FunctionIdentifierContext functionIdentifier() throws RecognitionException { + FunctionIdentifierContext _localctx = new FunctionIdentifierContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_functionIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(2267); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,288,_ctx) ) { + case 1: + { + setState(2264); + ((FunctionIdentifierContext)_localctx).db = errorCapturingIdentifier(); + setState(2265); + match(T__4); + } + break; + } + setState(2269); + ((FunctionIdentifierContext)_localctx).function = errorCapturingIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamedExpressionContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext name; + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public NamedExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namedExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamedExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedExpression(this); + } + } + + public final NamedExpressionContext namedExpression() throws RecognitionException { + NamedExpressionContext _localctx = new NamedExpressionContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_namedExpression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2271); + expression(); + setState(2279); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,291,_ctx) ) { + case 1: + { + setState(2273); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,289,_ctx) ) { + case 1: + { + setState(2272); + match(AS); + } + break; + } + setState(2277); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,290,_ctx) ) { + case 1: + { + setState(2275); + ((NamedExpressionContext)_localctx).name = errorCapturingIdentifier(); + } + break; + case 2: + { + setState(2276); + identifierList(); + } + break; + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamedExpressionSeqContext extends ParserRuleContext { + public List namedExpression() { + return getRuleContexts(NamedExpressionContext.class); + } + public NamedExpressionContext namedExpression(int i) { + return getRuleContext(NamedExpressionContext.class,i); + } + public NamedExpressionSeqContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namedExpressionSeq; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamedExpressionSeq(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedExpressionSeq(this); + } + } + + public final NamedExpressionSeqContext namedExpressionSeq() throws RecognitionException { + NamedExpressionSeqContext _localctx = new NamedExpressionSeqContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_namedExpressionSeq); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2281); + namedExpression(); + setState(2286); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,292,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2282); + match(T__3); + setState(2283); + namedExpression(); + } + } + } + setState(2288); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,292,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TransformListContext extends ParserRuleContext { + public TransformContext transform; + public List transforms = new ArrayList(); + public List transform() { + return getRuleContexts(TransformContext.class); + } + public TransformContext transform(int i) { + return getRuleContext(TransformContext.class,i); + } + public TransformListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_transformList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformList(this); + } + } + + public final TransformListContext transformList() throws RecognitionException { + TransformListContext _localctx = new TransformListContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_transformList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2289); + match(T__1); + setState(2290); + ((TransformListContext)_localctx).transform = transform(); + ((TransformListContext)_localctx).transforms.add(((TransformListContext)_localctx).transform); + setState(2295); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2291); + match(T__3); + setState(2292); + ((TransformListContext)_localctx).transform = transform(); + ((TransformListContext)_localctx).transforms.add(((TransformListContext)_localctx).transform); + } + } + setState(2297); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2298); + match(T__2); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TransformContext extends ParserRuleContext { + public TransformContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_transform; } + + public TransformContext() { } + public void copyFrom(TransformContext ctx) { + super.copyFrom(ctx); + } + } + public static class IdentityTransformContext extends TransformContext { + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public IdentityTransformContext(TransformContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentityTransform(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentityTransform(this); + } + } + public static class ApplyTransformContext extends TransformContext { + public IdentifierContext transformName; + public TransformArgumentContext transformArgument; + public List argument = new ArrayList(); + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public List transformArgument() { + return getRuleContexts(TransformArgumentContext.class); + } + public TransformArgumentContext transformArgument(int i) { + return getRuleContext(TransformArgumentContext.class,i); + } + public ApplyTransformContext(TransformContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterApplyTransform(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitApplyTransform(this); + } + } + + public final TransformContext transform() throws RecognitionException { + TransformContext _localctx = new TransformContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_transform); + int _la; + try { + setState(2313); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) { + case 1: + _localctx = new IdentityTransformContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2300); + qualifiedName(); + } + break; + case 2: + _localctx = new ApplyTransformContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2301); + ((ApplyTransformContext)_localctx).transformName = identifier(); + setState(2302); + match(T__1); + setState(2303); + ((ApplyTransformContext)_localctx).transformArgument = transformArgument(); + ((ApplyTransformContext)_localctx).argument.add(((ApplyTransformContext)_localctx).transformArgument); + setState(2308); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2304); + match(T__3); + setState(2305); + ((ApplyTransformContext)_localctx).transformArgument = transformArgument(); + ((ApplyTransformContext)_localctx).argument.add(((ApplyTransformContext)_localctx).transformArgument); + } + } + setState(2310); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2311); + 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 TransformArgumentContext extends ParserRuleContext { + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public TransformArgumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_transformArgument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformArgument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformArgument(this); + } + } + + public final TransformArgumentContext transformArgument() throws RecognitionException { + TransformArgumentContext _localctx = new TransformArgumentContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_transformArgument); + try { + setState(2317); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,296,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2315); + qualifiedName(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2316); + constant(); + } + 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 SqlBaseListener ) ((SqlBaseListener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExpression(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2319); + 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(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterLogicalNot(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLogicalNot(this); + } + } + public static class PredicatedContext extends BooleanExpressionContext { + 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 SqlBaseListener ) ((SqlBaseListener)listener).enterPredicated(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPredicated(this); + } + } + public static class ExistsContext extends BooleanExpressionContext { + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public ExistsContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExists(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExists(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(SqlBaseParser.AND, 0); } + public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } + public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLogicalBinary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLogicalBinary(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 = 188; + enterRecursionRule(_localctx, 188, RULE_booleanExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2333); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) { + case 1: + { + _localctx = new LogicalNotContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(2322); + match(NOT); + setState(2323); + booleanExpression(5); + } + break; + case 2: + { + _localctx = new ExistsContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2324); + match(EXISTS); + setState(2325); + match(T__1); + setState(2326); + query(); + setState(2327); + match(T__2); + } + break; + case 3: + { + _localctx = new PredicatedContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2329); + valueExpression(0); + setState(2331); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,297,_ctx) ) { + case 1: + { + setState(2330); + predicate(); + } + break; + } + } + break; + } + _ctx.stop = _input.LT(-1); + setState(2343); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,300,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2341); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,299,_ctx) ) { + case 1: + { + _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); + ((LogicalBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(2335); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2336); + ((LogicalBinaryContext)_localctx).operator = match(AND); + setState(2337); + ((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(2338); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2339); + ((LogicalBinaryContext)_localctx).operator = match(OR); + setState(2340); + ((LogicalBinaryContext)_localctx).right = booleanExpression(2); + } + break; + } + } + } + setState(2345); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,300,_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 Token kind; + public ValueExpressionContext lower; + public ValueExpressionContext upper; + public ValueExpressionContext pattern; + public Token quantifier; + public Token escapeChar; + public ValueExpressionContext right; + public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } + public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public TerminalNode ANY() { return getToken(SqlBaseParser.ANY, 0); } + public TerminalNode SOME() { return getToken(SqlBaseParser.SOME, 0); } + public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } + public TerminalNode ESCAPE() { return getToken(SqlBaseParser.ESCAPE, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(SqlBaseParser.FALSE, 0); } + public TerminalNode UNKNOWN() { return getToken(SqlBaseParser.UNKNOWN, 0); } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public TerminalNode DISTINCT() { return getToken(SqlBaseParser.DISTINCT, 0); } + public PredicateContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_predicate; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPredicate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPredicate(this); + } + } + + public final PredicateContext predicate() throws RecognitionException { + PredicateContext _localctx = new PredicateContext(_ctx, getState()); + enterRule(_localctx, 190, RULE_predicate); + int _la; + try { + setState(2428); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,314,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2347); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2346); + match(NOT); + } + } + + setState(2349); + ((PredicateContext)_localctx).kind = match(BETWEEN); + setState(2350); + ((PredicateContext)_localctx).lower = valueExpression(0); + setState(2351); + match(AND); + setState(2352); + ((PredicateContext)_localctx).upper = valueExpression(0); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2355); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2354); + match(NOT); + } + } + + setState(2357); + ((PredicateContext)_localctx).kind = match(IN); + setState(2358); + match(T__1); + setState(2359); + expression(); + setState(2364); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2360); + match(T__3); + setState(2361); + expression(); + } + } + setState(2366); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2367); + match(T__2); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2370); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2369); + match(NOT); + } + } + + setState(2372); + ((PredicateContext)_localctx).kind = match(IN); + setState(2373); + match(T__1); + setState(2374); + query(); + setState(2375); + match(T__2); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2378); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2377); + match(NOT); + } + } + + setState(2380); + ((PredicateContext)_localctx).kind = match(RLIKE); + setState(2381); + ((PredicateContext)_localctx).pattern = valueExpression(0); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2383); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2382); + match(NOT); + } + } + + setState(2385); + ((PredicateContext)_localctx).kind = match(LIKE); + setState(2386); + ((PredicateContext)_localctx).quantifier = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ALL || _la==ANY || _la==SOME) ) { + ((PredicateContext)_localctx).quantifier = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2400); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,308,_ctx) ) { + case 1: + { + setState(2387); + match(T__1); + setState(2388); + match(T__2); + } + break; + case 2: + { + setState(2389); + match(T__1); + setState(2390); + expression(); + setState(2395); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2391); + match(T__3); + setState(2392); + expression(); + } + } + setState(2397); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2398); + match(T__2); + } + break; + } + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2403); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2402); + match(NOT); + } + } + + setState(2405); + ((PredicateContext)_localctx).kind = match(LIKE); + setState(2406); + ((PredicateContext)_localctx).pattern = valueExpression(0); + setState(2409); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) { + case 1: + { + setState(2407); + match(ESCAPE); + setState(2408); + ((PredicateContext)_localctx).escapeChar = match(STRING); + } + break; + } + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2411); + match(IS); + setState(2413); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2412); + match(NOT); + } + } + + setState(2415); + ((PredicateContext)_localctx).kind = match(NULL); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(2416); + match(IS); + setState(2418); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2417); + match(NOT); + } + } + + setState(2420); + ((PredicateContext)_localctx).kind = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FALSE || _la==TRUE || _la==UNKNOWN) ) { + ((PredicateContext)_localctx).kind = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(2421); + match(IS); + setState(2423); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2422); + match(NOT); + } + } + + setState(2425); + ((PredicateContext)_localctx).kind = match(DISTINCT); + setState(2426); + match(FROM); + setState(2427); + ((PredicateContext)_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 SqlBaseListener ) ((SqlBaseListener)listener).enterValueExpressionDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitValueExpressionDefault(this); + } + } + public static class ComparisonContext extends ValueExpressionContext { + public ValueExpressionContext left; + public ValueExpressionContext right; + public ComparisonOperatorContext comparisonOperator() { + return getRuleContext(ComparisonOperatorContext.class,0); + } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public ComparisonContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComparison(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComparison(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(SqlBaseParser.ASTERISK, 0); } + public TerminalNode SLASH() { return getToken(SqlBaseParser.SLASH, 0); } + public TerminalNode PERCENT() { return getToken(SqlBaseParser.PERCENT, 0); } + public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } + public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public TerminalNode CONCAT_PIPE() { return getToken(SqlBaseParser.CONCAT_PIPE, 0); } + public TerminalNode AMPERSAND() { return getToken(SqlBaseParser.AMPERSAND, 0); } + public TerminalNode HAT() { return getToken(SqlBaseParser.HAT, 0); } + public TerminalNode PIPE() { return getToken(SqlBaseParser.PIPE, 0); } + public ArithmeticBinaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterArithmeticBinary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitArithmeticBinary(this); + } + } + public static class ArithmeticUnaryContext extends ValueExpressionContext { + public Token operator; + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } + public TerminalNode TILDE() { return getToken(SqlBaseParser.TILDE, 0); } + public ArithmeticUnaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterArithmeticUnary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitArithmeticUnary(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 = 192; + enterRecursionRule(_localctx, 192, RULE_valueExpression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2434); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,315,_ctx) ) { + case 1: + { + _localctx = new ValueExpressionDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(2431); + primaryExpression(0); + } + break; + case 2: + { + _localctx = new ArithmeticUnaryContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2432); + ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 272)) & ~0x3f) == 0 && ((1L << (_la - 272)) & ((1L << (PLUS - 272)) | (1L << (MINUS - 272)) | (1L << (TILDE - 272)))) != 0)) ) { + ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2433); + valueExpression(7); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(2457); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,317,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2455); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,316,_ctx) ) { + case 1: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(2436); + if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); + setState(2437); + ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 274)) & ~0x3f) == 0 && ((1L << (_la - 274)) & ((1L << (ASTERISK - 274)) | (1L << (SLASH - 274)) | (1L << (PERCENT - 274)) | (1L << (DIV - 274)))) != 0)) ) { + ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2438); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(7); + } + break; + case 2: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(2439); + if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(2440); + ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 272)) & ~0x3f) == 0 && ((1L << (_la - 272)) & ((1L << (PLUS - 272)) | (1L << (MINUS - 272)) | (1L << (CONCAT_PIPE - 272)))) != 0)) ) { + ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2441); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(6); + } + break; + case 3: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(2442); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(2443); + ((ArithmeticBinaryContext)_localctx).operator = match(AMPERSAND); + setState(2444); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(5); + } + break; + case 4: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(2445); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(2446); + ((ArithmeticBinaryContext)_localctx).operator = match(HAT); + setState(2447); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(4); + } + break; + case 5: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(2448); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(2449); + ((ArithmeticBinaryContext)_localctx).operator = match(PIPE); + setState(2450); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(3); + } + break; + case 6: + { + _localctx = new ComparisonContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ComparisonContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(2451); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(2452); + comparisonOperator(); + setState(2453); + ((ComparisonContext)_localctx).right = valueExpression(2); + } + break; + } + } + } + setState(2459); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,317,_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 StructContext extends PrimaryExpressionContext { + public NamedExpressionContext namedExpression; + public List argument = new ArrayList(); + public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } + public List namedExpression() { + return getRuleContexts(NamedExpressionContext.class); + } + public NamedExpressionContext namedExpression(int i) { + return getRuleContext(NamedExpressionContext.class,i); + } + public StructContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStruct(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStruct(this); + } + } + 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 SqlBaseListener ) ((SqlBaseListener)listener).enterDereference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDereference(this); + } + } + public static class SimpleCaseContext extends PrimaryExpressionContext { + public ExpressionContext value; + public ExpressionContext elseExpression; + public TerminalNode CASE() { return getToken(SqlBaseParser.CASE, 0); } + public TerminalNode END() { return getToken(SqlBaseParser.END, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List whenClause() { + return getRuleContexts(WhenClauseContext.class); + } + public WhenClauseContext whenClause(int i) { + return getRuleContext(WhenClauseContext.class,i); + } + public TerminalNode ELSE() { return getToken(SqlBaseParser.ELSE, 0); } + public SimpleCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSimpleCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSimpleCase(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 SqlBaseListener ) ((SqlBaseListener)listener).enterColumnReference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColumnReference(this); + } + } + public static class RowConstructorContext extends PrimaryExpressionContext { + public List namedExpression() { + return getRuleContexts(NamedExpressionContext.class); + } + public NamedExpressionContext namedExpression(int i) { + return getRuleContext(NamedExpressionContext.class,i); + } + public RowConstructorContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRowConstructor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRowConstructor(this); + } + } + public static class LastContext extends PrimaryExpressionContext { + public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } + public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } + public LastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLast(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLast(this); + } + } + public static class StarContext extends PrimaryExpressionContext { + public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public StarContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStar(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStar(this); + } + } + public static class OverlayContext extends PrimaryExpressionContext { + public ValueExpressionContext input; + public ValueExpressionContext replace; + public ValueExpressionContext position; + public ValueExpressionContext length; + public TerminalNode OVERLAY() { return getToken(SqlBaseParser.OVERLAY, 0); } + public TerminalNode PLACING() { return getToken(SqlBaseParser.PLACING, 0); } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } + public OverlayContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterOverlay(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitOverlay(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 SqlBaseListener ) ((SqlBaseListener)listener).enterSubscript(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubscript(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 SqlBaseListener ) ((SqlBaseListener)listener).enterSubqueryExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubqueryExpression(this); + } + } + public static class SubstringContext extends PrimaryExpressionContext { + public ValueExpressionContext str; + public ValueExpressionContext pos; + public ValueExpressionContext len; + public TerminalNode SUBSTR() { return getToken(SqlBaseParser.SUBSTR, 0); } + public TerminalNode SUBSTRING() { return getToken(SqlBaseParser.SUBSTRING, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } + public SubstringContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSubstring(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubstring(this); + } + } + public static class CurrentDatetimeContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode CURRENT_DATE() { return getToken(SqlBaseParser.CURRENT_DATE, 0); } + public TerminalNode CURRENT_TIMESTAMP() { return getToken(SqlBaseParser.CURRENT_TIMESTAMP, 0); } + public CurrentDatetimeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCurrentDatetime(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCurrentDatetime(this); + } + } + public static class CastContext extends PrimaryExpressionContext { + public TerminalNode CAST() { return getToken(SqlBaseParser.CAST, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public CastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCast(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCast(this); + } + } + public static class ConstantDefaultContext extends PrimaryExpressionContext { + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterConstantDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitConstantDefault(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 SqlBaseListener ) ((SqlBaseListener)listener).enterLambda(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLambda(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 SqlBaseListener ) ((SqlBaseListener)listener).enterParenthesizedExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitParenthesizedExpression(this); + } + } + public static class ExtractContext extends PrimaryExpressionContext { + public IdentifierContext field; + public ValueExpressionContext source; + public TerminalNode EXTRACT() { return getToken(SqlBaseParser.EXTRACT, 0); } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public ExtractContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExtract(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExtract(this); + } + } + public static class TrimContext extends PrimaryExpressionContext { + public Token trimOption; + public ValueExpressionContext trimStr; + public ValueExpressionContext srcStr; + public TerminalNode TRIM() { return getToken(SqlBaseParser.TRIM, 0); } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode BOTH() { return getToken(SqlBaseParser.BOTH, 0); } + public TerminalNode LEADING() { return getToken(SqlBaseParser.LEADING, 0); } + public TerminalNode TRAILING() { return getToken(SqlBaseParser.TRAILING, 0); } + public TrimContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTrim(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTrim(this); + } + } + public static class FunctionCallContext extends PrimaryExpressionContext { + public ExpressionContext expression; + public List argument = new ArrayList(); + public BooleanExpressionContext where; + public FunctionNameContext functionName() { + return getRuleContext(FunctionNameContext.class,0); + } + public TerminalNode FILTER() { return getToken(SqlBaseParser.FILTER, 0); } + public TerminalNode WHERE() { return getToken(SqlBaseParser.WHERE, 0); } + public TerminalNode OVER() { return getToken(SqlBaseParser.OVER, 0); } + public WindowSpecContext windowSpec() { + return getRuleContext(WindowSpecContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public FunctionCallContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionCall(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionCall(this); + } + } + public static class SearchedCaseContext extends PrimaryExpressionContext { + public ExpressionContext elseExpression; + public TerminalNode CASE() { return getToken(SqlBaseParser.CASE, 0); } + public TerminalNode END() { return getToken(SqlBaseParser.END, 0); } + public List whenClause() { + return getRuleContexts(WhenClauseContext.class); + } + public WhenClauseContext whenClause(int i) { + return getRuleContext(WhenClauseContext.class,i); + } + public TerminalNode ELSE() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterSearchedCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSearchedCase(this); + } + } + public static class PositionContext extends PrimaryExpressionContext { + public ValueExpressionContext substr; + public ValueExpressionContext str; + public TerminalNode POSITION() { return getToken(SqlBaseParser.POSITION, 0); } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public PositionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPosition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPosition(this); + } + } + public static class FirstContext extends PrimaryExpressionContext { + public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } + public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } + public FirstContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFirst(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFirst(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 = 194; + enterRecursionRule(_localctx, 194, RULE_primaryExpression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2644); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,337,_ctx) ) { + case 1: + { + _localctx = new CurrentDatetimeContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(2461); + ((CurrentDatetimeContext)_localctx).name = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==CURRENT_DATE || _la==CURRENT_TIMESTAMP) ) { + ((CurrentDatetimeContext)_localctx).name = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 2: + { + _localctx = new SearchedCaseContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2462); + match(CASE); + setState(2464); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2463); + whenClause(); + } + } + setState(2466); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==WHEN ); + setState(2470); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(2468); + match(ELSE); + setState(2469); + ((SearchedCaseContext)_localctx).elseExpression = expression(); + } + } + + setState(2472); + match(END); + } + break; + case 3: + { + _localctx = new SimpleCaseContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2474); + match(CASE); + setState(2475); + ((SimpleCaseContext)_localctx).value = expression(); + setState(2477); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2476); + whenClause(); + } + } + setState(2479); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==WHEN ); + setState(2483); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(2481); + match(ELSE); + setState(2482); + ((SimpleCaseContext)_localctx).elseExpression = expression(); + } + } + + setState(2485); + match(END); + } + break; + case 4: + { + _localctx = new CastContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2487); + match(CAST); + setState(2488); + match(T__1); + setState(2489); + expression(); + setState(2490); + match(AS); + setState(2491); + dataType(); + setState(2492); + match(T__2); + } + break; + case 5: + { + _localctx = new StructContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2494); + match(STRUCT); + setState(2495); + match(T__1); + setState(2504); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,323,_ctx) ) { + case 1: + { + setState(2496); + ((StructContext)_localctx).namedExpression = namedExpression(); + ((StructContext)_localctx).argument.add(((StructContext)_localctx).namedExpression); + setState(2501); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2497); + match(T__3); + setState(2498); + ((StructContext)_localctx).namedExpression = namedExpression(); + ((StructContext)_localctx).argument.add(((StructContext)_localctx).namedExpression); + } + } + setState(2503); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + setState(2506); + match(T__2); + } + break; + case 6: + { + _localctx = new FirstContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2507); + match(FIRST); + setState(2508); + match(T__1); + setState(2509); + expression(); + setState(2512); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IGNORE) { + { + setState(2510); + match(IGNORE); + setState(2511); + match(NULLS); + } + } + + setState(2514); + match(T__2); + } + break; + case 7: + { + _localctx = new LastContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2516); + match(LAST); + setState(2517); + match(T__1); + setState(2518); + expression(); + setState(2521); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IGNORE) { + { + setState(2519); + match(IGNORE); + setState(2520); + match(NULLS); + } + } + + setState(2523); + match(T__2); + } + break; + case 8: + { + _localctx = new PositionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2525); + match(POSITION); + setState(2526); + match(T__1); + setState(2527); + ((PositionContext)_localctx).substr = valueExpression(0); + setState(2528); + match(IN); + setState(2529); + ((PositionContext)_localctx).str = valueExpression(0); + setState(2530); + match(T__2); + } + break; + case 9: + { + _localctx = new ConstantDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2532); + constant(); + } + break; + case 10: + { + _localctx = new StarContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2533); + match(ASTERISK); + } + break; + case 11: + { + _localctx = new StarContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2534); + qualifiedName(); + setState(2535); + match(T__4); + setState(2536); + match(ASTERISK); + } + break; + case 12: + { + _localctx = new RowConstructorContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2538); + match(T__1); + setState(2539); + namedExpression(); + setState(2542); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2540); + match(T__3); + setState(2541); + namedExpression(); + } + } + setState(2544); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==T__3 ); + setState(2546); + match(T__2); + } + break; + case 13: + { + _localctx = new SubqueryExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2548); + match(T__1); + setState(2549); + query(); + setState(2550); + match(T__2); + } + break; + case 14: + { + _localctx = new FunctionCallContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2552); + functionName(); + setState(2553); + match(T__1); + setState(2565); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,329,_ctx) ) { + case 1: + { + setState(2555); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) { + case 1: + { + setState(2554); + setQuantifier(); + } + break; + } + setState(2557); + ((FunctionCallContext)_localctx).expression = expression(); + ((FunctionCallContext)_localctx).argument.add(((FunctionCallContext)_localctx).expression); + setState(2562); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2558); + match(T__3); + setState(2559); + ((FunctionCallContext)_localctx).expression = expression(); + ((FunctionCallContext)_localctx).argument.add(((FunctionCallContext)_localctx).expression); + } + } + setState(2564); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + setState(2567); + match(T__2); + setState(2574); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,330,_ctx) ) { + case 1: + { + setState(2568); + match(FILTER); + setState(2569); + match(T__1); + setState(2570); + match(WHERE); + setState(2571); + ((FunctionCallContext)_localctx).where = booleanExpression(0); + setState(2572); + match(T__2); + } + break; + } + setState(2578); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,331,_ctx) ) { + case 1: + { + setState(2576); + match(OVER); + setState(2577); + windowSpec(); + } + break; + } + } + break; + case 15: + { + _localctx = new LambdaContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2580); + identifier(); + setState(2581); + match(T__7); + setState(2582); + expression(); + } + break; + case 16: + { + _localctx = new LambdaContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2584); + match(T__1); + setState(2585); + identifier(); + setState(2588); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2586); + match(T__3); + setState(2587); + identifier(); + } + } + setState(2590); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==T__3 ); + setState(2592); + match(T__2); + setState(2593); + match(T__7); + setState(2594); + expression(); + } + break; + case 17: + { + _localctx = new ColumnReferenceContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2596); + identifier(); + } + break; + case 18: + { + _localctx = new ParenthesizedExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2597); + match(T__1); + setState(2598); + expression(); + setState(2599); + match(T__2); + } + break; + case 19: + { + _localctx = new ExtractContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2601); + match(EXTRACT); + setState(2602); + match(T__1); + setState(2603); + ((ExtractContext)_localctx).field = identifier(); + setState(2604); + match(FROM); + setState(2605); + ((ExtractContext)_localctx).source = valueExpression(0); + setState(2606); + match(T__2); + } + break; + case 20: + { + _localctx = new SubstringContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2608); + _la = _input.LA(1); + if ( !(_la==SUBSTR || _la==SUBSTRING) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2609); + match(T__1); + setState(2610); + ((SubstringContext)_localctx).str = valueExpression(0); + setState(2611); + _la = _input.LA(1); + if ( !(_la==T__3 || _la==FROM) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2612); + ((SubstringContext)_localctx).pos = valueExpression(0); + setState(2615); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__3 || _la==FOR) { + { + setState(2613); + _la = _input.LA(1); + if ( !(_la==T__3 || _la==FOR) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2614); + ((SubstringContext)_localctx).len = valueExpression(0); + } + } + + setState(2617); + match(T__2); + } + break; + case 21: + { + _localctx = new TrimContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2619); + match(TRIM); + setState(2620); + match(T__1); + setState(2622); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,334,_ctx) ) { + case 1: + { + setState(2621); + ((TrimContext)_localctx).trimOption = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==BOTH || _la==LEADING || _la==TRAILING) ) { + ((TrimContext)_localctx).trimOption = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + setState(2625); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,335,_ctx) ) { + case 1: + { + setState(2624); + ((TrimContext)_localctx).trimStr = valueExpression(0); + } + break; + } + setState(2627); + match(FROM); + setState(2628); + ((TrimContext)_localctx).srcStr = valueExpression(0); + setState(2629); + match(T__2); + } + break; + case 22: + { + _localctx = new OverlayContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(2631); + match(OVERLAY); + setState(2632); + match(T__1); + setState(2633); + ((OverlayContext)_localctx).input = valueExpression(0); + setState(2634); + match(PLACING); + setState(2635); + ((OverlayContext)_localctx).replace = valueExpression(0); + setState(2636); + match(FROM); + setState(2637); + ((OverlayContext)_localctx).position = valueExpression(0); + setState(2640); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(2638); + match(FOR); + setState(2639); + ((OverlayContext)_localctx).length = valueExpression(0); + } + } + + setState(2642); + match(T__2); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(2656); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,339,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(2654); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,338,_ctx) ) { + case 1: + { + _localctx = new SubscriptContext(new PrimaryExpressionContext(_parentctx, _parentState)); + ((SubscriptContext)_localctx).value = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(2646); + if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); + setState(2647); + match(T__8); + setState(2648); + ((SubscriptContext)_localctx).index = valueExpression(0); + setState(2649); + match(T__9); + } + break; + case 2: + { + _localctx = new DereferenceContext(new PrimaryExpressionContext(_parentctx, _parentState)); + ((DereferenceContext)_localctx).base = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(2651); + if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); + setState(2652); + match(T__4); + setState(2653); + ((DereferenceContext)_localctx).fieldName = identifier(); + } + break; + } + } + } + setState(2658); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,339,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class ConstantContext extends ParserRuleContext { + public ConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constant; } + + public ConstantContext() { } + public void copyFrom(ConstantContext ctx) { + super.copyFrom(ctx); + } + } + public static class NullLiteralContext extends ConstantContext { + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNullLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNullLiteral(this); + } + } + public static class StringLiteralContext extends ConstantContext { + public List STRING() { return getTokens(SqlBaseParser.STRING); } + public TerminalNode STRING(int i) { + return getToken(SqlBaseParser.STRING, i); + } + public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStringLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStringLiteral(this); + } + } + public static class TypeConstructorContext extends ConstantContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public TypeConstructorContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTypeConstructor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTypeConstructor(this); + } + } + public static class IntervalLiteralContext extends ConstantContext { + public IntervalContext interval() { + return getRuleContext(IntervalContext.class,0); + } + public IntervalLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntervalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntervalLiteral(this); + } + } + public static class NumericLiteralContext extends ConstantContext { + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public NumericLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNumericLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNumericLiteral(this); + } + } + public static class BooleanLiteralContext extends ConstantContext { + public BooleanValueContext booleanValue() { + return getRuleContext(BooleanValueContext.class,0); + } + public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBooleanLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBooleanLiteral(this); + } + } + + public final ConstantContext constant() throws RecognitionException { + ConstantContext _localctx = new ConstantContext(_ctx, getState()); + enterRule(_localctx, 196, RULE_constant); + try { + int _alt; + setState(2671); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,341,_ctx) ) { + case 1: + _localctx = new NullLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2659); + match(NULL); + } + break; + case 2: + _localctx = new IntervalLiteralContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2660); + interval(); + } + break; + case 3: + _localctx = new TypeConstructorContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2661); + identifier(); + setState(2662); + match(STRING); + } + break; + case 4: + _localctx = new NumericLiteralContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2664); + number(); + } + break; + case 5: + _localctx = new BooleanLiteralContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2665); + booleanValue(); + } + break; + case 6: + _localctx = new StringLiteralContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(2667); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2666); + match(STRING); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2669); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,340,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + 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(SqlBaseParser.EQ, 0); } + public TerminalNode NEQ() { return getToken(SqlBaseParser.NEQ, 0); } + public TerminalNode NEQJ() { return getToken(SqlBaseParser.NEQJ, 0); } + public TerminalNode LT() { return getToken(SqlBaseParser.LT, 0); } + public TerminalNode LTE() { return getToken(SqlBaseParser.LTE, 0); } + public TerminalNode GT() { return getToken(SqlBaseParser.GT, 0); } + public TerminalNode GTE() { return getToken(SqlBaseParser.GTE, 0); } + public TerminalNode NSEQ() { return getToken(SqlBaseParser.NSEQ, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterComparisonOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComparisonOperator(this); + } + } + + public final ComparisonOperatorContext comparisonOperator() throws RecognitionException { + ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState()); + enterRule(_localctx, 198, RULE_comparisonOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2673); + _la = _input.LA(1); + if ( !(((((_la - 264)) & ~0x3f) == 0 && ((1L << (_la - 264)) & ((1L << (EQ - 264)) | (1L << (NSEQ - 264)) | (1L << (NEQ - 264)) | (1L << (NEQJ - 264)) | (1L << (LT - 264)) | (1L << (LTE - 264)) | (1L << (GT - 264)) | (1L << (GTE - 264)))) != 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 ArithmeticOperatorContext extends ParserRuleContext { + public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } + public TerminalNode SLASH() { return getToken(SqlBaseParser.SLASH, 0); } + public TerminalNode PERCENT() { return getToken(SqlBaseParser.PERCENT, 0); } + public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } + public TerminalNode TILDE() { return getToken(SqlBaseParser.TILDE, 0); } + public TerminalNode AMPERSAND() { return getToken(SqlBaseParser.AMPERSAND, 0); } + public TerminalNode PIPE() { return getToken(SqlBaseParser.PIPE, 0); } + public TerminalNode CONCAT_PIPE() { return getToken(SqlBaseParser.CONCAT_PIPE, 0); } + public TerminalNode HAT() { return getToken(SqlBaseParser.HAT, 0); } + public ArithmeticOperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arithmeticOperator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterArithmeticOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitArithmeticOperator(this); + } + } + + public final ArithmeticOperatorContext arithmeticOperator() throws RecognitionException { + ArithmeticOperatorContext _localctx = new ArithmeticOperatorContext(_ctx, getState()); + enterRule(_localctx, 200, RULE_arithmeticOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2675); + _la = _input.LA(1); + if ( !(((((_la - 272)) & ~0x3f) == 0 && ((1L << (_la - 272)) & ((1L << (PLUS - 272)) | (1L << (MINUS - 272)) | (1L << (ASTERISK - 272)) | (1L << (SLASH - 272)) | (1L << (PERCENT - 272)) | (1L << (DIV - 272)) | (1L << (TILDE - 272)) | (1L << (AMPERSAND - 272)) | (1L << (PIPE - 272)) | (1L << (CONCAT_PIPE - 272)) | (1L << (HAT - 272)))) != 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 PredicateOperatorContext extends ParserRuleContext { + public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } + public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public PredicateOperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_predicateOperator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPredicateOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPredicateOperator(this); + } + } + + public final PredicateOperatorContext predicateOperator() throws RecognitionException { + PredicateOperatorContext _localctx = new PredicateOperatorContext(_ctx, getState()); + enterRule(_localctx, 202, RULE_predicateOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2677); + _la = _input.LA(1); + if ( !(_la==AND || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (IN - 113)) | (1L << (NOT - 113)) | (1L << (OR - 113)))) != 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 BooleanValueContext extends ParserRuleContext { + public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterBooleanValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBooleanValue(this); + } + } + + public final BooleanValueContext booleanValue() throws RecognitionException { + BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState()); + enterRule(_localctx, 204, RULE_booleanValue); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2679); + _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 TerminalNode INTERVAL() { return getToken(SqlBaseParser.INTERVAL, 0); } + public ErrorCapturingMultiUnitsIntervalContext errorCapturingMultiUnitsInterval() { + return getRuleContext(ErrorCapturingMultiUnitsIntervalContext.class,0); + } + public ErrorCapturingUnitToUnitIntervalContext errorCapturingUnitToUnitInterval() { + return getRuleContext(ErrorCapturingUnitToUnitIntervalContext.class,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 SqlBaseListener ) ((SqlBaseListener)listener).enterInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInterval(this); + } + } + + public final IntervalContext interval() throws RecognitionException { + IntervalContext _localctx = new IntervalContext(_ctx, getState()); + enterRule(_localctx, 206, RULE_interval); + try { + enterOuterAlt(_localctx, 1); + { + setState(2681); + match(INTERVAL); + setState(2684); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,342,_ctx) ) { + case 1: + { + setState(2682); + errorCapturingMultiUnitsInterval(); + } + break; + case 2: + { + setState(2683); + errorCapturingUnitToUnitInterval(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ErrorCapturingMultiUnitsIntervalContext extends ParserRuleContext { + public MultiUnitsIntervalContext multiUnitsInterval() { + return getRuleContext(MultiUnitsIntervalContext.class,0); + } + public UnitToUnitIntervalContext unitToUnitInterval() { + return getRuleContext(UnitToUnitIntervalContext.class,0); + } + public ErrorCapturingMultiUnitsIntervalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_errorCapturingMultiUnitsInterval; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorCapturingMultiUnitsInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorCapturingMultiUnitsInterval(this); + } + } + + public final ErrorCapturingMultiUnitsIntervalContext errorCapturingMultiUnitsInterval() throws RecognitionException { + ErrorCapturingMultiUnitsIntervalContext _localctx = new ErrorCapturingMultiUnitsIntervalContext(_ctx, getState()); + enterRule(_localctx, 208, RULE_errorCapturingMultiUnitsInterval); + try { + enterOuterAlt(_localctx, 1); + { + setState(2686); + multiUnitsInterval(); + setState(2688); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,343,_ctx) ) { + case 1: + { + setState(2687); + unitToUnitInterval(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MultiUnitsIntervalContext extends ParserRuleContext { + public List intervalValue() { + return getRuleContexts(IntervalValueContext.class); + } + public IntervalValueContext intervalValue(int i) { + return getRuleContext(IntervalValueContext.class,i); + } + public List intervalUnit() { + return getRuleContexts(IntervalUnitContext.class); + } + public IntervalUnitContext intervalUnit(int i) { + return getRuleContext(IntervalUnitContext.class,i); + } + public MultiUnitsIntervalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multiUnitsInterval; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultiUnitsInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultiUnitsInterval(this); + } + } + + public final MultiUnitsIntervalContext multiUnitsInterval() throws RecognitionException { + MultiUnitsIntervalContext _localctx = new MultiUnitsIntervalContext(_ctx, getState()); + enterRule(_localctx, 210, RULE_multiUnitsInterval); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2693); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2690); + intervalValue(); + setState(2691); + intervalUnit(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2695); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,344,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ErrorCapturingUnitToUnitIntervalContext extends ParserRuleContext { + public UnitToUnitIntervalContext body; + public MultiUnitsIntervalContext error1; + public UnitToUnitIntervalContext error2; + public List unitToUnitInterval() { + return getRuleContexts(UnitToUnitIntervalContext.class); + } + public UnitToUnitIntervalContext unitToUnitInterval(int i) { + return getRuleContext(UnitToUnitIntervalContext.class,i); + } + public MultiUnitsIntervalContext multiUnitsInterval() { + return getRuleContext(MultiUnitsIntervalContext.class,0); + } + public ErrorCapturingUnitToUnitIntervalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_errorCapturingUnitToUnitInterval; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorCapturingUnitToUnitInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorCapturingUnitToUnitInterval(this); + } + } + + public final ErrorCapturingUnitToUnitIntervalContext errorCapturingUnitToUnitInterval() throws RecognitionException { + ErrorCapturingUnitToUnitIntervalContext _localctx = new ErrorCapturingUnitToUnitIntervalContext(_ctx, getState()); + enterRule(_localctx, 212, RULE_errorCapturingUnitToUnitInterval); + try { + enterOuterAlt(_localctx, 1); + { + setState(2697); + ((ErrorCapturingUnitToUnitIntervalContext)_localctx).body = unitToUnitInterval(); + setState(2700); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,345,_ctx) ) { + case 1: + { + setState(2698); + ((ErrorCapturingUnitToUnitIntervalContext)_localctx).error1 = multiUnitsInterval(); + } + break; + case 2: + { + setState(2699); + ((ErrorCapturingUnitToUnitIntervalContext)_localctx).error2 = unitToUnitInterval(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnitToUnitIntervalContext extends ParserRuleContext { + public IntervalValueContext value; + public IntervalUnitContext from_; + public IntervalUnitContext to; + public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } + public IntervalValueContext intervalValue() { + return getRuleContext(IntervalValueContext.class,0); + } + public List intervalUnit() { + return getRuleContexts(IntervalUnitContext.class); + } + public IntervalUnitContext intervalUnit(int i) { + return getRuleContext(IntervalUnitContext.class,i); + } + public UnitToUnitIntervalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unitToUnitInterval; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnitToUnitInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnitToUnitInterval(this); + } + } + + public final UnitToUnitIntervalContext unitToUnitInterval() throws RecognitionException { + UnitToUnitIntervalContext _localctx = new UnitToUnitIntervalContext(_ctx, getState()); + enterRule(_localctx, 214, RULE_unitToUnitInterval); + try { + enterOuterAlt(_localctx, 1); + { + setState(2702); + ((UnitToUnitIntervalContext)_localctx).value = intervalValue(); + setState(2703); + ((UnitToUnitIntervalContext)_localctx).from_ = intervalUnit(); + setState(2704); + match(TO); + setState(2705); + ((UnitToUnitIntervalContext)_localctx).to = intervalUnit(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IntervalValueContext extends ParserRuleContext { + public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } + public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } + public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } + public IntervalValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_intervalValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntervalValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntervalValue(this); + } + } + + public final IntervalValueContext intervalValue() throws RecognitionException { + IntervalValueContext _localctx = new IntervalValueContext(_ctx, getState()); + enterRule(_localctx, 216, RULE_intervalValue); + int _la; + try { + setState(2712); + _errHandler.sync(this); + switch (_input.LA(1)) { + case PLUS: + case MINUS: + case INTEGER_VALUE: + case DECIMAL_VALUE: + enterOuterAlt(_localctx, 1); + { + setState(2708); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PLUS || _la==MINUS) { + { + setState(2707); + _la = _input.LA(1); + if ( !(_la==PLUS || _la==MINUS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(2710); + _la = _input.LA(1); + if ( !(_la==INTEGER_VALUE || _la==DECIMAL_VALUE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case STRING: + enterOuterAlt(_localctx, 2); + { + setState(2711); + match(STRING); + } + 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 IntervalUnitContext extends ParserRuleContext { + public TerminalNode DAY() { return getToken(SqlBaseParser.DAY, 0); } + public TerminalNode HOUR() { return getToken(SqlBaseParser.HOUR, 0); } + public TerminalNode MINUTE() { return getToken(SqlBaseParser.MINUTE, 0); } + public TerminalNode MONTH() { return getToken(SqlBaseParser.MONTH, 0); } + public TerminalNode SECOND() { return getToken(SqlBaseParser.SECOND, 0); } + public TerminalNode YEAR() { return getToken(SqlBaseParser.YEAR, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public IntervalUnitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_intervalUnit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntervalUnit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntervalUnit(this); + } + } + + public final IntervalUnitContext intervalUnit() throws RecognitionException { + IntervalUnitContext _localctx = new IntervalUnitContext(_ctx, getState()); + enterRule(_localctx, 218, RULE_intervalUnit); + try { + setState(2721); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,348,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2714); + match(DAY); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2715); + match(HOUR); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2716); + match(MINUTE); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2717); + match(MONTH); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2718); + match(SECOND); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2719); + match(YEAR); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2720); + identifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ColPositionContext extends ParserRuleContext { + public Token position; + public ErrorCapturingIdentifierContext afterCol; + public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } + public TerminalNode AFTER() { return getToken(SqlBaseParser.AFTER, 0); } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public ColPositionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_colPosition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterColPosition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColPosition(this); + } + } + + public final ColPositionContext colPosition() throws RecognitionException { + ColPositionContext _localctx = new ColPositionContext(_ctx, getState()); + enterRule(_localctx, 220, RULE_colPosition); + try { + setState(2726); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FIRST: + enterOuterAlt(_localctx, 1); + { + setState(2723); + ((ColPositionContext)_localctx).position = match(FIRST); + } + break; + case AFTER: + enterOuterAlt(_localctx, 2); + { + setState(2724); + ((ColPositionContext)_localctx).position = match(AFTER); + setState(2725); + ((ColPositionContext)_localctx).afterCol = errorCapturingIdentifier(); + } + 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 DataTypeContext extends ParserRuleContext { + public DataTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dataType; } + + public DataTypeContext() { } + public void copyFrom(DataTypeContext ctx) { + super.copyFrom(ctx); + } + } + public static class ComplexDataTypeContext extends DataTypeContext { + public Token complex; + public List dataType() { + return getRuleContexts(DataTypeContext.class); + } + public DataTypeContext dataType(int i) { + return getRuleContext(DataTypeContext.class,i); + } + public TerminalNode ARRAY() { return getToken(SqlBaseParser.ARRAY, 0); } + public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } + public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } + public TerminalNode NEQ() { return getToken(SqlBaseParser.NEQ, 0); } + public ComplexColTypeListContext complexColTypeList() { + return getRuleContext(ComplexColTypeListContext.class,0); + } + public ComplexDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComplexDataType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComplexDataType(this); + } + } + public static class PrimitiveDataTypeContext extends DataTypeContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public List INTEGER_VALUE() { return getTokens(SqlBaseParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(SqlBaseParser.INTEGER_VALUE, i); + } + public PrimitiveDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPrimitiveDataType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPrimitiveDataType(this); + } + } + + public final DataTypeContext dataType() throws RecognitionException { + DataTypeContext _localctx = new DataTypeContext(_ctx, getState()); + enterRule(_localctx, 222, RULE_dataType); + int _la; + try { + setState(2762); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,354,_ctx) ) { + case 1: + _localctx = new ComplexDataTypeContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2728); + ((ComplexDataTypeContext)_localctx).complex = match(ARRAY); + setState(2729); + match(LT); + setState(2730); + dataType(); + setState(2731); + match(GT); + } + break; + case 2: + _localctx = new ComplexDataTypeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2733); + ((ComplexDataTypeContext)_localctx).complex = match(MAP); + setState(2734); + match(LT); + setState(2735); + dataType(); + setState(2736); + match(T__3); + setState(2737); + dataType(); + setState(2738); + match(GT); + } + break; + case 3: + _localctx = new ComplexDataTypeContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2740); + ((ComplexDataTypeContext)_localctx).complex = match(STRUCT); + setState(2747); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LT: + { + setState(2741); + match(LT); + setState(2743); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,350,_ctx) ) { + case 1: + { + setState(2742); + complexColTypeList(); + } + break; + } + setState(2745); + match(GT); + } + break; + case NEQ: + { + setState(2746); + match(NEQ); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 4: + _localctx = new PrimitiveDataTypeContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2749); + identifier(); + setState(2760); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,353,_ctx) ) { + case 1: + { + setState(2750); + match(T__1); + setState(2751); + match(INTEGER_VALUE); + setState(2756); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2752); + match(T__3); + setState(2753); + match(INTEGER_VALUE); + } + } + setState(2758); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2759); + match(T__2); + } + break; + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QualifiedColTypeWithPositionListContext extends ParserRuleContext { + public List qualifiedColTypeWithPosition() { + return getRuleContexts(QualifiedColTypeWithPositionContext.class); + } + public QualifiedColTypeWithPositionContext qualifiedColTypeWithPosition(int i) { + return getRuleContext(QualifiedColTypeWithPositionContext.class,i); + } + public QualifiedColTypeWithPositionListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedColTypeWithPositionList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedColTypeWithPositionList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedColTypeWithPositionList(this); + } + } + + public final QualifiedColTypeWithPositionListContext qualifiedColTypeWithPositionList() throws RecognitionException { + QualifiedColTypeWithPositionListContext _localctx = new QualifiedColTypeWithPositionListContext(_ctx, getState()); + enterRule(_localctx, 224, RULE_qualifiedColTypeWithPositionList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2764); + qualifiedColTypeWithPosition(); + setState(2769); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2765); + match(T__3); + setState(2766); + qualifiedColTypeWithPosition(); + } + } + setState(2771); + _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 QualifiedColTypeWithPositionContext extends ParserRuleContext { + public MultipartIdentifierContext name; + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public ColPositionContext colPosition() { + return getRuleContext(ColPositionContext.class,0); + } + public QualifiedColTypeWithPositionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedColTypeWithPosition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedColTypeWithPosition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedColTypeWithPosition(this); + } + } + + public final QualifiedColTypeWithPositionContext qualifiedColTypeWithPosition() throws RecognitionException { + QualifiedColTypeWithPositionContext _localctx = new QualifiedColTypeWithPositionContext(_ctx, getState()); + enterRule(_localctx, 226, RULE_qualifiedColTypeWithPosition); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2772); + ((QualifiedColTypeWithPositionContext)_localctx).name = multipartIdentifier(); + setState(2773); + dataType(); + setState(2776); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2774); + match(NOT); + setState(2775); + match(NULL); + } + } + + setState(2779); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(2778); + commentSpec(); + } + } + + setState(2782); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AFTER || _la==FIRST) { + { + setState(2781); + colPosition(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ColTypeListContext extends ParserRuleContext { + public List colType() { + return getRuleContexts(ColTypeContext.class); + } + public ColTypeContext colType(int i) { + return getRuleContext(ColTypeContext.class,i); + } + public ColTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_colTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterColTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColTypeList(this); + } + } + + public final ColTypeListContext colTypeList() throws RecognitionException { + ColTypeListContext _localctx = new ColTypeListContext(_ctx, getState()); + enterRule(_localctx, 228, RULE_colTypeList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2784); + colType(); + setState(2789); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,359,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2785); + match(T__3); + setState(2786); + colType(); + } + } + } + setState(2791); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,359,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ColTypeContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext colName; + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public ColTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_colType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterColType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColType(this); + } + } + + public final ColTypeContext colType() throws RecognitionException { + ColTypeContext _localctx = new ColTypeContext(_ctx, getState()); + enterRule(_localctx, 230, RULE_colType); + try { + enterOuterAlt(_localctx, 1); + { + setState(2792); + ((ColTypeContext)_localctx).colName = errorCapturingIdentifier(); + setState(2793); + dataType(); + setState(2796); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,360,_ctx) ) { + case 1: + { + setState(2794); + match(NOT); + setState(2795); + match(NULL); + } + break; + } + setState(2799); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,361,_ctx) ) { + case 1: + { + setState(2798); + commentSpec(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ComplexColTypeListContext extends ParserRuleContext { + public List complexColType() { + return getRuleContexts(ComplexColTypeContext.class); + } + public ComplexColTypeContext complexColType(int i) { + return getRuleContext(ComplexColTypeContext.class,i); + } + public ComplexColTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_complexColTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComplexColTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComplexColTypeList(this); + } + } + + public final ComplexColTypeListContext complexColTypeList() throws RecognitionException { + ComplexColTypeListContext _localctx = new ComplexColTypeListContext(_ctx, getState()); + enterRule(_localctx, 232, RULE_complexColTypeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2801); + complexColType(); + setState(2806); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2802); + match(T__3); + setState(2803); + complexColType(); + } + } + setState(2808); + _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 ComplexColTypeContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public ComplexColTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_complexColType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComplexColType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComplexColType(this); + } + } + + public final ComplexColTypeContext complexColType() throws RecognitionException { + ComplexColTypeContext _localctx = new ComplexColTypeContext(_ctx, getState()); + enterRule(_localctx, 234, RULE_complexColType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2809); + identifier(); + setState(2810); + match(T__10); + setState(2811); + dataType(); + setState(2814); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(2812); + match(NOT); + setState(2813); + match(NULL); + } + } + + setState(2817); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(2816); + commentSpec(); + } + } + + } + } + 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(SqlBaseParser.WHEN, 0); } + public TerminalNode THEN() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterWhenClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWhenClause(this); + } + } + + public final WhenClauseContext whenClause() throws RecognitionException { + WhenClauseContext _localctx = new WhenClauseContext(_ctx, getState()); + enterRule(_localctx, 236, RULE_whenClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(2819); + match(WHEN); + setState(2820); + ((WhenClauseContext)_localctx).condition = expression(); + setState(2821); + match(THEN); + setState(2822); + ((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 WindowClauseContext extends ParserRuleContext { + public TerminalNode WINDOW() { return getToken(SqlBaseParser.WINDOW, 0); } + public List namedWindow() { + return getRuleContexts(NamedWindowContext.class); + } + public NamedWindowContext namedWindow(int i) { + return getRuleContext(NamedWindowContext.class,i); + } + public WindowClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_windowClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWindowClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowClause(this); + } + } + + public final WindowClauseContext windowClause() throws RecognitionException { + WindowClauseContext _localctx = new WindowClauseContext(_ctx, getState()); + enterRule(_localctx, 238, RULE_windowClause); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2824); + match(WINDOW); + setState(2825); + namedWindow(); + setState(2830); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,365,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2826); + match(T__3); + setState(2827); + namedWindow(); + } + } + } + setState(2832); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,365,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NamedWindowContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext name; + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public WindowSpecContext windowSpec() { + return getRuleContext(WindowSpecContext.class,0); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public NamedWindowContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namedWindow; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamedWindow(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedWindow(this); + } + } + + public final NamedWindowContext namedWindow() throws RecognitionException { + NamedWindowContext _localctx = new NamedWindowContext(_ctx, getState()); + enterRule(_localctx, 240, RULE_namedWindow); + try { + enterOuterAlt(_localctx, 1); + { + setState(2833); + ((NamedWindowContext)_localctx).name = errorCapturingIdentifier(); + setState(2834); + match(AS); + setState(2835); + windowSpec(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WindowSpecContext extends ParserRuleContext { + public WindowSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_windowSpec; } + + public WindowSpecContext() { } + public void copyFrom(WindowSpecContext ctx) { + super.copyFrom(ctx); + } + } + public static class WindowRefContext extends WindowSpecContext { + public ErrorCapturingIdentifierContext name; + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public WindowRefContext(WindowSpecContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWindowRef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowRef(this); + } + } + public static class WindowDefContext extends WindowSpecContext { + public ExpressionContext expression; + public List partition = new ArrayList(); + public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } + public List BY() { return getTokens(SqlBaseParser.BY); } + public TerminalNode BY(int i) { + return getToken(SqlBaseParser.BY, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public WindowFrameContext windowFrame() { + return getRuleContext(WindowFrameContext.class,0); + } + public List sortItem() { + return getRuleContexts(SortItemContext.class); + } + public SortItemContext sortItem(int i) { + return getRuleContext(SortItemContext.class,i); + } + public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } + public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } + public TerminalNode ORDER() { return getToken(SqlBaseParser.ORDER, 0); } + public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } + public WindowDefContext(WindowSpecContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWindowDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowDef(this); + } + } + + public final WindowSpecContext windowSpec() throws RecognitionException { + WindowSpecContext _localctx = new WindowSpecContext(_ctx, getState()); + enterRule(_localctx, 242, RULE_windowSpec); + int _la; + try { + setState(2883); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,373,_ctx) ) { + case 1: + _localctx = new WindowRefContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2837); + ((WindowRefContext)_localctx).name = errorCapturingIdentifier(); + } + break; + case 2: + _localctx = new WindowRefContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2838); + match(T__1); + setState(2839); + ((WindowRefContext)_localctx).name = errorCapturingIdentifier(); + setState(2840); + match(T__2); + } + break; + case 3: + _localctx = new WindowDefContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2842); + match(T__1); + setState(2877); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLUSTER: + { + setState(2843); + match(CLUSTER); + setState(2844); + match(BY); + setState(2845); + ((WindowDefContext)_localctx).expression = expression(); + ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); + setState(2850); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2846); + match(T__3); + setState(2847); + ((WindowDefContext)_localctx).expression = expression(); + ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); + } + } + setState(2852); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case T__2: + case DISTRIBUTE: + case ORDER: + case PARTITION: + case RANGE: + case ROWS: + case SORT: + { + setState(2863); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DISTRIBUTE || _la==PARTITION) { + { + setState(2853); + _la = _input.LA(1); + if ( !(_la==DISTRIBUTE || _la==PARTITION) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2854); + match(BY); + setState(2855); + ((WindowDefContext)_localctx).expression = expression(); + ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); + setState(2860); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2856); + match(T__3); + setState(2857); + ((WindowDefContext)_localctx).expression = expression(); + ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); + } + } + setState(2862); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(2875); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER || _la==SORT) { + { + setState(2865); + _la = _input.LA(1); + if ( !(_la==ORDER || _la==SORT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2866); + match(BY); + setState(2867); + sortItem(); + setState(2872); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2868); + match(T__3); + setState(2869); + sortItem(); + } + } + setState(2874); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + setState(2880); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==RANGE || _la==ROWS) { + { + setState(2879); + windowFrame(); + } + } + + setState(2882); + 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 WindowFrameContext extends ParserRuleContext { + public Token frameType; + public FrameBoundContext start; + public FrameBoundContext end; + public TerminalNode RANGE() { return getToken(SqlBaseParser.RANGE, 0); } + public List frameBound() { + return getRuleContexts(FrameBoundContext.class); + } + public FrameBoundContext frameBound(int i) { + return getRuleContext(FrameBoundContext.class,i); + } + public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } + public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } + public TerminalNode AND() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterWindowFrame(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowFrame(this); + } + } + + public final WindowFrameContext windowFrame() throws RecognitionException { + WindowFrameContext _localctx = new WindowFrameContext(_ctx, getState()); + enterRule(_localctx, 244, RULE_windowFrame); + try { + setState(2901); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,374,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2885); + ((WindowFrameContext)_localctx).frameType = match(RANGE); + setState(2886); + ((WindowFrameContext)_localctx).start = frameBound(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2887); + ((WindowFrameContext)_localctx).frameType = match(ROWS); + setState(2888); + ((WindowFrameContext)_localctx).start = frameBound(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2889); + ((WindowFrameContext)_localctx).frameType = match(RANGE); + setState(2890); + match(BETWEEN); + setState(2891); + ((WindowFrameContext)_localctx).start = frameBound(); + setState(2892); + match(AND); + setState(2893); + ((WindowFrameContext)_localctx).end = frameBound(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2895); + ((WindowFrameContext)_localctx).frameType = match(ROWS); + setState(2896); + match(BETWEEN); + setState(2897); + ((WindowFrameContext)_localctx).start = frameBound(); + setState(2898); + match(AND); + setState(2899); + ((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 Token boundType; + public TerminalNode UNBOUNDED() { return getToken(SqlBaseParser.UNBOUNDED, 0); } + public TerminalNode PRECEDING() { return getToken(SqlBaseParser.PRECEDING, 0); } + public TerminalNode FOLLOWING() { return getToken(SqlBaseParser.FOLLOWING, 0); } + public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } + public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public FrameBoundContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_frameBound; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFrameBound(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFrameBound(this); + } + } + + public final FrameBoundContext frameBound() throws RecognitionException { + FrameBoundContext _localctx = new FrameBoundContext(_ctx, getState()); + enterRule(_localctx, 246, RULE_frameBound); + int _la; + try { + setState(2910); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,375,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2903); + match(UNBOUNDED); + setState(2904); + ((FrameBoundContext)_localctx).boundType = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FOLLOWING || _la==PRECEDING) ) { + ((FrameBoundContext)_localctx).boundType = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2905); + ((FrameBoundContext)_localctx).boundType = match(CURRENT); + setState(2906); + match(ROW); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2907); + expression(); + setState(2908); + ((FrameBoundContext)_localctx).boundType = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FOLLOWING || _la==PRECEDING) ) { + ((FrameBoundContext)_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 QualifiedNameListContext extends ParserRuleContext { + public List qualifiedName() { + return getRuleContexts(QualifiedNameContext.class); + } + public QualifiedNameContext qualifiedName(int i) { + return getRuleContext(QualifiedNameContext.class,i); + } + public QualifiedNameListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedNameList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedNameList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedNameList(this); + } + } + + public final QualifiedNameListContext qualifiedNameList() throws RecognitionException { + QualifiedNameListContext _localctx = new QualifiedNameListContext(_ctx, getState()); + enterRule(_localctx, 248, RULE_qualifiedNameList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2912); + qualifiedName(); + setState(2917); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__3) { + { + { + setState(2913); + match(T__3); + setState(2914); + qualifiedName(); + } + } + setState(2919); + _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 FunctionNameContext extends ParserRuleContext { + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode FILTER() { return getToken(SqlBaseParser.FILTER, 0); } + public TerminalNode LEFT() { return getToken(SqlBaseParser.LEFT, 0); } + public TerminalNode RIGHT() { return getToken(SqlBaseParser.RIGHT, 0); } + public FunctionNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionName(this); + } + } + + public final FunctionNameContext functionName() throws RecognitionException { + FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState()); + enterRule(_localctx, 250, RULE_functionName); + try { + setState(2924); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,377,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2920); + qualifiedName(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2921); + match(FILTER); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2922); + match(LEFT); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2923); + match(RIGHT); + } + break; + } + } + 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 SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedName(this); + } + } + + public final QualifiedNameContext qualifiedName() throws RecognitionException { + QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState()); + enterRule(_localctx, 252, RULE_qualifiedName); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2926); + identifier(); + setState(2931); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,378,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2927); + match(T__4); + setState(2928); + identifier(); + } + } + } + setState(2933); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,378,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ErrorCapturingIdentifierContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() { + return getRuleContext(ErrorCapturingIdentifierExtraContext.class,0); + } + public ErrorCapturingIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_errorCapturingIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorCapturingIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorCapturingIdentifier(this); + } + } + + public final ErrorCapturingIdentifierContext errorCapturingIdentifier() throws RecognitionException { + ErrorCapturingIdentifierContext _localctx = new ErrorCapturingIdentifierContext(_ctx, getState()); + enterRule(_localctx, 254, RULE_errorCapturingIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(2934); + identifier(); + setState(2935); + errorCapturingIdentifierExtra(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ErrorCapturingIdentifierExtraContext extends ParserRuleContext { + public ErrorCapturingIdentifierExtraContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_errorCapturingIdentifierExtra; } + + public ErrorCapturingIdentifierExtraContext() { } + public void copyFrom(ErrorCapturingIdentifierExtraContext ctx) { + super.copyFrom(ctx); + } + } + public static class ErrorIdentContext extends ErrorCapturingIdentifierExtraContext { + public List MINUS() { return getTokens(SqlBaseParser.MINUS); } + public TerminalNode MINUS(int i) { + return getToken(SqlBaseParser.MINUS, i); + } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public ErrorIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorIdent(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorIdent(this); + } + } + public static class RealIdentContext extends ErrorCapturingIdentifierExtraContext { + public RealIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRealIdent(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRealIdent(this); + } + } + + public final ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() throws RecognitionException { + ErrorCapturingIdentifierExtraContext _localctx = new ErrorCapturingIdentifierExtraContext(_ctx, getState()); + enterRule(_localctx, 256, RULE_errorCapturingIdentifierExtra); + try { + int _alt; + setState(2944); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,380,_ctx) ) { + case 1: + _localctx = new ErrorIdentContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2939); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2937); + match(MINUS); + setState(2938); + identifier(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2941); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,379,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + case 2: + _localctx = new RealIdentContext(_localctx); + enterOuterAlt(_localctx, 2); + { + } + break; + } + } + 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 StrictIdentifierContext strictIdentifier() { + return getRuleContext(StrictIdentifierContext.class,0); + } + public StrictNonReservedContext strictNonReserved() { + return getRuleContext(StrictNonReservedContext.class,0); + } + public IdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifier(this); + } + } + + public final IdentifierContext identifier() throws RecognitionException { + IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); + enterRule(_localctx, 258, RULE_identifier); + try { + setState(2949); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,381,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2946); + strictIdentifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2947); + if (!(not self.SQL_standard_keyword_behavior)) throw new FailedPredicateException(this, "not self.SQL_standard_keyword_behavior"); + setState(2948); + strictNonReserved(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StrictIdentifierContext extends ParserRuleContext { + public StrictIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_strictIdentifier; } + + public StrictIdentifierContext() { } + public void copyFrom(StrictIdentifierContext ctx) { + super.copyFrom(ctx); + } + } + public static class QuotedIdentifierAlternativeContext extends StrictIdentifierContext { + public QuotedIdentifierContext quotedIdentifier() { + return getRuleContext(QuotedIdentifierContext.class,0); + } + public QuotedIdentifierAlternativeContext(StrictIdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQuotedIdentifierAlternative(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQuotedIdentifierAlternative(this); + } + } + public static class UnquotedIdentifierContext extends StrictIdentifierContext { + public TerminalNode IDENTIFIER() { return getToken(SqlBaseParser.IDENTIFIER, 0); } + public AnsiNonReservedContext ansiNonReserved() { + return getRuleContext(AnsiNonReservedContext.class,0); + } + public NonReservedContext nonReserved() { + return getRuleContext(NonReservedContext.class,0); + } + public UnquotedIdentifierContext(StrictIdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnquotedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnquotedIdentifier(this); + } + } + + public final StrictIdentifierContext strictIdentifier() throws RecognitionException { + StrictIdentifierContext _localctx = new StrictIdentifierContext(_ctx, getState()); + enterRule(_localctx, 260, RULE_strictIdentifier); + try { + setState(2957); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,382,_ctx) ) { + case 1: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2951); + match(IDENTIFIER); + } + break; + case 2: + _localctx = new QuotedIdentifierAlternativeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2952); + quotedIdentifier(); + } + break; + case 3: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2953); + if (!(self.SQL_standard_keyword_behavior)) throw new FailedPredicateException(this, "self.SQL_standard_keyword_behavior"); + setState(2954); + ansiNonReserved(); + } + break; + case 4: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2955); + if (!(not self.SQL_standard_keyword_behavior)) throw new FailedPredicateException(this, "not self.SQL_standard_keyword_behavior"); + setState(2956); + nonReserved(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QuotedIdentifierContext extends ParserRuleContext { + public TerminalNode BACKQUOTED_IDENTIFIER() { return getToken(SqlBaseParser.BACKQUOTED_IDENTIFIER, 0); } + public QuotedIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_quotedIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQuotedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQuotedIdentifier(this); + } + } + + public final QuotedIdentifierContext quotedIdentifier() throws RecognitionException { + QuotedIdentifierContext _localctx = new QuotedIdentifierContext(_ctx, getState()); + enterRule(_localctx, 262, RULE_quotedIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(2959); + match(BACKQUOTED_IDENTIFIER); + } + } + 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(SqlBaseParser.DECIMAL_VALUE, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public DecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDecimalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDecimalLiteral(this); + } + } + public static class BigIntLiteralContext extends NumberContext { + public TerminalNode BIGINT_LITERAL() { return getToken(SqlBaseParser.BIGINT_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public BigIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBigIntLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBigIntLiteral(this); + } + } + public static class TinyIntLiteralContext extends NumberContext { + public TerminalNode TINYINT_LITERAL() { return getToken(SqlBaseParser.TINYINT_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public TinyIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTinyIntLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTinyIntLiteral(this); + } + } + public static class LegacyDecimalLiteralContext extends NumberContext { + public TerminalNode EXPONENT_VALUE() { return getToken(SqlBaseParser.EXPONENT_VALUE, 0); } + public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public LegacyDecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLegacyDecimalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLegacyDecimalLiteral(this); + } + } + public static class BigDecimalLiteralContext extends NumberContext { + public TerminalNode BIGDECIMAL_LITERAL() { return getToken(SqlBaseParser.BIGDECIMAL_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public BigDecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBigDecimalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBigDecimalLiteral(this); + } + } + public static class ExponentLiteralContext extends NumberContext { + public TerminalNode EXPONENT_VALUE() { return getToken(SqlBaseParser.EXPONENT_VALUE, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public ExponentLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExponentLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExponentLiteral(this); + } + } + public static class DoubleLiteralContext extends NumberContext { + public TerminalNode DOUBLE_LITERAL() { return getToken(SqlBaseParser.DOUBLE_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public DoubleLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDoubleLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDoubleLiteral(this); + } + } + public static class IntegerLiteralContext extends NumberContext { + public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public IntegerLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntegerLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntegerLiteral(this); + } + } + public static class SmallIntLiteralContext extends NumberContext { + public TerminalNode SMALLINT_LITERAL() { return getToken(SqlBaseParser.SMALLINT_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } + public SmallIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSmallIntLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSmallIntLiteral(this); + } + } + + public final NumberContext number() throws RecognitionException { + NumberContext _localctx = new NumberContext(_ctx, getState()); + enterRule(_localctx, 264, RULE_number); + int _la; + try { + setState(3000); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,392,_ctx) ) { + case 1: + _localctx = new ExponentLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2961); + if (!(not self.legacy_exponent_literal_as_decimal_enabled)) throw new FailedPredicateException(this, "not self.legacy_exponent_literal_as_decimal_enabled"); + setState(2963); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2962); + match(MINUS); + } + } + + setState(2965); + match(EXPONENT_VALUE); + } + break; + case 2: + _localctx = new DecimalLiteralContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2966); + if (!(not self.legacy_exponent_literal_as_decimal_enabled)) throw new FailedPredicateException(this, "not self.legacy_exponent_literal_as_decimal_enabled"); + setState(2968); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2967); + match(MINUS); + } + } + + setState(2970); + match(DECIMAL_VALUE); + } + break; + case 3: + _localctx = new LegacyDecimalLiteralContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2971); + if (!(self.legacy_exponent_literal_as_decimal_enabled)) throw new FailedPredicateException(this, "self.legacy_exponent_literal_as_decimal_enabled"); + setState(2973); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2972); + match(MINUS); + } + } + + setState(2975); + _la = _input.LA(1); + if ( !(_la==EXPONENT_VALUE || _la==DECIMAL_VALUE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 4: + _localctx = new IntegerLiteralContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2977); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2976); + match(MINUS); + } + } + + setState(2979); + match(INTEGER_VALUE); + } + break; + case 5: + _localctx = new BigIntLiteralContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2981); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2980); + match(MINUS); + } + } + + setState(2983); + match(BIGINT_LITERAL); + } + break; + case 6: + _localctx = new SmallIntLiteralContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(2985); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2984); + match(MINUS); + } + } + + setState(2987); + match(SMALLINT_LITERAL); + } + break; + case 7: + _localctx = new TinyIntLiteralContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(2989); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2988); + match(MINUS); + } + } + + setState(2991); + match(TINYINT_LITERAL); + } + break; + case 8: + _localctx = new DoubleLiteralContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(2993); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2992); + match(MINUS); + } + } + + setState(2995); + match(DOUBLE_LITERAL); + } + break; + case 9: + _localctx = new BigDecimalLiteralContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(2997); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(2996); + match(MINUS); + } + } + + setState(2999); + match(BIGDECIMAL_LITERAL); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AlterColumnActionContext extends ParserRuleContext { + public Token setOrDrop; + public TerminalNode TYPE() { return getToken(SqlBaseParser.TYPE, 0); } + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public ColPositionContext colPosition() { + return getRuleContext(ColPositionContext.class,0); + } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public AlterColumnActionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_alterColumnAction; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAlterColumnAction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAlterColumnAction(this); + } + } + + public final AlterColumnActionContext alterColumnAction() throws RecognitionException { + AlterColumnActionContext _localctx = new AlterColumnActionContext(_ctx, getState()); + enterRule(_localctx, 266, RULE_alterColumnAction); + int _la; + try { + setState(3009); + _errHandler.sync(this); + switch (_input.LA(1)) { + case TYPE: + enterOuterAlt(_localctx, 1); + { + setState(3002); + match(TYPE); + setState(3003); + dataType(); + } + break; + case COMMENT: + enterOuterAlt(_localctx, 2); + { + setState(3004); + commentSpec(); + } + break; + case AFTER: + case FIRST: + enterOuterAlt(_localctx, 3); + { + setState(3005); + colPosition(); + } + break; + case DROP: + case SET: + enterOuterAlt(_localctx, 4); + { + setState(3006); + ((AlterColumnActionContext)_localctx).setOrDrop = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==DROP || _la==SET) ) { + ((AlterColumnActionContext)_localctx).setOrDrop = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(3007); + match(NOT); + setState(3008); + match(NULL); + } + 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 AnsiNonReservedContext extends ParserRuleContext { + public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } + public TerminalNode AFTER() { return getToken(SqlBaseParser.AFTER, 0); } + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode ANALYZE() { return getToken(SqlBaseParser.ANALYZE, 0); } + public TerminalNode ARCHIVE() { return getToken(SqlBaseParser.ARCHIVE, 0); } + public TerminalNode ARRAY() { return getToken(SqlBaseParser.ARRAY, 0); } + public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } + public TerminalNode AT() { return getToken(SqlBaseParser.AT, 0); } + public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } + public TerminalNode BUCKET() { return getToken(SqlBaseParser.BUCKET, 0); } + public TerminalNode BUCKETS() { return getToken(SqlBaseParser.BUCKETS, 0); } + public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } + public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } + public TerminalNode CASCADE() { return getToken(SqlBaseParser.CASCADE, 0); } + public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } + public TerminalNode CLEAR() { return getToken(SqlBaseParser.CLEAR, 0); } + public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } + public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } + public TerminalNode CODEGEN() { return getToken(SqlBaseParser.CODEGEN, 0); } + public TerminalNode COLLECTION() { return getToken(SqlBaseParser.COLLECTION, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } + public TerminalNode COMMIT() { return getToken(SqlBaseParser.COMMIT, 0); } + public TerminalNode COMPACT() { return getToken(SqlBaseParser.COMPACT, 0); } + public TerminalNode COMPACTIONS() { return getToken(SqlBaseParser.COMPACTIONS, 0); } + public TerminalNode COMPUTE() { return getToken(SqlBaseParser.COMPUTE, 0); } + public TerminalNode CONCATENATE() { return getToken(SqlBaseParser.CONCATENATE, 0); } + public TerminalNode COST() { return getToken(SqlBaseParser.COST, 0); } + public TerminalNode CUBE() { return getToken(SqlBaseParser.CUBE, 0); } + public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } + public TerminalNode DATA() { return getToken(SqlBaseParser.DATA, 0); } + public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } + public TerminalNode DATABASES() { return getToken(SqlBaseParser.DATABASES, 0); } + public TerminalNode DBPROPERTIES() { return getToken(SqlBaseParser.DBPROPERTIES, 0); } + public TerminalNode DEFINED() { return getToken(SqlBaseParser.DEFINED, 0); } + public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } + public TerminalNode DELIMITED() { return getToken(SqlBaseParser.DELIMITED, 0); } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } + public TerminalNode DFS() { return getToken(SqlBaseParser.DFS, 0); } + public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } + public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } + public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } + public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public TerminalNode ESCAPED() { return getToken(SqlBaseParser.ESCAPED, 0); } + public TerminalNode EXCHANGE() { return getToken(SqlBaseParser.EXCHANGE, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public TerminalNode EXPLAIN() { return getToken(SqlBaseParser.EXPLAIN, 0); } + public TerminalNode EXPORT() { return getToken(SqlBaseParser.EXPORT, 0); } + public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } + public TerminalNode EXTERNAL() { return getToken(SqlBaseParser.EXTERNAL, 0); } + public TerminalNode EXTRACT() { return getToken(SqlBaseParser.EXTRACT, 0); } + public TerminalNode FIELDS() { return getToken(SqlBaseParser.FIELDS, 0); } + public TerminalNode FILEFORMAT() { return getToken(SqlBaseParser.FILEFORMAT, 0); } + public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } + public TerminalNode FOLLOWING() { return getToken(SqlBaseParser.FOLLOWING, 0); } + public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } + public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } + public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } + public TerminalNode FUNCTIONS() { return getToken(SqlBaseParser.FUNCTIONS, 0); } + public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } + public TerminalNode GROUPING() { return getToken(SqlBaseParser.GROUPING, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } + public TerminalNode IMPORT() { return getToken(SqlBaseParser.IMPORT, 0); } + public TerminalNode INDEX() { return getToken(SqlBaseParser.INDEX, 0); } + public TerminalNode INDEXES() { return getToken(SqlBaseParser.INDEXES, 0); } + public TerminalNode INPATH() { return getToken(SqlBaseParser.INPATH, 0); } + public TerminalNode INPUTFORMAT() { return getToken(SqlBaseParser.INPUTFORMAT, 0); } + public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } + public TerminalNode INTERVAL() { return getToken(SqlBaseParser.INTERVAL, 0); } + public TerminalNode ITEMS() { return getToken(SqlBaseParser.ITEMS, 0); } + public TerminalNode KEYS() { return getToken(SqlBaseParser.KEYS, 0); } + public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } + public TerminalNode LATERAL() { return getToken(SqlBaseParser.LATERAL, 0); } + public TerminalNode LAZY() { return getToken(SqlBaseParser.LAZY, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public TerminalNode LIMIT() { return getToken(SqlBaseParser.LIMIT, 0); } + public TerminalNode LINES() { return getToken(SqlBaseParser.LINES, 0); } + public TerminalNode LIST() { return getToken(SqlBaseParser.LIST, 0); } + public TerminalNode LOAD() { return getToken(SqlBaseParser.LOAD, 0); } + public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } + public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } + public TerminalNode LOCK() { return getToken(SqlBaseParser.LOCK, 0); } + public TerminalNode LOCKS() { return getToken(SqlBaseParser.LOCKS, 0); } + public TerminalNode LOGICAL() { return getToken(SqlBaseParser.LOGICAL, 0); } + public TerminalNode MACRO() { return getToken(SqlBaseParser.MACRO, 0); } + public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } + public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } + public TerminalNode MERGE() { return getToken(SqlBaseParser.MERGE, 0); } + public TerminalNode MSCK() { return getToken(SqlBaseParser.MSCK, 0); } + public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } + public TerminalNode NAMESPACES() { return getToken(SqlBaseParser.NAMESPACES, 0); } + public TerminalNode NO() { return getToken(SqlBaseParser.NO, 0); } + public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } + public TerminalNode OF() { return getToken(SqlBaseParser.OF, 0); } + public TerminalNode OPTION() { return getToken(SqlBaseParser.OPTION, 0); } + public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } + public TerminalNode OUT() { return getToken(SqlBaseParser.OUT, 0); } + public TerminalNode OUTPUTFORMAT() { return getToken(SqlBaseParser.OUTPUTFORMAT, 0); } + public TerminalNode OVER() { return getToken(SqlBaseParser.OVER, 0); } + public TerminalNode OVERLAY() { return getToken(SqlBaseParser.OVERLAY, 0); } + public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } + public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } + public TerminalNode PARTITIONED() { return getToken(SqlBaseParser.PARTITIONED, 0); } + public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } + public TerminalNode PERCENTLIT() { return getToken(SqlBaseParser.PERCENTLIT, 0); } + public TerminalNode PIVOT() { return getToken(SqlBaseParser.PIVOT, 0); } + public TerminalNode PLACING() { return getToken(SqlBaseParser.PLACING, 0); } + public TerminalNode POSITION() { return getToken(SqlBaseParser.POSITION, 0); } + public TerminalNode PRECEDING() { return getToken(SqlBaseParser.PRECEDING, 0); } + public TerminalNode PRINCIPALS() { return getToken(SqlBaseParser.PRINCIPALS, 0); } + public TerminalNode PROPERTIES() { return getToken(SqlBaseParser.PROPERTIES, 0); } + public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } + public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); } + public TerminalNode RANGE() { return getToken(SqlBaseParser.RANGE, 0); } + public TerminalNode RECORDREADER() { return getToken(SqlBaseParser.RECORDREADER, 0); } + public TerminalNode RECORDWRITER() { return getToken(SqlBaseParser.RECORDWRITER, 0); } + public TerminalNode RECOVER() { return getToken(SqlBaseParser.RECOVER, 0); } + public TerminalNode REDUCE() { return getToken(SqlBaseParser.REDUCE, 0); } + public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } + public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } + public TerminalNode REPAIR() { return getToken(SqlBaseParser.REPAIR, 0); } + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode RESET() { return getToken(SqlBaseParser.RESET, 0); } + public TerminalNode RESTRICT() { return getToken(SqlBaseParser.RESTRICT, 0); } + public TerminalNode REVOKE() { return getToken(SqlBaseParser.REVOKE, 0); } + public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); } + public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } + public TerminalNode ROLES() { return getToken(SqlBaseParser.ROLES, 0); } + public TerminalNode ROLLBACK() { return getToken(SqlBaseParser.ROLLBACK, 0); } + public TerminalNode ROLLUP() { return getToken(SqlBaseParser.ROLLUP, 0); } + public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } + public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } + public TerminalNode SCHEMA() { return getToken(SqlBaseParser.SCHEMA, 0); } + public TerminalNode SEPARATED() { return getToken(SqlBaseParser.SEPARATED, 0); } + public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } + public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode SETS() { return getToken(SqlBaseParser.SETS, 0); } + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } + public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } + public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } + public TerminalNode START() { return getToken(SqlBaseParser.START, 0); } + public TerminalNode STATISTICS() { return getToken(SqlBaseParser.STATISTICS, 0); } + public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } + public TerminalNode STRATIFY() { return getToken(SqlBaseParser.STRATIFY, 0); } + public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } + public TerminalNode SUBSTR() { return getToken(SqlBaseParser.SUBSTR, 0); } + public TerminalNode SUBSTRING() { return getToken(SqlBaseParser.SUBSTRING, 0); } + public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); } + public TerminalNode TABLESAMPLE() { return getToken(SqlBaseParser.TABLESAMPLE, 0); } + public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode TERMINATED() { return getToken(SqlBaseParser.TERMINATED, 0); } + public TerminalNode TOUCH() { return getToken(SqlBaseParser.TOUCH, 0); } + public TerminalNode TRANSACTION() { return getToken(SqlBaseParser.TRANSACTION, 0); } + public TerminalNode TRANSACTIONS() { return getToken(SqlBaseParser.TRANSACTIONS, 0); } + public TerminalNode TRANSFORM() { return getToken(SqlBaseParser.TRANSFORM, 0); } + public TerminalNode TRIM() { return getToken(SqlBaseParser.TRIM, 0); } + public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } + public TerminalNode TRUNCATE() { return getToken(SqlBaseParser.TRUNCATE, 0); } + public TerminalNode UNARCHIVE() { return getToken(SqlBaseParser.UNARCHIVE, 0); } + public TerminalNode UNBOUNDED() { return getToken(SqlBaseParser.UNBOUNDED, 0); } + public TerminalNode UNCACHE() { return getToken(SqlBaseParser.UNCACHE, 0); } + public TerminalNode UNLOCK() { return getToken(SqlBaseParser.UNLOCK, 0); } + public TerminalNode UNSET() { return getToken(SqlBaseParser.UNSET, 0); } + public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } + public TerminalNode USE() { return getToken(SqlBaseParser.USE, 0); } + public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public TerminalNode VIEWS() { return getToken(SqlBaseParser.VIEWS, 0); } + public TerminalNode WINDOW() { return getToken(SqlBaseParser.WINDOW, 0); } + public AnsiNonReservedContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ansiNonReserved; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAnsiNonReserved(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAnsiNonReserved(this); + } + } + + public final AnsiNonReservedContext ansiNonReserved() throws RecognitionException { + AnsiNonReservedContext _localctx = new AnsiNonReservedContext(_ctx, getState()); + enterRule(_localctx, 268, RULE_ansiNonReserved); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3011); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << AFTER) | (1L << ALTER) | (1L << ANALYZE) | (1L << ARCHIVE) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BETWEEN) | (1L << BUCKET) | (1L << BUCKETS) | (1L << BY) | (1L << CACHE) | (1L << CASCADE) | (1L << CHANGE) | (1L << CLEAR) | (1L << CLUSTER) | (1L << CLUSTERED) | (1L << CODEGEN) | (1L << COLLECTION) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMPACT) | (1L << COMPACTIONS) | (1L << COMPUTE) | (1L << CONCATENATE) | (1L << COST) | (1L << CUBE) | (1L << CURRENT) | (1L << DATA) | (1L << DATABASE) | (1L << DATABASES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (DBPROPERTIES - 65)) | (1L << (DEFINED - 65)) | (1L << (DELETE - 65)) | (1L << (DELIMITED - 65)) | (1L << (DESC - 65)) | (1L << (DESCRIBE - 65)) | (1L << (DFS - 65)) | (1L << (DIRECTORIES - 65)) | (1L << (DIRECTORY - 65)) | (1L << (DISTRIBUTE - 65)) | (1L << (DROP - 65)) | (1L << (ESCAPED - 65)) | (1L << (EXCHANGE - 65)) | (1L << (EXISTS - 65)) | (1L << (EXPLAIN - 65)) | (1L << (EXPORT - 65)) | (1L << (EXTENDED - 65)) | (1L << (EXTERNAL - 65)) | (1L << (EXTRACT - 65)) | (1L << (FIELDS - 65)) | (1L << (FILEFORMAT - 65)) | (1L << (FIRST - 65)) | (1L << (FOLLOWING - 65)) | (1L << (FORMAT - 65)) | (1L << (FORMATTED - 65)) | (1L << (FUNCTION - 65)) | (1L << (FUNCTIONS - 65)) | (1L << (GLOBAL - 65)) | (1L << (GROUPING - 65)) | (1L << (IF - 65)) | (1L << (IGNORE - 65)) | (1L << (IMPORT - 65)) | (1L << (INDEX - 65)) | (1L << (INDEXES - 65)) | (1L << (INPATH - 65)) | (1L << (INPUTFORMAT - 65)) | (1L << (INSERT - 65)) | (1L << (INTERVAL - 65)) | (1L << (ITEMS - 65)) | (1L << (KEYS - 65)) | (1L << (LAST - 65)) | (1L << (LATERAL - 65)))) != 0) || ((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (LAZY - 129)) | (1L << (LIKE - 129)) | (1L << (LIMIT - 129)) | (1L << (LINES - 129)) | (1L << (LIST - 129)) | (1L << (LOAD - 129)) | (1L << (LOCAL - 129)) | (1L << (LOCATION - 129)) | (1L << (LOCK - 129)) | (1L << (LOCKS - 129)) | (1L << (LOGICAL - 129)) | (1L << (MACRO - 129)) | (1L << (MAP - 129)) | (1L << (MATCHED - 129)) | (1L << (MERGE - 129)) | (1L << (MSCK - 129)) | (1L << (NAMESPACE - 129)) | (1L << (NAMESPACES - 129)) | (1L << (NO - 129)) | (1L << (NULLS - 129)) | (1L << (OF - 129)) | (1L << (OPTION - 129)) | (1L << (OPTIONS - 129)) | (1L << (OUT - 129)) | (1L << (OUTPUTFORMAT - 129)) | (1L << (OVER - 129)) | (1L << (OVERLAY - 129)) | (1L << (OVERWRITE - 129)) | (1L << (PARTITION - 129)) | (1L << (PARTITIONED - 129)) | (1L << (PARTITIONS - 129)) | (1L << (PERCENTLIT - 129)) | (1L << (PIVOT - 129)) | (1L << (PLACING - 129)) | (1L << (POSITION - 129)) | (1L << (PRECEDING - 129)) | (1L << (PRINCIPALS - 129)) | (1L << (PROPERTIES - 129)) | (1L << (PURGE - 129)) | (1L << (QUERY - 129)) | (1L << (RANGE - 129)) | (1L << (RECORDREADER - 129)) | (1L << (RECORDWRITER - 129)) | (1L << (RECOVER - 129)) | (1L << (REDUCE - 129)) | (1L << (REFRESH - 129)) | (1L << (RENAME - 129)) | (1L << (REPAIR - 129)) | (1L << (REPLACE - 129)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (RESET - 193)) | (1L << (RESTRICT - 193)) | (1L << (REVOKE - 193)) | (1L << (RLIKE - 193)) | (1L << (ROLE - 193)) | (1L << (ROLES - 193)) | (1L << (ROLLBACK - 193)) | (1L << (ROLLUP - 193)) | (1L << (ROW - 193)) | (1L << (ROWS - 193)) | (1L << (SCHEMA - 193)) | (1L << (SEPARATED - 193)) | (1L << (SERDE - 193)) | (1L << (SERDEPROPERTIES - 193)) | (1L << (SET - 193)) | (1L << (SETS - 193)) | (1L << (SHOW - 193)) | (1L << (SKEWED - 193)) | (1L << (SORT - 193)) | (1L << (SORTED - 193)) | (1L << (START - 193)) | (1L << (STATISTICS - 193)) | (1L << (STORED - 193)) | (1L << (STRATIFY - 193)) | (1L << (STRUCT - 193)) | (1L << (SUBSTR - 193)) | (1L << (SUBSTRING - 193)) | (1L << (TABLES - 193)) | (1L << (TABLESAMPLE - 193)) | (1L << (TBLPROPERTIES - 193)) | (1L << (TEMPORARY - 193)) | (1L << (TERMINATED - 193)) | (1L << (TOUCH - 193)) | (1L << (TRANSACTION - 193)) | (1L << (TRANSACTIONS - 193)) | (1L << (TRANSFORM - 193)) | (1L << (TRIM - 193)) | (1L << (TRUE - 193)) | (1L << (TRUNCATE - 193)) | (1L << (UNARCHIVE - 193)) | (1L << (UNBOUNDED - 193)) | (1L << (UNCACHE - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNSET - 193)) | (1L << (UPDATE - 193)) | (1L << (USE - 193)) | (1L << (VALUES - 193)))) != 0) || ((((_la - 257)) & ~0x3f) == 0 && ((1L << (_la - 257)) & ((1L << (VIEW - 257)) | (1L << (VIEWS - 257)) | (1L << (WINDOW - 257)) | (1L << (DIV - 257)))) != 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 StrictNonReservedContext extends ParserRuleContext { + public TerminalNode ANTI() { return getToken(SqlBaseParser.ANTI, 0); } + public TerminalNode CROSS() { return getToken(SqlBaseParser.CROSS, 0); } + public TerminalNode EXCEPT() { return getToken(SqlBaseParser.EXCEPT, 0); } + public TerminalNode FULL() { return getToken(SqlBaseParser.FULL, 0); } + public TerminalNode INNER() { return getToken(SqlBaseParser.INNER, 0); } + public TerminalNode INTERSECT() { return getToken(SqlBaseParser.INTERSECT, 0); } + public TerminalNode JOIN() { return getToken(SqlBaseParser.JOIN, 0); } + public TerminalNode LEFT() { return getToken(SqlBaseParser.LEFT, 0); } + public TerminalNode NATURAL() { return getToken(SqlBaseParser.NATURAL, 0); } + public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } + public TerminalNode RIGHT() { return getToken(SqlBaseParser.RIGHT, 0); } + public TerminalNode SEMI() { return getToken(SqlBaseParser.SEMI, 0); } + public TerminalNode SETMINUS() { return getToken(SqlBaseParser.SETMINUS, 0); } + public TerminalNode UNION() { return getToken(SqlBaseParser.UNION, 0); } + public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } + public StrictNonReservedContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_strictNonReserved; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStrictNonReserved(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStrictNonReserved(this); + } + } + + public final StrictNonReservedContext strictNonReserved() throws RecognitionException { + StrictNonReservedContext _localctx = new StrictNonReservedContext(_ctx, getState()); + enterRule(_localctx, 270, RULE_strictNonReserved); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3013); + _la = _input.LA(1); + if ( !(((((_la - 18)) & ~0x3f) == 0 && ((1L << (_la - 18)) & ((1L << (ANTI - 18)) | (1L << (CROSS - 18)) | (1L << (EXCEPT - 18)))) != 0) || ((((_la - 101)) & ~0x3f) == 0 && ((1L << (_la - 101)) & ((1L << (FULL - 101)) | (1L << (INNER - 101)) | (1L << (INTERSECT - 101)) | (1L << (JOIN - 101)) | (1L << (LEFT - 101)) | (1L << (NATURAL - 101)) | (1L << (ON - 101)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (RIGHT - 196)) | (1L << (SEMI - 196)) | (1L << (SETMINUS - 196)) | (1L << (UNION - 196)) | (1L << (USING - 196)))) != 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 NonReservedContext extends ParserRuleContext { + public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } + public TerminalNode AFTER() { return getToken(SqlBaseParser.AFTER, 0); } + public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } + public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } + public TerminalNode ANALYZE() { return getToken(SqlBaseParser.ANALYZE, 0); } + public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } + public TerminalNode ANY() { return getToken(SqlBaseParser.ANY, 0); } + public TerminalNode ARCHIVE() { return getToken(SqlBaseParser.ARCHIVE, 0); } + public TerminalNode ARRAY() { return getToken(SqlBaseParser.ARRAY, 0); } + public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } + public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } + public TerminalNode AT() { return getToken(SqlBaseParser.AT, 0); } + public TerminalNode AUTHORIZATION() { return getToken(SqlBaseParser.AUTHORIZATION, 0); } + public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } + public TerminalNode BOTH() { return getToken(SqlBaseParser.BOTH, 0); } + public TerminalNode BUCKET() { return getToken(SqlBaseParser.BUCKET, 0); } + public TerminalNode BUCKETS() { return getToken(SqlBaseParser.BUCKETS, 0); } + public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } + public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } + public TerminalNode CASCADE() { return getToken(SqlBaseParser.CASCADE, 0); } + public TerminalNode CASE() { return getToken(SqlBaseParser.CASE, 0); } + public TerminalNode CAST() { return getToken(SqlBaseParser.CAST, 0); } + public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } + public TerminalNode CHECK() { return getToken(SqlBaseParser.CHECK, 0); } + public TerminalNode CLEAR() { return getToken(SqlBaseParser.CLEAR, 0); } + public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } + public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } + public TerminalNode CODEGEN() { return getToken(SqlBaseParser.CODEGEN, 0); } + public TerminalNode COLLATE() { return getToken(SqlBaseParser.COLLATE, 0); } + public TerminalNode COLLECTION() { return getToken(SqlBaseParser.COLLECTION, 0); } + public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } + public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } + public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } + public TerminalNode COMMIT() { return getToken(SqlBaseParser.COMMIT, 0); } + public TerminalNode COMPACT() { return getToken(SqlBaseParser.COMPACT, 0); } + public TerminalNode COMPACTIONS() { return getToken(SqlBaseParser.COMPACTIONS, 0); } + public TerminalNode COMPUTE() { return getToken(SqlBaseParser.COMPUTE, 0); } + public TerminalNode CONCATENATE() { return getToken(SqlBaseParser.CONCATENATE, 0); } + public TerminalNode CONSTRAINT() { return getToken(SqlBaseParser.CONSTRAINT, 0); } + public TerminalNode COST() { return getToken(SqlBaseParser.COST, 0); } + public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } + public TerminalNode CUBE() { return getToken(SqlBaseParser.CUBE, 0); } + public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } + public TerminalNode CURRENT_DATE() { return getToken(SqlBaseParser.CURRENT_DATE, 0); } + public TerminalNode CURRENT_TIME() { return getToken(SqlBaseParser.CURRENT_TIME, 0); } + public TerminalNode CURRENT_TIMESTAMP() { return getToken(SqlBaseParser.CURRENT_TIMESTAMP, 0); } + public TerminalNode CURRENT_USER() { return getToken(SqlBaseParser.CURRENT_USER, 0); } + public TerminalNode DATA() { return getToken(SqlBaseParser.DATA, 0); } + public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } + public TerminalNode DATABASES() { return getToken(SqlBaseParser.DATABASES, 0); } + public TerminalNode DAY() { return getToken(SqlBaseParser.DAY, 0); } + public TerminalNode DBPROPERTIES() { return getToken(SqlBaseParser.DBPROPERTIES, 0); } + public TerminalNode DEFINED() { return getToken(SqlBaseParser.DEFINED, 0); } + public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } + public TerminalNode DELIMITED() { return getToken(SqlBaseParser.DELIMITED, 0); } + public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } + public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } + public TerminalNode DFS() { return getToken(SqlBaseParser.DFS, 0); } + public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } + public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } + public TerminalNode DISTINCT() { return getToken(SqlBaseParser.DISTINCT, 0); } + public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } + public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } + public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } + public TerminalNode ELSE() { return getToken(SqlBaseParser.ELSE, 0); } + public TerminalNode END() { return getToken(SqlBaseParser.END, 0); } + public TerminalNode ESCAPE() { return getToken(SqlBaseParser.ESCAPE, 0); } + public TerminalNode ESCAPED() { return getToken(SqlBaseParser.ESCAPED, 0); } + public TerminalNode EXCHANGE() { return getToken(SqlBaseParser.EXCHANGE, 0); } + public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } + public TerminalNode EXPLAIN() { return getToken(SqlBaseParser.EXPLAIN, 0); } + public TerminalNode EXPORT() { return getToken(SqlBaseParser.EXPORT, 0); } + public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } + public TerminalNode EXTERNAL() { return getToken(SqlBaseParser.EXTERNAL, 0); } + public TerminalNode EXTRACT() { return getToken(SqlBaseParser.EXTRACT, 0); } + public TerminalNode FALSE() { return getToken(SqlBaseParser.FALSE, 0); } + public TerminalNode FETCH() { return getToken(SqlBaseParser.FETCH, 0); } + public TerminalNode FILTER() { return getToken(SqlBaseParser.FILTER, 0); } + public TerminalNode FIELDS() { return getToken(SqlBaseParser.FIELDS, 0); } + public TerminalNode FILEFORMAT() { return getToken(SqlBaseParser.FILEFORMAT, 0); } + public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } + public TerminalNode FOLLOWING() { return getToken(SqlBaseParser.FOLLOWING, 0); } + public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } + public TerminalNode FOREIGN() { return getToken(SqlBaseParser.FOREIGN, 0); } + public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } + public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } + public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } + public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } + public TerminalNode FUNCTIONS() { return getToken(SqlBaseParser.FUNCTIONS, 0); } + public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } + public TerminalNode GRANT() { return getToken(SqlBaseParser.GRANT, 0); } + public TerminalNode GROUP() { return getToken(SqlBaseParser.GROUP, 0); } + public TerminalNode GROUPING() { return getToken(SqlBaseParser.GROUPING, 0); } + public TerminalNode HAVING() { return getToken(SqlBaseParser.HAVING, 0); } + public TerminalNode HOUR() { return getToken(SqlBaseParser.HOUR, 0); } + public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } + public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } + public TerminalNode IMPORT() { return getToken(SqlBaseParser.IMPORT, 0); } + public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } + public TerminalNode INDEX() { return getToken(SqlBaseParser.INDEX, 0); } + public TerminalNode INDEXES() { return getToken(SqlBaseParser.INDEXES, 0); } + public TerminalNode INPATH() { return getToken(SqlBaseParser.INPATH, 0); } + public TerminalNode INPUTFORMAT() { return getToken(SqlBaseParser.INPUTFORMAT, 0); } + public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } + public TerminalNode INTERVAL() { return getToken(SqlBaseParser.INTERVAL, 0); } + public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } + public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } + public TerminalNode ITEMS() { return getToken(SqlBaseParser.ITEMS, 0); } + public TerminalNode KEYS() { return getToken(SqlBaseParser.KEYS, 0); } + public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } + public TerminalNode LATERAL() { return getToken(SqlBaseParser.LATERAL, 0); } + public TerminalNode LAZY() { return getToken(SqlBaseParser.LAZY, 0); } + public TerminalNode LEADING() { return getToken(SqlBaseParser.LEADING, 0); } + public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } + public TerminalNode LIMIT() { return getToken(SqlBaseParser.LIMIT, 0); } + public TerminalNode LINES() { return getToken(SqlBaseParser.LINES, 0); } + public TerminalNode LIST() { return getToken(SqlBaseParser.LIST, 0); } + public TerminalNode LOAD() { return getToken(SqlBaseParser.LOAD, 0); } + public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } + public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } + public TerminalNode LOCK() { return getToken(SqlBaseParser.LOCK, 0); } + public TerminalNode LOCKS() { return getToken(SqlBaseParser.LOCKS, 0); } + public TerminalNode LOGICAL() { return getToken(SqlBaseParser.LOGICAL, 0); } + public TerminalNode MACRO() { return getToken(SqlBaseParser.MACRO, 0); } + public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } + public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } + public TerminalNode MERGE() { return getToken(SqlBaseParser.MERGE, 0); } + public TerminalNode MINUTE() { return getToken(SqlBaseParser.MINUTE, 0); } + public TerminalNode MONTH() { return getToken(SqlBaseParser.MONTH, 0); } + public TerminalNode MSCK() { return getToken(SqlBaseParser.MSCK, 0); } + public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } + public TerminalNode NAMESPACES() { return getToken(SqlBaseParser.NAMESPACES, 0); } + public TerminalNode NO() { return getToken(SqlBaseParser.NO, 0); } + public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } + public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } + public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } + public TerminalNode OF() { return getToken(SqlBaseParser.OF, 0); } + public TerminalNode ONLY() { return getToken(SqlBaseParser.ONLY, 0); } + public TerminalNode OPTION() { return getToken(SqlBaseParser.OPTION, 0); } + public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } + public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } + public TerminalNode ORDER() { return getToken(SqlBaseParser.ORDER, 0); } + public TerminalNode OUT() { return getToken(SqlBaseParser.OUT, 0); } + public TerminalNode OUTER() { return getToken(SqlBaseParser.OUTER, 0); } + public TerminalNode OUTPUTFORMAT() { return getToken(SqlBaseParser.OUTPUTFORMAT, 0); } + public TerminalNode OVER() { return getToken(SqlBaseParser.OVER, 0); } + public TerminalNode OVERLAPS() { return getToken(SqlBaseParser.OVERLAPS, 0); } + public TerminalNode OVERLAY() { return getToken(SqlBaseParser.OVERLAY, 0); } + public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } + public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } + public TerminalNode PARTITIONED() { return getToken(SqlBaseParser.PARTITIONED, 0); } + public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } + public TerminalNode PERCENTLIT() { return getToken(SqlBaseParser.PERCENTLIT, 0); } + public TerminalNode PIVOT() { return getToken(SqlBaseParser.PIVOT, 0); } + public TerminalNode PLACING() { return getToken(SqlBaseParser.PLACING, 0); } + public TerminalNode POSITION() { return getToken(SqlBaseParser.POSITION, 0); } + public TerminalNode PRECEDING() { return getToken(SqlBaseParser.PRECEDING, 0); } + public TerminalNode PRIMARY() { return getToken(SqlBaseParser.PRIMARY, 0); } + public TerminalNode PRINCIPALS() { return getToken(SqlBaseParser.PRINCIPALS, 0); } + public TerminalNode PROPERTIES() { return getToken(SqlBaseParser.PROPERTIES, 0); } + public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } + public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); } + public TerminalNode RANGE() { return getToken(SqlBaseParser.RANGE, 0); } + public TerminalNode RECORDREADER() { return getToken(SqlBaseParser.RECORDREADER, 0); } + public TerminalNode RECORDWRITER() { return getToken(SqlBaseParser.RECORDWRITER, 0); } + public TerminalNode RECOVER() { return getToken(SqlBaseParser.RECOVER, 0); } + public TerminalNode REDUCE() { return getToken(SqlBaseParser.REDUCE, 0); } + public TerminalNode REFERENCES() { return getToken(SqlBaseParser.REFERENCES, 0); } + public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } + public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } + public TerminalNode REPAIR() { return getToken(SqlBaseParser.REPAIR, 0); } + public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } + public TerminalNode RESET() { return getToken(SqlBaseParser.RESET, 0); } + public TerminalNode RESTRICT() { return getToken(SqlBaseParser.RESTRICT, 0); } + public TerminalNode REVOKE() { return getToken(SqlBaseParser.REVOKE, 0); } + public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); } + public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } + public TerminalNode ROLES() { return getToken(SqlBaseParser.ROLES, 0); } + public TerminalNode ROLLBACK() { return getToken(SqlBaseParser.ROLLBACK, 0); } + public TerminalNode ROLLUP() { return getToken(SqlBaseParser.ROLLUP, 0); } + public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } + public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } + public TerminalNode SCHEMA() { return getToken(SqlBaseParser.SCHEMA, 0); } + public TerminalNode SECOND() { return getToken(SqlBaseParser.SECOND, 0); } + public TerminalNode SELECT() { return getToken(SqlBaseParser.SELECT, 0); } + public TerminalNode SEPARATED() { return getToken(SqlBaseParser.SEPARATED, 0); } + public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } + public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } + public TerminalNode SESSION_USER() { return getToken(SqlBaseParser.SESSION_USER, 0); } + public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } + public TerminalNode SETS() { return getToken(SqlBaseParser.SETS, 0); } + public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } + public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } + public TerminalNode SOME() { return getToken(SqlBaseParser.SOME, 0); } + public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } + public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } + public TerminalNode START() { return getToken(SqlBaseParser.START, 0); } + public TerminalNode STATISTICS() { return getToken(SqlBaseParser.STATISTICS, 0); } + public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } + public TerminalNode STRATIFY() { return getToken(SqlBaseParser.STRATIFY, 0); } + public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } + public TerminalNode SUBSTR() { return getToken(SqlBaseParser.SUBSTR, 0); } + public TerminalNode SUBSTRING() { return getToken(SqlBaseParser.SUBSTRING, 0); } + public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } + public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); } + public TerminalNode TABLESAMPLE() { return getToken(SqlBaseParser.TABLESAMPLE, 0); } + public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } + public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } + public TerminalNode TERMINATED() { return getToken(SqlBaseParser.TERMINATED, 0); } + public TerminalNode THEN() { return getToken(SqlBaseParser.THEN, 0); } + public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } + public TerminalNode TOUCH() { return getToken(SqlBaseParser.TOUCH, 0); } + public TerminalNode TRAILING() { return getToken(SqlBaseParser.TRAILING, 0); } + public TerminalNode TRANSACTION() { return getToken(SqlBaseParser.TRANSACTION, 0); } + public TerminalNode TRANSACTIONS() { return getToken(SqlBaseParser.TRANSACTIONS, 0); } + public TerminalNode TRANSFORM() { return getToken(SqlBaseParser.TRANSFORM, 0); } + public TerminalNode TRIM() { return getToken(SqlBaseParser.TRIM, 0); } + public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } + public TerminalNode TRUNCATE() { return getToken(SqlBaseParser.TRUNCATE, 0); } + public TerminalNode TYPE() { return getToken(SqlBaseParser.TYPE, 0); } + public TerminalNode UNARCHIVE() { return getToken(SqlBaseParser.UNARCHIVE, 0); } + public TerminalNode UNBOUNDED() { return getToken(SqlBaseParser.UNBOUNDED, 0); } + public TerminalNode UNCACHE() { return getToken(SqlBaseParser.UNCACHE, 0); } + public TerminalNode UNIQUE() { return getToken(SqlBaseParser.UNIQUE, 0); } + public TerminalNode UNKNOWN() { return getToken(SqlBaseParser.UNKNOWN, 0); } + public TerminalNode UNLOCK() { return getToken(SqlBaseParser.UNLOCK, 0); } + public TerminalNode UNSET() { return getToken(SqlBaseParser.UNSET, 0); } + public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } + public TerminalNode USE() { return getToken(SqlBaseParser.USE, 0); } + public TerminalNode USER() { return getToken(SqlBaseParser.USER, 0); } + public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } + public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } + public TerminalNode VIEWS() { return getToken(SqlBaseParser.VIEWS, 0); } + public TerminalNode WHEN() { return getToken(SqlBaseParser.WHEN, 0); } + public TerminalNode WHERE() { return getToken(SqlBaseParser.WHERE, 0); } + public TerminalNode WINDOW() { return getToken(SqlBaseParser.WINDOW, 0); } + public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } + public TerminalNode YEAR() { return getToken(SqlBaseParser.YEAR, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterNonReserved(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNonReserved(this); + } + } + + public final NonReservedContext nonReserved() throws RecognitionException { + NonReservedContext _localctx = new NonReservedContext(_ctx, getState()); + enterRule(_localctx, 272, RULE_nonReserved); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3015); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << AFTER) | (1L << ALL) | (1L << ALTER) | (1L << ANALYZE) | (1L << AND) | (1L << ANY) | (1L << ARCHIVE) | (1L << ARRAY) | (1L << AS) | (1L << ASC) | (1L << AT) | (1L << AUTHORIZATION) | (1L << BETWEEN) | (1L << BOTH) | (1L << BUCKET) | (1L << BUCKETS) | (1L << BY) | (1L << CACHE) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CHANGE) | (1L << CHECK) | (1L << CLEAR) | (1L << CLUSTER) | (1L << CLUSTERED) | (1L << CODEGEN) | (1L << COLLATE) | (1L << COLLECTION) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMPACT) | (1L << COMPACTIONS) | (1L << COMPUTE) | (1L << CONCATENATE) | (1L << CONSTRAINT) | (1L << COST) | (1L << CREATE) | (1L << CUBE) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATABASE) | (1L << DATABASES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (DAY - 64)) | (1L << (DBPROPERTIES - 64)) | (1L << (DEFINED - 64)) | (1L << (DELETE - 64)) | (1L << (DELIMITED - 64)) | (1L << (DESC - 64)) | (1L << (DESCRIBE - 64)) | (1L << (DFS - 64)) | (1L << (DIRECTORIES - 64)) | (1L << (DIRECTORY - 64)) | (1L << (DISTINCT - 64)) | (1L << (DISTRIBUTE - 64)) | (1L << (DROP - 64)) | (1L << (ELSE - 64)) | (1L << (END - 64)) | (1L << (ESCAPE - 64)) | (1L << (ESCAPED - 64)) | (1L << (EXCHANGE - 64)) | (1L << (EXISTS - 64)) | (1L << (EXPLAIN - 64)) | (1L << (EXPORT - 64)) | (1L << (EXTENDED - 64)) | (1L << (EXTERNAL - 64)) | (1L << (EXTRACT - 64)) | (1L << (FALSE - 64)) | (1L << (FETCH - 64)) | (1L << (FIELDS - 64)) | (1L << (FILTER - 64)) | (1L << (FILEFORMAT - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FOR - 64)) | (1L << (FOREIGN - 64)) | (1L << (FORMAT - 64)) | (1L << (FORMATTED - 64)) | (1L << (FROM - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GLOBAL - 64)) | (1L << (GRANT - 64)) | (1L << (GROUP - 64)) | (1L << (GROUPING - 64)) | (1L << (HAVING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (IMPORT - 64)) | (1L << (IN - 64)) | (1L << (INDEX - 64)) | (1L << (INDEXES - 64)) | (1L << (INPATH - 64)) | (1L << (INPUTFORMAT - 64)) | (1L << (INSERT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INTO - 64)) | (1L << (IS - 64)) | (1L << (ITEMS - 64)) | (1L << (KEYS - 64)) | (1L << (LAST - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LATERAL - 128)) | (1L << (LAZY - 128)) | (1L << (LEADING - 128)) | (1L << (LIKE - 128)) | (1L << (LIMIT - 128)) | (1L << (LINES - 128)) | (1L << (LIST - 128)) | (1L << (LOAD - 128)) | (1L << (LOCAL - 128)) | (1L << (LOCATION - 128)) | (1L << (LOCK - 128)) | (1L << (LOCKS - 128)) | (1L << (LOGICAL - 128)) | (1L << (MACRO - 128)) | (1L << (MAP - 128)) | (1L << (MATCHED - 128)) | (1L << (MERGE - 128)) | (1L << (MINUTE - 128)) | (1L << (MONTH - 128)) | (1L << (MSCK - 128)) | (1L << (NAMESPACE - 128)) | (1L << (NAMESPACES - 128)) | (1L << (NO - 128)) | (1L << (NOT - 128)) | (1L << (NULL - 128)) | (1L << (NULLS - 128)) | (1L << (OF - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (OPTIONS - 128)) | (1L << (OR - 128)) | (1L << (ORDER - 128)) | (1L << (OUT - 128)) | (1L << (OUTER - 128)) | (1L << (OUTPUTFORMAT - 128)) | (1L << (OVER - 128)) | (1L << (OVERLAPS - 128)) | (1L << (OVERLAY - 128)) | (1L << (OVERWRITE - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONED - 128)) | (1L << (PARTITIONS - 128)) | (1L << (PERCENTLIT - 128)) | (1L << (PIVOT - 128)) | (1L << (PLACING - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIMARY - 128)) | (1L << (PRINCIPALS - 128)) | (1L << (PROPERTIES - 128)) | (1L << (PURGE - 128)) | (1L << (QUERY - 128)) | (1L << (RANGE - 128)) | (1L << (RECORDREADER - 128)) | (1L << (RECORDWRITER - 128)) | (1L << (RECOVER - 128)) | (1L << (REDUCE - 128)) | (1L << (REFERENCES - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPAIR - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (REPLACE - 192)) | (1L << (RESET - 192)) | (1L << (RESTRICT - 192)) | (1L << (REVOKE - 192)) | (1L << (RLIKE - 192)) | (1L << (ROLE - 192)) | (1L << (ROLES - 192)) | (1L << (ROLLBACK - 192)) | (1L << (ROLLUP - 192)) | (1L << (ROW - 192)) | (1L << (ROWS - 192)) | (1L << (SCHEMA - 192)) | (1L << (SECOND - 192)) | (1L << (SELECT - 192)) | (1L << (SEPARATED - 192)) | (1L << (SERDE - 192)) | (1L << (SERDEPROPERTIES - 192)) | (1L << (SESSION_USER - 192)) | (1L << (SET - 192)) | (1L << (SETS - 192)) | (1L << (SHOW - 192)) | (1L << (SKEWED - 192)) | (1L << (SOME - 192)) | (1L << (SORT - 192)) | (1L << (SORTED - 192)) | (1L << (START - 192)) | (1L << (STATISTICS - 192)) | (1L << (STORED - 192)) | (1L << (STRATIFY - 192)) | (1L << (STRUCT - 192)) | (1L << (SUBSTR - 192)) | (1L << (SUBSTRING - 192)) | (1L << (TABLE - 192)) | (1L << (TABLES - 192)) | (1L << (TABLESAMPLE - 192)) | (1L << (TBLPROPERTIES - 192)) | (1L << (TEMPORARY - 192)) | (1L << (TERMINATED - 192)) | (1L << (THEN - 192)) | (1L << (TO - 192)) | (1L << (TOUCH - 192)) | (1L << (TRAILING - 192)) | (1L << (TRANSACTION - 192)) | (1L << (TRANSACTIONS - 192)) | (1L << (TRANSFORM - 192)) | (1L << (TRIM - 192)) | (1L << (TRUE - 192)) | (1L << (TRUNCATE - 192)) | (1L << (TYPE - 192)) | (1L << (UNARCHIVE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCACHE - 192)) | (1L << (UNIQUE - 192)) | (1L << (UNKNOWN - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNSET - 192)) | (1L << (UPDATE - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)))) != 0) || ((((_la - 256)) & ~0x3f) == 0 && ((1L << (_la - 256)) & ((1L << (VALUES - 256)) | (1L << (VIEW - 256)) | (1L << (VIEWS - 256)) | (1L << (WHEN - 256)) | (1L << (WHERE - 256)) | (1L << (WINDOW - 256)) | (1L << (WITH - 256)) | (1L << (YEAR - 256)) | (1L << (DIV - 256)))) != 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 7: + return statement_sempred((StatementContext)_localctx, predIndex); + case 40: + return queryTerm_sempred((QueryTermContext)_localctx, predIndex); + case 94: + return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex); + case 96: + return valueExpression_sempred((ValueExpressionContext)_localctx, predIndex); + case 97: + return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex); + case 129: + return identifier_sempred((IdentifierContext)_localctx, predIndex); + case 130: + return strictIdentifier_sempred((StrictIdentifierContext)_localctx, predIndex); + case 132: + return number_sempred((NumberContext)_localctx, predIndex); + } + return true; + } + private boolean statement_sempred(StatementContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return not self.legacy_create_hive_table_by_default_enabled; + case 1: + return self.legacy_create_hive_table_by_default_enabled; + } + return true; + } + private boolean queryTerm_sempred(QueryTermContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return precpred(_ctx, 3); + case 3: + return self.legacy_setops_precedence_enbled; + case 4: + return precpred(_ctx, 2); + case 5: + return not self.legacy_setops_precedence_enbled; + case 6: + return precpred(_ctx, 1); + case 7: + return not self.legacy_setops_precedence_enbled; + } + return true; + } + private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 8: + return precpred(_ctx, 2); + case 9: + return precpred(_ctx, 1); + } + return true; + } + private boolean valueExpression_sempred(ValueExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 10: + return precpred(_ctx, 6); + case 11: + return precpred(_ctx, 5); + case 12: + return precpred(_ctx, 4); + case 13: + return precpred(_ctx, 3); + case 14: + return precpred(_ctx, 2); + case 15: + return precpred(_ctx, 1); + } + return true; + } + private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 16: + return precpred(_ctx, 8); + case 17: + return precpred(_ctx, 6); + } + return true; + } + private boolean identifier_sempred(IdentifierContext _localctx, int predIndex) { + switch (predIndex) { + case 18: + return not self.SQL_standard_keyword_behavior; + } + return true; + } + private boolean strictIdentifier_sempred(StrictIdentifierContext _localctx, int predIndex) { + switch (predIndex) { + case 19: + return self.SQL_standard_keyword_behavior; + case 20: + return not self.SQL_standard_keyword_behavior; + } + return true; + } + private boolean number_sempred(NumberContext _localctx, int predIndex) { + switch (predIndex) { + case 21: + return not self.legacy_exponent_literal_as_decimal_enabled; + case 22: + return not self.legacy_exponent_literal_as_decimal_enabled; + case 23: + return self.legacy_exponent_literal_as_decimal_enabled; + } + return true; + } + + private static final int _serializedATNSegments = 2; + private static final String _serializedATNSegment0 = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u012b\u0bcc\4\2\t"+ + "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ + "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ + "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+ + "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+ + "w\tw\4x\tx\4y\ty\4z\tz\4{\t{\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\3\2\3\2\7\2\u0117\n\2\f\2\16\2\u011a\13\2\3\2\3\2\3\3"+ + "\3\3\3\3\3\4\3\4\3\4\3\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\b\3\b\3\b\3"+ + "\t\3\t\5\t\u0132\n\t\3\t\3\t\3\t\5\t\u0137\n\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\5\t\u013f\n\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u0147\n\t\f\t\16\t\u014a\13"+ + "\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\5\t\u015d\n\t\3\t\3\t\5\t\u0161\n\t\3\t\3\t\3\t\3\t\5\t\u0167\n\t\3\t"+ + "\5\t\u016a\n\t\3\t\5\t\u016d\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0175\n\t"+ + "\3\t\5\t\u0178\n\t\3\t\3\t\5\t\u017c\n\t\3\t\5\t\u017f\n\t\3\t\3\t\3\t"+ + "\3\t\3\t\3\t\5\t\u0187\n\t\3\t\3\t\3\t\5\t\u018c\n\t\3\t\5\t\u018f\n\t"+ + "\3\t\3\t\3\t\3\t\3\t\5\t\u0196\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\3\t\5\t\u01a2\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u01ab\n\t\f\t\16\t"+ + "\u01ae\13\t\3\t\5\t\u01b1\n\t\3\t\5\t\u01b4\n\t\3\t\3\t\3\t\3\t\3\t\5"+ + "\t\u01bb\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u01c6\n\t\f\t\16"+ + "\t\u01c9\13\t\3\t\3\t\3\t\3\t\3\t\5\t\u01d0\n\t\3\t\3\t\3\t\5\t\u01d5"+ + "\n\t\3\t\5\t\u01d8\n\t\3\t\3\t\3\t\3\t\5\t\u01de\n\t\3\t\3\t\3\t\3\t\3"+ + "\t\3\t\3\t\3\t\3\t\5\t\u01e9\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+ + "\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+ + "\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\5\t\u0229\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0232\n\t\3\t\3\t\5\t\u0236"+ + "\n\t\3\t\3\t\3\t\3\t\5\t\u023c\n\t\3\t\3\t\5\t\u0240\n\t\3\t\3\t\3\t\5"+ + "\t\u0245\n\t\3\t\3\t\3\t\3\t\5\t\u024b\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\3\t\3\t\3\t\5\t\u0257\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u025f\n\t\3\t\3"+ + "\t\3\t\3\t\5\t\u0265\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5"+ + "\t\u0272\n\t\3\t\6\t\u0275\n\t\r\t\16\t\u0276\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0287\n\t\3\t\3\t\3\t\7\t\u028c\n"+ + "\t\f\t\16\t\u028f\13\t\3\t\5\t\u0292\n\t\3\t\3\t\3\t\3\t\5\t\u0298\n\t"+ + "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02a7\n\t\3\t"+ + "\3\t\5\t\u02ab\n\t\3\t\3\t\3\t\3\t\5\t\u02b1\n\t\3\t\3\t\3\t\3\t\5\t\u02b7"+ + "\n\t\3\t\5\t\u02ba\n\t\3\t\5\t\u02bd\n\t\3\t\3\t\3\t\3\t\5\t\u02c3\n\t"+ + "\3\t\3\t\5\t\u02c7\n\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u02cf\n\t\f\t\16\t"+ + "\u02d2\13\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02da\n\t\3\t\5\t\u02dd\n\t\3"+ + "\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02e6\n\t\3\t\3\t\3\t\5\t\u02eb\n\t\3\t"+ + "\3\t\3\t\3\t\5\t\u02f1\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u02f8\n\t\3\t\5\t\u02fb"+ + "\n\t\3\t\3\t\3\t\3\t\5\t\u0301\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u030a"+ + "\n\t\f\t\16\t\u030d\13\t\5\t\u030f\n\t\3\t\3\t\5\t\u0313\n\t\3\t\3\t\3"+ + "\t\5\t\u0318\n\t\3\t\3\t\3\t\5\t\u031d\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u0324"+ + "\n\t\3\t\5\t\u0327\n\t\3\t\5\t\u032a\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u0331"+ + "\n\t\3\t\3\t\3\t\5\t\u0336\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u033f\n"+ + "\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0347\n\t\3\t\3\t\3\t\3\t\5\t\u034d\n\t"+ + "\3\t\5\t\u0350\n\t\3\t\5\t\u0353\n\t\3\t\3\t\3\t\3\t\5\t\u0359\n\t\3\t"+ + "\3\t\5\t\u035d\n\t\3\t\3\t\5\t\u0361\n\t\3\t\3\t\5\t\u0365\n\t\5\t\u0367"+ + "\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u036f\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t"+ + "\u0377\n\t\3\t\3\t\3\t\3\t\5\t\u037d\n\t\3\t\3\t\3\t\3\t\5\t\u0383\n\t"+ + "\3\t\5\t\u0386\n\t\3\t\3\t\5\t\u038a\n\t\3\t\5\t\u038d\n\t\3\t\3\t\5\t"+ + "\u0391\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ + "\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u03a8\n\t\f\t\16\t\u03ab\13\t\5\t\u03ad\n"+ + "\t\3\t\3\t\5\t\u03b1\n\t\3\t\3\t\3\t\3\t\5\t\u03b7\n\t\3\t\5\t\u03ba\n"+ + "\t\3\t\5\t\u03bd\n\t\3\t\3\t\3\t\3\t\5\t\u03c3\n\t\3\t\3\t\3\t\3\t\3\t"+ + "\3\t\5\t\u03cb\n\t\3\t\3\t\3\t\5\t\u03d0\n\t\3\t\3\t\3\t\3\t\5\t\u03d6"+ + "\n\t\3\t\3\t\3\t\3\t\5\t\u03dc\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t"+ + "\u03e6\n\t\f\t\16\t\u03e9\13\t\5\t\u03eb\n\t\3\t\3\t\3\t\7\t\u03f0\n\t"+ + "\f\t\16\t\u03f3\13\t\3\t\3\t\7\t\u03f7\n\t\f\t\16\t\u03fa\13\t\3\t\3\t"+ + "\3\t\7\t\u03ff\n\t\f\t\16\t\u0402\13\t\5\t\u0404\n\t\3\n\3\n\3\n\3\n\3"+ + "\n\3\n\5\n\u040c\n\n\3\n\3\n\5\n\u0410\n\n\3\n\3\n\3\n\3\n\3\n\5\n\u0417"+ + "\n\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+ + "\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+ + "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+ + "\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+ + "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+ + "\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+ + "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u048b\n\n\3\n\3\n\3\n\3\n"+ + "\3\n\3\n\5\n\u0493\n\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u049b\n\n\3\n\3\n\3"+ + "\n\3\n\3\n\3\n\3\n\5\n\u04a4\n\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u04ae"+ + "\n\n\3\13\3\13\5\13\u04b2\n\13\3\13\5\13\u04b5\n\13\3\13\3\13\3\13\3\13"+ + "\5\13\u04bb\n\13\3\13\3\13\3\f\3\f\5\f\u04c1\n\f\3\f\3\f\3\f\3\f\3\r\3"+ + "\r\3\r\3\r\3\r\3\r\5\r\u04cd\n\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3"+ + "\16\3\16\5\16\u04d9\n\16\3\16\3\16\3\16\5\16\u04de\n\16\3\17\3\17\3\17"+ + "\3\20\3\20\3\20\3\21\5\21\u04e7\n\21\3\21\3\21\3\21\3\22\3\22\3\22\5\22"+ + "\u04ef\n\22\3\22\3\22\3\22\3\22\3\22\5\22\u04f6\n\22\5\22\u04f8\n\22\3"+ + "\22\3\22\3\22\5\22\u04fd\n\22\3\22\3\22\5\22\u0501\n\22\3\22\3\22\3\22"+ + "\5\22\u0506\n\22\3\22\3\22\3\22\5\22\u050b\n\22\3\22\3\22\3\22\5\22\u0510"+ + "\n\22\3\22\5\22\u0513\n\22\3\22\3\22\3\22\5\22\u0518\n\22\3\22\3\22\5"+ + "\22\u051c\n\22\3\22\3\22\3\22\5\22\u0521\n\22\5\22\u0523\n\22\3\23\3\23"+ + "\5\23\u0527\n\23\3\24\3\24\3\24\3\24\3\24\7\24\u052e\n\24\f\24\16\24\u0531"+ + "\13\24\3\24\3\24\3\25\3\25\3\25\5\25\u0538\n\25\3\26\3\26\3\27\3\27\3"+ + "\27\3\27\3\27\5\27\u0541\n\27\3\30\3\30\3\30\7\30\u0546\n\30\f\30\16\30"+ + "\u0549\13\30\3\31\3\31\3\31\3\31\7\31\u054f\n\31\f\31\16\31\u0552\13\31"+ + "\3\32\3\32\5\32\u0556\n\32\3\32\5\32\u0559\n\32\3\32\3\32\3\32\3\32\3"+ + "\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\7\34\u056c"+ + "\n\34\f\34\16\34\u056f\13\34\3\35\3\35\3\35\3\35\7\35\u0575\n\35\f\35"+ + "\16\35\u0578\13\35\3\35\3\35\3\36\3\36\5\36\u057e\n\36\3\36\5\36\u0581"+ + "\n\36\3\37\3\37\3\37\7\37\u0586\n\37\f\37\16\37\u0589\13\37\3\37\5\37"+ + "\u058c\n\37\3 \3 \3 \3 \5 \u0592\n \3!\3!\3!\3!\7!\u0598\n!\f!\16!\u059b"+ + "\13!\3!\3!\3\"\3\"\3\"\3\"\7\"\u05a3\n\"\f\"\16\"\u05a6\13\"\3\"\3\"\3"+ + "#\3#\3#\3#\3#\3#\5#\u05b0\n#\3$\3$\3$\3$\3$\5$\u05b7\n$\3%\3%\3%\3%\5"+ + "%\u05bd\n%\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\6\'\u05c8\n\'\r\'\16\'\u05c9"+ + "\3\'\3\'\3\'\3\'\3\'\5\'\u05d1\n\'\3\'\3\'\3\'\3\'\3\'\5\'\u05d8\n\'\3"+ + "\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\5\'\u05e4\n\'\3\'\3\'\3\'\3\'\7"+ + "\'\u05ea\n\'\f\'\16\'\u05ed\13\'\3\'\7\'\u05f0\n\'\f\'\16\'\u05f3\13\'"+ + "\5\'\u05f5\n\'\3(\3(\3(\3(\3(\7(\u05fc\n(\f(\16(\u05ff\13(\5(\u0601\n"+ + "(\3(\3(\3(\3(\3(\7(\u0608\n(\f(\16(\u060b\13(\5(\u060d\n(\3(\3(\3(\3("+ + "\3(\7(\u0614\n(\f(\16(\u0617\13(\5(\u0619\n(\3(\3(\3(\3(\3(\7(\u0620\n"+ + "(\f(\16(\u0623\13(\5(\u0625\n(\3(\5(\u0628\n(\3(\3(\3(\5(\u062d\n(\5("+ + "\u062f\n(\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\5*\u063b\n*\3*\3*\3*\3*\3*\5*"+ + "\u0642\n*\3*\3*\3*\3*\3*\5*\u0649\n*\3*\7*\u064c\n*\f*\16*\u064f\13*\3"+ + "+\3+\3+\3+\3+\3+\3+\3+\3+\5+\u065a\n+\3,\3,\5,\u065e\n,\3,\3,\5,\u0662"+ + "\n,\3-\3-\6-\u0666\n-\r-\16-\u0667\3.\3.\5.\u066c\n.\3.\3.\3.\3.\7.\u0672"+ + "\n.\f.\16.\u0675\13.\3.\5.\u0678\n.\3.\5.\u067b\n.\3.\5.\u067e\n.\3.\5"+ + ".\u0681\n.\3.\3.\5.\u0685\n.\3/\3/\5/\u0689\n/\3/\5/\u068c\n/\3/\3/\5"+ + "/\u0690\n/\3/\7/\u0693\n/\f/\16/\u0696\13/\3/\5/\u0699\n/\3/\5/\u069c"+ + "\n/\3/\5/\u069f\n/\3/\5/\u06a2\n/\5/\u06a4\n/\3\60\3\60\3\60\3\60\3\60"+ + "\3\60\3\60\3\60\3\60\3\60\5\60\u06b0\n\60\3\60\5\60\u06b3\n\60\3\60\3"+ + "\60\5\60\u06b7\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u06c1"+ + "\n\60\3\60\3\60\5\60\u06c5\n\60\5\60\u06c7\n\60\3\60\5\60\u06ca\n\60\3"+ + "\60\3\60\5\60\u06ce\n\60\3\61\3\61\7\61\u06d2\n\61\f\61\16\61\u06d5\13"+ + "\61\3\61\5\61\u06d8\n\61\3\61\3\61\3\62\3\62\3\62\3\63\3\63\3\63\3\63"+ + "\5\63\u06e3\n\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\5\64\u06ed\n"+ + "\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\5\65\u06f9\n\65"+ + "\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\7\66\u0706\n\66"+ + "\f\66\16\66\u0709\13\66\3\66\3\66\5\66\u070d\n\66\3\67\3\67\3\67\7\67"+ + "\u0712\n\67\f\67\16\67\u0715\13\67\38\38\38\38\39\39\39\3:\3:\3:\3;\3"+ + ";\3;\5;\u0724\n;\3;\7;\u0727\n;\f;\16;\u072a\13;\3;\3;\3<\3<\3<\3<\3<"+ + "\3<\7<\u0734\n<\f<\16<\u0737\13<\3<\3<\5<\u073b\n<\3=\3=\3=\3=\7=\u0741"+ + "\n=\f=\16=\u0744\13=\3=\7=\u0747\n=\f=\16=\u074a\13=\3=\5=\u074d\n=\3"+ + ">\3>\3>\3>\3>\7>\u0754\n>\f>\16>\u0757\13>\3>\3>\3>\3>\3>\3>\3>\3>\3>"+ + "\3>\7>\u0763\n>\f>\16>\u0766\13>\3>\3>\5>\u076a\n>\3>\3>\3>\3>\3>\3>\3"+ + ">\3>\7>\u0774\n>\f>\16>\u0777\13>\3>\3>\5>\u077b\n>\3?\3?\3?\3?\7?\u0781"+ + "\n?\f?\16?\u0784\13?\5?\u0786\n?\3?\3?\5?\u078a\n?\3@\3@\3@\3@\3@\3@\3"+ + "@\3@\3@\3@\7@\u0796\n@\f@\16@\u0799\13@\3@\3@\3@\3A\3A\3A\3A\3A\7A\u07a3"+ + "\nA\fA\16A\u07a6\13A\3A\3A\5A\u07aa\nA\3B\3B\5B\u07ae\nB\3B\5B\u07b1\n"+ + "B\3C\3C\3C\5C\u07b6\nC\3C\3C\3C\3C\3C\7C\u07bd\nC\fC\16C\u07c0\13C\5C"+ + "\u07c2\nC\3C\3C\3C\5C\u07c7\nC\3C\3C\3C\7C\u07cc\nC\fC\16C\u07cf\13C\5"+ + "C\u07d1\nC\3D\3D\3E\3E\7E\u07d7\nE\fE\16E\u07da\13E\3F\3F\3F\3F\5F\u07e0"+ + "\nF\3F\3F\3F\3F\3F\5F\u07e7\nF\3G\5G\u07ea\nG\3G\3G\3G\5G\u07ef\nG\3G"+ + "\5G\u07f2\nG\3G\3G\3G\5G\u07f7\nG\3G\3G\5G\u07fb\nG\3G\5G\u07fe\nG\3G"+ + "\5G\u0801\nG\3H\3H\3H\3H\5H\u0807\nH\3I\3I\3I\5I\u080c\nI\3I\3I\3J\5J"+ + "\u0811\nJ\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\5J\u0823\nJ"+ + "\5J\u0825\nJ\3J\5J\u0828\nJ\3K\3K\3K\3K\3L\3L\3L\7L\u0831\nL\fL\16L\u0834"+ + "\13L\3M\3M\3M\3M\7M\u083a\nM\fM\16M\u083d\13M\3M\3M\3N\3N\5N\u0843\nN"+ + "\3O\3O\3O\3O\7O\u0849\nO\fO\16O\u084c\13O\3O\3O\3P\3P\5P\u0852\nP\3Q\3"+ + "Q\5Q\u0856\nQ\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u085e\nQ\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u0866"+ + "\nQ\3Q\3Q\3Q\3Q\5Q\u086c\nQ\3R\3R\3R\3R\7R\u0872\nR\fR\16R\u0875\13R\3"+ + "R\3R\3S\3S\3S\3S\3S\7S\u087e\nS\fS\16S\u0881\13S\5S\u0883\nS\3S\3S\3S"+ + "\3T\5T\u0889\nT\3T\3T\5T\u088d\nT\5T\u088f\nT\3U\3U\3U\3U\3U\3U\3U\5U"+ + "\u0898\nU\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\5U\u08a4\nU\5U\u08a6\nU\3U\3U"+ + "\3U\3U\3U\5U\u08ad\nU\3U\3U\3U\3U\3U\5U\u08b4\nU\3U\3U\3U\3U\5U\u08ba"+ + "\nU\3U\3U\3U\3U\5U\u08c0\nU\5U\u08c2\nU\3V\3V\3V\7V\u08c7\nV\fV\16V\u08ca"+ + "\13V\3W\3W\3W\7W\u08cf\nW\fW\16W\u08d2\13W\3X\3X\3X\5X\u08d7\nX\3X\3X"+ + "\3Y\3Y\3Y\5Y\u08de\nY\3Y\3Y\3Z\3Z\5Z\u08e4\nZ\3Z\3Z\5Z\u08e8\nZ\5Z\u08ea"+ + "\nZ\3[\3[\3[\7[\u08ef\n[\f[\16[\u08f2\13[\3\\\3\\\3\\\3\\\7\\\u08f8\n"+ + "\\\f\\\16\\\u08fb\13\\\3\\\3\\\3]\3]\3]\3]\3]\3]\7]\u0905\n]\f]\16]\u0908"+ + "\13]\3]\3]\5]\u090c\n]\3^\3^\5^\u0910\n^\3_\3_\3`\3`\3`\3`\3`\3`\3`\3"+ + "`\3`\3`\5`\u091e\n`\5`\u0920\n`\3`\3`\3`\3`\3`\3`\7`\u0928\n`\f`\16`\u092b"+ + "\13`\3a\5a\u092e\na\3a\3a\3a\3a\3a\3a\5a\u0936\na\3a\3a\3a\3a\3a\7a\u093d"+ + "\na\fa\16a\u0940\13a\3a\3a\3a\5a\u0945\na\3a\3a\3a\3a\3a\3a\5a\u094d\n"+ + "a\3a\3a\3a\5a\u0952\na\3a\3a\3a\3a\3a\3a\3a\3a\7a\u095c\na\fa\16a\u095f"+ + "\13a\3a\3a\5a\u0963\na\3a\5a\u0966\na\3a\3a\3a\3a\5a\u096c\na\3a\3a\5"+ + "a\u0970\na\3a\3a\3a\5a\u0975\na\3a\3a\3a\5a\u097a\na\3a\3a\3a\5a\u097f"+ + "\na\3b\3b\3b\3b\5b\u0985\nb\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b"+ + "\3b\3b\3b\3b\3b\7b\u099a\nb\fb\16b\u099d\13b\3c\3c\3c\3c\6c\u09a3\nc\r"+ + "c\16c\u09a4\3c\3c\5c\u09a9\nc\3c\3c\3c\3c\3c\6c\u09b0\nc\rc\16c\u09b1"+ + "\3c\3c\5c\u09b6\nc\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\7c\u09c6"+ + "\nc\fc\16c\u09c9\13c\5c\u09cb\nc\3c\3c\3c\3c\3c\3c\5c\u09d3\nc\3c\3c\3"+ + "c\3c\3c\3c\3c\5c\u09dc\nc\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3"+ + "c\3c\3c\3c\3c\6c\u09f1\nc\rc\16c\u09f2\3c\3c\3c\3c\3c\3c\3c\3c\3c\5c\u09fe"+ + "\nc\3c\3c\3c\7c\u0a03\nc\fc\16c\u0a06\13c\5c\u0a08\nc\3c\3c\3c\3c\3c\3"+ + "c\3c\5c\u0a11\nc\3c\3c\5c\u0a15\nc\3c\3c\3c\3c\3c\3c\3c\3c\6c\u0a1f\n"+ + "c\rc\16c\u0a20\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3"+ + "c\3c\3c\3c\3c\5c\u0a3a\nc\3c\3c\3c\3c\3c\5c\u0a41\nc\3c\5c\u0a44\nc\3"+ + "c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\5c\u0a53\nc\3c\3c\5c\u0a57\nc\3"+ + "c\3c\3c\3c\3c\3c\3c\3c\7c\u0a61\nc\fc\16c\u0a64\13c\3d\3d\3d\3d\3d\3d"+ + "\3d\3d\6d\u0a6e\nd\rd\16d\u0a6f\5d\u0a72\nd\3e\3e\3f\3f\3g\3g\3h\3h\3"+ + "i\3i\3i\5i\u0a7f\ni\3j\3j\5j\u0a83\nj\3k\3k\3k\6k\u0a88\nk\rk\16k\u0a89"+ + "\3l\3l\3l\5l\u0a8f\nl\3m\3m\3m\3m\3m\3n\5n\u0a97\nn\3n\3n\5n\u0a9b\nn"+ + "\3o\3o\3o\3o\3o\3o\3o\5o\u0aa4\no\3p\3p\3p\5p\u0aa9\np\3q\3q\3q\3q\3q"+ + "\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\5q\u0aba\nq\3q\3q\5q\u0abe\nq\3q\3q\3q"+ + "\3q\3q\7q\u0ac5\nq\fq\16q\u0ac8\13q\3q\5q\u0acb\nq\5q\u0acd\nq\3r\3r\3"+ + "r\7r\u0ad2\nr\fr\16r\u0ad5\13r\3s\3s\3s\3s\5s\u0adb\ns\3s\5s\u0ade\ns"+ + "\3s\5s\u0ae1\ns\3t\3t\3t\7t\u0ae6\nt\ft\16t\u0ae9\13t\3u\3u\3u\3u\5u\u0aef"+ + "\nu\3u\5u\u0af2\nu\3v\3v\3v\7v\u0af7\nv\fv\16v\u0afa\13v\3w\3w\3w\3w\3"+ + "w\5w\u0b01\nw\3w\5w\u0b04\nw\3x\3x\3x\3x\3x\3y\3y\3y\3y\7y\u0b0f\ny\f"+ + "y\16y\u0b12\13y\3z\3z\3z\3z\3{\3{\3{\3{\3{\3{\3{\3{\3{\3{\3{\7{\u0b23"+ + "\n{\f{\16{\u0b26\13{\3{\3{\3{\3{\3{\7{\u0b2d\n{\f{\16{\u0b30\13{\5{\u0b32"+ + "\n{\3{\3{\3{\3{\3{\7{\u0b39\n{\f{\16{\u0b3c\13{\5{\u0b3e\n{\5{\u0b40\n"+ + "{\3{\5{\u0b43\n{\3{\5{\u0b46\n{\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3"+ + "|\3|\3|\3|\5|\u0b58\n|\3}\3}\3}\3}\3}\3}\3}\5}\u0b61\n}\3~\3~\3~\7~\u0b66"+ + "\n~\f~\16~\u0b69\13~\3\177\3\177\3\177\3\177\5\177\u0b6f\n\177\3\u0080"+ + "\3\u0080\3\u0080\7\u0080\u0b74\n\u0080\f\u0080\16\u0080\u0b77\13\u0080"+ + "\3\u0081\3\u0081\3\u0081\3\u0082\3\u0082\6\u0082\u0b7e\n\u0082\r\u0082"+ + "\16\u0082\u0b7f\3\u0082\5\u0082\u0b83\n\u0082\3\u0083\3\u0083\3\u0083"+ + "\5\u0083\u0b88\n\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084"+ + "\5\u0084\u0b90\n\u0084\3\u0085\3\u0085\3\u0086\3\u0086\5\u0086\u0b96\n"+ + "\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u0b9b\n\u0086\3\u0086\3\u0086\3"+ + "\u0086\5\u0086\u0ba0\n\u0086\3\u0086\3\u0086\5\u0086\u0ba4\n\u0086\3\u0086"+ + "\3\u0086\5\u0086\u0ba8\n\u0086\3\u0086\3\u0086\5\u0086\u0bac\n\u0086\3"+ + "\u0086\3\u0086\5\u0086\u0bb0\n\u0086\3\u0086\3\u0086\5\u0086\u0bb4\n\u0086"+ + "\3\u0086\3\u0086\5\u0086\u0bb8\n\u0086\3\u0086\5\u0086\u0bbb\n\u0086\3"+ + "\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0bc4\n"+ + "\u0087\3\u0088\3\u0088\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\7\u03a9"+ + "\u03e7\u03f1\u03f8\u0400\6R\u00be\u00c2\u00c4\u008b\2\4\6\b\n\f\16\20"+ + "\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhj"+ + "lnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092"+ + "\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa"+ + "\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2"+ + "\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da"+ + "\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2"+ + "\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a"+ + "\u010c\u010e\u0110\u0112\2,\4\2CC\u00b6\u00b6\4\2\"\"\u00c4\u00c4\4\2"+ + "AA\u0098\u0098\4\2ffss\3\2-.\4\2\u00e5\u00e5\u0103\u0103\4\2\21\21%%\7"+ + "\2**\66\66XXee\u008f\u008f\3\2GH\4\2XXee\4\2\u009c\u009c\u011d\u011d\4"+ + "\2\16\16\u0089\u0089\5\2@@\u0097\u0097\u00ce\u00ce\6\2SSzz\u00d7\u00d7"+ + "\u00f9\u00f9\5\2SS\u00d7\u00d7\u00f9\u00f9\4\2\31\31GG\4\2``\u0081\u0081"+ + "\4\2\20\20LL\4\2\u0121\u0121\u0123\u0123\5\2\20\20\25\25\u00db\u00db\5"+ + "\2[[\u00f3\u00f3\u00fb\u00fb\4\2\u0112\u0113\u0118\u0118\3\2\u0114\u0117"+ + "\4\2\u0112\u0113\u011b\u011b\4\2;;==\3\2\u00e3\u00e4\4\2\6\6ff\4\2\6\6"+ + "bb\5\2\35\35\u0084\u0084\u00ee\u00ee\3\2\u010a\u0111\3\2\u0112\u011c\6"+ + "\2\23\23ss\u009b\u009b\u00a3\u00a3\4\2[[\u00f3\u00f3\3\2\u0112\u0113\4"+ + "\2MM\u00ac\u00ac\4\2\u00a4\u00a4\u00dc\u00dc\4\2aa\u00b3\u00b3\3\2\u0122"+ + "\u0123\4\2NN\u00d6\u00d6\65\2\16\17\21\22\26\27\31\32\34\34\36\"%%\'*"+ + ",,.\64\66\669:?ACKMNRRTZ]]_adehjmmprtuwy{{~~\u0080\u0083\u0086\u0093\u0096"+ + "\u0098\u009a\u009a\u009d\u009e\u00a1\u00a2\u00a5\u00a5\u00a7\u00a8\u00aa"+ + "\u00b3\u00b5\u00bd\u00bf\u00c5\u00c7\u00ce\u00d2\u00d4\u00d6\u00d6\u00d8"+ + "\u00da\u00dc\u00e4\u00e6\u00ea\u00ed\u00ed\u00ef\u00f4\u00f6\u00f8\u00fc"+ + "\u00ff\u0102\u0104\u0107\u0107\u0117\u0117\21\2\24\2488SSggvvzz\177\177"+ + "\u0085\u0085\u0099\u0099\u009f\u009f\u00c6\u00c6\u00d1\u00d1\u00d7\u00d7"+ + "\u00f9\u00f9\u0101\u0101\23\2\16\23\25\679RTfhuwy{~\u0080\u0084\u0086"+ + "\u0098\u009a\u009e\u00a0\u00c5\u00c7\u00d0\u00d2\u00d6\u00d8\u00f8\u00fa"+ + "\u0100\u0102\u0109\u0117\u0117\2\u0da4\2\u0114\3\2\2\2\4\u011d\3\2\2\2"+ + "\6\u0120\3\2\2\2\b\u0123\3\2\2\2\n\u0126\3\2\2\2\f\u0129\3\2\2\2\16\u012c"+ + "\3\2\2\2\20\u0403\3\2\2\2\22\u04ad\3\2\2\2\24\u04af\3\2\2\2\26\u04c0\3"+ + "\2\2\2\30\u04c6\3\2\2\2\32\u04d2\3\2\2\2\34\u04df\3\2\2\2\36\u04e2\3\2"+ + "\2\2 \u04e6\3\2\2\2\"\u0522\3\2\2\2$\u0524\3\2\2\2&\u0528\3\2\2\2(\u0534"+ + "\3\2\2\2*\u0539\3\2\2\2,\u0540\3\2\2\2.\u0542\3\2\2\2\60\u054a\3\2\2\2"+ + "\62\u0553\3\2\2\2\64\u055e\3\2\2\2\66\u056d\3\2\2\28\u0570\3\2\2\2:\u057b"+ + "\3\2\2\2<\u058b\3\2\2\2>\u0591\3\2\2\2@\u0593\3\2\2\2B\u059e\3\2\2\2D"+ + "\u05af\3\2\2\2F\u05b6\3\2\2\2H\u05b8\3\2\2\2J\u05be\3\2\2\2L\u05f4\3\2"+ + "\2\2N\u0600\3\2\2\2P\u0630\3\2\2\2R\u0633\3\2\2\2T\u0659\3\2\2\2V\u065b"+ + "\3\2\2\2X\u0663\3\2\2\2Z\u0684\3\2\2\2\\\u06a3\3\2\2\2^\u06af\3\2\2\2"+ + "`\u06cf\3\2\2\2b\u06db\3\2\2\2d\u06de\3\2\2\2f\u06e7\3\2\2\2h\u06f8\3"+ + "\2\2\2j\u070c\3\2\2\2l\u070e\3\2\2\2n\u0716\3\2\2\2p\u071a\3\2\2\2r\u071d"+ + "\3\2\2\2t\u0720\3\2\2\2v\u073a\3\2\2\2x\u073c\3\2\2\2z\u077a\3\2\2\2|"+ + "\u0789\3\2\2\2~\u078b\3\2\2\2\u0080\u07a9\3\2\2\2\u0082\u07ab\3\2\2\2"+ + "\u0084\u07b2\3\2\2\2\u0086\u07d2\3\2\2\2\u0088\u07d4\3\2\2\2\u008a\u07e6"+ + "\3\2\2\2\u008c\u0800\3\2\2\2\u008e\u0806\3\2\2\2\u0090\u0808\3\2\2\2\u0092"+ + "\u0827\3\2\2\2\u0094\u0829\3\2\2\2\u0096\u082d\3\2\2\2\u0098\u0835\3\2"+ + "\2\2\u009a\u0840\3\2\2\2\u009c\u0844\3\2\2\2\u009e\u084f\3\2\2\2\u00a0"+ + "\u086b\3\2\2\2\u00a2\u086d\3\2\2\2\u00a4\u0878\3\2\2\2\u00a6\u088e\3\2"+ + "\2\2\u00a8\u08c1\3\2\2\2\u00aa\u08c3\3\2\2\2\u00ac\u08cb\3\2\2\2\u00ae"+ + "\u08d6\3\2\2\2\u00b0\u08dd\3\2\2\2\u00b2\u08e1\3\2\2\2\u00b4\u08eb\3\2"+ + "\2\2\u00b6\u08f3\3\2\2\2\u00b8\u090b\3\2\2\2\u00ba\u090f\3\2\2\2\u00bc"+ + "\u0911\3\2\2\2\u00be\u091f\3\2\2\2\u00c0\u097e\3\2\2\2\u00c2\u0984\3\2"+ + "\2\2\u00c4\u0a56\3\2\2\2\u00c6\u0a71\3\2\2\2\u00c8\u0a73\3\2\2\2\u00ca"+ + "\u0a75\3\2\2\2\u00cc\u0a77\3\2\2\2\u00ce\u0a79\3\2\2\2\u00d0\u0a7b\3\2"+ + "\2\2\u00d2\u0a80\3\2\2\2\u00d4\u0a87\3\2\2\2\u00d6\u0a8b\3\2\2\2\u00d8"+ + "\u0a90\3\2\2\2\u00da\u0a9a\3\2\2\2\u00dc\u0aa3\3\2\2\2\u00de\u0aa8\3\2"+ + "\2\2\u00e0\u0acc\3\2\2\2\u00e2\u0ace\3\2\2\2\u00e4\u0ad6\3\2\2\2\u00e6"+ + "\u0ae2\3\2\2\2\u00e8\u0aea\3\2\2\2\u00ea\u0af3\3\2\2\2\u00ec\u0afb\3\2"+ + "\2\2\u00ee\u0b05\3\2\2\2\u00f0\u0b0a\3\2\2\2\u00f2\u0b13\3\2\2\2\u00f4"+ + "\u0b45\3\2\2\2\u00f6\u0b57\3\2\2\2\u00f8\u0b60\3\2\2\2\u00fa\u0b62\3\2"+ + "\2\2\u00fc\u0b6e\3\2\2\2\u00fe\u0b70\3\2\2\2\u0100\u0b78\3\2\2\2\u0102"+ + "\u0b82\3\2\2\2\u0104\u0b87\3\2\2\2\u0106\u0b8f\3\2\2\2\u0108\u0b91\3\2"+ + "\2\2\u010a\u0bba\3\2\2\2\u010c\u0bc3\3\2\2\2\u010e\u0bc5\3\2\2\2\u0110"+ + "\u0bc7\3\2\2\2\u0112\u0bc9\3\2\2\2\u0114\u0118\5\20\t\2\u0115\u0117\7"+ + "\3\2\2\u0116\u0115\3\2\2\2\u0117\u011a\3\2\2\2\u0118\u0116\3\2\2\2\u0118"+ + "\u0119\3\2\2\2\u0119\u011b\3\2\2\2\u011a\u0118\3\2\2\2\u011b\u011c\7\2"+ + "\2\3\u011c\3\3\2\2\2\u011d\u011e\5\u00b2Z\2\u011e\u011f\7\2\2\3\u011f"+ + "\5\3\2\2\2\u0120\u0121\5\u00aeX\2\u0121\u0122\7\2\2\3\u0122\7\3\2\2\2"+ + "\u0123\u0124\5\u00acW\2\u0124\u0125\7\2\2\3\u0125\t\3\2\2\2\u0126\u0127"+ + "\5\u00b0Y\2\u0127\u0128\7\2\2\3\u0128\13\3\2\2\2\u0129\u012a\5\u00e0q"+ + "\2\u012a\u012b\7\2\2\3\u012b\r\3\2\2\2\u012c\u012d\5\u00e6t\2\u012d\u012e"+ + "\7\2\2\3\u012e\17\3\2\2\2\u012f\u0404\5 \21\2\u0130\u0132\5\60\31\2\u0131"+ + "\u0130\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0404\5L"+ + "\'\2\u0134\u0136\7\u00ff\2\2\u0135\u0137\7\u0097\2\2\u0136\u0135\3\2\2"+ + "\2\u0136\u0137\3\2\2\2\u0137\u0138\3\2\2\2\u0138\u0404\5\u00acW\2\u0139"+ + "\u013a\7\67\2\2\u013a\u013e\5*\26\2\u013b\u013c\7p\2\2\u013c\u013d\7\u009b"+ + "\2\2\u013d\u013f\7U\2\2\u013e\u013b\3\2\2\2\u013e\u013f\3\2\2\2\u013f"+ + "\u0140\3\2\2\2\u0140\u0148\5\u00acW\2\u0141\u0147\5\36\20\2\u0142\u0147"+ + "\5\34\17\2\u0143\u0144\7\u0108\2\2\u0144\u0145\t\2\2\2\u0145\u0147\58"+ + "\35\2\u0146\u0141\3\2\2\2\u0146\u0142\3\2\2\2\u0146\u0143\3\2\2\2\u0147"+ + "\u014a\3\2\2\2\u0148\u0146\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u0404\3\2"+ + "\2\2\u014a\u0148\3\2\2\2\u014b\u014c\7\21\2\2\u014c\u014d\5*\26\2\u014d"+ + "\u014e\5\u00acW\2\u014e\u014f\7\u00d6\2\2\u014f\u0150\t\2\2\2\u0150\u0151"+ + "\58\35\2\u0151\u0404\3\2\2\2\u0152\u0153\7\21\2\2\u0153\u0154\5*\26\2"+ + "\u0154\u0155\5\u00acW\2\u0155\u0156\7\u00d6\2\2\u0156\u0157\5\34\17\2"+ + "\u0157\u0404\3\2\2\2\u0158\u0159\7N\2\2\u0159\u015c\5*\26\2\u015a\u015b"+ + "\7p\2\2\u015b\u015d\7U\2\2\u015c\u015a\3\2\2\2\u015c\u015d\3\2\2\2\u015d"+ + "\u015e\3\2\2\2\u015e\u0160\5\u00acW\2\u015f\u0161\t\3\2\2\u0160\u015f"+ + "\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0404\3\2\2\2\u0162\u0163\7\u00d9\2"+ + "\2\u0163\u0166\t\4\2\2\u0164\u0165\t\5\2\2\u0165\u0167\5\u00acW\2\u0166"+ + "\u0164\3\2\2\2\u0166\u0167\3\2\2\2\u0167\u016c\3\2\2\2\u0168\u016a\7\u0086"+ + "\2\2\u0169\u0168\3\2\2\2\u0169\u016a\3\2\2\2\u016a\u016b\3\2\2\2\u016b"+ + "\u016d\7\u011d\2\2\u016c\u0169\3\2\2\2\u016c\u016d\3\2\2\2\u016d\u0404"+ + "\3\2\2\2\u016e\u016f\6\t\2\2\u016f\u0174\5\24\13\2\u0170\u0171\7\4\2\2"+ + "\u0171\u0172\5\u00e6t\2\u0172\u0173\7\5\2\2\u0173\u0175\3\2\2\2\u0174"+ + "\u0170\3\2\2\2\u0174\u0175\3\2\2\2\u0175\u0177\3\2\2\2\u0176\u0178\5\64"+ + "\33\2\u0177\u0176\3\2\2\2\u0177\u0178\3\2\2\2\u0178\u0179\3\2\2\2\u0179"+ + "\u017e\5\66\34\2\u017a\u017c\7\30\2\2\u017b\u017a\3\2\2\2\u017b\u017c"+ + "\3\2\2\2\u017c\u017d\3\2\2\2\u017d\u017f\5 \21\2\u017e\u017b\3\2\2\2\u017e"+ + "\u017f\3\2\2\2\u017f\u0404\3\2\2\2\u0180\u0181\6\t\3\2\u0181\u0186\5\24"+ + "\13\2\u0182\u0183\7\4\2\2\u0183\u0184\5\u00e6t\2\u0184\u0185\7\5\2\2\u0185"+ + "\u0187\3\2\2\2\u0186\u0182\3\2\2\2\u0186\u0187\3\2\2\2\u0187\u0188\3\2"+ + "\2\2\u0188\u0189\5\64\33\2\u0189\u018e\5\66\34\2\u018a\u018c\7\30\2\2"+ + "\u018b\u018a\3\2\2\2\u018b\u018c\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018f"+ + "\5 \21\2\u018e\u018b\3\2\2\2\u018e\u018f\3\2\2\2\u018f\u0404\3\2\2\2\u0190"+ + "\u0195\5\24\13\2\u0191\u0192\7\4\2\2\u0192\u0193\5\u00e6t\2\u0193\u0194"+ + "\7\5\2\2\u0194\u0196\3\2\2\2\u0195\u0191\3\2\2\2\u0195\u0196\3\2\2\2\u0196"+ + "\u01ac\3\2\2\2\u0197\u01ab\5\36\20\2\u0198\u0199\7\u00ad\2\2\u0199\u019a"+ + "\7 \2\2\u019a\u019b\7\4\2\2\u019b\u019c\5\u00e6t\2\u019c\u019d\7\5\2\2"+ + "\u019d\u01a2\3\2\2\2\u019e\u019f\7\u00ad\2\2\u019f\u01a0\7 \2\2\u01a0"+ + "\u01a2\5\u0094K\2\u01a1\u0198\3\2\2\2\u01a1\u019e\3\2\2\2\u01a2\u01ab"+ + "\3\2\2\2\u01a3\u01ab\5\30\r\2\u01a4\u01ab\5\32\16\2\u01a5\u01ab\5\u00a8"+ + "U\2\u01a6\u01ab\5D#\2\u01a7\u01ab\5\34\17\2\u01a8\u01a9\7\u00e8\2\2\u01a9"+ + "\u01ab\58\35\2\u01aa\u0197\3\2\2\2\u01aa\u01a1\3\2\2\2\u01aa\u01a3\3\2"+ + "\2\2\u01aa\u01a4\3\2\2\2\u01aa\u01a5\3\2\2\2\u01aa\u01a6\3\2\2\2\u01aa"+ + "\u01a7\3\2\2\2\u01aa\u01a8\3\2\2\2\u01ab\u01ae\3\2\2\2\u01ac\u01aa\3\2"+ + "\2\2\u01ac\u01ad\3\2\2\2\u01ad\u01b3\3\2\2\2\u01ae\u01ac\3\2\2\2\u01af"+ + "\u01b1\7\30\2\2\u01b0\u01af\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01b2\3"+ + "\2\2\2\u01b2\u01b4\5 \21\2\u01b3\u01b0\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4"+ + "\u0404\3\2\2\2\u01b5\u01b6\7\67\2\2\u01b6\u01ba\7\u00e5\2\2\u01b7\u01b8"+ + "\7p\2\2\u01b8\u01b9\7\u009b\2\2\u01b9\u01bb\7U\2\2\u01ba\u01b7\3\2\2\2"+ + "\u01ba\u01bb\3\2\2\2\u01bb\u01bc\3\2\2\2\u01bc\u01bd\5\u00aeX\2\u01bd"+ + "\u01be\7\u0086\2\2\u01be\u01c7\5\u00aeX\2\u01bf\u01c6\5\64\33\2\u01c0"+ + "\u01c6\5\u00a8U\2\u01c1\u01c6\5D#\2\u01c2\u01c6\5\34\17\2\u01c3\u01c4"+ + "\7\u00e8\2\2\u01c4\u01c6\58\35\2\u01c5\u01bf\3\2\2\2\u01c5\u01c0\3\2\2"+ + "\2\u01c5\u01c1\3\2\2\2\u01c5\u01c2\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c6\u01c9"+ + "\3\2\2\2\u01c7\u01c5\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8\u0404\3\2\2\2\u01c9"+ + "\u01c7\3\2\2\2\u01ca\u01cf\5\26\f\2\u01cb\u01cc\7\4\2\2\u01cc\u01cd\5"+ + "\u00e6t\2\u01cd\u01ce\7\5\2\2\u01ce\u01d0\3\2\2\2\u01cf\u01cb\3\2\2\2"+ + "\u01cf\u01d0\3\2\2\2\u01d0\u01d1\3\2\2\2\u01d1\u01d2\5\64\33\2\u01d2\u01d7"+ + "\5\66\34\2\u01d3\u01d5\7\30\2\2\u01d4\u01d3\3\2\2\2\u01d4\u01d5\3\2\2"+ + "\2\u01d5\u01d6\3\2\2\2\u01d6\u01d8\5 \21\2\u01d7\u01d4\3\2\2\2\u01d7\u01d8"+ + "\3\2\2\2\u01d8\u0404\3\2\2\2\u01d9\u01da\7\22\2\2\u01da\u01db\7\u00e5"+ + "\2\2\u01db\u01dd\5\u00acW\2\u01dc\u01de\5&\24\2\u01dd\u01dc\3\2\2\2\u01dd"+ + "\u01de\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01e0\7\63\2\2\u01e0\u01e8\7"+ + "\u00df\2\2\u01e1\u01e9\5\u0104\u0083\2\u01e2\u01e3\7b\2\2\u01e3\u01e4"+ + "\7.\2\2\u01e4\u01e9\5\u0096L\2\u01e5\u01e6\7b\2\2\u01e6\u01e7\7\20\2\2"+ + "\u01e7\u01e9\7.\2\2\u01e8\u01e1\3\2\2\2\u01e8\u01e2\3\2\2\2\u01e8\u01e5"+ + "\3\2\2\2\u01e8\u01e9\3\2\2\2\u01e9\u0404\3\2\2\2\u01ea\u01eb\7\21\2\2"+ + "\u01eb\u01ec\7\u00e5\2\2\u01ec\u01ed\5\u00acW\2\u01ed\u01ee\7\16\2\2\u01ee"+ + "\u01ef\t\6\2\2\u01ef\u01f0\5\u00e2r\2\u01f0\u0404\3\2\2\2\u01f1\u01f2"+ + "\7\21\2\2\u01f2\u01f3\7\u00e5\2\2\u01f3\u01f4\5\u00acW\2\u01f4\u01f5\7"+ + "\16\2\2\u01f5\u01f6\t\6\2\2\u01f6\u01f7\7\4\2\2\u01f7\u01f8\5\u00e2r\2"+ + "\u01f8\u01f9\7\5\2\2\u01f9\u0404\3\2\2\2\u01fa\u01fb\7\21\2\2\u01fb\u01fc"+ + "\7\u00e5\2\2\u01fc\u01fd\5\u00acW\2\u01fd\u01fe\7\u00c0\2\2\u01fe\u01ff"+ + "\7-\2\2\u01ff\u0200\5\u00acW\2\u0200\u0201\7\u00ec\2\2\u0201\u0202\5\u0100"+ + "\u0081\2\u0202\u0404\3\2\2\2\u0203\u0204\7\21\2\2\u0204\u0205\7\u00e5"+ + "\2\2\u0205\u0206\5\u00acW\2\u0206\u0207\7N\2\2\u0207\u0208\t\6\2\2\u0208"+ + "\u0209\7\4\2\2\u0209\u020a\5\u00aaV\2\u020a\u020b\7\5\2\2\u020b\u0404"+ + "\3\2\2\2\u020c\u020d\7\21\2\2\u020d\u020e\7\u00e5\2\2\u020e\u020f\5\u00ac"+ + "W\2\u020f\u0210\7N\2\2\u0210\u0211\t\6\2\2\u0211\u0212\5\u00aaV\2\u0212"+ + "\u0404\3\2\2\2\u0213\u0214\7\21\2\2\u0214\u0215\t\7\2\2\u0215\u0216\5"+ + "\u00acW\2\u0216\u0217\7\u00c0\2\2\u0217\u0218\7\u00ec\2\2\u0218\u0219"+ + "\5\u00acW\2\u0219\u0404\3\2\2\2\u021a\u021b\7\21\2\2\u021b\u021c\t\7\2"+ + "\2\u021c\u021d\5\u00acW\2\u021d\u021e\7\u00d6\2\2\u021e\u021f\7\u00e8"+ + "\2\2\u021f\u0220\58\35\2\u0220\u0404\3\2\2\2\u0221\u0222\7\21\2\2\u0222"+ + "\u0223\t\7\2\2\u0223\u0224\5\u00acW\2\u0224\u0225\7\u00fd\2\2\u0225\u0228"+ + "\7\u00e8\2\2\u0226\u0227\7p\2\2\u0227\u0229\7U\2\2\u0228\u0226\3\2\2\2"+ + "\u0228\u0229\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\58\35\2\u022b\u0404"+ + "\3\2\2\2\u022c\u022d\7\21\2\2\u022d\u022e\7\u00e5\2\2\u022e\u022f\5\u00ac"+ + "W\2\u022f\u0231\t\b\2\2\u0230\u0232\7-\2\2\u0231\u0230\3\2\2\2\u0231\u0232"+ + "\3\2\2\2\u0232\u0233\3\2\2\2\u0233\u0235\5\u00acW\2\u0234\u0236\5\u010c"+ + "\u0087\2\u0235\u0234\3\2\2\2\u0235\u0236\3\2\2\2\u0236\u0404\3\2\2\2\u0237"+ + "\u0238\7\21\2\2\u0238\u0239\7\u00e5\2\2\u0239\u023b\5\u00acW\2\u023a\u023c"+ + "\5&\24\2\u023b\u023a\3\2\2\2\u023b\u023c\3\2\2\2\u023c\u023d\3\2\2\2\u023d"+ + "\u023f\7%\2\2\u023e\u0240\7-\2\2\u023f\u023e\3\2\2\2\u023f\u0240\3\2\2"+ + "\2\u0240\u0241\3\2\2\2\u0241\u0242\5\u00acW\2\u0242\u0244\5\u00e8u\2\u0243"+ + "\u0245\5\u00dep\2\u0244\u0243\3\2\2\2\u0244\u0245\3\2\2\2\u0245\u0404"+ + "\3\2\2\2\u0246\u0247\7\21\2\2\u0247\u0248\7\u00e5\2\2\u0248\u024a\5\u00ac"+ + "W\2\u0249\u024b\5&\24\2\u024a\u0249\3\2\2\2\u024a\u024b\3\2\2\2\u024b"+ + "\u024c\3\2\2\2\u024c\u024d\7\u00c2\2\2\u024d\u024e\7.\2\2\u024e\u024f"+ + "\7\4\2\2\u024f\u0250\5\u00e2r\2\u0250\u0251\7\5\2\2\u0251\u0404\3\2\2"+ + "\2\u0252\u0253\7\21\2\2\u0253\u0254\7\u00e5\2\2\u0254\u0256\5\u00acW\2"+ + "\u0255\u0257\5&\24\2\u0256\u0255\3\2\2\2\u0256\u0257\3\2\2\2\u0257\u0258"+ + "\3\2\2\2\u0258\u0259\7\u00d6\2\2\u0259\u025a\7\u00d3\2\2\u025a\u025e\7"+ + "\u011d\2\2\u025b\u025c\7\u0108\2\2\u025c\u025d\7\u00d4\2\2\u025d\u025f"+ + "\58\35\2\u025e\u025b\3\2\2\2\u025e\u025f\3\2\2\2\u025f\u0404\3\2\2\2\u0260"+ + "\u0261\7\21\2\2\u0261\u0262\7\u00e5\2\2\u0262\u0264\5\u00acW\2\u0263\u0265"+ + "\5&\24\2\u0264\u0263\3\2\2\2\u0264\u0265\3\2\2\2\u0265\u0266\3\2\2\2\u0266"+ + "\u0267\7\u00d6\2\2\u0267\u0268\7\u00d4\2\2\u0268\u0269\58\35\2\u0269\u0404"+ + "\3\2\2\2\u026a\u026b\7\21\2\2\u026b\u026c\t\7\2\2\u026c\u026d\5\u00ac"+ + "W\2\u026d\u0271\7\16\2\2\u026e\u026f\7p\2\2\u026f\u0270\7\u009b\2\2\u0270"+ + "\u0272\7U\2\2\u0271\u026e\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u0274\3\2"+ + "\2\2\u0273\u0275\5$\23\2\u0274\u0273\3\2\2\2\u0275\u0276\3\2\2\2\u0276"+ + "\u0274\3\2\2\2\u0276\u0277\3\2\2\2\u0277\u0404\3\2\2\2\u0278\u0279\7\21"+ + "\2\2\u0279\u027a\7\u00e5\2\2\u027a\u027b\5\u00acW\2\u027b\u027c\5&\24"+ + "\2\u027c\u027d\7\u00c0\2\2\u027d\u027e\7\u00ec\2\2\u027e\u027f\5&\24\2"+ + "\u027f\u0404\3\2\2\2\u0280\u0281\7\21\2\2\u0281\u0282\t\7\2\2\u0282\u0283"+ + "\5\u00acW\2\u0283\u0286\7N\2\2\u0284\u0285\7p\2\2\u0285\u0287\7U\2\2\u0286"+ + "\u0284\3\2\2\2\u0286\u0287\3\2\2\2\u0287\u0288\3\2\2\2\u0288\u028d\5&"+ + "\24\2\u0289\u028a\7\6\2\2\u028a\u028c\5&\24\2\u028b\u0289\3\2\2\2\u028c"+ + "\u028f\3\2\2\2\u028d\u028b\3\2\2\2\u028d\u028e\3\2\2\2\u028e\u0291\3\2"+ + "\2\2\u028f\u028d\3\2\2\2\u0290\u0292\7\u00b7\2\2\u0291\u0290\3\2\2\2\u0291"+ + "\u0292\3\2\2\2\u0292\u0404\3\2\2\2\u0293\u0294\7\21\2\2\u0294\u0295\7"+ + "\u00e5\2\2\u0295\u0297\5\u00acW\2\u0296\u0298\5&\24\2\u0297\u0296\3\2"+ + "\2\2\u0297\u0298\3\2\2\2\u0298\u0299\3\2\2\2\u0299\u029a\7\u00d6\2\2\u029a"+ + "\u029b\5\34\17\2\u029b\u0404\3\2\2\2\u029c\u029d\7\21\2\2\u029d\u029e"+ + "\7\u00e5\2\2\u029e\u029f\5\u00acW\2\u029f\u02a0\7\u00bc\2\2\u02a0\u02a1"+ + "\7\u00ae\2\2\u02a1\u0404\3\2\2\2\u02a2\u02a3\7N\2\2\u02a3\u02a6\7\u00e5"+ + "\2\2\u02a4\u02a5\7p\2\2\u02a5\u02a7\7U\2\2\u02a6\u02a4\3\2\2\2\u02a6\u02a7"+ + "\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02aa\5\u00acW\2\u02a9\u02ab\7\u00b7"+ + "\2\2\u02aa\u02a9\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\u0404\3\2\2\2\u02ac"+ + "\u02ad\7N\2\2\u02ad\u02b0\7\u0103\2\2\u02ae\u02af\7p\2\2\u02af\u02b1\7"+ + "U\2\2\u02b0\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2"+ + "\u0404\5\u00acW\2\u02b3\u02b6\7\67\2\2\u02b4\u02b5\7\u00a3\2\2\u02b5\u02b7"+ + "\7\u00c2\2\2\u02b6\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02bc\3\2\2"+ + "\2\u02b8\u02ba\7j\2\2\u02b9\u02b8\3\2\2\2\u02b9\u02ba\3\2\2\2\u02ba\u02bb"+ + "\3\2\2\2\u02bb\u02bd\7\u00e9\2\2\u02bc\u02b9\3\2\2\2\u02bc\u02bd\3\2\2"+ + "\2\u02bd\u02be\3\2\2\2\u02be\u02c2\7\u0103\2\2\u02bf\u02c0\7p\2\2\u02c0"+ + "\u02c1\7\u009b\2\2\u02c1\u02c3\7U\2\2\u02c2\u02bf\3\2\2\2\u02c2\u02c3"+ + "\3\2\2\2\u02c3\u02c4\3\2\2\2\u02c4\u02c6\5\u00acW\2\u02c5\u02c7\5\u009c"+ + "O\2\u02c6\u02c5\3\2\2\2\u02c6\u02c7\3\2\2\2\u02c7\u02d0\3\2\2\2\u02c8"+ + "\u02cf\5\36\20\2\u02c9\u02ca\7\u00ad\2\2\u02ca\u02cb\7\u009f\2\2\u02cb"+ + "\u02cf\5\u0094K\2\u02cc\u02cd\7\u00e8\2\2\u02cd\u02cf\58\35\2\u02ce\u02c8"+ + "\3\2\2\2\u02ce\u02c9\3\2\2\2\u02ce\u02cc\3\2\2\2\u02cf\u02d2\3\2\2\2\u02d0"+ + "\u02ce\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02d3\3\2\2\2\u02d2\u02d0\3\2"+ + "\2\2\u02d3\u02d4\7\30\2\2\u02d4\u02d5\5 \21\2\u02d5\u0404\3\2\2\2\u02d6"+ + "\u02d9\7\67\2\2\u02d7\u02d8\7\u00a3\2\2\u02d8\u02da\7\u00c2\2\2\u02d9"+ + "\u02d7\3\2\2\2\u02d9\u02da\3\2\2\2\u02da\u02dc\3\2\2\2\u02db\u02dd\7j"+ + "\2\2\u02dc\u02db\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02de\3\2\2\2\u02de"+ + "\u02df\7\u00e9\2\2\u02df\u02e0\7\u0103\2\2\u02e0\u02e5\5\u00aeX\2\u02e1"+ + "\u02e2\7\4\2\2\u02e2\u02e3\5\u00e6t\2\u02e3\u02e4\7\5\2\2\u02e4\u02e6"+ + "\3\2\2\2\u02e5\u02e1\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7"+ + "\u02ea\5\64\33\2\u02e8\u02e9\7\u00a2\2\2\u02e9\u02eb\58\35\2\u02ea\u02e8"+ + "\3\2\2\2\u02ea\u02eb\3\2\2\2\u02eb\u0404\3\2\2\2\u02ec\u02ed\7\21\2\2"+ + "\u02ed\u02ee\7\u0103\2\2\u02ee\u02f0\5\u00acW\2\u02ef\u02f1\7\30\2\2\u02f0"+ + "\u02ef\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2\u02f3\5 "+ + "\21\2\u02f3\u0404\3\2\2\2\u02f4\u02f7\7\67\2\2\u02f5\u02f6\7\u00a3\2\2"+ + "\u02f6\u02f8\7\u00c2\2\2\u02f7\u02f5\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8"+ + "\u02fa\3\2\2\2\u02f9\u02fb\7\u00e9\2\2\u02fa\u02f9\3\2\2\2\u02fa\u02fb"+ + "\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc\u0300\7h\2\2\u02fd\u02fe\7p\2\2\u02fe"+ + "\u02ff\7\u009b\2\2\u02ff\u0301\7U\2\2\u0300\u02fd\3\2\2\2\u0300\u0301"+ + "\3\2\2\2\u0301\u0302\3\2\2\2\u0302\u0303\5\u00acW\2\u0303\u0304\7\30\2"+ + "\2\u0304\u030e\7\u011d\2\2\u0305\u0306\7\u0101\2\2\u0306\u030b\5J&\2\u0307"+ + "\u0308\7\6\2\2\u0308\u030a\5J&\2\u0309\u0307\3\2\2\2\u030a\u030d\3\2\2"+ + "\2\u030b\u0309\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030f\3\2\2\2\u030d\u030b"+ + "\3\2\2\2\u030e\u0305\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u0404\3\2\2\2\u0310"+ + "\u0312\7N\2\2\u0311\u0313\7\u00e9\2\2\u0312\u0311\3\2\2\2\u0312\u0313"+ + "\3\2\2\2\u0313\u0314\3\2\2\2\u0314\u0317\7h\2\2\u0315\u0316\7p\2\2\u0316"+ + "\u0318\7U\2\2\u0317\u0315\3\2\2\2\u0317\u0318\3\2\2\2\u0318\u0319\3\2"+ + "\2\2\u0319\u0404\5\u00acW\2\u031a\u031c\7V\2\2\u031b\u031d\t\t\2\2\u031c"+ + "\u031b\3\2\2\2\u031c\u031d\3\2\2\2\u031d\u031e\3\2\2\2\u031e\u0404\5\20"+ + "\t\2\u031f\u0320\7\u00d9\2\2\u0320\u0323\7\u00e6\2\2\u0321\u0322\t\5\2"+ + "\2\u0322\u0324\5\u00acW\2\u0323\u0321\3\2\2\2\u0323\u0324\3\2\2\2\u0324"+ + "\u0329\3\2\2\2\u0325\u0327\7\u0086\2\2\u0326\u0325\3\2\2\2\u0326\u0327"+ + "\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u032a\7\u011d\2\2\u0329\u0326\3\2\2"+ + "\2\u0329\u032a\3\2\2\2\u032a\u0404\3\2\2\2\u032b\u032c\7\u00d9\2\2\u032c"+ + "\u032d\7\u00e5\2\2\u032d\u0330\7X\2\2\u032e\u032f\t\5\2\2\u032f\u0331"+ + "\5\u00acW\2\u0330\u032e\3\2\2\2\u0330\u0331\3\2\2\2\u0331\u0332\3\2\2"+ + "\2\u0332\u0333\7\u0086\2\2\u0333\u0335\7\u011d\2\2\u0334\u0336\5&\24\2"+ + "\u0335\u0334\3\2\2\2\u0335\u0336\3\2\2\2\u0336\u0404\3\2\2\2\u0337\u0338"+ + "\7\u00d9\2\2\u0338\u0339\7\u00e8\2\2\u0339\u033e\5\u00acW\2\u033a\u033b"+ + "\7\4\2\2\u033b\u033c\5<\37\2\u033c\u033d\7\5\2\2\u033d\u033f\3\2\2\2\u033e"+ + "\u033a\3\2\2\2\u033e\u033f\3\2\2\2\u033f\u0404\3\2\2\2\u0340\u0341\7\u00d9"+ + "\2\2\u0341\u0342\7.\2\2\u0342\u0343\t\5\2\2\u0343\u0346\5\u00acW\2\u0344"+ + "\u0345\t\5\2\2\u0345\u0347\5\u00acW\2\u0346\u0344\3\2\2\2\u0346\u0347"+ + "\3\2\2\2\u0347\u0404\3\2\2\2\u0348\u0349\7\u00d9\2\2\u0349\u034c\7\u0104"+ + "\2\2\u034a\u034b\t\5\2\2\u034b\u034d\5\u00acW\2\u034c\u034a\3\2\2\2\u034c"+ + "\u034d\3\2\2\2\u034d\u0352\3\2\2\2\u034e\u0350\7\u0086\2\2\u034f\u034e"+ + "\3\2\2\2\u034f\u0350\3\2\2\2\u0350\u0351\3\2\2\2\u0351\u0353\7\u011d\2"+ + "\2\u0352\u034f\3\2\2\2\u0352\u0353\3\2\2\2\u0353\u0404\3\2\2\2\u0354\u0355"+ + "\7\u00d9\2\2\u0355\u0356\7\u00ae\2\2\u0356\u0358\5\u00acW\2\u0357\u0359"+ + "\5&\24\2\u0358\u0357\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u0404\3\2\2\2\u035a"+ + "\u035c\7\u00d9\2\2\u035b\u035d\5\u0104\u0083\2\u035c\u035b\3\2\2\2\u035c"+ + "\u035d\3\2\2\2\u035d\u035e\3\2\2\2\u035e\u0366\7i\2\2\u035f\u0361\7\u0086"+ + "\2\2\u0360\u035f\3\2\2\2\u0360\u0361\3\2\2\2\u0361\u0364\3\2\2\2\u0362"+ + "\u0365\5\u00acW\2\u0363\u0365\7\u011d\2\2\u0364\u0362\3\2\2\2\u0364\u0363"+ + "\3\2\2\2\u0365\u0367\3\2\2\2\u0366\u0360\3\2\2\2\u0366\u0367\3\2\2\2\u0367"+ + "\u0404\3\2\2\2\u0368\u0369\7\u00d9\2\2\u0369\u036a\7\67\2\2\u036a\u036b"+ + "\7\u00e5\2\2\u036b\u036e\5\u00acW\2\u036c\u036d\7\30\2\2\u036d\u036f\7"+ + "\u00d3\2\2\u036e\u036c\3\2\2\2\u036e\u036f\3\2\2\2\u036f\u0404\3\2\2\2"+ + "\u0370\u0371\7\u00d9\2\2\u0371\u0372\7:\2\2\u0372\u0404\7\u0097\2\2\u0373"+ + "\u0374\t\n\2\2\u0374\u0376\7h\2\2\u0375\u0377\7X\2\2\u0376\u0375\3\2\2"+ + "\2\u0376\u0377\3\2\2\2\u0377\u0378\3\2\2\2\u0378\u0404\5,\27\2\u0379\u037a"+ + "\t\n\2\2\u037a\u037c\5*\26\2\u037b\u037d\7X\2\2\u037c\u037b\3\2\2\2\u037c"+ + "\u037d\3\2\2\2\u037d\u037e\3\2\2\2\u037e\u037f\5\u00acW\2\u037f\u0404"+ + "\3\2\2\2\u0380\u0382\t\n\2\2\u0381\u0383\7\u00e5\2\2\u0382\u0381\3\2\2"+ + "\2\u0382\u0383\3\2\2\2\u0383\u0385\3\2\2\2\u0384\u0386\t\13\2\2\u0385"+ + "\u0384\3\2\2\2\u0385\u0386\3\2\2\2\u0386\u0387\3\2\2\2\u0387\u0389\5\u00ac"+ + "W\2\u0388\u038a\5&\24\2\u0389\u0388\3\2\2\2\u0389\u038a\3\2\2\2\u038a"+ + "\u038c\3\2\2\2\u038b\u038d\5.\30\2\u038c\u038b\3\2\2\2\u038c\u038d\3\2"+ + "\2\2\u038d\u0404\3\2\2\2\u038e\u0390\t\n\2\2\u038f\u0391\7\u00b8\2\2\u0390"+ + "\u038f\3\2\2\2\u0390\u0391\3\2\2\2\u0391\u0392\3\2\2\2\u0392\u0404\5 "+ + "\21\2\u0393\u0394\7/\2\2\u0394\u0395\7\u009f\2\2\u0395\u0396\5*\26\2\u0396"+ + "\u0397\5\u00acW\2\u0397\u0398\7}\2\2\u0398\u0399\t\f\2\2\u0399\u0404\3"+ + "\2\2\2\u039a\u039b\7/\2\2\u039b\u039c\7\u009f\2\2\u039c\u039d\7\u00e5"+ + "\2\2\u039d\u039e\5\u00acW\2\u039e\u039f\7}\2\2\u039f\u03a0\t\f\2\2\u03a0"+ + "\u0404\3\2\2\2\u03a1\u03a2\7\u00bf\2\2\u03a2\u03a3\7\u00e5\2\2\u03a3\u0404"+ + "\5\u00acW\2\u03a4\u03ac\7\u00bf\2\2\u03a5\u03ad\7\u011d\2\2\u03a6\u03a8"+ + "\13\2\2\2\u03a7\u03a6\3\2\2\2\u03a8\u03ab\3\2\2\2\u03a9\u03aa\3\2\2\2"+ + "\u03a9\u03a7\3\2\2\2\u03aa\u03ad\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ac\u03a5"+ + "\3\2\2\2\u03ac\u03a9\3\2\2\2\u03ad\u0404\3\2\2\2\u03ae\u03b0\7!\2\2\u03af"+ + "\u03b1\7\u0083\2\2\u03b0\u03af\3\2\2\2\u03b0\u03b1\3\2\2\2\u03b1\u03b2"+ + "\3\2\2\2\u03b2\u03b3\7\u00e5\2\2\u03b3\u03b6\5\u00acW\2\u03b4\u03b5\7"+ + "\u00a2\2\2\u03b5\u03b7\58\35\2\u03b6\u03b4\3\2\2\2\u03b6\u03b7\3\2\2\2"+ + "\u03b7\u03bc\3\2\2\2\u03b8\u03ba\7\30\2\2\u03b9\u03b8\3\2\2\2\u03b9\u03ba"+ + "\3\2\2\2\u03ba\u03bb\3\2\2\2\u03bb\u03bd\5 \21\2\u03bc\u03b9\3\2\2\2\u03bc"+ + "\u03bd\3\2\2\2\u03bd\u0404\3\2\2\2\u03be\u03bf\7\u00f8\2\2\u03bf\u03c2"+ + "\7\u00e5\2\2\u03c0\u03c1\7p\2\2\u03c1\u03c3\7U\2\2\u03c2\u03c0\3\2\2\2"+ + "\u03c2\u03c3\3\2\2\2\u03c3\u03c4\3\2\2\2\u03c4\u0404\5\u00acW\2\u03c5"+ + "\u03c6\7\'\2\2\u03c6\u0404\7!\2\2\u03c7\u03c8\7\u008a\2\2\u03c8\u03ca"+ + "\7?\2\2\u03c9\u03cb\7\u008b\2\2\u03ca\u03c9\3\2\2\2\u03ca\u03cb\3\2\2"+ + "\2\u03cb\u03cc\3\2\2\2\u03cc\u03cd\7w\2\2\u03cd\u03cf\7\u011d\2\2\u03ce"+ + "\u03d0\7\u00ab\2\2\u03cf\u03ce\3\2\2\2\u03cf\u03d0\3\2\2\2\u03d0\u03d1"+ + "\3\2\2\2\u03d1\u03d2\7|\2\2\u03d2\u03d3\7\u00e5\2\2\u03d3\u03d5\5\u00ac"+ + "W\2\u03d4\u03d6\5&\24\2\u03d5\u03d4\3\2\2\2\u03d5\u03d6\3\2\2\2\u03d6"+ + "\u0404\3\2\2\2\u03d7\u03d8\7\u00f4\2\2\u03d8\u03d9\7\u00e5\2\2\u03d9\u03db"+ + "\5\u00acW\2\u03da\u03dc\5&\24\2\u03db\u03da\3\2\2\2\u03db\u03dc\3\2\2"+ + "\2\u03dc\u0404\3\2\2\2\u03dd\u03de\7\u0096\2\2\u03de\u03df\7\u00c1\2\2"+ + "\u03df\u03e0\7\u00e5\2\2\u03e0\u0404\5\u00acW\2\u03e1\u03e2\t\r\2\2\u03e2"+ + "\u03ea\5\u0104\u0083\2\u03e3\u03eb\7\u011d\2\2\u03e4\u03e6\13\2\2\2\u03e5"+ + "\u03e4\3\2\2\2\u03e6\u03e9\3\2\2\2\u03e7\u03e8\3\2\2\2\u03e7\u03e5\3\2"+ + "\2\2\u03e8\u03eb\3\2\2\2\u03e9\u03e7\3\2\2\2\u03ea\u03e3\3\2\2\2\u03ea"+ + "\u03e7\3\2\2\2\u03eb\u0404\3\2\2\2\u03ec\u03ed\7\u00d6\2\2\u03ed\u03f1"+ + "\7\u00c8\2\2\u03ee\u03f0\13\2\2\2\u03ef\u03ee\3\2\2\2\u03f0\u03f3\3\2"+ + "\2\2\u03f1\u03f2\3\2\2\2\u03f1\u03ef\3\2\2\2\u03f2\u0404\3\2\2\2\u03f3"+ + "\u03f1\3\2\2\2\u03f4\u03f8\7\u00d6\2\2\u03f5\u03f7\13\2\2\2\u03f6\u03f5"+ + "\3\2\2\2\u03f7\u03fa\3\2\2\2\u03f8\u03f9\3\2\2\2\u03f8\u03f6\3\2\2\2\u03f9"+ + "\u0404\3\2\2\2\u03fa\u03f8\3\2\2\2\u03fb\u0404\7\u00c3\2\2\u03fc\u0400"+ + "\5\22\n\2\u03fd\u03ff\13\2\2\2\u03fe\u03fd\3\2\2\2\u03ff\u0402\3\2\2\2"+ + "\u0400\u0401\3\2\2\2\u0400\u03fe\3\2\2\2\u0401\u0404\3\2\2\2\u0402\u0400"+ + "\3\2\2\2\u0403\u012f\3\2\2\2\u0403\u0131\3\2\2\2\u0403\u0134\3\2\2\2\u0403"+ + "\u0139\3\2\2\2\u0403\u014b\3\2\2\2\u0403\u0152\3\2\2\2\u0403\u0158\3\2"+ + "\2\2\u0403\u0162\3\2\2\2\u0403\u016e\3\2\2\2\u0403\u0180\3\2\2\2\u0403"+ + "\u0190\3\2\2\2\u0403\u01b5\3\2\2\2\u0403\u01ca\3\2\2\2\u0403\u01d9\3\2"+ + "\2\2\u0403\u01ea\3\2\2\2\u0403\u01f1\3\2\2\2\u0403\u01fa\3\2\2\2\u0403"+ + "\u0203\3\2\2\2\u0403\u020c\3\2\2\2\u0403\u0213\3\2\2\2\u0403\u021a\3\2"+ + "\2\2\u0403\u0221\3\2\2\2\u0403\u022c\3\2\2\2\u0403\u0237\3\2\2\2\u0403"+ + "\u0246\3\2\2\2\u0403\u0252\3\2\2\2\u0403\u0260\3\2\2\2\u0403\u026a\3\2"+ + "\2\2\u0403\u0278\3\2\2\2\u0403\u0280\3\2\2\2\u0403\u0293\3\2\2\2\u0403"+ + "\u029c\3\2\2\2\u0403\u02a2\3\2\2\2\u0403\u02ac\3\2\2\2\u0403\u02b3\3\2"+ + "\2\2\u0403\u02d6\3\2\2\2\u0403\u02ec\3\2\2\2\u0403\u02f4\3\2\2\2\u0403"+ + "\u0310\3\2\2\2\u0403\u031a\3\2\2\2\u0403\u031f\3\2\2\2\u0403\u032b\3\2"+ + "\2\2\u0403\u0337\3\2\2\2\u0403\u0340\3\2\2\2\u0403\u0348\3\2\2\2\u0403"+ + "\u0354\3\2\2\2\u0403\u035a\3\2\2\2\u0403\u0368\3\2\2\2\u0403\u0370\3\2"+ + "\2\2\u0403\u0373\3\2\2\2\u0403\u0379\3\2\2\2\u0403\u0380\3\2\2\2\u0403"+ + "\u038e\3\2\2\2\u0403\u0393\3\2\2\2\u0403\u039a\3\2\2\2\u0403\u03a1\3\2"+ + "\2\2\u0403\u03a4\3\2\2\2\u0403\u03ae\3\2\2\2\u0403\u03be\3\2\2\2\u0403"+ + "\u03c5\3\2\2\2\u0403\u03c7\3\2\2\2\u0403\u03d7\3\2\2\2\u0403\u03dd\3\2"+ + "\2\2\u0403\u03e1\3\2\2\2\u0403\u03ec\3\2\2\2\u0403\u03f4\3\2\2\2\u0403"+ + "\u03fb\3\2\2\2\u0403\u03fc\3\2\2\2\u0404\21\3\2\2\2\u0405\u0406\7\67\2"+ + "\2\u0406\u04ae\7\u00c8\2\2\u0407\u0408\7N\2\2\u0408\u04ae\7\u00c8\2\2"+ + "\u0409\u040b\7k\2\2\u040a\u040c\7\u00c8\2\2\u040b\u040a\3\2\2\2\u040b"+ + "\u040c\3\2\2\2\u040c\u04ae\3\2\2\2\u040d\u040f\7\u00c5\2\2\u040e\u0410"+ + "\7\u00c8\2\2\u040f\u040e\3\2\2\2\u040f\u0410\3\2\2\2\u0410\u04ae\3\2\2"+ + "\2\u0411\u0412\7\u00d9\2\2\u0412\u04ae\7k\2\2\u0413\u0414\7\u00d9\2\2"+ + "\u0414\u0416\7\u00c8\2\2\u0415\u0417\7k\2\2\u0416\u0415\3\2\2\2\u0416"+ + "\u0417\3\2\2\2\u0417\u04ae\3\2\2\2\u0418\u0419\7\u00d9\2\2\u0419\u04ae"+ + "\7\u00b5\2\2\u041a\u041b\7\u00d9\2\2\u041b\u04ae\7\u00c9\2\2\u041c\u041d"+ + "\7\u00d9\2\2\u041d\u041e\7:\2\2\u041e\u04ae\7\u00c9\2\2\u041f\u0420\7"+ + "W\2\2\u0420\u04ae\7\u00e5\2\2\u0421\u0422\7r\2\2\u0422\u04ae\7\u00e5\2"+ + "\2\u0423\u0424\7\u00d9\2\2\u0424\u04ae\7\62\2\2\u0425\u0426\7\u00d9\2"+ + "\2\u0426\u0427\7\67\2\2\u0427\u04ae\7\u00e5\2\2\u0428\u0429\7\u00d9\2"+ + "\2\u0429\u04ae\7\u00f0\2\2\u042a\u042b\7\u00d9\2\2\u042b\u04ae\7u\2\2"+ + "\u042c\u042d\7\u00d9\2\2\u042d\u04ae\7\u008e\2\2\u042e\u042f\7\67\2\2"+ + "\u042f\u04ae\7t\2\2\u0430\u0431\7N\2\2\u0431\u04ae\7t\2\2\u0432\u0433"+ + "\7\21\2\2\u0433\u04ae\7t\2\2\u0434\u0435\7\u008d\2\2\u0435\u04ae\7\u00e5"+ + "\2\2\u0436\u0437\7\u008d\2\2\u0437\u04ae\7@\2\2\u0438\u0439\7\u00fc\2"+ + "\2\u0439\u04ae\7\u00e5\2\2\u043a\u043b\7\u00fc\2\2\u043b\u04ae\7@\2\2"+ + "\u043c\u043d\7\67\2\2\u043d\u043e\7\u00e9\2\2\u043e\u04ae\7\u0090\2\2"+ + "\u043f\u0440\7N\2\2\u0440\u0441\7\u00e9\2\2\u0441\u04ae\7\u0090\2\2\u0442"+ + "\u0443\7\21\2\2\u0443\u0444\7\u00e5\2\2\u0444\u0445\5\u00aeX\2\u0445\u0446"+ + "\7\u009b\2\2\u0446\u0447\7)\2\2\u0447\u04ae\3\2\2\2\u0448\u0449\7\21\2"+ + "\2\u0449\u044a\7\u00e5\2\2\u044a\u044b\5\u00aeX\2\u044b\u044c\7)\2\2\u044c"+ + "\u044d\7 \2\2\u044d\u04ae\3\2\2\2\u044e\u044f\7\21\2\2\u044f\u0450\7\u00e5"+ + "\2\2\u0450\u0451\5\u00aeX\2\u0451\u0452\7\u009b\2\2\u0452\u0453\7\u00dd"+ + "\2\2\u0453\u04ae\3\2\2\2\u0454\u0455\7\21\2\2\u0455\u0456\7\u00e5\2\2"+ + "\u0456\u0457\5\u00aeX\2\u0457\u0458\7\u00da\2\2\u0458\u0459\7 \2\2\u0459"+ + "\u04ae\3\2\2\2\u045a\u045b\7\21\2\2\u045b\u045c\7\u00e5\2\2\u045c\u045d"+ + "\5\u00aeX\2\u045d\u045e\7\u009b\2\2\u045e\u045f\7\u00da\2\2\u045f\u04ae"+ + "\3\2\2\2\u0460\u0461\7\21\2\2\u0461\u0462\7\u00e5\2\2\u0462\u0463\5\u00ae"+ + "X\2\u0463\u0464\7\u009b\2\2\u0464\u0465\7\u00e0\2\2\u0465\u0466\7\30\2"+ + "\2\u0466\u0467\7J\2\2\u0467\u04ae\3\2\2\2\u0468\u0469\7\21\2\2\u0469\u046a"+ + "\7\u00e5\2\2\u046a\u046b\5\u00aeX\2\u046b\u046c\7\u00d6\2\2\u046c\u046d"+ + "\7\u00da\2\2\u046d\u046e\7\u008c\2\2\u046e\u04ae\3\2\2\2\u046f\u0470\7"+ + "\21\2\2\u0470\u0471\7\u00e5\2\2\u0471\u0472\5\u00aeX\2\u0472\u0473\7T"+ + "\2\2\u0473\u0474\7\u00ac\2\2\u0474\u04ae\3\2\2\2\u0475\u0476\7\21\2\2"+ + "\u0476\u0477\7\u00e5\2\2\u0477\u0478\5\u00aeX\2\u0478\u0479\7\26\2\2\u0479"+ + "\u047a\7\u00ac\2\2\u047a\u04ae\3\2\2\2\u047b\u047c\7\21\2\2\u047c\u047d"+ + "\7\u00e5\2\2\u047d\u047e\5\u00aeX\2\u047e\u047f\7\u00f6\2\2\u047f\u0480"+ + "\7\u00ac\2\2\u0480\u04ae\3\2\2\2\u0481\u0482\7\21\2\2\u0482\u0483\7\u00e5"+ + "\2\2\u0483\u0484\5\u00aeX\2\u0484\u0485\7\u00ed\2\2\u0485\u04ae\3\2\2"+ + "\2\u0486\u0487\7\21\2\2\u0487\u0488\7\u00e5\2\2\u0488\u048a\5\u00aeX\2"+ + "\u0489\u048b\5&\24\2\u048a\u0489\3\2\2\2\u048a\u048b\3\2\2\2\u048b\u048c"+ + "\3\2\2\2\u048c\u048d\7\61\2\2\u048d\u04ae\3\2\2\2\u048e\u048f\7\21\2\2"+ + "\u048f\u0490\7\u00e5\2\2\u0490\u0492\5\u00aeX\2\u0491\u0493\5&\24\2\u0492"+ + "\u0491\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u0494\3\2\2\2\u0494\u0495\7\64"+ + "\2\2\u0495\u04ae\3\2\2\2\u0496\u0497\7\21\2\2\u0497\u0498\7\u00e5\2\2"+ + "\u0498\u049a\5\u00aeX\2\u0499\u049b\5&\24\2\u049a\u0499\3\2\2\2\u049a"+ + "\u049b\3\2\2\2\u049b\u049c\3\2\2\2\u049c\u049d\7\u00d6\2\2\u049d\u049e"+ + "\7_\2\2\u049e\u04ae\3\2\2\2\u049f\u04a0\7\21\2\2\u04a0\u04a1\7\u00e5\2"+ + "\2\u04a1\u04a3\5\u00aeX\2\u04a2\u04a4\5&\24\2\u04a3\u04a2\3\2\2\2\u04a3"+ + "\u04a4\3\2\2\2\u04a4\u04a5\3\2\2\2\u04a5\u04a6\7\u00c2\2\2\u04a6\u04a7"+ + "\7.\2\2\u04a7\u04ae\3\2\2\2\u04a8\u04a9\7\u00de\2\2\u04a9\u04ae\7\u00ef"+ + "\2\2\u04aa\u04ae\7\60\2\2\u04ab\u04ae\7\u00ca\2\2\u04ac\u04ae\7I\2\2\u04ad"+ + "\u0405\3\2\2\2\u04ad\u0407\3\2\2\2\u04ad\u0409\3\2\2\2\u04ad\u040d\3\2"+ + "\2\2\u04ad\u0411\3\2\2\2\u04ad\u0413\3\2\2\2\u04ad\u0418\3\2\2\2\u04ad"+ + "\u041a\3\2\2\2\u04ad\u041c\3\2\2\2\u04ad\u041f\3\2\2\2\u04ad\u0421\3\2"+ + "\2\2\u04ad\u0423\3\2\2\2\u04ad\u0425\3\2\2\2\u04ad\u0428\3\2\2\2\u04ad"+ + "\u042a\3\2\2\2\u04ad\u042c\3\2\2\2\u04ad\u042e\3\2\2\2\u04ad\u0430\3\2"+ + "\2\2\u04ad\u0432\3\2\2\2\u04ad\u0434\3\2\2\2\u04ad\u0436\3\2\2\2\u04ad"+ + "\u0438\3\2\2\2\u04ad\u043a\3\2\2\2\u04ad\u043c\3\2\2\2\u04ad\u043f\3\2"+ + "\2\2\u04ad\u0442\3\2\2\2\u04ad\u0448\3\2\2\2\u04ad\u044e\3\2\2\2\u04ad"+ + "\u0454\3\2\2\2\u04ad\u045a\3\2\2\2\u04ad\u0460\3\2\2\2\u04ad\u0468\3\2"+ + "\2\2\u04ad\u046f\3\2\2\2\u04ad\u0475\3\2\2\2\u04ad\u047b\3\2\2\2\u04ad"+ + "\u0481\3\2\2\2\u04ad\u0486\3\2\2\2\u04ad\u048e\3\2\2\2\u04ad\u0496\3\2"+ + "\2\2\u04ad\u049f\3\2\2\2\u04ad\u04a8\3\2\2\2\u04ad\u04aa\3\2\2\2\u04ad"+ + "\u04ab\3\2\2\2\u04ad\u04ac\3\2\2\2\u04ae\23\3\2\2\2\u04af\u04b1\7\67\2"+ + "\2\u04b0\u04b2\7\u00e9\2\2\u04b1\u04b0\3\2\2\2\u04b1\u04b2\3\2\2\2\u04b2"+ + "\u04b4\3\2\2\2\u04b3\u04b5\7Y\2\2\u04b4\u04b3\3\2\2\2\u04b4\u04b5\3\2"+ + "\2\2\u04b5\u04b6\3\2\2\2\u04b6\u04ba\7\u00e5\2\2\u04b7\u04b8\7p\2\2\u04b8"+ + "\u04b9\7\u009b\2\2\u04b9\u04bb\7U\2\2\u04ba\u04b7\3\2\2\2\u04ba\u04bb"+ + "\3\2\2\2\u04bb\u04bc\3\2\2\2\u04bc\u04bd\5\u00acW\2\u04bd\25\3\2\2\2\u04be"+ + "\u04bf\7\67\2\2\u04bf\u04c1\7\u00a3\2\2\u04c0\u04be\3\2\2\2\u04c0\u04c1"+ + "\3\2\2\2\u04c1\u04c2\3\2\2\2\u04c2\u04c3\7\u00c2\2\2\u04c3\u04c4\7\u00e5"+ + "\2\2\u04c4\u04c5\5\u00acW\2\u04c5\27\3\2\2\2\u04c6\u04c7\7)\2\2\u04c7"+ + "\u04c8\7 \2\2\u04c8\u04cc\5\u0094K\2\u04c9\u04ca\7\u00dd\2\2\u04ca\u04cb"+ + "\7 \2\2\u04cb\u04cd\5\u0098M\2\u04cc\u04c9\3\2\2\2\u04cc\u04cd\3\2\2\2"+ + "\u04cd\u04ce\3\2\2\2\u04ce\u04cf\7|\2\2\u04cf\u04d0\7\u0121\2\2\u04d0"+ + "\u04d1\7\37\2\2\u04d1\31\3\2\2\2\u04d2\u04d3\7\u00da\2\2\u04d3\u04d4\7"+ + " \2\2\u04d4\u04d5\5\u0094K\2\u04d5\u04d8\7\u009f\2\2\u04d6\u04d9\5@!\2"+ + "\u04d7\u04d9\5B\"\2\u04d8\u04d6\3\2\2\2\u04d8\u04d7\3\2\2\2\u04d9\u04dd"+ + "\3\2\2\2\u04da\u04db\7\u00e0\2\2\u04db\u04dc\7\30\2\2\u04dc\u04de\7J\2"+ + "\2\u04dd\u04da\3\2\2\2\u04dd\u04de\3\2\2\2\u04de\33\3\2\2\2\u04df\u04e0"+ + "\7\u008c\2\2\u04e0\u04e1\7\u011d\2\2\u04e1\35\3\2\2\2\u04e2\u04e3\7/\2"+ + "\2\u04e3\u04e4\7\u011d\2\2\u04e4\37\3\2\2\2\u04e5\u04e7\5\60\31\2\u04e6"+ + "\u04e5\3\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8\u04e9\5R"+ + "*\2\u04e9\u04ea\5N(\2\u04ea!\3\2\2\2\u04eb\u04ec\7y\2\2\u04ec\u04ee\7"+ + "\u00ab\2\2\u04ed\u04ef\7\u00e5\2\2\u04ee\u04ed\3\2\2\2\u04ee\u04ef\3\2"+ + "\2\2\u04ef\u04f0\3\2\2\2\u04f0\u04f7\5\u00acW\2\u04f1\u04f5\5&\24\2\u04f2"+ + "\u04f3\7p\2\2\u04f3\u04f4\7\u009b\2\2\u04f4\u04f6\7U\2\2\u04f5\u04f2\3"+ + "\2\2\2\u04f5\u04f6\3\2\2\2\u04f6\u04f8\3\2\2\2\u04f7\u04f1\3\2\2\2\u04f7"+ + "\u04f8\3\2\2\2\u04f8\u0523\3\2\2\2\u04f9\u04fa\7y\2\2\u04fa\u04fc\7|\2"+ + "\2\u04fb\u04fd\7\u00e5\2\2\u04fc\u04fb\3\2\2\2\u04fc\u04fd\3\2\2\2\u04fd"+ + "\u04fe\3\2\2\2\u04fe\u0500\5\u00acW\2\u04ff\u0501\5&\24\2\u0500\u04ff"+ + "\3\2\2\2\u0500\u0501\3\2\2\2\u0501\u0505\3\2\2\2\u0502\u0503\7p\2\2\u0503"+ + "\u0504\7\u009b\2\2\u0504\u0506\7U\2\2\u0505\u0502\3\2\2\2\u0505\u0506"+ + "\3\2\2\2\u0506\u0523\3\2\2\2\u0507\u0508\7y\2\2\u0508\u050a\7\u00ab\2"+ + "\2\u0509\u050b\7\u008b\2\2\u050a\u0509\3\2\2\2\u050a\u050b\3\2\2\2\u050b"+ + "\u050c\3\2\2\2\u050c\u050d\7K\2\2\u050d\u050f\7\u011d\2\2\u050e\u0510"+ + "\5\u00a8U\2\u050f\u050e\3\2\2\2\u050f\u0510\3\2\2\2\u0510\u0512\3\2\2"+ + "\2\u0511\u0513\5D#\2\u0512\u0511\3\2\2\2\u0512\u0513\3\2\2\2\u0513\u0523"+ + "\3\2\2\2\u0514\u0515\7y\2\2\u0515\u0517\7\u00ab\2\2\u0516\u0518\7\u008b"+ + "\2\2\u0517\u0516\3\2\2\2\u0517\u0518\3\2\2\2\u0518\u0519\3\2\2\2\u0519"+ + "\u051b\7K\2\2\u051a\u051c\7\u011d\2\2\u051b\u051a\3\2\2\2\u051b\u051c"+ + "\3\2\2\2\u051c\u051d\3\2\2\2\u051d\u0520\5\64\33\2\u051e\u051f\7\u00a2"+ + "\2\2\u051f\u0521\58\35\2\u0520\u051e\3\2\2\2\u0520\u0521\3\2\2\2\u0521"+ + "\u0523\3\2\2\2\u0522\u04eb\3\2\2\2\u0522\u04f9\3\2\2\2\u0522\u0507\3\2"+ + "\2\2\u0522\u0514\3\2\2\2\u0523#\3\2\2\2\u0524\u0526\5&\24\2\u0525\u0527"+ + "\5\34\17\2\u0526\u0525\3\2\2\2\u0526\u0527\3\2\2\2\u0527%\3\2\2\2\u0528"+ + "\u0529\7\u00ac\2\2\u0529\u052a\7\4\2\2\u052a\u052f\5(\25\2\u052b\u052c"+ + "\7\6\2\2\u052c\u052e\5(\25\2\u052d\u052b\3\2\2\2\u052e\u0531\3\2\2\2\u052f"+ + "\u052d\3\2\2\2\u052f\u0530\3\2\2\2\u0530\u0532\3\2\2\2\u0531\u052f\3\2"+ + "\2\2\u0532\u0533\7\5\2\2\u0533\'\3\2\2\2\u0534\u0537\5\u0104\u0083\2\u0535"+ + "\u0536\7\u010a\2\2\u0536\u0538\5\u00c6d\2\u0537\u0535\3\2\2\2\u0537\u0538"+ + "\3\2\2\2\u0538)\3\2\2\2\u0539\u053a\t\16\2\2\u053a+\3\2\2\2\u053b\u0541"+ + "\5\u00fe\u0080\2\u053c\u0541\7\u011d\2\2\u053d\u0541\5\u00c8e\2\u053e"+ + "\u0541\5\u00caf\2\u053f\u0541\5\u00ccg\2\u0540\u053b\3\2\2\2\u0540\u053c"+ + "\3\2\2\2\u0540\u053d\3\2\2\2\u0540\u053e\3\2\2\2\u0540\u053f\3\2\2\2\u0541"+ + "-\3\2\2\2\u0542\u0547\5\u0104\u0083\2\u0543\u0544\7\7\2\2\u0544\u0546"+ + "\5\u0104\u0083\2\u0545\u0543\3\2\2\2\u0546\u0549\3\2\2\2\u0547\u0545\3"+ + "\2\2\2\u0547\u0548\3\2\2\2\u0548/\3\2\2\2\u0549\u0547\3\2\2\2\u054a\u054b"+ + "\7\u0108\2\2\u054b\u0550\5\62\32\2\u054c\u054d\7\6\2\2\u054d\u054f\5\62"+ + "\32\2\u054e\u054c\3\2\2\2\u054f\u0552\3\2\2\2\u0550\u054e\3\2\2\2\u0550"+ + "\u0551\3\2\2\2\u0551\61\3\2\2\2\u0552\u0550\3\2\2\2\u0553\u0555\5\u0100"+ + "\u0081\2\u0554\u0556\5\u0094K\2\u0555\u0554\3\2\2\2\u0555\u0556\3\2\2"+ + "\2\u0556\u0558\3\2\2\2\u0557\u0559\7\30\2\2\u0558\u0557\3\2\2\2\u0558"+ + "\u0559\3\2\2\2\u0559\u055a\3\2\2\2\u055a\u055b\7\4\2\2\u055b\u055c\5 "+ + "\21\2\u055c\u055d\7\5\2\2\u055d\63\3\2\2\2\u055e\u055f\7\u0101\2\2\u055f"+ + "\u0560\5\u00acW\2\u0560\65\3\2\2\2\u0561\u0562\7\u00a2\2\2\u0562\u056c"+ + "\58\35\2\u0563\u0564\7\u00ad\2\2\u0564\u0565\7 \2\2\u0565\u056c\5\u00b6"+ + "\\\2\u0566\u056c\5\30\r\2\u0567\u056c\5\34\17\2\u0568\u056c\5\36\20\2"+ + "\u0569\u056a\7\u00e8\2\2\u056a\u056c\58\35\2\u056b\u0561\3\2\2\2\u056b"+ + "\u0563\3\2\2\2\u056b\u0566\3\2\2\2\u056b\u0567\3\2\2\2\u056b\u0568\3\2"+ + "\2\2\u056b\u0569\3\2\2\2\u056c\u056f\3\2\2\2\u056d\u056b\3\2\2\2\u056d"+ + "\u056e\3\2\2\2\u056e\67\3\2\2\2\u056f\u056d\3\2\2\2\u0570\u0571\7\4\2"+ + "\2\u0571\u0576\5:\36\2\u0572\u0573\7\6\2\2\u0573\u0575\5:\36\2\u0574\u0572"+ + "\3\2\2\2\u0575\u0578\3\2\2\2\u0576\u0574\3\2\2\2\u0576\u0577\3\2\2\2\u0577"+ + "\u0579\3\2\2\2\u0578\u0576\3\2\2\2\u0579\u057a\7\5\2\2\u057a9\3\2\2\2"+ + "\u057b\u0580\5<\37\2\u057c\u057e\7\u010a\2\2\u057d\u057c\3\2\2\2\u057d"+ + "\u057e\3\2\2\2\u057e\u057f\3\2\2\2\u057f\u0581\5> \2\u0580\u057d\3\2\2"+ + "\2\u0580\u0581\3\2\2\2\u0581;\3\2\2\2\u0582\u0587\5\u0104\u0083\2\u0583"+ + "\u0584\7\7\2\2\u0584\u0586\5\u0104\u0083\2\u0585\u0583\3\2\2\2\u0586\u0589"+ + "\3\2\2\2\u0587\u0585\3\2\2\2\u0587\u0588\3\2\2\2\u0588\u058c\3\2\2\2\u0589"+ + "\u0587\3\2\2\2\u058a\u058c\7\u011d\2\2\u058b\u0582\3\2\2\2\u058b\u058a"+ + "\3\2\2\2\u058c=\3\2\2\2\u058d\u0592\7\u0121\2\2\u058e\u0592\7\u0123\2"+ + "\2\u058f\u0592\5\u00ceh\2\u0590\u0592\7\u011d\2\2\u0591\u058d\3\2\2\2"+ + "\u0591\u058e\3\2\2\2\u0591\u058f\3\2\2\2\u0591\u0590\3\2\2\2\u0592?\3"+ + "\2\2\2\u0593\u0594\7\4\2\2\u0594\u0599\5\u00c6d\2\u0595\u0596\7\6\2\2"+ + "\u0596\u0598\5\u00c6d\2\u0597\u0595\3\2\2\2\u0598\u059b\3\2\2\2\u0599"+ + "\u0597\3\2\2\2\u0599\u059a\3\2\2\2\u059a\u059c\3\2\2\2\u059b\u0599\3\2"+ + "\2\2\u059c\u059d\7\5\2\2\u059dA\3\2\2\2\u059e\u059f\7\4\2\2\u059f\u05a4"+ + "\5@!\2\u05a0\u05a1\7\6\2\2\u05a1\u05a3\5@!\2\u05a2\u05a0\3\2\2\2\u05a3"+ + "\u05a6\3\2\2\2\u05a4\u05a2\3\2\2\2\u05a4\u05a5\3\2\2\2\u05a5\u05a7\3\2"+ + "\2\2\u05a6\u05a4\3\2\2\2\u05a7\u05a8\7\5\2\2\u05a8C\3\2\2\2\u05a9\u05aa"+ + "\7\u00e0\2\2\u05aa\u05ab\7\30\2\2\u05ab\u05b0\5F$\2\u05ac\u05ad\7\u00e0"+ + "\2\2\u05ad\u05ae\7 \2\2\u05ae\u05b0\5H%\2\u05af\u05a9\3\2\2\2\u05af\u05ac"+ + "\3\2\2\2\u05b0E\3\2\2\2\u05b1\u05b2\7x\2\2\u05b2\u05b3\7\u011d\2\2\u05b3"+ + "\u05b4\7\u00a7\2\2\u05b4\u05b7\7\u011d\2\2\u05b5\u05b7\5\u0104\u0083\2"+ + "\u05b6\u05b1\3\2\2\2\u05b6\u05b5\3\2\2\2\u05b7G\3\2\2\2\u05b8\u05bc\7"+ + "\u011d\2\2\u05b9\u05ba\7\u0108\2\2\u05ba\u05bb\7\u00d4\2\2\u05bb\u05bd"+ + "\58\35\2\u05bc\u05b9\3\2\2\2\u05bc\u05bd\3\2\2\2\u05bdI\3\2\2\2\u05be"+ + "\u05bf\5\u0104\u0083\2\u05bf\u05c0\7\u011d\2\2\u05c0K\3\2\2\2\u05c1\u05c2"+ + "\5\"\22\2\u05c2\u05c3\5R*\2\u05c3\u05c4\5N(\2\u05c4\u05f5\3\2\2\2\u05c5"+ + "\u05c7\5x=\2\u05c6\u05c8\5P)\2\u05c7\u05c6\3\2\2\2\u05c8\u05c9\3\2\2\2"+ + "\u05c9\u05c7\3\2\2\2\u05c9\u05ca\3\2\2\2\u05ca\u05f5\3\2\2\2\u05cb\u05cc"+ + "\7E\2\2\u05cc\u05cd\7f\2\2\u05cd\u05ce\5\u00acW\2\u05ce\u05d0\5\u00a6"+ + "T\2\u05cf\u05d1\5p9\2\u05d0\u05cf\3\2\2\2\u05d0\u05d1\3\2\2\2\u05d1\u05f5"+ + "\3\2\2\2\u05d2\u05d3\7\u00fe\2\2\u05d3\u05d4\5\u00acW\2\u05d4\u05d5\5"+ + "\u00a6T\2\u05d5\u05d7\5b\62\2\u05d6\u05d8\5p9\2\u05d7\u05d6\3\2\2\2\u05d7"+ + "\u05d8\3\2\2\2\u05d8\u05f5\3\2\2\2\u05d9\u05da\7\u0093\2\2\u05da\u05db"+ + "\7|\2\2\u05db\u05dc\5\u00acW\2\u05dc\u05dd\5\u00a6T\2\u05dd\u05e3\7\u0101"+ + "\2\2\u05de\u05e4\5\u00acW\2\u05df\u05e0\7\4\2\2\u05e0\u05e1\5 \21\2\u05e1"+ + "\u05e2\7\5\2\2\u05e2\u05e4\3\2\2\2\u05e3\u05de\3\2\2\2\u05e3\u05df\3\2"+ + "\2\2\u05e4\u05e5\3\2\2\2\u05e5\u05e6\5\u00a6T\2\u05e6\u05e7\7\u009f\2"+ + "\2\u05e7\u05eb\5\u00be`\2\u05e8\u05ea\5d\63\2\u05e9\u05e8\3\2\2\2\u05ea"+ + "\u05ed\3\2\2\2\u05eb\u05e9\3\2\2\2\u05eb\u05ec\3\2\2\2\u05ec\u05f1\3\2"+ + "\2\2\u05ed\u05eb\3\2\2\2\u05ee\u05f0\5f\64\2\u05ef\u05ee\3\2\2\2\u05f0"+ + "\u05f3\3\2\2\2\u05f1\u05ef\3\2\2\2\u05f1\u05f2\3\2\2\2\u05f2\u05f5\3\2"+ + "\2\2\u05f3\u05f1\3\2\2\2\u05f4\u05c1\3\2\2\2\u05f4\u05c5\3\2\2\2\u05f4"+ + "\u05cb\3\2\2\2\u05f4\u05d2\3\2\2\2\u05f4\u05d9\3\2\2\2\u05f5M\3\2\2\2"+ + "\u05f6\u05f7\7\u00a4\2\2\u05f7\u05f8\7 \2\2\u05f8\u05fd\5V,\2\u05f9\u05fa"+ + "\7\6\2\2\u05fa\u05fc\5V,\2\u05fb\u05f9\3\2\2\2\u05fc\u05ff\3\2\2\2\u05fd"+ + "\u05fb\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe\u0601\3\2\2\2\u05ff\u05fd\3\2"+ + "\2\2\u0600\u05f6\3\2\2\2\u0600\u0601\3\2\2\2\u0601\u060c\3\2\2\2\u0602"+ + "\u0603\7(\2\2\u0603\u0604\7 \2\2\u0604\u0609\5\u00bc_\2\u0605\u0606\7"+ + "\6\2\2\u0606\u0608\5\u00bc_\2\u0607\u0605\3\2\2\2\u0608\u060b\3\2\2\2"+ + "\u0609\u0607\3\2\2\2\u0609\u060a\3\2\2\2\u060a\u060d\3\2\2\2\u060b\u0609"+ + "\3\2\2\2\u060c\u0602\3\2\2\2\u060c\u060d\3\2\2\2\u060d\u0618\3\2\2\2\u060e"+ + "\u060f\7M\2\2\u060f\u0610\7 \2\2\u0610\u0615\5\u00bc_\2\u0611\u0612\7"+ + "\6\2\2\u0612\u0614\5\u00bc_\2\u0613\u0611\3\2\2\2\u0614\u0617\3\2\2\2"+ + "\u0615\u0613\3\2\2\2\u0615\u0616\3\2\2\2\u0616\u0619\3\2\2\2\u0617\u0615"+ + "\3\2\2\2\u0618\u060e\3\2\2\2\u0618\u0619\3\2\2\2\u0619\u0624\3\2\2\2\u061a"+ + "\u061b\7\u00dc\2\2\u061b\u061c\7 \2\2\u061c\u0621\5V,\2\u061d\u061e\7"+ + "\6\2\2\u061e\u0620\5V,\2\u061f\u061d\3\2\2\2\u0620\u0623\3\2\2\2\u0621"+ + "\u061f\3\2\2\2\u0621\u0622\3\2\2\2\u0622\u0625\3\2\2\2\u0623\u0621\3\2"+ + "\2\2\u0624\u061a\3\2\2\2\u0624\u0625\3\2\2\2\u0625\u0627\3\2\2\2\u0626"+ + "\u0628\5\u00f0y\2\u0627\u0626\3\2\2\2\u0627\u0628\3\2\2\2\u0628\u062e"+ + "\3\2\2\2\u0629\u062c\7\u0087\2\2\u062a\u062d\7\20\2\2\u062b\u062d\5\u00bc"+ + "_\2\u062c\u062a\3\2\2\2\u062c\u062b\3\2\2\2\u062d\u062f\3\2\2\2\u062e"+ + "\u0629\3\2\2\2\u062e\u062f\3\2\2\2\u062fO\3\2\2\2\u0630\u0631\5\"\22\2"+ + "\u0631\u0632\5Z.\2\u0632Q\3\2\2\2\u0633\u0634\b*\1\2\u0634\u0635\5T+\2"+ + "\u0635\u064d\3\2\2\2\u0636\u0637\f\5\2\2\u0637\u0638\6*\5\2\u0638\u063a"+ + "\t\17\2\2\u0639\u063b\5\u0086D\2\u063a\u0639\3\2\2\2\u063a\u063b\3\2\2"+ + "\2\u063b\u063c\3\2\2\2\u063c\u064c\5R*\6\u063d\u063e\f\4\2\2\u063e\u063f"+ + "\6*\7\2\u063f\u0641\7z\2\2\u0640\u0642\5\u0086D\2\u0641\u0640\3\2\2\2"+ + "\u0641\u0642\3\2\2\2\u0642\u0643\3\2\2\2\u0643\u064c\5R*\5\u0644\u0645"+ + "\f\3\2\2\u0645\u0646\6*\t\2\u0646\u0648\t\20\2\2\u0647\u0649\5\u0086D"+ + "\2\u0648\u0647\3\2\2\2\u0648\u0649\3\2\2\2\u0649\u064a\3\2\2\2\u064a\u064c"+ + "\5R*\4\u064b\u0636\3\2\2\2\u064b\u063d\3\2\2\2\u064b\u0644\3\2\2\2\u064c"+ + "\u064f\3\2\2\2\u064d\u064b\3\2\2\2\u064d\u064e\3\2\2\2\u064eS\3\2\2\2"+ + "\u064f\u064d\3\2\2\2\u0650\u065a\5\\/\2\u0651\u065a\5X-\2\u0652\u0653"+ + "\7\u00e5\2\2\u0653\u065a\5\u00acW\2\u0654\u065a\5\u00a2R\2\u0655\u0656"+ + "\7\4\2\2\u0656\u0657\5 \21\2\u0657\u0658\7\5\2\2\u0658\u065a\3\2\2\2\u0659"+ + "\u0650\3\2\2\2\u0659\u0651\3\2\2\2\u0659\u0652\3\2\2\2\u0659\u0654\3\2"+ + "\2\2\u0659\u0655\3\2\2\2\u065aU\3\2\2\2\u065b\u065d\5\u00bc_\2\u065c\u065e"+ + "\t\21\2\2\u065d\u065c\3\2\2\2\u065d\u065e\3\2\2\2\u065e\u0661\3\2\2\2"+ + "\u065f\u0660\7\u009d\2\2\u0660\u0662\t\22\2\2\u0661\u065f\3\2\2\2\u0661"+ + "\u0662\3\2\2\2\u0662W\3\2\2\2\u0663\u0665\5x=\2\u0664\u0666\5Z.\2\u0665"+ + "\u0664\3\2\2\2\u0666\u0667\3\2\2\2\u0667\u0665\3\2\2\2\u0667\u0668\3\2"+ + "\2\2\u0668Y\3\2\2\2\u0669\u066b\5^\60\2\u066a\u066c\5p9\2\u066b\u066a"+ + "\3\2\2\2\u066b\u066c\3\2\2\2\u066c\u066d\3\2\2\2\u066d\u066e\5N(\2\u066e"+ + "\u0685\3\2\2\2\u066f\u0673\5`\61\2\u0670\u0672\5\u0084C\2\u0671\u0670"+ + "\3\2\2\2\u0672\u0675\3\2\2\2\u0673\u0671\3\2\2\2\u0673\u0674\3\2\2\2\u0674"+ + "\u0677\3\2\2\2\u0675\u0673\3\2\2\2\u0676\u0678\5p9\2\u0677\u0676\3\2\2"+ + "\2\u0677\u0678\3\2\2\2\u0678\u067a\3\2\2\2\u0679\u067b\5z>\2\u067a\u0679"+ + "\3\2\2\2\u067a\u067b\3\2\2\2\u067b\u067d\3\2\2\2\u067c\u067e\5r:\2\u067d"+ + "\u067c\3\2\2\2\u067d\u067e\3\2\2\2\u067e\u0680\3\2\2\2\u067f\u0681\5\u00f0"+ + "y\2\u0680\u067f\3\2\2\2\u0680\u0681\3\2\2\2\u0681\u0682\3\2\2\2\u0682"+ + "\u0683\5N(\2\u0683\u0685\3\2\2\2\u0684\u0669\3\2\2\2\u0684\u066f\3\2\2"+ + "\2\u0685[\3\2\2\2\u0686\u0688\5^\60\2\u0687\u0689\5x=\2\u0688\u0687\3"+ + "\2\2\2\u0688\u0689\3\2\2\2\u0689\u068b\3\2\2\2\u068a\u068c\5p9\2\u068b"+ + "\u068a\3\2\2\2\u068b\u068c\3\2\2\2\u068c\u06a4\3\2\2\2\u068d\u068f\5`"+ + "\61\2\u068e\u0690\5x=\2\u068f\u068e\3\2\2\2\u068f\u0690\3\2\2\2\u0690"+ + "\u0694\3\2\2\2\u0691\u0693\5\u0084C\2\u0692\u0691\3\2\2\2\u0693\u0696"+ + "\3\2\2\2\u0694\u0692\3\2\2\2\u0694\u0695\3\2\2\2\u0695\u0698\3\2\2\2\u0696"+ + "\u0694\3\2\2\2\u0697\u0699\5p9\2\u0698\u0697\3\2\2\2\u0698\u0699\3\2\2"+ + "\2\u0699\u069b\3\2\2\2\u069a\u069c\5z>\2\u069b\u069a\3\2\2\2\u069b\u069c"+ + "\3\2\2\2\u069c\u069e\3\2\2\2\u069d\u069f\5r:\2\u069e\u069d\3\2\2\2\u069e"+ + "\u069f\3\2\2\2\u069f\u06a1\3\2\2\2\u06a0\u06a2\5\u00f0y\2\u06a1\u06a0"+ + "\3\2\2\2\u06a1\u06a2\3\2\2\2\u06a2\u06a4\3\2\2\2\u06a3\u0686\3\2\2\2\u06a3"+ + "\u068d\3\2\2\2\u06a4]\3\2\2\2\u06a5\u06a6\7\u00d0\2\2\u06a6\u06a7\7\u00f1"+ + "\2\2\u06a7\u06a8\7\4\2\2\u06a8\u06a9\5\u00b4[\2\u06a9\u06aa\7\5\2\2\u06aa"+ + "\u06b0\3\2\2\2\u06ab\u06ac\7\u0091\2\2\u06ac\u06b0\5\u00b4[\2\u06ad\u06ae"+ + "\7\u00bd\2\2\u06ae\u06b0\5\u00b4[\2\u06af\u06a5\3\2\2\2\u06af\u06ab\3"+ + "\2\2\2\u06af\u06ad\3\2\2\2\u06b0\u06b2\3\2\2\2\u06b1\u06b3\5\u00a8U\2"+ + "\u06b2\u06b1\3\2\2\2\u06b2\u06b3\3\2\2\2\u06b3\u06b6\3\2\2\2\u06b4\u06b5"+ + "\7\u00bb\2\2\u06b5\u06b7\7\u011d\2\2\u06b6\u06b4\3\2\2\2\u06b6\u06b7\3"+ + "\2\2\2\u06b7\u06b8\3\2\2\2\u06b8\u06b9\7\u0101\2\2\u06b9\u06c6\7\u011d"+ + "\2\2\u06ba\u06c4\7\30\2\2\u06bb\u06c5\5\u0096L\2\u06bc\u06c5\5\u00e6t"+ + "\2\u06bd\u06c0\7\4\2\2\u06be\u06c1\5\u0096L\2\u06bf\u06c1\5\u00e6t\2\u06c0"+ + "\u06be\3\2\2\2\u06c0\u06bf\3\2\2\2\u06c1\u06c2\3\2\2\2\u06c2\u06c3\7\5"+ + "\2\2\u06c3\u06c5\3\2\2\2\u06c4\u06bb\3\2\2\2\u06c4\u06bc\3\2\2\2\u06c4"+ + "\u06bd\3\2\2\2\u06c5\u06c7\3\2\2\2\u06c6\u06ba\3\2\2\2\u06c6\u06c7\3\2"+ + "\2\2\u06c7\u06c9\3\2\2\2\u06c8\u06ca\5\u00a8U\2\u06c9\u06c8\3\2\2\2\u06c9"+ + "\u06ca\3\2\2\2\u06ca\u06cd\3\2\2\2\u06cb\u06cc\7\u00ba\2\2\u06cc\u06ce"+ + "\7\u011d\2\2\u06cd\u06cb\3\2\2\2\u06cd\u06ce\3\2\2\2\u06ce_\3\2\2\2\u06cf"+ + "\u06d3\7\u00d0\2\2\u06d0\u06d2\5t;\2\u06d1\u06d0\3\2\2\2\u06d2\u06d5\3"+ + "\2\2\2\u06d3\u06d1\3\2\2\2\u06d3\u06d4\3\2\2\2\u06d4\u06d7\3\2\2\2\u06d5"+ + "\u06d3\3\2\2\2\u06d6\u06d8\5\u0086D\2\u06d7\u06d6\3\2\2\2\u06d7\u06d8"+ + "\3\2\2\2\u06d8\u06d9\3\2\2\2\u06d9\u06da\5\u00b4[\2\u06daa\3\2\2\2\u06db"+ + "\u06dc\7\u00d6\2\2\u06dc\u06dd\5l\67\2\u06ddc\3\2\2\2\u06de\u06df\7\u0105"+ + "\2\2\u06df\u06e2\7\u0092\2\2\u06e0\u06e1\7\23\2\2\u06e1\u06e3\5\u00be"+ + "`\2\u06e2\u06e0\3\2\2\2\u06e2\u06e3\3\2\2\2\u06e3\u06e4\3\2\2\2\u06e4"+ + "\u06e5\7\u00eb\2\2\u06e5\u06e6\5h\65\2\u06e6e\3\2\2\2\u06e7\u06e8\7\u0105"+ + "\2\2\u06e8\u06e9\7\u009b\2\2\u06e9\u06ec\7\u0092\2\2\u06ea\u06eb\7\23"+ + "\2\2\u06eb\u06ed\5\u00be`\2\u06ec\u06ea\3\2\2\2\u06ec\u06ed\3\2\2\2\u06ed"+ + "\u06ee\3\2\2\2\u06ee\u06ef\7\u00eb\2\2\u06ef\u06f0\5j\66\2\u06f0g\3\2"+ + "\2\2\u06f1\u06f9\7E\2\2\u06f2\u06f3\7\u00fe\2\2\u06f3\u06f4\7\u00d6\2"+ + "\2\u06f4\u06f9\7\u0114\2\2\u06f5\u06f6\7\u00fe\2\2\u06f6\u06f7\7\u00d6"+ + "\2\2\u06f7\u06f9\5l\67\2\u06f8\u06f1\3\2\2\2\u06f8\u06f2\3\2\2\2\u06f8"+ + "\u06f5\3\2\2\2\u06f9i\3\2\2\2\u06fa\u06fb\7y\2\2\u06fb\u070d\7\u0114\2"+ + "\2\u06fc\u06fd\7y\2\2\u06fd\u06fe\7\4\2\2\u06fe\u06ff\5\u00aaV\2\u06ff"+ + "\u0700\7\5\2\2\u0700\u0701\7\u0102\2\2\u0701\u0702\7\4\2\2\u0702\u0707"+ + "\5\u00bc_\2\u0703\u0704\7\6\2\2\u0704\u0706\5\u00bc_\2\u0705\u0703\3\2"+ + "\2\2\u0706\u0709\3\2\2\2\u0707\u0705\3\2\2\2\u0707\u0708\3\2\2\2\u0708"+ + "\u070a\3\2\2\2\u0709\u0707\3\2\2\2\u070a\u070b\7\5\2\2\u070b\u070d\3\2"+ + "\2\2\u070c\u06fa\3\2\2\2\u070c\u06fc\3\2\2\2\u070dk\3\2\2\2\u070e\u0713"+ + "\5n8\2\u070f\u0710\7\6\2\2\u0710\u0712\5n8\2\u0711\u070f\3\2\2\2\u0712"+ + "\u0715\3\2\2\2\u0713\u0711\3\2\2\2\u0713\u0714\3\2\2\2\u0714m\3\2\2\2"+ + "\u0715\u0713\3\2\2\2\u0716\u0717\5\u00acW\2\u0717\u0718\7\u010a\2\2\u0718"+ + "\u0719\5\u00bc_\2\u0719o\3\2\2\2\u071a\u071b\7\u0106\2\2\u071b\u071c\5"+ + "\u00be`\2\u071cq\3\2\2\2\u071d\u071e\7n\2\2\u071e\u071f\5\u00be`\2\u071f"+ + "s\3\2\2\2\u0720\u0721\7\b\2\2\u0721\u0728\5v<\2\u0722\u0724\7\6\2\2\u0723"+ + "\u0722\3\2\2\2\u0723\u0724\3\2\2\2\u0724\u0725\3\2\2\2\u0725\u0727\5v"+ + "<\2\u0726\u0723\3\2\2\2\u0727\u072a\3\2\2\2\u0728\u0726\3\2\2\2\u0728"+ + "\u0729\3\2\2\2\u0729\u072b\3\2\2\2\u072a\u0728\3\2\2\2\u072b\u072c\7\t"+ + "\2\2\u072cu\3\2\2\2\u072d\u073b\5\u0104\u0083\2\u072e\u072f\5\u0104\u0083"+ + "\2\u072f\u0730\7\4\2\2\u0730\u0735\5\u00c4c\2\u0731\u0732\7\6\2\2\u0732"+ + "\u0734\5\u00c4c\2\u0733\u0731\3\2\2\2\u0734\u0737\3\2\2\2\u0735\u0733"+ + "\3\2\2\2\u0735\u0736\3\2\2\2\u0736\u0738\3\2\2\2\u0737\u0735\3\2\2\2\u0738"+ + "\u0739\7\5\2\2\u0739\u073b\3\2\2\2\u073a\u072d\3\2\2\2\u073a\u072e\3\2"+ + "\2\2\u073bw\3\2\2\2\u073c\u073d\7f\2\2\u073d\u0742\5\u0088E\2\u073e\u073f"+ + "\7\6\2\2\u073f\u0741\5\u0088E\2\u0740\u073e\3\2\2\2\u0741\u0744\3\2\2"+ + "\2\u0742\u0740\3\2\2\2\u0742\u0743\3\2\2\2\u0743\u0748\3\2\2\2\u0744\u0742"+ + "\3\2\2\2\u0745\u0747\5\u0084C\2\u0746\u0745\3\2\2\2\u0747\u074a\3\2\2"+ + "\2\u0748\u0746\3\2\2\2\u0748\u0749\3\2\2\2\u0749\u074c\3\2\2\2\u074a\u0748"+ + "\3\2\2\2\u074b\u074d\5~@\2\u074c\u074b\3\2\2\2\u074c\u074d\3\2\2\2\u074d"+ + "y\3\2\2\2\u074e\u074f\7l\2\2\u074f\u0750\7 \2\2\u0750\u0755\5\u00bc_\2"+ + "\u0751\u0752\7\6\2\2\u0752\u0754\5\u00bc_\2\u0753\u0751\3\2\2\2\u0754"+ + "\u0757\3\2\2\2\u0755\u0753\3\2\2\2\u0755\u0756\3\2\2\2\u0756\u0769\3\2"+ + "\2\2\u0757\u0755\3\2\2\2\u0758\u0759\7\u0108\2\2\u0759\u076a\7\u00cb\2"+ + "\2\u075a\u075b\7\u0108\2\2\u075b\u076a\79\2\2\u075c\u075d\7m\2\2\u075d"+ + "\u075e\7\u00d8\2\2\u075e\u075f\7\4\2\2\u075f\u0764\5|?\2\u0760\u0761\7"+ + "\6\2\2\u0761\u0763\5|?\2\u0762\u0760\3\2\2\2\u0763\u0766\3\2\2\2\u0764"+ + "\u0762\3\2\2\2\u0764\u0765\3\2\2\2\u0765\u0767\3\2\2\2\u0766\u0764\3\2"+ + "\2\2\u0767\u0768\7\5\2\2\u0768\u076a\3\2\2\2\u0769\u0758\3\2\2\2\u0769"+ + "\u075a\3\2\2\2\u0769\u075c\3\2\2\2\u0769\u076a\3\2\2\2\u076a\u077b\3\2"+ + "\2\2\u076b\u076c\7l\2\2\u076c\u076d\7 \2\2\u076d\u076e\7m\2\2\u076e\u076f"+ + "\7\u00d8\2\2\u076f\u0770\7\4\2\2\u0770\u0775\5|?\2\u0771\u0772\7\6\2\2"+ + "\u0772\u0774\5|?\2\u0773\u0771\3\2\2\2\u0774\u0777\3\2\2\2\u0775\u0773"+ + "\3\2\2\2\u0775\u0776\3\2\2\2\u0776\u0778\3\2\2\2\u0777\u0775\3\2\2\2\u0778"+ + "\u0779\7\5\2\2\u0779\u077b\3\2\2\2\u077a\u074e\3\2\2\2\u077a\u076b\3\2"+ + "\2\2\u077b{\3\2\2\2\u077c\u0785\7\4\2\2\u077d\u0782\5\u00bc_\2\u077e\u077f"+ + "\7\6\2\2\u077f\u0781\5\u00bc_\2\u0780\u077e\3\2\2\2\u0781\u0784\3\2\2"+ + "\2\u0782\u0780\3\2\2\2\u0782\u0783\3\2\2\2\u0783\u0786\3\2\2\2\u0784\u0782"+ + "\3\2\2\2\u0785\u077d\3\2\2\2\u0785\u0786\3\2\2\2\u0786\u0787\3\2\2\2\u0787"+ + "\u078a\7\5\2\2\u0788\u078a\5\u00bc_\2\u0789\u077c\3\2\2\2\u0789\u0788"+ + "\3\2\2\2\u078a}\3\2\2\2\u078b\u078c\7\u00b0\2\2\u078c\u078d\7\4\2\2\u078d"+ + "\u078e\5\u00b4[\2\u078e\u078f\7b\2\2\u078f\u0790\5\u0080A\2\u0790\u0791"+ + "\7s\2\2\u0791\u0792\7\4\2\2\u0792\u0797\5\u0082B\2\u0793\u0794\7\6\2\2"+ + "\u0794\u0796\5\u0082B\2\u0795\u0793\3\2\2\2\u0796\u0799\3\2\2\2\u0797"+ + "\u0795\3\2\2\2\u0797\u0798\3\2\2\2\u0798\u079a\3\2\2\2\u0799\u0797\3\2"+ + "\2\2\u079a\u079b\7\5\2\2\u079b\u079c\7\5\2\2\u079c\177\3\2\2\2\u079d\u07aa"+ + "\5\u0104\u0083\2\u079e\u079f\7\4\2\2\u079f\u07a4\5\u0104\u0083\2\u07a0"+ + "\u07a1\7\6\2\2\u07a1\u07a3\5\u0104\u0083\2\u07a2\u07a0\3\2\2\2\u07a3\u07a6"+ + "\3\2\2\2\u07a4\u07a2\3\2\2\2\u07a4\u07a5\3\2\2\2\u07a5\u07a7\3\2\2\2\u07a6"+ + "\u07a4\3\2\2\2\u07a7\u07a8\7\5\2\2\u07a8\u07aa\3\2\2\2\u07a9\u079d\3\2"+ + "\2\2\u07a9\u079e\3\2\2\2\u07aa\u0081\3\2\2\2\u07ab\u07b0\5\u00bc_\2\u07ac"+ + "\u07ae\7\30\2\2\u07ad\u07ac\3\2\2\2\u07ad\u07ae\3\2\2\2\u07ae\u07af\3"+ + "\2\2\2\u07af\u07b1\5\u0104\u0083\2\u07b0\u07ad\3\2\2\2\u07b0\u07b1\3\2"+ + "\2\2\u07b1\u0083\3\2\2\2\u07b2\u07b3\7\u0082\2\2\u07b3\u07b5\7\u0103\2"+ + "\2\u07b4\u07b6\7\u00a6\2\2\u07b5\u07b4\3\2\2\2\u07b5\u07b6\3\2\2\2\u07b6"+ + "\u07b7\3\2\2\2\u07b7\u07b8\5\u00fe\u0080\2\u07b8\u07c1\7\4\2\2\u07b9\u07be"+ + "\5\u00bc_\2\u07ba\u07bb\7\6\2\2\u07bb\u07bd\5\u00bc_\2\u07bc\u07ba\3\2"+ + "\2\2\u07bd\u07c0\3\2\2\2\u07be\u07bc\3\2\2\2\u07be\u07bf\3\2\2\2\u07bf"+ + "\u07c2\3\2\2\2\u07c0\u07be\3\2\2\2\u07c1\u07b9\3\2\2\2\u07c1\u07c2\3\2"+ + "\2\2\u07c2\u07c3\3\2\2\2\u07c3\u07c4\7\5\2\2\u07c4\u07d0\5\u0104\u0083"+ + "\2\u07c5\u07c7\7\30\2\2\u07c6\u07c5\3\2\2\2\u07c6\u07c7\3\2\2\2\u07c7"+ + "\u07c8\3\2\2\2\u07c8\u07cd\5\u0104\u0083\2\u07c9\u07ca\7\6\2\2\u07ca\u07cc"+ + "\5\u0104\u0083\2\u07cb\u07c9\3\2\2\2\u07cc\u07cf\3\2\2\2\u07cd\u07cb\3"+ + "\2\2\2\u07cd\u07ce\3\2\2\2\u07ce\u07d1\3\2\2\2\u07cf\u07cd\3\2\2\2\u07d0"+ + "\u07c6\3\2\2\2\u07d0\u07d1\3\2\2\2\u07d1\u0085\3\2\2\2\u07d2\u07d3\t\23"+ + "\2\2\u07d3\u0087\3\2\2\2\u07d4\u07d8\5\u00a0Q\2\u07d5\u07d7\5\u008aF\2"+ + "\u07d6\u07d5\3\2\2\2\u07d7\u07da\3\2\2\2\u07d8\u07d6\3\2\2\2\u07d8\u07d9"+ + "\3\2\2\2\u07d9\u0089\3\2\2\2\u07da\u07d8\3\2\2\2\u07db\u07dc\5\u008cG"+ + "\2\u07dc\u07dd\7\177\2\2\u07dd\u07df\5\u00a0Q\2\u07de\u07e0\5\u008eH\2"+ + "\u07df\u07de\3\2\2\2\u07df\u07e0\3\2\2\2\u07e0\u07e7\3\2\2\2\u07e1\u07e2"+ + "\7\u0099\2\2\u07e2\u07e3\5\u008cG\2\u07e3\u07e4\7\177\2\2\u07e4\u07e5"+ + "\5\u00a0Q\2\u07e5\u07e7\3\2\2\2\u07e6\u07db\3\2\2\2\u07e6\u07e1\3\2\2"+ + "\2\u07e7\u008b\3\2\2\2\u07e8\u07ea\7v\2\2\u07e9\u07e8\3\2\2\2\u07e9\u07ea"+ + "\3\2\2\2\u07ea\u0801\3\2\2\2\u07eb\u0801\78\2\2\u07ec\u07ee\7\u0085\2"+ + "\2\u07ed\u07ef\7\u00a6\2\2\u07ee\u07ed\3\2\2\2\u07ee\u07ef\3\2\2\2\u07ef"+ + "\u0801\3\2\2\2\u07f0\u07f2\7\u0085\2\2\u07f1\u07f0\3\2\2\2\u07f1\u07f2"+ + "\3\2\2\2\u07f2\u07f3\3\2\2\2\u07f3\u0801\7\u00d1\2\2\u07f4\u07f6\7\u00c6"+ + "\2\2\u07f5\u07f7\7\u00a6\2\2\u07f6\u07f5\3\2\2\2\u07f6\u07f7\3\2\2\2\u07f7"+ + "\u0801\3\2\2\2\u07f8\u07fa\7g\2\2\u07f9\u07fb\7\u00a6\2\2\u07fa\u07f9"+ + "\3\2\2\2\u07fa\u07fb\3\2\2\2\u07fb\u0801\3\2\2\2\u07fc\u07fe\7\u0085\2"+ + "\2\u07fd\u07fc\3\2\2\2\u07fd\u07fe\3\2\2\2\u07fe\u07ff\3\2\2\2\u07ff\u0801"+ + "\7\24\2\2\u0800\u07e9\3\2\2\2\u0800\u07eb\3\2\2\2\u0800\u07ec\3\2\2\2"+ + "\u0800\u07f1\3\2\2\2\u0800\u07f4\3\2\2\2\u0800\u07f8\3\2\2\2\u0800\u07fd"+ + "\3\2\2\2\u0801\u008d\3\2\2\2\u0802\u0803\7\u009f\2\2\u0803\u0807\5\u00be"+ + "`\2\u0804\u0805\7\u0101\2\2\u0805\u0807\5\u0094K\2\u0806\u0802\3\2\2\2"+ + "\u0806\u0804\3\2\2\2\u0807\u008f\3\2\2\2\u0808\u0809\7\u00e7\2\2\u0809"+ + "\u080b\7\4\2\2\u080a\u080c\5\u0092J\2\u080b\u080a\3\2\2\2\u080b\u080c"+ + "\3\2\2\2\u080c\u080d\3\2\2\2\u080d\u080e\7\5\2\2\u080e\u0091\3\2\2\2\u080f"+ + "\u0811\7\u0113\2\2\u0810\u080f\3\2\2\2\u0810\u0811\3\2\2\2\u0811\u0812"+ + "\3\2\2\2\u0812\u0813\t\24\2\2\u0813\u0828\7\u00af\2\2\u0814\u0815\5\u00bc"+ + "_\2\u0815\u0816\7\u00cd\2\2\u0816\u0828\3\2\2\2\u0817\u0818\7\36\2\2\u0818"+ + "\u0819\7\u0121\2\2\u0819\u081a\7\u00a5\2\2\u081a\u081b\7\u009e\2\2\u081b"+ + "\u0824\7\u0121\2\2\u081c\u0822\7\u009f\2\2\u081d\u0823\5\u0104\u0083\2"+ + "\u081e\u081f\5\u00fe\u0080\2\u081f\u0820\7\4\2\2\u0820\u0821\7\5\2\2\u0821"+ + "\u0823\3\2\2\2\u0822\u081d\3\2\2\2\u0822\u081e\3\2\2\2\u0823\u0825\3\2"+ + "\2\2\u0824\u081c\3\2\2\2\u0824\u0825\3\2\2\2\u0825\u0828\3\2\2\2\u0826"+ + "\u0828\5\u00bc_\2\u0827\u0810\3\2\2\2\u0827\u0814\3\2\2\2\u0827\u0817"+ + "\3\2\2\2\u0827\u0826\3\2\2\2\u0828\u0093\3\2\2\2\u0829\u082a\7\4\2\2\u082a"+ + "\u082b\5\u0096L\2\u082b\u082c\7\5\2\2\u082c\u0095\3\2\2\2\u082d\u0832"+ + "\5\u0100\u0081\2\u082e\u082f\7\6\2\2\u082f\u0831\5\u0100\u0081\2\u0830"+ + "\u082e\3\2\2\2\u0831\u0834\3\2\2\2\u0832\u0830\3\2\2\2\u0832\u0833\3\2"+ + "\2\2\u0833\u0097\3\2\2\2\u0834\u0832\3\2\2\2\u0835\u0836\7\4\2\2\u0836"+ + "\u083b\5\u009aN\2\u0837\u0838\7\6\2\2\u0838\u083a\5\u009aN\2\u0839\u0837"+ + "\3\2\2\2\u083a\u083d\3\2\2\2\u083b\u0839\3\2\2\2\u083b\u083c\3\2\2\2\u083c"+ + "\u083e\3\2\2\2\u083d\u083b\3\2\2\2\u083e\u083f\7\5\2\2\u083f\u0099\3\2"+ + "\2\2\u0840\u0842\5\u0100\u0081\2\u0841\u0843\t\21\2\2\u0842\u0841\3\2"+ + "\2\2\u0842\u0843\3\2\2\2\u0843\u009b\3\2\2\2\u0844\u0845\7\4\2\2\u0845"+ + "\u084a\5\u009eP\2\u0846\u0847\7\6\2\2\u0847\u0849\5\u009eP\2\u0848\u0846"+ + "\3\2\2\2\u0849\u084c\3\2\2\2\u084a\u0848\3\2\2\2\u084a\u084b\3\2\2\2\u084b"+ + "\u084d\3\2\2\2\u084c\u084a\3\2\2\2\u084d\u084e\7\5\2\2\u084e\u009d\3\2"+ + "\2\2\u084f\u0851\5\u0104\u0083\2\u0850\u0852\5\36\20\2\u0851\u0850\3\2"+ + "\2\2\u0851\u0852\3\2\2\2\u0852\u009f\3\2\2\2\u0853\u0855\5\u00acW\2\u0854"+ + "\u0856\5\u0090I\2\u0855\u0854\3\2\2\2\u0855\u0856\3\2\2\2\u0856\u0857"+ + "\3\2\2\2\u0857\u0858\5\u00a6T\2\u0858\u086c\3\2\2\2\u0859\u085a\7\4\2"+ + "\2\u085a\u085b\5 \21\2\u085b\u085d\7\5\2\2\u085c\u085e\5\u0090I\2\u085d"+ + "\u085c\3\2\2\2\u085d\u085e\3\2\2\2\u085e\u085f\3\2\2\2\u085f\u0860\5\u00a6"+ + "T\2\u0860\u086c\3\2\2\2\u0861\u0862\7\4\2\2\u0862\u0863\5\u0088E\2\u0863"+ + "\u0865\7\5\2\2\u0864\u0866\5\u0090I\2\u0865\u0864\3\2\2\2\u0865\u0866"+ + "\3\2\2\2\u0866\u0867\3\2\2\2\u0867\u0868\5\u00a6T\2\u0868\u086c\3\2\2"+ + "\2\u0869\u086c\5\u00a2R\2\u086a\u086c\5\u00a4S\2\u086b\u0853\3\2\2\2\u086b"+ + "\u0859\3\2\2\2\u086b\u0861\3\2\2\2\u086b\u0869\3\2\2\2\u086b\u086a\3\2"+ + "\2\2\u086c\u00a1\3\2\2\2\u086d\u086e\7\u0102\2\2\u086e\u0873\5\u00bc_"+ + "\2\u086f\u0870\7\6\2\2\u0870\u0872\5\u00bc_\2\u0871\u086f\3\2\2\2\u0872"+ + "\u0875\3\2\2\2\u0873\u0871\3\2\2\2\u0873\u0874\3\2\2\2\u0874\u0876\3\2"+ + "\2\2\u0875\u0873\3\2\2\2\u0876\u0877\5\u00a6T\2\u0877\u00a3\3\2\2\2\u0878"+ + "\u0879\5\u0100\u0081\2\u0879\u0882\7\4\2\2\u087a\u087f\5\u00bc_\2\u087b"+ + "\u087c\7\6\2\2\u087c\u087e\5\u00bc_\2\u087d\u087b\3"; + private static final String _serializedATNSegment1 = + "\2\2\2\u087e\u0881\3\2\2\2\u087f\u087d\3\2\2\2\u087f\u0880\3\2\2\2\u0880"+ + "\u0883\3\2\2\2\u0881\u087f\3\2\2\2\u0882\u087a\3\2\2\2\u0882\u0883\3\2"+ + "\2\2\u0883\u0884\3\2\2\2\u0884\u0885\7\5\2\2\u0885\u0886\5\u00a6T\2\u0886"+ + "\u00a5\3\2\2\2\u0887\u0889\7\30\2\2\u0888\u0887\3\2\2\2\u0888\u0889\3"+ + "\2\2\2\u0889\u088a\3\2\2\2\u088a\u088c\5\u0106\u0084\2\u088b\u088d\5\u0094"+ + "K\2\u088c\u088b\3\2\2\2\u088c\u088d\3\2\2\2\u088d\u088f\3\2\2\2\u088e"+ + "\u0888\3\2\2\2\u088e\u088f\3\2\2\2\u088f\u00a7\3\2\2\2\u0890\u0891\7\u00cc"+ + "\2\2\u0891\u0892\7d\2\2\u0892\u0893\7\u00d3\2\2\u0893\u0897\7\u011d\2"+ + "\2\u0894\u0895\7\u0108\2\2\u0895\u0896\7\u00d4\2\2\u0896\u0898\58\35\2"+ + "\u0897\u0894\3\2\2\2\u0897\u0898\3\2\2\2\u0898\u08c2\3\2\2\2\u0899\u089a"+ + "\7\u00cc\2\2\u089a\u089b\7d\2\2\u089b\u08a5\7F\2\2\u089c\u089d\7]\2\2"+ + "\u089d\u089e\7\u00ea\2\2\u089e\u089f\7 \2\2\u089f\u08a3\7\u011d\2\2\u08a0"+ + "\u08a1\7R\2\2\u08a1\u08a2\7 \2\2\u08a2\u08a4\7\u011d\2\2\u08a3\u08a0\3"+ + "\2\2\2\u08a3\u08a4\3\2\2\2\u08a4\u08a6\3\2\2\2\u08a5\u089c\3\2\2\2\u08a5"+ + "\u08a6\3\2\2\2\u08a6\u08ac\3\2\2\2\u08a7\u08a8\7,\2\2\u08a8\u08a9\7~\2"+ + "\2\u08a9\u08aa\7\u00ea\2\2\u08aa\u08ab\7 \2\2\u08ab\u08ad\7\u011d\2\2"+ + "\u08ac\u08a7\3\2\2\2\u08ac\u08ad\3\2\2\2\u08ad\u08b3\3\2\2\2\u08ae\u08af"+ + "\7\u0091\2\2\u08af\u08b0\7\u0080\2\2\u08b0\u08b1\7\u00ea\2\2\u08b1\u08b2"+ + "\7 \2\2\u08b2\u08b4\7\u011d\2\2\u08b3\u08ae\3\2\2\2\u08b3\u08b4\3\2\2"+ + "\2\u08b4\u08b9\3\2\2\2\u08b5\u08b6\7\u0088\2\2\u08b6\u08b7\7\u00ea\2\2"+ + "\u08b7\u08b8\7 \2\2\u08b8\u08ba\7\u011d\2\2\u08b9\u08b5\3\2\2\2\u08b9"+ + "\u08ba\3\2\2\2\u08ba\u08bf\3\2\2\2\u08bb\u08bc\7\u009c\2\2\u08bc\u08bd"+ + "\7D\2\2\u08bd\u08be\7\30\2\2\u08be\u08c0\7\u011d\2\2\u08bf\u08bb\3\2\2"+ + "\2\u08bf\u08c0\3\2\2\2\u08c0\u08c2\3\2\2\2\u08c1\u0890\3\2\2\2\u08c1\u0899"+ + "\3\2\2\2\u08c2\u00a9\3\2\2\2\u08c3\u08c8\5\u00acW\2\u08c4\u08c5\7\6\2"+ + "\2\u08c5\u08c7\5\u00acW\2\u08c6\u08c4\3\2\2\2\u08c7\u08ca\3\2\2\2\u08c8"+ + "\u08c6\3\2\2\2\u08c8\u08c9\3\2\2\2\u08c9\u00ab\3\2\2\2\u08ca\u08c8\3\2"+ + "\2\2\u08cb\u08d0\5\u0100\u0081\2\u08cc\u08cd\7\7\2\2\u08cd\u08cf\5\u0100"+ + "\u0081\2\u08ce\u08cc\3\2\2\2\u08cf\u08d2\3\2\2\2\u08d0\u08ce\3\2\2\2\u08d0"+ + "\u08d1\3\2\2\2\u08d1\u00ad\3\2\2\2\u08d2\u08d0\3\2\2\2\u08d3\u08d4\5\u0100"+ + "\u0081\2\u08d4\u08d5\7\7\2\2\u08d5\u08d7\3\2\2\2\u08d6\u08d3\3\2\2\2\u08d6"+ + "\u08d7\3\2\2\2\u08d7\u08d8\3\2\2\2\u08d8\u08d9\5\u0100\u0081\2\u08d9\u00af"+ + "\3\2\2\2\u08da\u08db\5\u0100\u0081\2\u08db\u08dc\7\7\2\2\u08dc\u08de\3"+ + "\2\2\2\u08dd\u08da\3\2\2\2\u08dd\u08de\3\2\2\2\u08de\u08df\3\2\2\2\u08df"+ + "\u08e0\5\u0100\u0081\2\u08e0\u00b1\3\2\2\2\u08e1\u08e9\5\u00bc_\2\u08e2"+ + "\u08e4\7\30\2\2\u08e3\u08e2\3\2\2\2\u08e3\u08e4\3\2\2\2\u08e4\u08e7\3"+ + "\2\2\2\u08e5\u08e8\5\u0100\u0081\2\u08e6\u08e8\5\u0094K\2\u08e7\u08e5"+ + "\3\2\2\2\u08e7\u08e6\3\2\2\2\u08e8\u08ea\3\2\2\2\u08e9\u08e3\3\2\2\2\u08e9"+ + "\u08ea\3\2\2\2\u08ea\u00b3\3\2\2\2\u08eb\u08f0\5\u00b2Z\2\u08ec\u08ed"+ + "\7\6\2\2\u08ed\u08ef\5\u00b2Z\2\u08ee\u08ec\3\2\2\2\u08ef\u08f2\3\2\2"+ + "\2\u08f0\u08ee\3\2\2\2\u08f0\u08f1\3\2\2\2\u08f1\u00b5\3\2\2\2\u08f2\u08f0"+ + "\3\2\2\2\u08f3\u08f4\7\4\2\2\u08f4\u08f9\5\u00b8]\2\u08f5\u08f6\7\6\2"+ + "\2\u08f6\u08f8\5\u00b8]\2\u08f7\u08f5\3\2\2\2\u08f8\u08fb\3\2\2\2\u08f9"+ + "\u08f7\3\2\2\2\u08f9\u08fa\3\2\2\2\u08fa\u08fc\3\2\2\2\u08fb\u08f9\3\2"+ + "\2\2\u08fc\u08fd\7\5\2\2\u08fd\u00b7\3\2\2\2\u08fe\u090c\5\u00fe\u0080"+ + "\2\u08ff\u0900\5\u0104\u0083\2\u0900\u0901\7\4\2\2\u0901\u0906\5\u00ba"+ + "^\2\u0902\u0903\7\6\2\2\u0903\u0905\5\u00ba^\2\u0904\u0902\3\2\2\2\u0905"+ + "\u0908\3\2\2\2\u0906\u0904\3\2\2\2\u0906\u0907\3\2\2\2\u0907\u0909\3\2"+ + "\2\2\u0908\u0906\3\2\2\2\u0909\u090a\7\5\2\2\u090a\u090c\3\2\2\2\u090b"+ + "\u08fe\3\2\2\2\u090b\u08ff\3\2\2\2\u090c\u00b9\3\2\2\2\u090d\u0910\5\u00fe"+ + "\u0080\2\u090e\u0910\5\u00c6d\2\u090f\u090d\3\2\2\2\u090f\u090e\3\2\2"+ + "\2\u0910\u00bb\3\2\2\2\u0911\u0912\5\u00be`\2\u0912\u00bd\3\2\2\2\u0913"+ + "\u0914\b`\1\2\u0914\u0915\7\u009b\2\2\u0915\u0920\5\u00be`\7\u0916\u0917"+ + "\7U\2\2\u0917\u0918\7\4\2\2\u0918\u0919\5 \21\2\u0919\u091a\7\5\2\2\u091a"+ + "\u0920\3\2\2\2\u091b\u091d\5\u00c2b\2\u091c\u091e\5\u00c0a\2\u091d\u091c"+ + "\3\2\2\2\u091d\u091e\3\2\2\2\u091e\u0920\3\2\2\2\u091f\u0913\3\2\2\2\u091f"+ + "\u0916\3\2\2\2\u091f\u091b\3\2\2\2\u0920\u0929\3\2\2\2\u0921\u0922\f\4"+ + "\2\2\u0922\u0923\7\23\2\2\u0923\u0928\5\u00be`\5\u0924\u0925\f\3\2\2\u0925"+ + "\u0926\7\u00a3\2\2\u0926\u0928\5\u00be`\4\u0927\u0921\3\2\2\2\u0927\u0924"+ + "\3\2\2\2\u0928\u092b\3\2\2\2\u0929\u0927\3\2\2\2\u0929\u092a\3\2\2\2\u092a"+ + "\u00bf\3\2\2\2\u092b\u0929\3\2\2\2\u092c\u092e\7\u009b\2\2\u092d\u092c"+ + "\3\2\2\2\u092d\u092e\3\2\2\2\u092e\u092f\3\2\2\2\u092f\u0930\7\34\2\2"+ + "\u0930\u0931\5\u00c2b\2\u0931\u0932\7\23\2\2\u0932\u0933\5\u00c2b\2\u0933"+ + "\u097f\3\2\2\2\u0934\u0936\7\u009b\2\2\u0935\u0934\3\2\2\2\u0935\u0936"+ + "\3\2\2\2\u0936\u0937\3\2\2\2\u0937\u0938\7s\2\2\u0938\u0939\7\4\2\2\u0939"+ + "\u093e\5\u00bc_\2\u093a\u093b\7\6\2\2\u093b\u093d\5\u00bc_\2\u093c\u093a"+ + "\3\2\2\2\u093d\u0940\3\2\2\2\u093e\u093c\3\2\2\2\u093e\u093f\3\2\2\2\u093f"+ + "\u0941\3\2\2\2\u0940\u093e\3\2\2\2\u0941\u0942\7\5\2\2\u0942\u097f\3\2"+ + "\2\2\u0943\u0945\7\u009b\2\2\u0944\u0943\3\2\2\2\u0944\u0945\3\2\2\2\u0945"+ + "\u0946\3\2\2\2\u0946\u0947\7s\2\2\u0947\u0948\7\4\2\2\u0948\u0949\5 \21"+ + "\2\u0949\u094a\7\5\2\2\u094a\u097f\3\2\2\2\u094b\u094d\7\u009b\2\2\u094c"+ + "\u094b\3\2\2\2\u094c\u094d\3\2\2\2\u094d\u094e\3\2\2\2\u094e\u094f\7\u00c7"+ + "\2\2\u094f\u097f\5\u00c2b\2\u0950\u0952\7\u009b\2\2\u0951\u0950\3\2\2"+ + "\2\u0951\u0952\3\2\2\2\u0952\u0953\3\2\2\2\u0953\u0954\7\u0086\2\2\u0954"+ + "\u0962\t\25\2\2\u0955\u0956\7\4\2\2\u0956\u0963\7\5\2\2\u0957\u0958\7"+ + "\4\2\2\u0958\u095d\5\u00bc_\2\u0959\u095a\7\6\2\2\u095a\u095c\5\u00bc"+ + "_\2\u095b\u0959\3\2\2\2\u095c\u095f\3\2\2\2\u095d\u095b\3\2\2\2\u095d"+ + "\u095e\3\2\2\2\u095e\u0960\3\2\2\2\u095f\u095d\3\2\2\2\u0960\u0961\7\5"+ + "\2\2\u0961\u0963\3\2\2\2\u0962\u0955\3\2\2\2\u0962\u0957\3\2\2\2\u0963"+ + "\u097f\3\2\2\2\u0964\u0966\7\u009b\2\2\u0965\u0964\3\2\2\2\u0965\u0966"+ + "\3\2\2\2\u0966\u0967\3\2\2\2\u0967\u0968\7\u0086\2\2\u0968\u096b\5\u00c2"+ + "b\2\u0969\u096a\7Q\2\2\u096a\u096c\7\u011d\2\2\u096b\u0969\3\2\2\2\u096b"+ + "\u096c\3\2\2\2\u096c\u097f\3\2\2\2\u096d\u096f\7}\2\2\u096e\u0970\7\u009b"+ + "\2\2\u096f\u096e\3\2\2\2\u096f\u0970\3\2\2\2\u0970\u0971\3\2\2\2\u0971"+ + "\u097f\7\u009c\2\2\u0972\u0974\7}\2\2\u0973\u0975\7\u009b\2\2\u0974\u0973"+ + "\3\2\2\2\u0974\u0975\3\2\2\2\u0975\u0976\3\2\2\2\u0976\u097f\t\26\2\2"+ + "\u0977\u0979\7}\2\2\u0978\u097a\7\u009b\2\2\u0979\u0978\3\2\2\2\u0979"+ + "\u097a\3\2\2\2\u097a\u097b\3\2\2\2\u097b\u097c\7L\2\2\u097c\u097d\7f\2"+ + "\2\u097d\u097f\5\u00c2b\2\u097e\u092d\3\2\2\2\u097e\u0935\3\2\2\2\u097e"+ + "\u0944\3\2\2\2\u097e\u094c\3\2\2\2\u097e\u0951\3\2\2\2\u097e\u0965\3\2"+ + "\2\2\u097e\u096d\3\2\2\2\u097e\u0972\3\2\2\2\u097e\u0977\3\2\2\2\u097f"+ + "\u00c1\3\2\2\2\u0980\u0981\bb\1\2\u0981\u0985\5\u00c4c\2\u0982\u0983\t"+ + "\27\2\2\u0983\u0985\5\u00c2b\t\u0984\u0980\3\2\2\2\u0984\u0982\3\2\2\2"+ + "\u0985\u099b\3\2\2\2\u0986\u0987\f\b\2\2\u0987\u0988\t\30\2\2\u0988\u099a"+ + "\5\u00c2b\t\u0989\u098a\f\7\2\2\u098a\u098b\t\31\2\2\u098b\u099a\5\u00c2"+ + "b\b\u098c\u098d\f\6\2\2\u098d\u098e\7\u0119\2\2\u098e\u099a\5\u00c2b\7"+ + "\u098f\u0990\f\5\2\2\u0990\u0991\7\u011c\2\2\u0991\u099a\5\u00c2b\6\u0992"+ + "\u0993\f\4\2\2\u0993\u0994\7\u011a\2\2\u0994\u099a\5\u00c2b\5\u0995\u0996"+ + "\f\3\2\2\u0996\u0997\5\u00c8e\2\u0997\u0998\5\u00c2b\4\u0998\u099a\3\2"+ + "\2\2\u0999\u0986\3\2\2\2\u0999\u0989\3\2\2\2\u0999\u098c\3\2\2\2\u0999"+ + "\u098f\3\2\2\2\u0999\u0992\3\2\2\2\u0999\u0995\3\2\2\2\u099a\u099d\3\2"+ + "\2\2\u099b\u0999\3\2\2\2\u099b\u099c\3\2\2\2\u099c\u00c3\3\2\2\2\u099d"+ + "\u099b\3\2\2\2\u099e\u099f\bc\1\2\u099f\u0a57\t\32\2\2\u09a0\u09a2\7#"+ + "\2\2\u09a1\u09a3\5\u00eex\2\u09a2\u09a1\3\2\2\2\u09a3\u09a4\3\2\2\2\u09a4"+ + "\u09a2\3\2\2\2\u09a4\u09a5\3\2\2\2\u09a5\u09a8\3\2\2\2\u09a6\u09a7\7O"+ + "\2\2\u09a7\u09a9\5\u00bc_\2\u09a8\u09a6\3\2\2\2\u09a8\u09a9\3\2\2\2\u09a9"+ + "\u09aa\3\2\2\2\u09aa\u09ab\7P\2\2\u09ab\u0a57\3\2\2\2\u09ac\u09ad\7#\2"+ + "\2\u09ad\u09af\5\u00bc_\2\u09ae\u09b0\5\u00eex\2\u09af\u09ae\3\2\2\2\u09b0"+ + "\u09b1\3\2\2\2\u09b1\u09af\3\2\2\2\u09b1\u09b2\3\2\2\2\u09b2\u09b5\3\2"+ + "\2\2\u09b3\u09b4\7O\2\2\u09b4\u09b6\5\u00bc_\2\u09b5\u09b3\3\2\2\2\u09b5"+ + "\u09b6\3\2\2\2\u09b6\u09b7\3\2\2\2\u09b7\u09b8\7P\2\2\u09b8\u0a57\3\2"+ + "\2\2\u09b9\u09ba\7$\2\2\u09ba\u09bb\7\4\2\2\u09bb\u09bc\5\u00bc_\2\u09bc"+ + "\u09bd\7\30\2\2\u09bd\u09be\5\u00e0q\2\u09be\u09bf\7\5\2\2\u09bf\u0a57"+ + "\3\2\2\2\u09c0\u09c1\7\u00e2\2\2\u09c1\u09ca\7\4\2\2\u09c2\u09c7\5\u00b2"+ + "Z\2\u09c3\u09c4\7\6\2\2\u09c4\u09c6\5\u00b2Z\2\u09c5\u09c3\3\2\2\2\u09c6"+ + "\u09c9\3\2\2\2\u09c7\u09c5\3\2\2\2\u09c7\u09c8\3\2\2\2\u09c8\u09cb\3\2"+ + "\2\2\u09c9\u09c7\3\2\2\2\u09ca\u09c2\3\2\2\2\u09ca\u09cb\3\2\2\2\u09cb"+ + "\u09cc\3\2\2\2\u09cc\u0a57\7\5\2\2\u09cd\u09ce\7`\2\2\u09ce\u09cf\7\4"+ + "\2\2\u09cf\u09d2\5\u00bc_\2\u09d0\u09d1\7q\2\2\u09d1\u09d3\7\u009d\2\2"+ + "\u09d2\u09d0\3\2\2\2\u09d2\u09d3\3\2\2\2\u09d3\u09d4\3\2\2\2\u09d4\u09d5"+ + "\7\5\2\2\u09d5\u0a57\3\2\2\2\u09d6\u09d7\7\u0081\2\2\u09d7\u09d8\7\4\2"+ + "\2\u09d8\u09db\5\u00bc_\2\u09d9\u09da\7q\2\2\u09da\u09dc\7\u009d\2\2\u09db"+ + "\u09d9\3\2\2\2\u09db\u09dc\3\2\2\2\u09dc\u09dd\3\2\2\2\u09dd\u09de\7\5"+ + "\2\2\u09de\u0a57\3\2\2\2\u09df\u09e0\7\u00b2\2\2\u09e0\u09e1\7\4\2\2\u09e1"+ + "\u09e2\5\u00c2b\2\u09e2\u09e3\7s\2\2\u09e3\u09e4\5\u00c2b\2\u09e4\u09e5"+ + "\7\5\2\2\u09e5\u0a57\3\2\2\2\u09e6\u0a57\5\u00c6d\2\u09e7\u0a57\7\u0114"+ + "\2\2\u09e8\u09e9\5\u00fe\u0080\2\u09e9\u09ea\7\7\2\2\u09ea\u09eb\7\u0114"+ + "\2\2\u09eb\u0a57\3\2\2\2\u09ec\u09ed\7\4\2\2\u09ed\u09f0\5\u00b2Z\2\u09ee"+ + "\u09ef\7\6\2\2\u09ef\u09f1\5\u00b2Z\2\u09f0\u09ee\3\2\2\2\u09f1\u09f2"+ + "\3\2\2\2\u09f2\u09f0\3\2\2\2\u09f2\u09f3\3\2\2\2\u09f3\u09f4\3\2\2\2\u09f4"+ + "\u09f5\7\5\2\2\u09f5\u0a57\3\2\2\2\u09f6\u09f7\7\4\2\2\u09f7\u09f8\5 "+ + "\21\2\u09f8\u09f9\7\5\2\2\u09f9\u0a57\3\2\2\2\u09fa\u09fb\5\u00fc\177"+ + "\2\u09fb\u0a07\7\4\2\2\u09fc\u09fe\5\u0086D\2\u09fd\u09fc\3\2\2\2\u09fd"+ + "\u09fe\3\2\2\2\u09fe\u09ff\3\2\2\2\u09ff\u0a04\5\u00bc_\2\u0a00\u0a01"+ + "\7\6\2\2\u0a01\u0a03\5\u00bc_\2\u0a02\u0a00\3\2\2\2\u0a03\u0a06\3\2\2"+ + "\2\u0a04\u0a02\3\2\2\2\u0a04\u0a05\3\2\2\2\u0a05\u0a08\3\2\2\2\u0a06\u0a04"+ + "\3\2\2\2\u0a07\u09fd\3\2\2\2\u0a07\u0a08\3\2\2\2\u0a08\u0a09\3\2\2\2\u0a09"+ + "\u0a10\7\5\2\2\u0a0a\u0a0b\7^\2\2\u0a0b\u0a0c\7\4\2\2\u0a0c\u0a0d\7\u0106"+ + "\2\2\u0a0d\u0a0e\5\u00be`\2\u0a0e\u0a0f\7\5\2\2\u0a0f\u0a11\3\2\2\2\u0a10"+ + "\u0a0a\3\2\2\2\u0a10\u0a11\3\2\2\2\u0a11\u0a14\3\2\2\2\u0a12\u0a13\7\u00a8"+ + "\2\2\u0a13\u0a15\5\u00f4{\2\u0a14\u0a12\3\2\2\2\u0a14\u0a15\3\2\2\2\u0a15"+ + "\u0a57\3\2\2\2\u0a16\u0a17\5\u0104\u0083\2\u0a17\u0a18\7\n\2\2\u0a18\u0a19"+ + "\5\u00bc_\2\u0a19\u0a57\3\2\2\2\u0a1a\u0a1b\7\4\2\2\u0a1b\u0a1e\5\u0104"+ + "\u0083\2\u0a1c\u0a1d\7\6\2\2\u0a1d\u0a1f\5\u0104\u0083\2\u0a1e\u0a1c\3"+ + "\2\2\2\u0a1f\u0a20\3\2\2\2\u0a20\u0a1e\3\2\2\2\u0a20\u0a21\3\2\2\2\u0a21"+ + "\u0a22\3\2\2\2\u0a22\u0a23\7\5\2\2\u0a23\u0a24\7\n\2\2\u0a24\u0a25\5\u00bc"+ + "_\2\u0a25\u0a57\3\2\2\2\u0a26\u0a57\5\u0104\u0083\2\u0a27\u0a28\7\4\2"+ + "\2\u0a28\u0a29\5\u00bc_\2\u0a29\u0a2a\7\5\2\2\u0a2a\u0a57\3\2\2\2\u0a2b"+ + "\u0a2c\7Z\2\2\u0a2c\u0a2d\7\4\2\2\u0a2d\u0a2e\5\u0104\u0083\2\u0a2e\u0a2f"+ + "\7f\2\2\u0a2f\u0a30\5\u00c2b\2\u0a30\u0a31\7\5\2\2\u0a31\u0a57\3\2\2\2"+ + "\u0a32\u0a33\t\33\2\2\u0a33\u0a34\7\4\2\2\u0a34\u0a35\5\u00c2b\2\u0a35"+ + "\u0a36\t\34\2\2\u0a36\u0a39\5\u00c2b\2\u0a37\u0a38\t\35\2\2\u0a38\u0a3a"+ + "\5\u00c2b\2\u0a39\u0a37\3\2\2\2\u0a39\u0a3a\3\2\2\2\u0a3a\u0a3b\3\2\2"+ + "\2\u0a3b\u0a3c\7\5\2\2\u0a3c\u0a57\3\2\2\2\u0a3d\u0a3e\7\u00f2\2\2\u0a3e"+ + "\u0a40\7\4\2\2\u0a3f\u0a41\t\36\2\2\u0a40\u0a3f\3\2\2\2\u0a40\u0a41\3"+ + "\2\2\2\u0a41\u0a43\3\2\2\2\u0a42\u0a44\5\u00c2b\2\u0a43\u0a42\3\2\2\2"+ + "\u0a43\u0a44\3\2\2\2\u0a44\u0a45\3\2\2\2\u0a45\u0a46\7f\2\2\u0a46\u0a47"+ + "\5\u00c2b\2\u0a47\u0a48\7\5\2\2\u0a48\u0a57\3\2\2\2\u0a49\u0a4a\7\u00aa"+ + "\2\2\u0a4a\u0a4b\7\4\2\2\u0a4b\u0a4c\5\u00c2b\2\u0a4c\u0a4d\7\u00b1\2"+ + "\2\u0a4d\u0a4e\5\u00c2b\2\u0a4e\u0a4f\7f\2\2\u0a4f\u0a52\5\u00c2b\2\u0a50"+ + "\u0a51\7b\2\2\u0a51\u0a53\5\u00c2b\2\u0a52\u0a50\3\2\2\2\u0a52\u0a53\3"+ + "\2\2\2\u0a53\u0a54\3\2\2\2\u0a54\u0a55\7\5\2\2\u0a55\u0a57\3\2\2\2\u0a56"+ + "\u099e\3\2\2\2\u0a56\u09a0\3\2\2\2\u0a56\u09ac\3\2\2\2\u0a56\u09b9\3\2"+ + "\2\2\u0a56\u09c0\3\2\2\2\u0a56\u09cd\3\2\2\2\u0a56\u09d6\3\2\2\2\u0a56"+ + "\u09df\3\2\2\2\u0a56\u09e6\3\2\2\2\u0a56\u09e7\3\2\2\2\u0a56\u09e8\3\2"+ + "\2\2\u0a56\u09ec\3\2\2\2\u0a56\u09f6\3\2\2\2\u0a56\u09fa\3\2\2\2\u0a56"+ + "\u0a16\3\2\2\2\u0a56\u0a1a\3\2\2\2\u0a56\u0a26\3\2\2\2\u0a56\u0a27\3\2"+ + "\2\2\u0a56\u0a2b\3\2\2\2\u0a56\u0a32\3\2\2\2\u0a56\u0a3d\3\2\2\2\u0a56"+ + "\u0a49\3\2\2\2\u0a57\u0a62\3\2\2\2\u0a58\u0a59\f\n\2\2\u0a59\u0a5a\7\13"+ + "\2\2\u0a5a\u0a5b\5\u00c2b\2\u0a5b\u0a5c\7\f\2\2\u0a5c\u0a61\3\2\2\2\u0a5d"+ + "\u0a5e\f\b\2\2\u0a5e\u0a5f\7\7\2\2\u0a5f\u0a61\5\u0104\u0083\2\u0a60\u0a58"+ + "\3\2\2\2\u0a60\u0a5d\3\2\2\2\u0a61\u0a64\3\2\2\2\u0a62\u0a60\3\2\2\2\u0a62"+ + "\u0a63\3\2\2\2\u0a63\u00c5\3\2\2\2\u0a64\u0a62\3\2\2\2\u0a65\u0a72\7\u009c"+ + "\2\2\u0a66\u0a72\5\u00d0i\2\u0a67\u0a68\5\u0104\u0083\2\u0a68\u0a69\7"+ + "\u011d\2\2\u0a69\u0a72\3\2\2\2\u0a6a\u0a72\5\u010a\u0086\2\u0a6b\u0a72"+ + "\5\u00ceh\2\u0a6c\u0a6e\7\u011d\2\2\u0a6d\u0a6c\3\2\2\2\u0a6e\u0a6f\3"+ + "\2\2\2\u0a6f\u0a6d\3\2\2\2\u0a6f\u0a70\3\2\2\2\u0a70\u0a72\3\2\2\2\u0a71"+ + "\u0a65\3\2\2\2\u0a71\u0a66\3\2\2\2\u0a71\u0a67\3\2\2\2\u0a71\u0a6a\3\2"+ + "\2\2\u0a71\u0a6b\3\2\2\2\u0a71\u0a6d\3\2\2\2\u0a72\u00c7\3\2\2\2\u0a73"+ + "\u0a74\t\37\2\2\u0a74\u00c9\3\2\2\2\u0a75\u0a76\t \2\2\u0a76\u00cb\3\2"+ + "\2\2\u0a77\u0a78\t!\2\2\u0a78\u00cd\3\2\2\2\u0a79\u0a7a\t\"\2\2\u0a7a"+ + "\u00cf\3\2\2\2\u0a7b\u0a7e\7{\2\2\u0a7c\u0a7f\5\u00d2j\2\u0a7d\u0a7f\5"+ + "\u00d6l\2\u0a7e\u0a7c\3\2\2\2\u0a7e\u0a7d\3\2\2\2\u0a7e\u0a7f\3\2\2\2"+ + "\u0a7f\u00d1\3\2\2\2\u0a80\u0a82\5\u00d4k\2\u0a81\u0a83\5\u00d8m\2\u0a82"+ + "\u0a81\3\2\2\2\u0a82\u0a83\3\2\2\2\u0a83\u00d3\3\2\2\2\u0a84\u0a85\5\u00da"+ + "n\2\u0a85\u0a86\5\u00dco\2\u0a86\u0a88\3\2\2\2\u0a87\u0a84\3\2\2\2\u0a88"+ + "\u0a89\3\2\2\2\u0a89\u0a87\3\2\2\2\u0a89\u0a8a\3\2\2\2\u0a8a\u00d5\3\2"+ + "\2\2\u0a8b\u0a8e\5\u00d8m\2\u0a8c\u0a8f\5\u00d4k\2\u0a8d\u0a8f\5\u00d8"+ + "m\2\u0a8e\u0a8c\3\2\2\2\u0a8e\u0a8d\3\2\2\2\u0a8e\u0a8f\3\2\2\2\u0a8f"+ + "\u00d7\3\2\2\2\u0a90\u0a91\5\u00dan\2\u0a91\u0a92\5\u00dco\2\u0a92\u0a93"+ + "\7\u00ec\2\2\u0a93\u0a94\5\u00dco\2\u0a94\u00d9\3\2\2\2\u0a95\u0a97\t"+ + "#\2\2\u0a96\u0a95\3\2\2\2\u0a96\u0a97\3\2\2\2\u0a97\u0a98\3\2\2\2\u0a98"+ + "\u0a9b\t\24\2\2\u0a99\u0a9b\7\u011d\2\2\u0a9a\u0a96\3\2\2\2\u0a9a\u0a99"+ + "\3\2\2\2\u0a9b\u00db\3\2\2\2\u0a9c\u0aa4\7B\2\2\u0a9d\u0aa4\7o\2\2\u0a9e"+ + "\u0aa4\7\u0094\2\2\u0a9f\u0aa4\7\u0095\2\2\u0aa0\u0aa4\7\u00cf\2\2\u0aa1"+ + "\u0aa4\7\u0109\2\2\u0aa2\u0aa4\5\u0104\u0083\2\u0aa3\u0a9c\3\2\2\2\u0aa3"+ + "\u0a9d\3\2\2\2\u0aa3\u0a9e\3\2\2\2\u0aa3\u0a9f\3\2\2\2\u0aa3\u0aa0\3\2"+ + "\2\2\u0aa3\u0aa1\3\2\2\2\u0aa3\u0aa2\3\2\2\2\u0aa4\u00dd\3\2\2\2\u0aa5"+ + "\u0aa9\7`\2\2\u0aa6\u0aa7\7\17\2\2\u0aa7\u0aa9\5\u0100\u0081\2\u0aa8\u0aa5"+ + "\3\2\2\2\u0aa8\u0aa6\3\2\2\2\u0aa9\u00df\3\2\2\2\u0aaa\u0aab\7\27\2\2"+ + "\u0aab\u0aac\7\u010e\2\2\u0aac\u0aad\5\u00e0q\2\u0aad\u0aae\7\u0110\2"+ + "\2\u0aae\u0acd\3\2\2\2\u0aaf\u0ab0\7\u0091\2\2\u0ab0\u0ab1\7\u010e\2\2"+ + "\u0ab1\u0ab2\5\u00e0q\2\u0ab2\u0ab3\7\6\2\2\u0ab3\u0ab4\5\u00e0q\2\u0ab4"+ + "\u0ab5\7\u0110\2\2\u0ab5\u0acd\3\2\2\2\u0ab6\u0abd\7\u00e2\2\2\u0ab7\u0ab9"+ + "\7\u010e\2\2\u0ab8\u0aba\5\u00eav\2\u0ab9\u0ab8\3\2\2\2\u0ab9\u0aba\3"+ + "\2\2\2\u0aba\u0abb\3\2\2\2\u0abb\u0abe\7\u0110\2\2\u0abc\u0abe\7\u010c"+ + "\2\2\u0abd\u0ab7\3\2\2\2\u0abd\u0abc\3\2\2\2\u0abe\u0acd\3\2\2\2\u0abf"+ + "\u0aca\5\u0104\u0083\2\u0ac0\u0ac1\7\4\2\2\u0ac1\u0ac6\7\u0121\2\2\u0ac2"+ + "\u0ac3\7\6\2\2\u0ac3\u0ac5\7\u0121\2\2\u0ac4\u0ac2\3\2\2\2\u0ac5\u0ac8"+ + "\3\2\2\2\u0ac6\u0ac4\3\2\2\2\u0ac6\u0ac7\3\2\2\2\u0ac7\u0ac9\3\2\2\2\u0ac8"+ + "\u0ac6\3\2\2\2\u0ac9\u0acb\7\5\2\2\u0aca\u0ac0\3\2\2\2\u0aca\u0acb\3\2"+ + "\2\2\u0acb\u0acd\3\2\2\2\u0acc\u0aaa\3\2\2\2\u0acc\u0aaf\3\2\2\2\u0acc"+ + "\u0ab6\3\2\2\2\u0acc\u0abf\3\2\2\2\u0acd\u00e1\3\2\2\2\u0ace\u0ad3\5\u00e4"+ + "s\2\u0acf\u0ad0\7\6\2\2\u0ad0\u0ad2\5\u00e4s\2\u0ad1\u0acf\3\2\2\2\u0ad2"+ + "\u0ad5\3\2\2\2\u0ad3\u0ad1\3\2\2\2\u0ad3\u0ad4\3\2\2\2\u0ad4\u00e3\3\2"+ + "\2\2\u0ad5\u0ad3\3\2\2\2\u0ad6\u0ad7\5\u00acW\2\u0ad7\u0ada\5\u00e0q\2"+ + "\u0ad8\u0ad9\7\u009b\2\2\u0ad9\u0adb\7\u009c\2\2\u0ada\u0ad8\3\2\2\2\u0ada"+ + "\u0adb\3\2\2\2\u0adb\u0add\3\2\2\2\u0adc\u0ade\5\36\20\2\u0add\u0adc\3"+ + "\2\2\2\u0add\u0ade\3\2\2\2\u0ade\u0ae0\3\2\2\2\u0adf\u0ae1\5\u00dep\2"+ + "\u0ae0\u0adf\3\2\2\2\u0ae0\u0ae1\3\2\2\2\u0ae1\u00e5\3\2\2\2\u0ae2\u0ae7"+ + "\5\u00e8u\2\u0ae3\u0ae4\7\6\2\2\u0ae4\u0ae6\5\u00e8u\2\u0ae5\u0ae3\3\2"+ + "\2\2\u0ae6\u0ae9\3\2\2\2\u0ae7\u0ae5\3\2\2\2\u0ae7\u0ae8\3\2\2\2\u0ae8"+ + "\u00e7\3\2\2\2\u0ae9\u0ae7\3\2\2\2\u0aea\u0aeb\5\u0100\u0081\2\u0aeb\u0aee"+ + "\5\u00e0q\2\u0aec\u0aed\7\u009b\2\2\u0aed\u0aef\7\u009c\2\2\u0aee\u0aec"+ + "\3\2\2\2\u0aee\u0aef\3\2\2\2\u0aef\u0af1\3\2\2\2\u0af0\u0af2\5\36\20\2"+ + "\u0af1\u0af0\3\2\2\2\u0af1\u0af2\3\2\2\2\u0af2\u00e9\3\2\2\2\u0af3\u0af8"+ + "\5\u00ecw\2\u0af4\u0af5\7\6\2\2\u0af5\u0af7\5\u00ecw\2\u0af6\u0af4\3\2"+ + "\2\2\u0af7\u0afa\3\2\2\2\u0af8\u0af6\3\2\2\2\u0af8\u0af9\3\2\2\2\u0af9"+ + "\u00eb\3\2\2\2\u0afa\u0af8\3\2\2\2\u0afb\u0afc\5\u0104\u0083\2\u0afc\u0afd"+ + "\7\r\2\2\u0afd\u0b00\5\u00e0q\2\u0afe\u0aff\7\u009b\2\2\u0aff\u0b01\7"+ + "\u009c\2\2\u0b00\u0afe\3\2\2\2\u0b00\u0b01\3\2\2\2\u0b01\u0b03\3\2\2\2"+ + "\u0b02\u0b04\5\36\20\2\u0b03\u0b02\3\2\2\2\u0b03\u0b04\3\2\2\2\u0b04\u00ed"+ + "\3\2\2\2\u0b05\u0b06\7\u0105\2\2\u0b06\u0b07\5\u00bc_\2\u0b07\u0b08\7"+ + "\u00eb\2\2\u0b08\u0b09\5\u00bc_\2\u0b09\u00ef\3\2\2\2\u0b0a\u0b0b\7\u0107"+ + "\2\2\u0b0b\u0b10\5\u00f2z\2\u0b0c\u0b0d\7\6\2\2\u0b0d\u0b0f\5\u00f2z\2"+ + "\u0b0e\u0b0c\3\2\2\2\u0b0f\u0b12\3\2\2\2\u0b10\u0b0e\3\2\2\2\u0b10\u0b11"+ + "\3\2\2\2\u0b11\u00f1\3\2\2\2\u0b12\u0b10\3\2\2\2\u0b13\u0b14\5\u0100\u0081"+ + "\2\u0b14\u0b15\7\30\2\2\u0b15\u0b16\5\u00f4{\2\u0b16\u00f3\3\2\2\2\u0b17"+ + "\u0b46\5\u0100\u0081\2\u0b18\u0b19\7\4\2\2\u0b19\u0b1a\5\u0100\u0081\2"+ + "\u0b1a\u0b1b\7\5\2\2\u0b1b\u0b46\3\2\2\2\u0b1c\u0b3f\7\4\2\2\u0b1d\u0b1e"+ + "\7(\2\2\u0b1e\u0b1f\7 \2\2\u0b1f\u0b24\5\u00bc_\2\u0b20\u0b21\7\6\2\2"+ + "\u0b21\u0b23\5\u00bc_\2\u0b22\u0b20\3\2\2\2\u0b23\u0b26\3\2\2\2\u0b24"+ + "\u0b22\3\2\2\2\u0b24\u0b25\3\2\2\2\u0b25\u0b40\3\2\2\2\u0b26\u0b24\3\2"+ + "\2\2\u0b27\u0b28\t$\2\2\u0b28\u0b29\7 \2\2\u0b29\u0b2e\5\u00bc_\2\u0b2a"+ + "\u0b2b\7\6\2\2\u0b2b\u0b2d\5\u00bc_\2\u0b2c\u0b2a\3\2\2\2\u0b2d\u0b30"+ + "\3\2\2\2\u0b2e\u0b2c\3\2\2\2\u0b2e\u0b2f\3\2\2\2\u0b2f\u0b32\3\2\2\2\u0b30"+ + "\u0b2e\3\2\2\2\u0b31\u0b27\3\2\2\2\u0b31\u0b32\3\2\2\2\u0b32\u0b3d\3\2"+ + "\2\2\u0b33\u0b34\t%\2\2\u0b34\u0b35\7 \2\2\u0b35\u0b3a\5V,\2\u0b36\u0b37"+ + "\7\6\2\2\u0b37\u0b39\5V,\2\u0b38\u0b36\3\2\2\2\u0b39\u0b3c\3\2\2\2\u0b3a"+ + "\u0b38\3\2\2\2\u0b3a\u0b3b\3\2\2\2\u0b3b\u0b3e\3\2\2\2\u0b3c\u0b3a\3\2"+ + "\2\2\u0b3d\u0b33\3\2\2\2\u0b3d\u0b3e\3\2\2\2\u0b3e\u0b40\3\2\2\2\u0b3f"+ + "\u0b1d\3\2\2\2\u0b3f\u0b31\3\2\2\2\u0b40\u0b42\3\2\2\2\u0b41\u0b43\5\u00f6"+ + "|\2\u0b42\u0b41\3\2\2\2\u0b42\u0b43\3\2\2\2\u0b43\u0b44\3\2\2\2\u0b44"+ + "\u0b46\7\5\2\2\u0b45\u0b17\3\2\2\2\u0b45\u0b18\3\2\2\2\u0b45\u0b1c\3\2"+ + "\2\2\u0b46\u00f5\3\2\2\2\u0b47\u0b48\7\u00b9\2\2\u0b48\u0b58\5\u00f8}"+ + "\2\u0b49\u0b4a\7\u00cd\2\2\u0b4a\u0b58\5\u00f8}\2\u0b4b\u0b4c\7\u00b9"+ + "\2\2\u0b4c\u0b4d\7\34\2\2\u0b4d\u0b4e\5\u00f8}\2\u0b4e\u0b4f\7\23\2\2"+ + "\u0b4f\u0b50\5\u00f8}\2\u0b50\u0b58\3\2\2\2\u0b51\u0b52\7\u00cd\2\2\u0b52"+ + "\u0b53\7\34\2\2\u0b53\u0b54\5\u00f8}\2\u0b54\u0b55\7\23\2\2\u0b55\u0b56"+ + "\5\u00f8}\2\u0b56\u0b58\3\2\2\2\u0b57\u0b47\3\2\2\2\u0b57\u0b49\3\2\2"+ + "\2\u0b57\u0b4b\3\2\2\2\u0b57\u0b51\3\2\2\2\u0b58\u00f7\3\2\2\2\u0b59\u0b5a"+ + "\7\u00f7\2\2\u0b5a\u0b61\t&\2\2\u0b5b\u0b5c\7:\2\2\u0b5c\u0b61\7\u00cc"+ + "\2\2\u0b5d\u0b5e\5\u00bc_\2\u0b5e\u0b5f\t&\2\2\u0b5f\u0b61\3\2\2\2\u0b60"+ + "\u0b59\3\2\2\2\u0b60\u0b5b\3\2\2\2\u0b60\u0b5d\3\2\2\2\u0b61\u00f9\3\2"+ + "\2\2\u0b62\u0b67\5\u00fe\u0080\2\u0b63\u0b64\7\6\2\2\u0b64\u0b66\5\u00fe"+ + "\u0080\2\u0b65\u0b63\3\2\2\2\u0b66\u0b69\3\2\2\2\u0b67\u0b65\3\2\2\2\u0b67"+ + "\u0b68\3\2\2\2\u0b68\u00fb\3\2\2\2\u0b69\u0b67\3\2\2\2\u0b6a\u0b6f\5\u00fe"+ + "\u0080\2\u0b6b\u0b6f\7^\2\2\u0b6c\u0b6f\7\u0085\2\2\u0b6d\u0b6f\7\u00c6"+ + "\2\2\u0b6e\u0b6a\3\2\2\2\u0b6e\u0b6b\3\2\2\2\u0b6e\u0b6c\3\2\2\2\u0b6e"+ + "\u0b6d\3\2\2\2\u0b6f\u00fd\3\2\2\2\u0b70\u0b75\5\u0104\u0083\2\u0b71\u0b72"+ + "\7\7\2\2\u0b72\u0b74\5\u0104\u0083\2\u0b73\u0b71\3\2\2\2\u0b74\u0b77\3"+ + "\2\2\2\u0b75\u0b73\3\2\2\2\u0b75\u0b76\3\2\2\2\u0b76\u00ff\3\2\2\2\u0b77"+ + "\u0b75\3\2\2\2\u0b78\u0b79\5\u0104\u0083\2\u0b79\u0b7a\5\u0102\u0082\2"+ + "\u0b7a\u0101\3\2\2\2\u0b7b\u0b7c\7\u0113\2\2\u0b7c\u0b7e\5\u0104\u0083"+ + "\2\u0b7d\u0b7b\3\2\2\2\u0b7e\u0b7f\3\2\2\2\u0b7f\u0b7d\3\2\2\2\u0b7f\u0b80"+ + "\3\2\2\2\u0b80\u0b83\3\2\2\2\u0b81\u0b83\3\2\2\2\u0b82\u0b7d\3\2\2\2\u0b82"+ + "\u0b81\3\2\2\2\u0b83\u0103\3\2\2\2\u0b84\u0b88\5\u0106\u0084\2\u0b85\u0b86"+ + "\6\u0083\24\2\u0b86\u0b88\5\u0110\u0089\2\u0b87\u0b84\3\2\2\2\u0b87\u0b85"+ + "\3\2\2\2\u0b88\u0105\3\2\2\2\u0b89\u0b90\7\u0126\2\2\u0b8a\u0b90\5\u0108"+ + "\u0085\2\u0b8b\u0b8c\6\u0084\25\2\u0b8c\u0b90\5\u010e\u0088\2\u0b8d\u0b8e"+ + "\6\u0084\26\2\u0b8e\u0b90\5\u0112\u008a\2\u0b8f\u0b89\3\2\2\2\u0b8f\u0b8a"+ + "\3\2\2\2\u0b8f\u0b8b\3\2\2\2\u0b8f\u0b8d\3\2\2\2\u0b90\u0107\3\2\2\2\u0b91"+ + "\u0b92\7\u0127\2\2\u0b92\u0109\3\2\2\2\u0b93\u0b95\6\u0086\27\2\u0b94"+ + "\u0b96\7\u0113\2\2\u0b95\u0b94\3\2\2\2\u0b95\u0b96\3\2\2\2\u0b96\u0b97"+ + "\3\2\2\2\u0b97\u0bbb\7\u0122\2\2\u0b98\u0b9a\6\u0086\30\2\u0b99\u0b9b"+ + "\7\u0113\2\2\u0b9a\u0b99\3\2\2\2\u0b9a\u0b9b\3\2\2\2\u0b9b\u0b9c\3\2\2"+ + "\2\u0b9c\u0bbb\7\u0123\2\2\u0b9d\u0b9f\6\u0086\31\2\u0b9e\u0ba0\7\u0113"+ + "\2\2\u0b9f\u0b9e\3\2\2\2\u0b9f\u0ba0\3\2\2\2\u0ba0\u0ba1\3\2\2\2\u0ba1"+ + "\u0bbb\t\'\2\2\u0ba2\u0ba4\7\u0113\2\2\u0ba3\u0ba2\3\2\2\2\u0ba3\u0ba4"+ + "\3\2\2\2\u0ba4\u0ba5\3\2\2\2\u0ba5\u0bbb\7\u0121\2\2\u0ba6\u0ba8\7\u0113"+ + "\2\2\u0ba7\u0ba6\3\2\2\2\u0ba7\u0ba8\3\2\2\2\u0ba8\u0ba9\3\2\2\2\u0ba9"+ + "\u0bbb\7\u011e\2\2\u0baa\u0bac\7\u0113\2\2\u0bab\u0baa\3\2\2\2\u0bab\u0bac"+ + "\3\2\2\2\u0bac\u0bad\3\2\2\2\u0bad\u0bbb\7\u011f\2\2\u0bae\u0bb0\7\u0113"+ + "\2\2\u0baf\u0bae\3\2\2\2\u0baf\u0bb0\3\2\2\2\u0bb0\u0bb1\3\2\2\2\u0bb1"+ + "\u0bbb\7\u0120\2\2\u0bb2\u0bb4\7\u0113\2\2\u0bb3\u0bb2\3\2\2\2\u0bb3\u0bb4"+ + "\3\2\2\2\u0bb4\u0bb5\3\2\2\2\u0bb5\u0bbb\7\u0124\2\2\u0bb6\u0bb8\7\u0113"+ + "\2\2\u0bb7\u0bb6\3\2\2\2\u0bb7\u0bb8\3\2\2\2\u0bb8\u0bb9\3\2\2\2\u0bb9"+ + "\u0bbb\7\u0125\2\2\u0bba\u0b93\3\2\2\2\u0bba\u0b98\3\2\2\2\u0bba\u0b9d"+ + "\3\2\2\2\u0bba\u0ba3\3\2\2\2\u0bba\u0ba7\3\2\2\2\u0bba\u0bab\3\2\2\2\u0bba"+ + "\u0baf\3\2\2\2\u0bba\u0bb3\3\2\2\2\u0bba\u0bb7\3\2\2\2\u0bbb\u010b\3\2"+ + "\2\2\u0bbc\u0bbd\7\u00f5\2\2\u0bbd\u0bc4\5\u00e0q\2\u0bbe\u0bc4\5\36\20"+ + "\2\u0bbf\u0bc4\5\u00dep\2\u0bc0\u0bc1\t(\2\2\u0bc1\u0bc2\7\u009b\2\2\u0bc2"+ + "\u0bc4\7\u009c\2\2\u0bc3\u0bbc\3\2\2\2\u0bc3\u0bbe\3\2\2\2\u0bc3\u0bbf"+ + "\3\2\2\2\u0bc3\u0bc0\3\2\2\2\u0bc4\u010d\3\2\2\2\u0bc5\u0bc6\t)\2\2\u0bc6"+ + "\u010f\3\2\2\2\u0bc7\u0bc8\t*\2\2\u0bc8\u0111\3\2\2\2\u0bc9\u0bca\t+\2"+ + "\2\u0bca\u0113\3\2\2\2\u018c\u0118\u0131\u0136\u013e\u0146\u0148\u015c"+ + "\u0160\u0166\u0169\u016c\u0174\u0177\u017b\u017e\u0186\u018b\u018e\u0195"+ + "\u01a1\u01aa\u01ac\u01b0\u01b3\u01ba\u01c5\u01c7\u01cf\u01d4\u01d7\u01dd"+ + "\u01e8\u0228\u0231\u0235\u023b\u023f\u0244\u024a\u0256\u025e\u0264\u0271"+ + "\u0276\u0286\u028d\u0291\u0297\u02a6\u02aa\u02b0\u02b6\u02b9\u02bc\u02c2"+ + "\u02c6\u02ce\u02d0\u02d9\u02dc\u02e5\u02ea\u02f0\u02f7\u02fa\u0300\u030b"+ + "\u030e\u0312\u0317\u031c\u0323\u0326\u0329\u0330\u0335\u033e\u0346\u034c"+ + "\u034f\u0352\u0358\u035c\u0360\u0364\u0366\u036e\u0376\u037c\u0382\u0385"+ + "\u0389\u038c\u0390\u03a9\u03ac\u03b0\u03b6\u03b9\u03bc\u03c2\u03ca\u03cf"+ + "\u03d5\u03db\u03e7\u03ea\u03f1\u03f8\u0400\u0403\u040b\u040f\u0416\u048a"+ + "\u0492\u049a\u04a3\u04ad\u04b1\u04b4\u04ba\u04c0\u04cc\u04d8\u04dd\u04e6"+ + "\u04ee\u04f5\u04f7\u04fc\u0500\u0505\u050a\u050f\u0512\u0517\u051b\u0520"+ + "\u0522\u0526\u052f\u0537\u0540\u0547\u0550\u0555\u0558\u056b\u056d\u0576"+ + "\u057d\u0580\u0587\u058b\u0591\u0599\u05a4\u05af\u05b6\u05bc\u05c9\u05d0"+ + "\u05d7\u05e3\u05eb\u05f1\u05f4\u05fd\u0600\u0609\u060c\u0615\u0618\u0621"+ + "\u0624\u0627\u062c\u062e\u063a\u0641\u0648\u064b\u064d\u0659\u065d\u0661"+ + "\u0667\u066b\u0673\u0677\u067a\u067d\u0680\u0684\u0688\u068b\u068f\u0694"+ + "\u0698\u069b\u069e\u06a1\u06a3\u06af\u06b2\u06b6\u06c0\u06c4\u06c6\u06c9"+ + "\u06cd\u06d3\u06d7\u06e2\u06ec\u06f8\u0707\u070c\u0713\u0723\u0728\u0735"+ + "\u073a\u0742\u0748\u074c\u0755\u0764\u0769\u0775\u077a\u0782\u0785\u0789"+ + "\u0797\u07a4\u07a9\u07ad\u07b0\u07b5\u07be\u07c1\u07c6\u07cd\u07d0\u07d8"+ + "\u07df\u07e6\u07e9\u07ee\u07f1\u07f6\u07fa\u07fd\u0800\u0806\u080b\u0810"+ + "\u0822\u0824\u0827\u0832\u083b\u0842\u084a\u0851\u0855\u085d\u0865\u086b"+ + "\u0873\u087f\u0882\u0888\u088c\u088e\u0897\u08a3\u08a5\u08ac\u08b3\u08b9"+ + "\u08bf\u08c1\u08c8\u08d0\u08d6\u08dd\u08e3\u08e7\u08e9\u08f0\u08f9\u0906"+ + "\u090b\u090f\u091d\u091f\u0927\u0929\u092d\u0935\u093e\u0944\u094c\u0951"+ + "\u095d\u0962\u0965\u096b\u096f\u0974\u0979\u097e\u0984\u0999\u099b\u09a4"+ + "\u09a8\u09b1\u09b5\u09c7\u09ca\u09d2\u09db\u09f2\u09fd\u0a04\u0a07\u0a10"+ + "\u0a14\u0a20\u0a39\u0a40\u0a43\u0a52\u0a56\u0a60\u0a62\u0a6f\u0a71\u0a7e"+ + "\u0a82\u0a89\u0a8e\u0a96\u0a9a\u0aa3\u0aa8\u0ab9\u0abd\u0ac6\u0aca\u0acc"+ + "\u0ad3\u0ada\u0add\u0ae0\u0ae7\u0aee\u0af1\u0af8\u0b00\u0b03\u0b10\u0b24"+ + "\u0b2e\u0b31\u0b3a\u0b3d\u0b3f\u0b42\u0b45\u0b57\u0b60\u0b67\u0b6e\u0b75"+ + "\u0b7f\u0b82\u0b87\u0b8f\u0b95\u0b9a\u0b9f\u0ba3\u0ba7\u0bab\u0baf\u0bb3"+ + "\u0bb7\u0bba\u0bc3"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1 + }, + "" + ); + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file From c3b051d11a6cf9cdadddc7f3b475243e6bf81a6a Mon Sep 17 00:00:00 2001 From: tools4origins Date: Mon, 19 Oct 2020 12:15:18 +0200 Subject: [PATCH 4/4] Use Python as target language instead of java --- .../ast/generated/SqlBaseBaseListener.java | 3230 --- .../sql/ast/generated/SqlBaseLexer.java | 1418 - pysparkling/sql/ast/generated/SqlBaseLexer.py | 1878 ++ .../sql/ast/generated/SqlBaseListener.java | 2967 --- .../sql/ast/generated/SqlBaseListener.py | 2404 ++ .../sql/ast/generated/SqlBaseParser.java | 20067 -------------- .../sql/ast/generated/SqlBaseParser.py | 22167 ++++++++++++++++ 7 files changed, 26449 insertions(+), 27682 deletions(-) delete mode 100644 pysparkling/sql/ast/generated/SqlBaseBaseListener.java delete mode 100644 pysparkling/sql/ast/generated/SqlBaseLexer.java create mode 100644 pysparkling/sql/ast/generated/SqlBaseLexer.py delete mode 100644 pysparkling/sql/ast/generated/SqlBaseListener.java create mode 100644 pysparkling/sql/ast/generated/SqlBaseListener.py delete mode 100644 pysparkling/sql/ast/generated/SqlBaseParser.java create mode 100644 pysparkling/sql/ast/generated/SqlBaseParser.py diff --git a/pysparkling/sql/ast/generated/SqlBaseBaseListener.java b/pysparkling/sql/ast/generated/SqlBaseBaseListener.java deleted file mode 100644 index 22f2ace73..000000000 --- a/pysparkling/sql/ast/generated/SqlBaseBaseListener.java +++ /dev/null @@ -1,3230 +0,0 @@ -// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 - -import org.antlr.v4.runtime.ParserRuleContext; -import org.antlr.v4.runtime.tree.ErrorNode; -import org.antlr.v4.runtime.tree.TerminalNode; - -/** - * This class provides an empty implementation of {@link SqlBaseListener}, - * which can be extended to create a listener which only needs to handle a subset - * of the available methods. - */ -public class SqlBaseBaseListener implements SqlBaseListener { - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleStatement(SqlBaseParser.SingleStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleStatement(SqlBaseParser.SingleStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleExpression(SqlBaseParser.SingleExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleExpression(SqlBaseParser.SingleExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleDataType(SqlBaseParser.SingleDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleDataType(SqlBaseParser.SingleDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStatementDefault(SqlBaseParser.StatementDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStatementDefault(SqlBaseParser.StatementDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDmlStatement(SqlBaseParser.DmlStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDmlStatement(SqlBaseParser.DmlStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUse(SqlBaseParser.UseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUse(SqlBaseParser.UseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropNamespace(SqlBaseParser.DropNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropNamespace(SqlBaseParser.DropNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateTable(SqlBaseParser.CreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateTable(SqlBaseParser.CreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplaceTable(SqlBaseParser.ReplaceTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplaceTable(SqlBaseParser.ReplaceTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnalyze(SqlBaseParser.AnalyzeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnalyze(SqlBaseParser.AnalyzeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRenameTable(SqlBaseParser.RenameTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRenameTable(SqlBaseParser.RenameTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetTableLocation(SqlBaseParser.SetTableLocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetTableLocation(SqlBaseParser.SetTableLocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropTable(SqlBaseParser.DropTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropTable(SqlBaseParser.DropTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropView(SqlBaseParser.DropViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropView(SqlBaseParser.DropViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateView(SqlBaseParser.CreateViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateView(SqlBaseParser.CreateViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateFunction(SqlBaseParser.CreateFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateFunction(SqlBaseParser.CreateFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropFunction(SqlBaseParser.DropFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropFunction(SqlBaseParser.DropFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExplain(SqlBaseParser.ExplainContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExplain(SqlBaseParser.ExplainContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTables(SqlBaseParser.ShowTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTables(SqlBaseParser.ShowTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTable(SqlBaseParser.ShowTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTable(SqlBaseParser.ShowTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowColumns(SqlBaseParser.ShowColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowColumns(SqlBaseParser.ShowColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowViews(SqlBaseParser.ShowViewsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowViews(SqlBaseParser.ShowViewsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowPartitions(SqlBaseParser.ShowPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowPartitions(SqlBaseParser.ShowPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowFunctions(SqlBaseParser.ShowFunctionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowFunctions(SqlBaseParser.ShowFunctionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateTable(SqlBaseParser.ShowCreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateTable(SqlBaseParser.ShowCreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeRelation(SqlBaseParser.DescribeRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeRelation(SqlBaseParser.DescribeRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeQuery(SqlBaseParser.DescribeQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeQuery(SqlBaseParser.DescribeQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCommentTable(SqlBaseParser.CommentTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCommentTable(SqlBaseParser.CommentTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshTable(SqlBaseParser.RefreshTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshTable(SqlBaseParser.RefreshTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshResource(SqlBaseParser.RefreshResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshResource(SqlBaseParser.RefreshResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCacheTable(SqlBaseParser.CacheTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCacheTable(SqlBaseParser.CacheTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUncacheTable(SqlBaseParser.UncacheTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUncacheTable(SqlBaseParser.UncacheTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterClearCache(SqlBaseParser.ClearCacheContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitClearCache(SqlBaseParser.ClearCacheContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLoadData(SqlBaseParser.LoadDataContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLoadData(SqlBaseParser.LoadDataContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTruncateTable(SqlBaseParser.TruncateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTruncateTable(SqlBaseParser.TruncateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRepairTable(SqlBaseParser.RepairTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRepairTable(SqlBaseParser.RepairTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterManageResource(SqlBaseParser.ManageResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitManageResource(SqlBaseParser.ManageResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetConfiguration(SqlBaseParser.SetConfigurationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetConfiguration(SqlBaseParser.SetConfigurationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBucketSpec(SqlBaseParser.BucketSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBucketSpec(SqlBaseParser.BucketSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSkewSpec(SqlBaseParser.SkewSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSkewSpec(SqlBaseParser.SkewSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLocationSpec(SqlBaseParser.LocationSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLocationSpec(SqlBaseParser.LocationSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCommentSpec(SqlBaseParser.CommentSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCommentSpec(SqlBaseParser.CommentSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQuery(SqlBaseParser.QueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQuery(SqlBaseParser.QueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionSpec(SqlBaseParser.PartitionSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionSpec(SqlBaseParser.PartitionSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionVal(SqlBaseParser.PartitionValContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionVal(SqlBaseParser.PartitionValContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNamespace(SqlBaseParser.NamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNamespace(SqlBaseParser.NamespaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeColName(SqlBaseParser.DescribeColNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeColName(SqlBaseParser.DescribeColNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCtes(SqlBaseParser.CtesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCtes(SqlBaseParser.CtesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNamedQuery(SqlBaseParser.NamedQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNamedQuery(SqlBaseParser.NamedQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableProvider(SqlBaseParser.TableProviderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableProvider(SqlBaseParser.TableProviderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTablePropertyList(SqlBaseParser.TablePropertyListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTablePropertyList(SqlBaseParser.TablePropertyListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableProperty(SqlBaseParser.TablePropertyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableProperty(SqlBaseParser.TablePropertyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterConstantList(SqlBaseParser.ConstantListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConstantList(SqlBaseParser.ConstantListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNestedConstantList(SqlBaseParser.NestedConstantListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNestedConstantList(SqlBaseParser.NestedConstantListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableFileFormat(SqlBaseParser.TableFileFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableFileFormat(SqlBaseParser.TableFileFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStorageHandler(SqlBaseParser.StorageHandlerContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStorageHandler(SqlBaseParser.StorageHandlerContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResource(SqlBaseParser.ResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResource(SqlBaseParser.ResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUpdateTable(SqlBaseParser.UpdateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUpdateTable(SqlBaseParser.UpdateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQueryTermDefault(SqlBaseParser.QueryTermDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQueryTermDefault(SqlBaseParser.QueryTermDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetOperation(SqlBaseParser.SetOperationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetOperation(SqlBaseParser.SetOperationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQueryPrimaryDefault(SqlBaseParser.QueryPrimaryDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQueryPrimaryDefault(SqlBaseParser.QueryPrimaryDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFromStmt(SqlBaseParser.FromStmtContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFromStmt(SqlBaseParser.FromStmtContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTable(SqlBaseParser.TableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTable(SqlBaseParser.TableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSubquery(SqlBaseParser.SubqueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSubquery(SqlBaseParser.SubqueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSortItem(SqlBaseParser.SortItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSortItem(SqlBaseParser.SortItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFromStatement(SqlBaseParser.FromStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFromStatement(SqlBaseParser.FromStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTransformClause(SqlBaseParser.TransformClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTransformClause(SqlBaseParser.TransformClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSelectClause(SqlBaseParser.SelectClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSelectClause(SqlBaseParser.SelectClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetClause(SqlBaseParser.SetClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetClause(SqlBaseParser.SetClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMatchedClause(SqlBaseParser.MatchedClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMatchedClause(SqlBaseParser.MatchedClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMatchedAction(SqlBaseParser.MatchedActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMatchedAction(SqlBaseParser.MatchedActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAssignmentList(SqlBaseParser.AssignmentListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAssignmentList(SqlBaseParser.AssignmentListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAssignment(SqlBaseParser.AssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAssignment(SqlBaseParser.AssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWhereClause(SqlBaseParser.WhereClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWhereClause(SqlBaseParser.WhereClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHavingClause(SqlBaseParser.HavingClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHavingClause(SqlBaseParser.HavingClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHint(SqlBaseParser.HintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHint(SqlBaseParser.HintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHintStatement(SqlBaseParser.HintStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHintStatement(SqlBaseParser.HintStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFromClause(SqlBaseParser.FromClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFromClause(SqlBaseParser.FromClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAggregationClause(SqlBaseParser.AggregationClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAggregationClause(SqlBaseParser.AggregationClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGroupingSet(SqlBaseParser.GroupingSetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGroupingSet(SqlBaseParser.GroupingSetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPivotClause(SqlBaseParser.PivotClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPivotClause(SqlBaseParser.PivotClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPivotColumn(SqlBaseParser.PivotColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPivotColumn(SqlBaseParser.PivotColumnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPivotValue(SqlBaseParser.PivotValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPivotValue(SqlBaseParser.PivotValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLateralView(SqlBaseParser.LateralViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLateralView(SqlBaseParser.LateralViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetQuantifier(SqlBaseParser.SetQuantifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetQuantifier(SqlBaseParser.SetQuantifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRelation(SqlBaseParser.RelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRelation(SqlBaseParser.RelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterJoinRelation(SqlBaseParser.JoinRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitJoinRelation(SqlBaseParser.JoinRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterJoinType(SqlBaseParser.JoinTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitJoinType(SqlBaseParser.JoinTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterJoinCriteria(SqlBaseParser.JoinCriteriaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitJoinCriteria(SqlBaseParser.JoinCriteriaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSample(SqlBaseParser.SampleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSample(SqlBaseParser.SampleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSampleByRows(SqlBaseParser.SampleByRowsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSampleByRows(SqlBaseParser.SampleByRowsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSampleByBucket(SqlBaseParser.SampleByBucketContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSampleByBucket(SqlBaseParser.SampleByBucketContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSampleByBytes(SqlBaseParser.SampleByBytesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSampleByBytes(SqlBaseParser.SampleByBytesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierList(SqlBaseParser.IdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierList(SqlBaseParser.IdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableName(SqlBaseParser.TableNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableName(SqlBaseParser.TableNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAliasedQuery(SqlBaseParser.AliasedQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAliasedQuery(SqlBaseParser.AliasedQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAliasedRelation(SqlBaseParser.AliasedRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAliasedRelation(SqlBaseParser.AliasedRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInlineTable(SqlBaseParser.InlineTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInlineTable(SqlBaseParser.InlineTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionTable(SqlBaseParser.FunctionTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionTable(SqlBaseParser.FunctionTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableAlias(SqlBaseParser.TableAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableAlias(SqlBaseParser.TableAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableIdentifier(SqlBaseParser.TableIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableIdentifier(SqlBaseParser.TableIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNamedExpression(SqlBaseParser.NamedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNamedExpression(SqlBaseParser.NamedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTransformList(SqlBaseParser.TransformListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTransformList(SqlBaseParser.TransformListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentityTransform(SqlBaseParser.IdentityTransformContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentityTransform(SqlBaseParser.IdentityTransformContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterApplyTransform(SqlBaseParser.ApplyTransformContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitApplyTransform(SqlBaseParser.ApplyTransformContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTransformArgument(SqlBaseParser.TransformArgumentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTransformArgument(SqlBaseParser.TransformArgumentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExpression(SqlBaseParser.ExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExpression(SqlBaseParser.ExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLogicalNot(SqlBaseParser.LogicalNotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLogicalNot(SqlBaseParser.LogicalNotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPredicated(SqlBaseParser.PredicatedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPredicated(SqlBaseParser.PredicatedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExists(SqlBaseParser.ExistsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExists(SqlBaseParser.ExistsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLogicalBinary(SqlBaseParser.LogicalBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLogicalBinary(SqlBaseParser.LogicalBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPredicate(SqlBaseParser.PredicateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPredicate(SqlBaseParser.PredicateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterValueExpressionDefault(SqlBaseParser.ValueExpressionDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitValueExpressionDefault(SqlBaseParser.ValueExpressionDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComparison(SqlBaseParser.ComparisonContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComparison(SqlBaseParser.ComparisonContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArithmeticBinary(SqlBaseParser.ArithmeticBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArithmeticBinary(SqlBaseParser.ArithmeticBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArithmeticUnary(SqlBaseParser.ArithmeticUnaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArithmeticUnary(SqlBaseParser.ArithmeticUnaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStruct(SqlBaseParser.StructContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStruct(SqlBaseParser.StructContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDereference(SqlBaseParser.DereferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDereference(SqlBaseParser.DereferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSimpleCase(SqlBaseParser.SimpleCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSimpleCase(SqlBaseParser.SimpleCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColumnReference(SqlBaseParser.ColumnReferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColumnReference(SqlBaseParser.ColumnReferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRowConstructor(SqlBaseParser.RowConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRowConstructor(SqlBaseParser.RowConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLast(SqlBaseParser.LastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLast(SqlBaseParser.LastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStar(SqlBaseParser.StarContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStar(SqlBaseParser.StarContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterOverlay(SqlBaseParser.OverlayContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitOverlay(SqlBaseParser.OverlayContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSubscript(SqlBaseParser.SubscriptContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSubscript(SqlBaseParser.SubscriptContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSubqueryExpression(SqlBaseParser.SubqueryExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSubqueryExpression(SqlBaseParser.SubqueryExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSubstring(SqlBaseParser.SubstringContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSubstring(SqlBaseParser.SubstringContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCast(SqlBaseParser.CastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCast(SqlBaseParser.CastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterConstantDefault(SqlBaseParser.ConstantDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConstantDefault(SqlBaseParser.ConstantDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLambda(SqlBaseParser.LambdaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLambda(SqlBaseParser.LambdaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterParenthesizedExpression(SqlBaseParser.ParenthesizedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitParenthesizedExpression(SqlBaseParser.ParenthesizedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExtract(SqlBaseParser.ExtractContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExtract(SqlBaseParser.ExtractContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTrim(SqlBaseParser.TrimContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTrim(SqlBaseParser.TrimContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionCall(SqlBaseParser.FunctionCallContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionCall(SqlBaseParser.FunctionCallContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSearchedCase(SqlBaseParser.SearchedCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSearchedCase(SqlBaseParser.SearchedCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPosition(SqlBaseParser.PositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPosition(SqlBaseParser.PositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFirst(SqlBaseParser.FirstContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFirst(SqlBaseParser.FirstContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNullLiteral(SqlBaseParser.NullLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNullLiteral(SqlBaseParser.NullLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIntervalLiteral(SqlBaseParser.IntervalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIntervalLiteral(SqlBaseParser.IntervalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTypeConstructor(SqlBaseParser.TypeConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTypeConstructor(SqlBaseParser.TypeConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNumericLiteral(SqlBaseParser.NumericLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNumericLiteral(SqlBaseParser.NumericLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBooleanLiteral(SqlBaseParser.BooleanLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBooleanLiteral(SqlBaseParser.BooleanLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStringLiteral(SqlBaseParser.StringLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStringLiteral(SqlBaseParser.StringLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComparisonOperator(SqlBaseParser.ComparisonOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComparisonOperator(SqlBaseParser.ComparisonOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBooleanValue(SqlBaseParser.BooleanValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBooleanValue(SqlBaseParser.BooleanValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInterval(SqlBaseParser.IntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInterval(SqlBaseParser.IntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIntervalValue(SqlBaseParser.IntervalValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIntervalValue(SqlBaseParser.IntervalValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIntervalUnit(SqlBaseParser.IntervalUnitContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIntervalUnit(SqlBaseParser.IntervalUnitContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColPosition(SqlBaseParser.ColPositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColPosition(SqlBaseParser.ColPositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColTypeList(SqlBaseParser.ColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColTypeList(SqlBaseParser.ColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColType(SqlBaseParser.ColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColType(SqlBaseParser.ColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComplexColType(SqlBaseParser.ComplexColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComplexColType(SqlBaseParser.ComplexColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWhenClause(SqlBaseParser.WhenClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWhenClause(SqlBaseParser.WhenClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWindowClause(SqlBaseParser.WindowClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWindowClause(SqlBaseParser.WindowClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNamedWindow(SqlBaseParser.NamedWindowContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNamedWindow(SqlBaseParser.NamedWindowContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWindowRef(SqlBaseParser.WindowRefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWindowRef(SqlBaseParser.WindowRefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWindowDef(SqlBaseParser.WindowDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWindowDef(SqlBaseParser.WindowDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWindowFrame(SqlBaseParser.WindowFrameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWindowFrame(SqlBaseParser.WindowFrameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFrameBound(SqlBaseParser.FrameBoundContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFrameBound(SqlBaseParser.FrameBoundContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionName(SqlBaseParser.FunctionNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionName(SqlBaseParser.FunctionNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQualifiedName(SqlBaseParser.QualifiedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifiedName(SqlBaseParser.QualifiedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterErrorIdent(SqlBaseParser.ErrorIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitErrorIdent(SqlBaseParser.ErrorIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRealIdent(SqlBaseParser.RealIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRealIdent(SqlBaseParser.RealIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifier(SqlBaseParser.IdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifier(SqlBaseParser.IdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnquotedIdentifier(SqlBaseParser.UnquotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnquotedIdentifier(SqlBaseParser.UnquotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQuotedIdentifier(SqlBaseParser.QuotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQuotedIdentifier(SqlBaseParser.QuotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDecimalLiteral(SqlBaseParser.DecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDecimalLiteral(SqlBaseParser.DecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIntegerLiteral(SqlBaseParser.IntegerLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIntegerLiteral(SqlBaseParser.IntegerLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDoubleLiteral(SqlBaseParser.DoubleLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDoubleLiteral(SqlBaseParser.DoubleLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNonReserved(SqlBaseParser.NonReservedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNonReserved(SqlBaseParser.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/pysparkling/sql/ast/generated/SqlBaseLexer.java b/pysparkling/sql/ast/generated/SqlBaseLexer.java deleted file mode 100644 index a37937e17..000000000 --- a/pysparkling/sql/ast/generated/SqlBaseLexer.java +++ /dev/null @@ -1,1418 +0,0 @@ -// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) -public class SqlBaseLexer extends Lexer { - static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, - T__9=10, T__10=11, ADD=12, AFTER=13, ALL=14, ALTER=15, ANALYZE=16, AND=17, - ANTI=18, ANY=19, ARCHIVE=20, ARRAY=21, AS=22, ASC=23, AT=24, AUTHORIZATION=25, - BETWEEN=26, BOTH=27, BUCKET=28, BUCKETS=29, BY=30, CACHE=31, CASCADE=32, - CASE=33, CAST=34, CHANGE=35, CHECK=36, CLEAR=37, CLUSTER=38, CLUSTERED=39, - CODEGEN=40, COLLATE=41, COLLECTION=42, COLUMN=43, COLUMNS=44, COMMENT=45, - COMMIT=46, COMPACT=47, COMPACTIONS=48, COMPUTE=49, CONCATENATE=50, CONSTRAINT=51, - COST=52, CREATE=53, CROSS=54, CUBE=55, CURRENT=56, CURRENT_DATE=57, CURRENT_TIME=58, - CURRENT_TIMESTAMP=59, CURRENT_USER=60, DATA=61, DATABASE=62, DATABASES=63, - DAY=64, DBPROPERTIES=65, DEFINED=66, DELETE=67, DELIMITED=68, DESC=69, - DESCRIBE=70, DFS=71, DIRECTORIES=72, DIRECTORY=73, DISTINCT=74, DISTRIBUTE=75, - DROP=76, ELSE=77, END=78, ESCAPE=79, ESCAPED=80, EXCEPT=81, EXCHANGE=82, - EXISTS=83, EXPLAIN=84, EXPORT=85, EXTENDED=86, EXTERNAL=87, EXTRACT=88, - FALSE=89, FETCH=90, FIELDS=91, FILTER=92, FILEFORMAT=93, FIRST=94, FOLLOWING=95, - FOR=96, FOREIGN=97, FORMAT=98, FORMATTED=99, FROM=100, FULL=101, FUNCTION=102, - FUNCTIONS=103, GLOBAL=104, GRANT=105, GROUP=106, GROUPING=107, HAVING=108, - HOUR=109, IF=110, IGNORE=111, IMPORT=112, IN=113, INDEX=114, INDEXES=115, - INNER=116, INPATH=117, INPUTFORMAT=118, INSERT=119, INTERSECT=120, INTERVAL=121, - INTO=122, IS=123, ITEMS=124, JOIN=125, KEYS=126, LAST=127, LATERAL=128, - LAZY=129, LEADING=130, LEFT=131, LIKE=132, LIMIT=133, LINES=134, LIST=135, - LOAD=136, LOCAL=137, LOCATION=138, LOCK=139, LOCKS=140, LOGICAL=141, MACRO=142, - MAP=143, MATCHED=144, MERGE=145, MINUTE=146, MONTH=147, MSCK=148, NAMESPACE=149, - NAMESPACES=150, NATURAL=151, NO=152, NOT=153, NULL=154, NULLS=155, OF=156, - ON=157, ONLY=158, OPTION=159, OPTIONS=160, OR=161, ORDER=162, OUT=163, - OUTER=164, OUTPUTFORMAT=165, OVER=166, OVERLAPS=167, OVERLAY=168, OVERWRITE=169, - PARTITION=170, PARTITIONED=171, PARTITIONS=172, PERCENTLIT=173, PIVOT=174, - PLACING=175, POSITION=176, PRECEDING=177, PRIMARY=178, PRINCIPALS=179, - PROPERTIES=180, PURGE=181, QUERY=182, RANGE=183, RECORDREADER=184, RECORDWRITER=185, - RECOVER=186, REDUCE=187, REFERENCES=188, REFRESH=189, RENAME=190, REPAIR=191, - REPLACE=192, RESET=193, RESTRICT=194, REVOKE=195, RIGHT=196, RLIKE=197, - ROLE=198, ROLES=199, ROLLBACK=200, ROLLUP=201, ROW=202, ROWS=203, SCHEMA=204, - SECOND=205, SELECT=206, SEMI=207, SEPARATED=208, SERDE=209, SERDEPROPERTIES=210, - SESSION_USER=211, SET=212, SETMINUS=213, SETS=214, SHOW=215, SKEWED=216, - SOME=217, SORT=218, SORTED=219, START=220, STATISTICS=221, STORED=222, - STRATIFY=223, STRUCT=224, SUBSTR=225, SUBSTRING=226, TABLE=227, TABLES=228, - TABLESAMPLE=229, TBLPROPERTIES=230, TEMPORARY=231, TERMINATED=232, THEN=233, - TO=234, TOUCH=235, TRAILING=236, TRANSACTION=237, TRANSACTIONS=238, TRANSFORM=239, - TRIM=240, TRUE=241, TRUNCATE=242, TYPE=243, UNARCHIVE=244, UNBOUNDED=245, - UNCACHE=246, UNION=247, UNIQUE=248, UNKNOWN=249, UNLOCK=250, UNSET=251, - UPDATE=252, USE=253, USER=254, USING=255, VALUES=256, VIEW=257, VIEWS=258, - WHEN=259, WHERE=260, WINDOW=261, WITH=262, YEAR=263, EQ=264, NSEQ=265, - NEQ=266, NEQJ=267, LT=268, LTE=269, GT=270, GTE=271, PLUS=272, MINUS=273, - ASTERISK=274, SLASH=275, PERCENT=276, DIV=277, TILDE=278, AMPERSAND=279, - PIPE=280, CONCAT_PIPE=281, HAT=282, STRING=283, BIGINT_LITERAL=284, SMALLINT_LITERAL=285, - TINYINT_LITERAL=286, INTEGER_VALUE=287, EXPONENT_VALUE=288, DECIMAL_VALUE=289, - DOUBLE_LITERAL=290, BIGDECIMAL_LITERAL=291, IDENTIFIER=292, BACKQUOTED_IDENTIFIER=293, - SIMPLE_COMMENT=294, BRACKETED_COMMENT=295, WS=296, UNRECOGNIZED=297; - 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", - "T__9", "T__10", "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANTI", - "ANY", "ARCHIVE", "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", - "BOTH", "BUCKET", "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", "CAST", - "CHANGE", "CHECK", "CLEAR", "CLUSTER", "CLUSTERED", "CODEGEN", "COLLATE", - "COLLECTION", "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMPACT", "COMPACTIONS", - "COMPUTE", "CONCATENATE", "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", - "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", - "DATA", "DATABASE", "DATABASES", "DAY", "DBPROPERTIES", "DEFINED", "DELETE", - "DELIMITED", "DESC", "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", "DISTINCT", - "DISTRIBUTE", "DROP", "ELSE", "END", "ESCAPE", "ESCAPED", "EXCEPT", "EXCHANGE", - "EXISTS", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", - "FETCH", "FIELDS", "FILTER", "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", - "FOREIGN", "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", "FUNCTIONS", - "GLOBAL", "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", "IF", "IGNORE", - "IMPORT", "IN", "INDEX", "INDEXES", "INNER", "INPATH", "INPUTFORMAT", - "INSERT", "INTERSECT", "INTERVAL", "INTO", "IS", "ITEMS", "JOIN", "KEYS", - "LAST", "LATERAL", "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", - "LIST", "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", "MACRO", - "MAP", "MATCHED", "MERGE", "MINUTE", "MONTH", "MSCK", "NAMESPACE", "NAMESPACES", - "NATURAL", "NO", "NOT", "NULL", "NULLS", "OF", "ON", "ONLY", "OPTION", - "OPTIONS", "OR", "ORDER", "OUT", "OUTER", "OUTPUTFORMAT", "OVER", "OVERLAPS", - "OVERLAY", "OVERWRITE", "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", - "PIVOT", "PLACING", "POSITION", "PRECEDING", "PRIMARY", "PRINCIPALS", - "PROPERTIES", "PURGE", "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", - "RECOVER", "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", "REPLACE", - "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLES", "ROLLBACK", - "ROLLUP", "ROW", "ROWS", "SCHEMA", "SECOND", "SELECT", "SEMI", "SEPARATED", - "SERDE", "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", "SETS", - "SHOW", "SKEWED", "SOME", "SORT", "SORTED", "START", "STATISTICS", "STORED", - "STRATIFY", "STRUCT", "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", - "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", "TRAILING", - "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", "TRUE", "TRUNCATE", - "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", "UNION", "UNIQUE", "UNKNOWN", - "UNLOCK", "UNSET", "UPDATE", "USE", "USER", "USING", "VALUES", "VIEW", - "VIEWS", "WHEN", "WHERE", "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", - "NEQJ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", - "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", "HAT", - "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", - "EXPONENT_VALUE", "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", - "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "DECIMAL_DIGITS", "EXPONENT", "DIGIT", - "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED" - }; - - private static final String[] _LITERAL_NAMES = { - null, "';'", "'('", "')'", "','", "'.'", "'/*+'", "'*/'", "'->'", "'['", - "']'", "':'", "'ADD'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", - "'ANTI'", "'ANY'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", - "'BETWEEN'", "'BOTH'", "'BUCKET'", "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", - "'CASE'", "'CAST'", "'CHANGE'", "'CHECK'", "'CLEAR'", "'CLUSTER'", "'CLUSTERED'", - "'CODEGEN'", "'COLLATE'", "'COLLECTION'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", - "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", "'COMPUTE'", "'CONCATENATE'", - "'CONSTRAINT'", "'COST'", "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", - "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", - "'DATA'", "'DATABASE'", null, "'DAY'", "'DBPROPERTIES'", "'DEFINED'", - "'DELETE'", "'DELIMITED'", "'DESC'", "'DESCRIBE'", "'DFS'", "'DIRECTORIES'", - "'DIRECTORY'", "'DISTINCT'", "'DISTRIBUTE'", "'DROP'", "'ELSE'", "'END'", - "'ESCAPE'", "'ESCAPED'", "'EXCEPT'", "'EXCHANGE'", "'EXISTS'", "'EXPLAIN'", - "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", "'FALSE'", "'FETCH'", - "'FIELDS'", "'FILTER'", "'FILEFORMAT'", "'FIRST'", "'FOLLOWING'", "'FOR'", - "'FOREIGN'", "'FORMAT'", "'FORMATTED'", "'FROM'", "'FULL'", "'FUNCTION'", - "'FUNCTIONS'", "'GLOBAL'", "'GRANT'", "'GROUP'", "'GROUPING'", "'HAVING'", - "'HOUR'", "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", "'INDEX'", "'INDEXES'", - "'INNER'", "'INPATH'", "'INPUTFORMAT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", - "'INTO'", "'IS'", "'ITEMS'", "'JOIN'", "'KEYS'", "'LAST'", "'LATERAL'", - "'LAZY'", "'LEADING'", "'LEFT'", "'LIKE'", "'LIMIT'", "'LINES'", "'LIST'", - "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCKS'", "'LOGICAL'", "'MACRO'", - "'MAP'", "'MATCHED'", "'MERGE'", "'MINUTE'", "'MONTH'", "'MSCK'", "'NAMESPACE'", - "'NAMESPACES'", "'NATURAL'", "'NO'", null, "'NULL'", "'NULLS'", "'OF'", - "'ON'", "'ONLY'", "'OPTION'", "'OPTIONS'", "'OR'", "'ORDER'", "'OUT'", - "'OUTER'", "'OUTPUTFORMAT'", "'OVER'", "'OVERLAPS'", "'OVERLAY'", "'OVERWRITE'", - "'PARTITION'", "'PARTITIONED'", "'PARTITIONS'", "'PERCENT'", "'PIVOT'", - "'PLACING'", "'POSITION'", "'PRECEDING'", "'PRIMARY'", "'PRINCIPALS'", - "'PROPERTIES'", "'PURGE'", "'QUERY'", "'RANGE'", "'RECORDREADER'", "'RECORDWRITER'", - "'RECOVER'", "'REDUCE'", "'REFERENCES'", "'REFRESH'", "'RENAME'", "'REPAIR'", - "'REPLACE'", "'RESET'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", null, "'ROLE'", - "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEMA'", "'SECOND'", - "'SELECT'", "'SEMI'", "'SEPARATED'", "'SERDE'", "'SERDEPROPERTIES'", "'SESSION_USER'", - "'SET'", "'MINUS'", "'SETS'", "'SHOW'", "'SKEWED'", "'SOME'", "'SORT'", - "'SORTED'", "'START'", "'STATISTICS'", "'STORED'", "'STRATIFY'", "'STRUCT'", - "'SUBSTR'", "'SUBSTRING'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'", - null, "'TERMINATED'", "'THEN'", "'TO'", "'TOUCH'", "'TRAILING'", "'TRANSACTION'", - "'TRANSACTIONS'", "'TRANSFORM'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", - "'UNARCHIVE'", "'UNBOUNDED'", "'UNCACHE'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", - "'UNLOCK'", "'UNSET'", "'UPDATE'", "'USE'", "'USER'", "'USING'", "'VALUES'", - "'VIEW'", "'VIEWS'", "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'YEAR'", - null, "'<=>'", "'<>'", "'!='", "'<'", null, "'>'", null, "'+'", "'-'", - "'*'", "'/'", "'%'", "'DIV'", "'~'", "'&'", "'|'", "'||'", "'^'" - }; - private static final String[] _SYMBOLIC_NAMES = { - null, null, null, null, null, null, null, null, null, null, null, null, - "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANTI", "ANY", "ARCHIVE", - "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", "BOTH", "BUCKET", - "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", "CAST", "CHANGE", "CHECK", - "CLEAR", "CLUSTER", "CLUSTERED", "CODEGEN", "COLLATE", "COLLECTION", "COLUMN", - "COLUMNS", "COMMENT", "COMMIT", "COMPACT", "COMPACTIONS", "COMPUTE", "CONCATENATE", - "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", - "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", "DATABASE", - "DATABASES", "DAY", "DBPROPERTIES", "DEFINED", "DELETE", "DELIMITED", - "DESC", "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", "DISTINCT", "DISTRIBUTE", - "DROP", "ELSE", "END", "ESCAPE", "ESCAPED", "EXCEPT", "EXCHANGE", "EXISTS", - "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", - "FIELDS", "FILTER", "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", "FOREIGN", - "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GLOBAL", - "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", "IF", "IGNORE", "IMPORT", - "IN", "INDEX", "INDEXES", "INNER", "INPATH", "INPUTFORMAT", "INSERT", - "INTERSECT", "INTERVAL", "INTO", "IS", "ITEMS", "JOIN", "KEYS", "LAST", - "LATERAL", "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", "LIST", - "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", "MACRO", "MAP", - "MATCHED", "MERGE", "MINUTE", "MONTH", "MSCK", "NAMESPACE", "NAMESPACES", - "NATURAL", "NO", "NOT", "NULL", "NULLS", "OF", "ON", "ONLY", "OPTION", - "OPTIONS", "OR", "ORDER", "OUT", "OUTER", "OUTPUTFORMAT", "OVER", "OVERLAPS", - "OVERLAY", "OVERWRITE", "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", - "PIVOT", "PLACING", "POSITION", "PRECEDING", "PRIMARY", "PRINCIPALS", - "PROPERTIES", "PURGE", "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", - "RECOVER", "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", "REPLACE", - "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLES", "ROLLBACK", - "ROLLUP", "ROW", "ROWS", "SCHEMA", "SECOND", "SELECT", "SEMI", "SEPARATED", - "SERDE", "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", "SETS", - "SHOW", "SKEWED", "SOME", "SORT", "SORTED", "START", "STATISTICS", "STORED", - "STRATIFY", "STRUCT", "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", - "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", "TRAILING", - "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", "TRUE", "TRUNCATE", - "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", "UNION", "UNIQUE", "UNKNOWN", - "UNLOCK", "UNSET", "UPDATE", "USE", "USER", "USING", "VALUES", "VIEW", - "VIEWS", "WHEN", "WHERE", "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", - "NEQJ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", - "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", "HAT", - "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", - "EXPONENT_VALUE", "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", - "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "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; - } - - - """ - When false, INTERSECT is given the greater precedence over the other set - operations (UNION, EXCEPT and MINUS) as per the SQL standard. - """ - legacy_setops_precedence_enbled = False - - """ - When false, a literal with an exponent would be converted into - double type rather than decimal type. - """ - legacy_exponent_literal_as_decimal_enabled = False - - """ - When false, CREATE TABLE syntax without a provider will use - the value of spark.sql.sources.default as its provider. - """ - legacy_create_hive_table_by_default_enabled = False - - """ - When true, the behavior of keywords follows ANSI SQL standard. - """ - SQL_standard_keyword_behavior = False - - def isValidDecimal(self): - """ - Verify whether current token is a valid decimal token (which contains dot). - Returns true if the character that follows the token is not a digit or letter or underscore. - - For example: - For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. - For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. - For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. - For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed - by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' - which is not a digit or letter or underscore. - """ - nextChar = self._input.LA(1) - if 'A' <= nextChar <= 'Z' or '0' <= nextChar <= '9' or nextChar == '_': - return False - else: - return True - - def isHint(self): - """ - This method will be called when we see '/*' and try to match it as a bracketed comment. - If the next character is '+', it should be parsed as hint later, and we cannot match - it as a bracketed comment. - - Returns true if the next character is '+'. - """ - nextChar = self._input.LA(1) - if nextChar == '+': - return True - else: - return False - - - public SqlBaseLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "SqlBase.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - @Override - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 287: - return EXPONENT_VALUE_sempred((RuleContext)_localctx, predIndex); - case 288: - return DECIMAL_VALUE_sempred((RuleContext)_localctx, predIndex); - case 289: - return DOUBLE_LITERAL_sempred((RuleContext)_localctx, predIndex); - case 290: - return BIGDECIMAL_LITERAL_sempred((RuleContext)_localctx, predIndex); - case 298: - return BRACKETED_COMMENT_sempred((RuleContext)_localctx, predIndex); - } - return true; - } - private boolean EXPONENT_VALUE_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return self.isValidDecimal(); - } - return true; - } - private boolean DECIMAL_VALUE_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 1: - return self.isValidDecimal(); - } - return true; - } - private boolean DOUBLE_LITERAL_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return self.isValidDecimal(); - } - return true; - } - private boolean BIGDECIMAL_LITERAL_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 3: - return self.isValidDecimal(); - } - return true; - } - private boolean BRACKETED_COMMENT_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 4: - return not self.isHint(); - } - return true; - } - - private static final int _serializedATNSegments = 2; - private static final String _serializedATNSegment0 = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u012b\u0ab6\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\4\u00f6\t\u00f6\4\u00f7\t\u00f7\4\u00f8\t\u00f8\4\u00f9\t\u00f9"+ - "\4\u00fa\t\u00fa\4\u00fb\t\u00fb\4\u00fc\t\u00fc\4\u00fd\t\u00fd\4\u00fe"+ - "\t\u00fe\4\u00ff\t\u00ff\4\u0100\t\u0100\4\u0101\t\u0101\4\u0102\t\u0102"+ - "\4\u0103\t\u0103\4\u0104\t\u0104\4\u0105\t\u0105\4\u0106\t\u0106\4\u0107"+ - "\t\u0107\4\u0108\t\u0108\4\u0109\t\u0109\4\u010a\t\u010a\4\u010b\t\u010b"+ - "\4\u010c\t\u010c\4\u010d\t\u010d\4\u010e\t\u010e\4\u010f\t\u010f\4\u0110"+ - "\t\u0110\4\u0111\t\u0111\4\u0112\t\u0112\4\u0113\t\u0113\4\u0114\t\u0114"+ - "\4\u0115\t\u0115\4\u0116\t\u0116\4\u0117\t\u0117\4\u0118\t\u0118\4\u0119"+ - "\t\u0119\4\u011a\t\u011a\4\u011b\t\u011b\4\u011c\t\u011c\4\u011d\t\u011d"+ - "\4\u011e\t\u011e\4\u011f\t\u011f\4\u0120\t\u0120\4\u0121\t\u0121\4\u0122"+ - "\t\u0122\4\u0123\t\u0123\4\u0124\t\u0124\4\u0125\t\u0125\4\u0126\t\u0126"+ - "\4\u0127\t\u0127\4\u0128\t\u0128\4\u0129\t\u0129\4\u012a\t\u012a\4\u012b"+ - "\t\u012b\4\u012c\t\u012c\4\u012d\t\u012d\4\u012e\t\u012e\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\7\3\b\3\b\3\b\3\t\3\t\3\t\3\n"+ - "\3\n\3\13\3\13\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\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3"+ - "\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\24\3"+ - "\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3"+ - "\26\3\26\3\26\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3"+ - "\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3"+ - "\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3"+ - "\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\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\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3"+ - "\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\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\63\3"+ - "\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3"+ - "\64\3\65\3\65\3\65\3\65\3\65\3\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\38\38\38\38\38\39\39\39\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=\3"+ - "=\3=\3=\3=\3=\3=\3=\3=\3=\3>\3>\3>\3>\3>\3?\3?\3?\3?\3?\3?\3?\3?\3?\3"+ - "@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\5@\u0405\n@\3A\3A\3A\3"+ - "A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3C\3C\3C\3D\3"+ - "D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3G\3G\3"+ - "G\3G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3"+ - "J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3K\3K\3K\3L\3L\3L\3L\3"+ - "L\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3O\3O\3O\3O\3P\3P\3"+ - "P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3"+ - "S\3S\3S\3S\3S\3S\3T\3T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3U\3V\3V\3"+ - "V\3V\3V\3V\3V\3W\3W\3W\3W\3W\3W\3W\3W\3W\3X\3X\3X\3X\3X\3X\3X\3X\3X\3"+ - "Y\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`\3`\3`\3a\3a\3a\3a\3b\3b\3"+ - "b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3d\3d\3d\3d\3d\3d\3d\3d\3d\3d\3"+ - "e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3"+ - "h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3"+ - "k\3k\3l\3l\3l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3n\3n\3n\3n\3n\3"+ - "o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3q\3q\3q\3q\3q\3q\3q\3r\3r\3r\3s\3s\3s\3"+ - "s\3s\3s\3t\3t\3t\3t\3t\3t\3t\3t\3u\3u\3u\3u\3u\3u\3v\3v\3v\3v\3v\3v\3"+ - "v\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3x\3x\3x\3x\3x\3x\3x\3y\3y\3y\3"+ - "y\3y\3y\3y\3y\3y\3y\3z\3z\3z\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\177\3\177\3\177\3\177\3\177\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\u0081\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0083"+ - "\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0084\3\u0084"+ - "\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085\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\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089"+ - "\3\u0089\3\u0089\3\u0089\3\u008a\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\u008c\3\u008c\3\u008c\3\u008c\3\u008c\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\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\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\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093"+ - "\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094\3\u0094\3\u0094"+ - "\3\u0094\3\u0094\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\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\u009a\3\u009a\3\u009a\3\u009a\5\u009a\u0678"+ - "\n\u009a\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009c\3\u009c\3\u009c"+ - "\3\u009c\3\u009c\3\u009c\3\u009d\3\u009d\3\u009d\3\u009e\3\u009e\3\u009e"+ - "\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\3\u00a0"+ - "\3\u00a0\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1"+ - "\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2\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\u00a5\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6"+ - "\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\u00a8\3\u00a8\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\u00aa\3\u00aa\3\u00aa\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\u00ac\3\u00ac\3\u00ac\3\u00ac\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\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad"+ - "\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00af"+ - "\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0\3\u00b0\3\u00b0"+ - "\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b1"+ - "\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b2\3\u00b2\3\u00b2\3\u00b2\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\u00b3\3\u00b3\3\u00b4\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\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\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\u00b9\3\u00b9\3\u00b9\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba"+ - "\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00bb\3\u00bb"+ - "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bc\3\u00bc\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\u00bd\3\u00be\3\u00be\3\u00be"+ - "\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be\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\u00c0"+ - "\3\u00c0\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\u00c2\3\u00c3\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\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ - "\3\u00c5\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6"+ - "\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u07d2\n\u00c6\3\u00c7\3\u00c7\3\u00c7"+ - "\3\u00c7\3\u00c7\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c9"+ - "\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00ca"+ - "\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00cb\3\u00cb\3\u00cb"+ - "\3\u00cb\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\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce"+ - "\3\u00ce\3\u00ce\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf"+ - "\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d1\3\u00d1\3\u00d1\3\u00d1"+ - "\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d2\3\u00d2\3\u00d2"+ - "\3\u00d2\3\u00d2\3\u00d2\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3"+ - "\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3"+ - "\3\u00d3\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4"+ - "\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d5\3\u00d5\3\u00d5\3\u00d5"+ - "\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d7\3\u00d7\3\u00d7"+ - "\3\u00d7\3\u00d7\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d9\3\u00d9"+ - "\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00da\3\u00da\3\u00da\3\u00da"+ - "\3\u00da\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00dc\3\u00dc\3\u00dc"+ - "\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd"+ - "\3\u00dd\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+ - "\3\u00de\3\u00de\3\u00de\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df"+ - "\3\u00df\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0"+ - "\3\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e2"+ - "\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e3\3\u00e3\3\u00e3"+ - "\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e4\3\u00e4"+ - "\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5"+ - "\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6"+ - "\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e7\3\u00e7\3\u00e7\3\u00e7"+ - "\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7"+ - "\3\u00e7\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8"+ - "\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\5\u00e8\u08d8\n\u00e8\3\u00e9"+ - "\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9"+ - "\3\u00e9\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00eb\3\u00eb\3\u00eb"+ - "\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\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\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef"+ - "\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0"+ - "\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f1\3\u00f1\3\u00f1\3\u00f1"+ - "\3\u00f1\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f3\3\u00f3\3\u00f3"+ - "\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f4\3\u00f4\3\u00f4"+ - "\3\u00f4\3\u00f4\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5"+ - "\3\u00f5\3\u00f5\3\u00f5\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6"+ - "\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7"+ - "\3\u00f7\3\u00f7\3\u00f7\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8"+ - "\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00fa\3\u00fa"+ - "\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fb\3\u00fb\3\u00fb"+ - "\3\u00fb\3\u00fb\3\u00fb\3\u00fb\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+ - "\3\u00fc\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fe"+ - "\3\u00fe\3\u00fe\3\u00fe\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u0100"+ - "\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0101\3\u0101\3\u0101\3\u0101"+ - "\3\u0101\3\u0101\3\u0101\3\u0102\3\u0102\3\u0102\3\u0102\3\u0102\3\u0103"+ - "\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0104\3\u0104\3\u0104\3\u0104"+ - "\3\u0104\3\u0105\3\u0105\3\u0105\3\u0105\3\u0105\3\u0105\3\u0106\3\u0106"+ - "\3\u0106\3\u0106\3\u0106\3\u0106\3\u0106\3\u0107\3\u0107\3\u0107\3\u0107"+ - "\3\u0107\3\u0108\3\u0108\3\u0108\3\u0108\3\u0108\3\u0109\3\u0109\3\u0109"+ - "\5\u0109\u09bc\n\u0109\3\u010a\3\u010a\3\u010a\3\u010a\3\u010b\3\u010b"+ - "\3\u010b\3\u010c\3\u010c\3\u010c\3\u010d\3\u010d\3\u010e\3\u010e\3\u010e"+ - "\3\u010e\5\u010e\u09ce\n\u010e\3\u010f\3\u010f\3\u0110\3\u0110\3\u0110"+ - "\3\u0110\5\u0110\u09d6\n\u0110\3\u0111\3\u0111\3\u0112\3\u0112\3\u0113"+ - "\3\u0113\3\u0114\3\u0114\3\u0115\3\u0115\3\u0116\3\u0116\3\u0116\3\u0116"+ - "\3\u0117\3\u0117\3\u0118\3\u0118\3\u0119\3\u0119\3\u011a\3\u011a\3\u011a"+ - "\3\u011b\3\u011b\3\u011c\3\u011c\3\u011c\3\u011c\7\u011c\u09f5\n\u011c"+ - "\f\u011c\16\u011c\u09f8\13\u011c\3\u011c\3\u011c\3\u011c\3\u011c\3\u011c"+ - "\7\u011c\u09ff\n\u011c\f\u011c\16\u011c\u0a02\13\u011c\3\u011c\5\u011c"+ - "\u0a05\n\u011c\3\u011d\6\u011d\u0a08\n\u011d\r\u011d\16\u011d\u0a09\3"+ - "\u011d\3\u011d\3\u011e\6\u011e\u0a0f\n\u011e\r\u011e\16\u011e\u0a10\3"+ - "\u011e\3\u011e\3\u011f\6\u011f\u0a16\n\u011f\r\u011f\16\u011f\u0a17\3"+ - "\u011f\3\u011f\3\u0120\6\u0120\u0a1d\n\u0120\r\u0120\16\u0120\u0a1e\3"+ - "\u0121\6\u0121\u0a22\n\u0121\r\u0121\16\u0121\u0a23\3\u0121\3\u0121\3"+ - "\u0121\3\u0121\3\u0121\3\u0121\5\u0121\u0a2c\n\u0121\3\u0122\3\u0122\3"+ - "\u0122\3\u0123\6\u0123\u0a32\n\u0123\r\u0123\16\u0123\u0a33\3\u0123\5"+ - "\u0123\u0a37\n\u0123\3\u0123\3\u0123\3\u0123\3\u0123\5\u0123\u0a3d\n\u0123"+ - "\3\u0123\3\u0123\3\u0123\5\u0123\u0a42\n\u0123\3\u0124\6\u0124\u0a45\n"+ - "\u0124\r\u0124\16\u0124\u0a46\3\u0124\5\u0124\u0a4a\n\u0124\3\u0124\3"+ - "\u0124\3\u0124\3\u0124\3\u0124\5\u0124\u0a51\n\u0124\3\u0124\3\u0124\3"+ - "\u0124\3\u0124\3\u0124\5\u0124\u0a58\n\u0124\3\u0125\3\u0125\3\u0125\6"+ - "\u0125\u0a5d\n\u0125\r\u0125\16\u0125\u0a5e\3\u0126\3\u0126\3\u0126\3"+ - "\u0126\7\u0126\u0a65\n\u0126\f\u0126\16\u0126\u0a68\13\u0126\3\u0126\3"+ - "\u0126\3\u0127\6\u0127\u0a6d\n\u0127\r\u0127\16\u0127\u0a6e\3\u0127\3"+ - "\u0127\7\u0127\u0a73\n\u0127\f\u0127\16\u0127\u0a76\13\u0127\3\u0127\3"+ - "\u0127\6\u0127\u0a7a\n\u0127\r\u0127\16\u0127\u0a7b\5\u0127\u0a7e\n\u0127"+ - "\3\u0128\3\u0128\5\u0128\u0a82\n\u0128\3\u0128\6\u0128\u0a85\n\u0128\r"+ - "\u0128\16\u0128\u0a86\3\u0129\3\u0129\3\u012a\3\u012a\3\u012b\3\u012b"+ - "\3\u012b\3\u012b\7\u012b\u0a91\n\u012b\f\u012b\16\u012b\u0a94\13\u012b"+ - "\3\u012b\5\u012b\u0a97\n\u012b\3\u012b\5\u012b\u0a9a\n\u012b\3\u012b\3"+ - "\u012b\3\u012c\3\u012c\3\u012c\3\u012c\3\u012c\3\u012c\7\u012c\u0aa4\n"+ - "\u012c\f\u012c\16\u012c\u0aa7\13\u012c\3\u012c\3\u012c\3\u012c\3\u012c"+ - "\3\u012c\3\u012d\6\u012d\u0aaf\n\u012d\r\u012d\16\u012d\u0ab0\3\u012d"+ - "\3\u012d\3\u012e\3\u012e\3\u0aa5\2\u012f\3\3\5\4\7\5\t\6\13\7\r\b\17\t"+ - "\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27"+ - "-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W"+ - "-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083"+ - "C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097"+ - "M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00ab"+ - "W\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bf"+ - "a\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3"+ - "k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5t\u00e7"+ - "u\u00e9v\u00ebw\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\u00f0\u01df"+ - "\u00f1\u01e1\u00f2\u01e3\u00f3\u01e5\u00f4\u01e7\u00f5\u01e9\u00f6\u01eb"+ - "\u00f7\u01ed\u00f8\u01ef\u00f9\u01f1\u00fa\u01f3\u00fb\u01f5\u00fc\u01f7"+ - "\u00fd\u01f9\u00fe\u01fb\u00ff\u01fd\u0100\u01ff\u0101\u0201\u0102\u0203"+ - "\u0103\u0205\u0104\u0207\u0105\u0209\u0106\u020b\u0107\u020d\u0108\u020f"+ - "\u0109\u0211\u010a\u0213\u010b\u0215\u010c\u0217\u010d\u0219\u010e\u021b"+ - "\u010f\u021d\u0110\u021f\u0111\u0221\u0112\u0223\u0113\u0225\u0114\u0227"+ - "\u0115\u0229\u0116\u022b\u0117\u022d\u0118\u022f\u0119\u0231\u011a\u0233"+ - "\u011b\u0235\u011c\u0237\u011d\u0239\u011e\u023b\u011f\u023d\u0120\u023f"+ - "\u0121\u0241\u0122\u0243\u0123\u0245\u0124\u0247\u0125\u0249\u0126\u024b"+ - "\u0127\u024d\2\u024f\2\u0251\2\u0253\2\u0255\u0128\u0257\u0129\u0259\u012a"+ - "\u025b\u012b\3\2\n\4\2))^^\4\2$$^^\3\2bb\4\2--//\3\2\62;\3\2C\\\4\2\f"+ - "\f\17\17\5\2\13\f\17\17\"\"\2\u0adc\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2"+ - "\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23"+ - "\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2"+ - "\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2"+ - "\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3"+ - "\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2"+ - "\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2"+ - "\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2["+ - "\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2"+ - "\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2"+ - "\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2"+ - "\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089"+ - "\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2"+ - "\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b"+ - "\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2"+ - "\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad"+ - "\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2"+ - "\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf"+ - "\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2"+ - "\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1"+ - "\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2"+ - "\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3"+ - "\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2"+ - "\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5"+ - "\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2"+ - "\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105\3\2\2\2\2\u0107"+ - "\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2\2\2\u010d\3\2\2\2\2\u010f\3\2\2"+ - "\2\2\u0111\3\2\2\2\2\u0113\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119"+ - "\3\2\2\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2\2\2\u0121\3\2\2"+ - "\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u0127\3\2\2\2\2\u0129\3\2\2\2\2\u012b"+ - "\3\2\2\2\2\u012d\3\2\2\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133\3\2\2"+ - "\2\2\u0135\3\2\2\2\2\u0137\3\2\2\2\2\u0139\3\2\2\2\2\u013b\3\2\2\2\2\u013d"+ - "\3\2\2\2\2\u013f\3\2\2\2\2\u0141\3\2\2\2\2\u0143\3\2\2\2\2\u0145\3\2\2"+ - "\2\2\u0147\3\2\2\2\2\u0149\3\2\2\2\2\u014b\3\2\2\2\2\u014d\3\2\2\2\2\u014f"+ - "\3\2\2\2\2\u0151\3\2\2\2\2\u0153\3\2\2\2\2\u0155\3\2\2\2\2\u0157\3\2\2"+ - "\2\2\u0159\3\2\2\2\2\u015b\3\2\2\2\2\u015d\3\2\2\2\2\u015f\3\2\2\2\2\u0161"+ - "\3\2\2\2\2\u0163\3\2\2\2\2\u0165\3\2\2\2\2\u0167\3\2\2\2\2\u0169\3\2\2"+ - "\2\2\u016b\3\2\2\2\2\u016d\3\2\2\2\2\u016f\3\2\2\2\2\u0171\3\2\2\2\2\u0173"+ - "\3\2\2\2\2\u0175\3\2\2\2\2\u0177\3\2\2\2\2\u0179\3\2\2\2\2\u017b\3\2\2"+ - "\2\2\u017d\3\2\2\2\2\u017f\3\2\2\2\2\u0181\3\2\2\2\2\u0183\3\2\2\2\2\u0185"+ - "\3\2\2\2\2\u0187\3\2\2\2\2\u0189\3\2\2\2\2\u018b\3\2\2\2\2\u018d\3\2\2"+ - "\2\2\u018f\3\2\2\2\2\u0191\3\2\2\2\2\u0193\3\2\2\2\2\u0195\3\2\2\2\2\u0197"+ - "\3\2\2\2\2\u0199\3\2\2\2\2\u019b\3\2\2\2\2\u019d\3\2\2\2\2\u019f\3\2\2"+ - "\2\2\u01a1\3\2\2\2\2\u01a3\3\2\2\2\2\u01a5\3\2\2\2\2\u01a7\3\2\2\2\2\u01a9"+ - "\3\2\2\2\2\u01ab\3\2\2\2\2\u01ad\3\2\2\2\2\u01af\3\2\2\2\2\u01b1\3\2\2"+ - "\2\2\u01b3\3\2\2\2\2\u01b5\3\2\2\2\2\u01b7\3\2\2\2\2\u01b9\3\2\2\2\2\u01bb"+ - "\3\2\2\2\2\u01bd\3\2\2\2\2\u01bf\3\2\2\2\2\u01c1\3\2\2\2\2\u01c3\3\2\2"+ - "\2\2\u01c5\3\2\2\2\2\u01c7\3\2\2\2\2\u01c9\3\2\2\2\2\u01cb\3\2\2\2\2\u01cd"+ - "\3\2\2\2\2\u01cf\3\2\2\2\2\u01d1\3\2\2\2\2\u01d3\3\2\2\2\2\u01d5\3\2\2"+ - "\2\2\u01d7\3\2\2\2\2\u01d9\3\2\2\2\2\u01db\3\2\2\2\2\u01dd\3\2\2\2\2\u01df"+ - "\3\2\2\2\2\u01e1\3\2\2\2\2\u01e3\3\2\2\2\2\u01e5\3\2\2\2\2\u01e7\3\2\2"+ - "\2\2\u01e9\3\2\2\2\2\u01eb\3\2\2\2\2\u01ed\3\2\2\2\2\u01ef\3\2\2\2\2\u01f1"+ - "\3\2\2\2\2\u01f3\3\2\2\2\2\u01f5\3\2\2\2\2\u01f7\3\2\2\2\2\u01f9\3\2\2"+ - "\2\2\u01fb\3\2\2\2\2\u01fd\3\2\2\2\2\u01ff\3\2\2\2\2\u0201\3\2\2\2\2\u0203"+ - "\3\2\2\2\2\u0205\3\2\2\2\2\u0207\3\2\2\2\2\u0209\3\2\2\2\2\u020b\3\2\2"+ - "\2\2\u020d\3\2\2\2\2\u020f\3\2\2\2\2\u0211\3\2\2\2\2\u0213\3\2\2\2\2\u0215"+ - "\3\2\2\2\2\u0217\3\2\2\2\2\u0219\3\2\2\2\2\u021b\3\2\2\2\2\u021d\3\2\2"+ - "\2\2\u021f\3\2\2\2\2\u0221\3\2\2\2\2\u0223\3\2\2\2\2\u0225\3\2\2\2\2\u0227"+ - "\3\2\2\2\2\u0229\3\2\2\2\2\u022b\3\2\2\2\2\u022d\3\2\2\2\2\u022f\3\2\2"+ - "\2\2\u0231\3\2\2\2\2\u0233\3\2\2\2\2\u0235\3\2\2\2\2\u0237\3\2\2\2\2\u0239"+ - "\3\2\2\2\2\u023b\3\2\2\2\2\u023d\3\2\2\2\2\u023f\3\2\2\2\2\u0241\3\2\2"+ - "\2\2\u0243\3\2\2\2\2\u0245\3\2\2\2\2\u0247\3\2\2\2\2\u0249\3\2\2\2\2\u024b"+ - "\3\2\2\2\2\u0255\3\2\2\2\2\u0257\3\2\2\2\2\u0259\3\2\2\2\2\u025b\3\2\2"+ - "\2\3\u025d\3\2\2\2\5\u025f\3\2\2\2\7\u0261\3\2\2\2\t\u0263\3\2\2\2\13"+ - "\u0265\3\2\2\2\r\u0267\3\2\2\2\17\u026b\3\2\2\2\21\u026e\3\2\2\2\23\u0271"+ - "\3\2\2\2\25\u0273\3\2\2\2\27\u0275\3\2\2\2\31\u0277\3\2\2\2\33\u027b\3"+ - "\2\2\2\35\u0281\3\2\2\2\37\u0285\3\2\2\2!\u028b\3\2\2\2#\u0293\3\2\2\2"+ - "%\u0297\3\2\2\2\'\u029c\3\2\2\2)\u02a0\3\2\2\2+\u02a8\3\2\2\2-\u02ae\3"+ - "\2\2\2/\u02b1\3\2\2\2\61\u02b5\3\2\2\2\63\u02b8\3\2\2\2\65\u02c6\3\2\2"+ - "\2\67\u02ce\3\2\2\29\u02d3\3\2\2\2;\u02da\3\2\2\2=\u02e2\3\2\2\2?\u02e5"+ - "\3\2\2\2A\u02eb\3\2\2\2C\u02f3\3\2\2\2E\u02f8\3\2\2\2G\u02fd\3\2\2\2I"+ - "\u0304\3\2\2\2K\u030a\3\2\2\2M\u0310\3\2\2\2O\u0318\3\2\2\2Q\u0322\3\2"+ - "\2\2S\u032a\3\2\2\2U\u0332\3\2\2\2W\u033d\3\2\2\2Y\u0344\3\2\2\2[\u034c"+ - "\3\2\2\2]\u0354\3\2\2\2_\u035b\3\2\2\2a\u0363\3\2\2\2c\u036f\3\2\2\2e"+ - "\u0377\3\2\2\2g\u0383\3\2\2\2i\u038e\3\2\2\2k\u0393\3\2\2\2m\u039a\3\2"+ - "\2\2o\u03a0\3\2\2\2q\u03a5\3\2\2\2s\u03ad\3\2\2\2u\u03ba\3\2\2\2w\u03c7"+ - "\3\2\2\2y\u03d9\3\2\2\2{\u03e6\3\2\2\2}\u03eb\3\2\2\2\177\u0404\3\2\2"+ - "\2\u0081\u0406\3\2\2\2\u0083\u040a\3\2\2\2\u0085\u0417\3\2\2\2\u0087\u041f"+ - "\3\2\2\2\u0089\u0426\3\2\2\2\u008b\u0430\3\2\2\2\u008d\u0435\3\2\2\2\u008f"+ - "\u043e\3\2\2\2\u0091\u0442\3\2\2\2\u0093\u044e\3\2\2\2\u0095\u0458\3\2"+ - "\2\2\u0097\u0461\3\2\2\2\u0099\u046c\3\2\2\2\u009b\u0471\3\2\2\2\u009d"+ - "\u0476\3\2\2\2\u009f\u047a\3\2\2\2\u00a1\u0481\3\2\2\2\u00a3\u0489\3\2"+ - "\2\2\u00a5\u0490\3\2\2\2\u00a7\u0499\3\2\2\2\u00a9\u04a0\3\2\2\2\u00ab"+ - "\u04a8\3\2\2\2\u00ad\u04af\3\2\2\2\u00af\u04b8\3\2\2\2\u00b1\u04c1\3\2"+ - "\2\2\u00b3\u04c9\3\2\2\2\u00b5\u04cf\3\2\2\2\u00b7\u04d5\3\2\2\2\u00b9"+ - "\u04dc\3\2\2\2\u00bb\u04e3\3\2\2\2\u00bd\u04ee\3\2\2\2\u00bf\u04f4\3\2"+ - "\2\2\u00c1\u04fe\3\2\2\2\u00c3\u0502\3\2\2\2\u00c5\u050a\3\2\2\2\u00c7"+ - "\u0511\3\2\2\2\u00c9\u051b\3\2\2\2\u00cb\u0520\3\2\2\2\u00cd\u0525\3\2"+ - "\2\2\u00cf\u052e\3\2\2\2\u00d1\u0538\3\2\2\2\u00d3\u053f\3\2\2\2\u00d5"+ - "\u0545\3\2\2\2\u00d7\u054b\3\2\2\2\u00d9\u0554\3\2\2\2\u00db\u055b\3\2"+ - "\2\2\u00dd\u0560\3\2\2\2\u00df\u0563\3\2\2\2\u00e1\u056a\3\2\2\2\u00e3"+ - "\u0571\3\2\2\2\u00e5\u0574\3\2\2\2\u00e7\u057a\3\2\2\2\u00e9\u0582\3\2"+ - "\2\2\u00eb\u0588\3\2\2\2\u00ed\u058f\3\2\2\2\u00ef\u059b\3\2\2\2\u00f1"+ - "\u05a2\3\2\2\2\u00f3\u05ac\3\2\2\2\u00f5\u05b5\3\2\2\2\u00f7\u05ba\3\2"+ - "\2\2\u00f9\u05bd\3\2\2\2\u00fb\u05c3\3\2\2\2\u00fd\u05c8\3\2\2\2\u00ff"+ - "\u05cd\3\2\2\2\u0101\u05d2\3\2\2\2\u0103\u05da\3\2\2\2\u0105\u05df\3\2"+ - "\2\2\u0107\u05e7\3\2\2\2\u0109\u05ec\3\2\2\2\u010b\u05f1\3\2\2\2\u010d"+ - "\u05f7\3\2\2\2\u010f\u05fd\3\2\2\2\u0111\u0602\3\2\2\2\u0113\u0607\3\2"+ - "\2\2\u0115\u060d\3\2\2\2\u0117\u0616\3\2\2\2\u0119\u061b\3\2\2\2\u011b"+ - "\u0621\3\2\2\2\u011d\u0629\3\2\2\2\u011f\u062f\3\2\2\2\u0121\u0633\3\2"+ - "\2\2\u0123\u063b\3\2\2\2\u0125\u0641\3\2\2\2\u0127\u0648\3\2\2\2\u0129"+ - "\u064e\3\2\2\2\u012b\u0653\3\2\2\2\u012d\u065d\3\2\2\2\u012f\u0668\3\2"+ - "\2\2\u0131\u0670\3\2\2\2\u0133\u0677\3\2\2\2\u0135\u0679\3\2\2\2\u0137"+ - "\u067e\3\2\2\2\u0139\u0684\3\2\2\2\u013b\u0687\3\2\2\2\u013d\u068a\3\2"+ - "\2\2\u013f\u068f\3\2\2\2\u0141\u0696\3\2\2\2\u0143\u069e\3\2\2\2\u0145"+ - "\u06a1\3\2\2\2\u0147\u06a7\3\2\2\2\u0149\u06ab\3\2\2\2\u014b\u06b1\3\2"+ - "\2\2\u014d\u06be\3\2\2\2\u014f\u06c3\3\2\2\2\u0151\u06cc\3\2\2\2\u0153"+ - "\u06d4\3\2\2\2\u0155\u06de\3\2\2\2\u0157\u06e8\3\2\2\2\u0159\u06f4\3\2"+ - "\2\2\u015b\u06ff\3\2\2\2\u015d\u0707\3\2\2\2\u015f\u070d\3\2\2\2\u0161"+ - "\u0715\3\2\2\2\u0163\u071e\3\2\2\2\u0165\u0728\3\2\2\2\u0167\u0730\3\2"+ - "\2\2\u0169\u073b\3\2\2\2\u016b\u0746\3\2\2\2\u016d\u074c\3\2\2\2\u016f"+ - "\u0752\3\2\2\2\u0171\u0758\3\2\2\2\u0173\u0765\3\2\2\2\u0175\u0772\3\2"+ - "\2\2\u0177\u077a\3\2\2\2\u0179\u0781\3\2\2\2\u017b\u078c\3\2\2\2\u017d"+ - "\u0794\3\2\2\2\u017f\u079b\3\2\2\2\u0181\u07a2\3\2\2\2\u0183\u07aa\3\2"+ - "\2\2\u0185\u07b0\3\2\2\2\u0187\u07b9\3\2\2\2\u0189\u07c0\3\2\2\2\u018b"+ - "\u07d1\3\2\2\2\u018d\u07d3\3\2\2\2\u018f\u07d8\3\2\2\2\u0191\u07de\3\2"+ - "\2\2\u0193\u07e7\3\2\2\2\u0195\u07ee\3\2\2\2\u0197\u07f2\3\2\2\2\u0199"+ - "\u07f7\3\2\2\2\u019b\u07fe\3\2\2\2\u019d\u0805\3\2\2\2\u019f\u080c\3\2"+ - "\2\2\u01a1\u0811\3\2\2\2\u01a3\u081b\3\2\2\2\u01a5\u0821\3\2\2\2\u01a7"+ - "\u0831\3\2\2\2\u01a9\u083e\3\2\2\2\u01ab\u0842\3\2\2\2\u01ad\u0848\3\2"+ - "\2\2\u01af\u084d\3\2\2\2\u01b1\u0852\3\2\2\2\u01b3\u0859\3\2\2\2\u01b5"+ - "\u085e\3\2\2\2\u01b7\u0863\3\2\2\2\u01b9\u086a\3\2\2\2\u01bb\u0870\3\2"+ - "\2\2\u01bd\u087b\3\2\2\2\u01bf\u0882\3\2\2\2\u01c1\u088b\3\2\2\2\u01c3"+ - "\u0892\3\2\2\2\u01c5\u0899\3\2\2\2\u01c7\u08a3\3\2\2\2\u01c9\u08a9\3\2"+ - "\2\2\u01cb\u08b0\3\2\2\2\u01cd\u08bc\3\2\2\2\u01cf\u08d7\3\2\2\2\u01d1"+ - "\u08d9\3\2\2\2\u01d3\u08e4\3\2\2\2\u01d5\u08e9\3\2\2\2\u01d7\u08ec\3\2"+ - "\2\2\u01d9\u08f2\3\2\2\2\u01db\u08fb\3\2\2\2\u01dd\u0907\3\2\2\2\u01df"+ - "\u0914\3\2\2\2\u01e1\u091e\3\2\2\2\u01e3\u0923\3\2\2\2\u01e5\u0928\3\2"+ - "\2\2\u01e7\u0931\3\2\2\2\u01e9\u0936\3\2\2\2\u01eb\u0940\3\2\2\2\u01ed"+ - "\u094a\3\2\2\2\u01ef\u0952\3\2\2\2\u01f1\u0958\3\2\2\2\u01f3\u095f\3\2"+ - "\2\2\u01f5\u0967\3\2\2\2\u01f7\u096e\3\2\2\2\u01f9\u0974\3\2\2\2\u01fb"+ - "\u097b\3\2\2\2\u01fd\u097f\3\2\2\2\u01ff\u0984\3\2\2\2\u0201\u098a\3\2"+ - "\2\2\u0203\u0991\3\2\2\2\u0205\u0996\3\2\2\2\u0207\u099c\3\2\2\2\u0209"+ - "\u09a1\3\2\2\2\u020b\u09a7\3\2\2\2\u020d\u09ae\3\2\2\2\u020f\u09b3\3\2"+ - "\2\2\u0211\u09bb\3\2\2\2\u0213\u09bd\3\2\2\2\u0215\u09c1\3\2\2\2\u0217"+ - "\u09c4\3\2\2\2\u0219\u09c7\3\2\2\2\u021b\u09cd\3\2\2\2\u021d\u09cf\3\2"+ - "\2\2\u021f\u09d5\3\2\2\2\u0221\u09d7\3\2\2\2\u0223\u09d9\3\2\2\2\u0225"+ - "\u09db\3\2\2\2\u0227\u09dd\3\2\2\2\u0229\u09df\3\2\2\2\u022b\u09e1\3\2"+ - "\2\2\u022d\u09e5\3\2\2\2\u022f\u09e7\3\2\2\2\u0231\u09e9\3\2\2\2\u0233"+ - "\u09eb\3\2\2\2\u0235\u09ee\3\2\2\2\u0237\u0a04\3\2\2\2\u0239\u0a07\3\2"+ - "\2\2\u023b\u0a0e\3\2\2\2\u023d\u0a15\3\2\2\2\u023f\u0a1c\3\2\2\2\u0241"+ - "\u0a2b\3\2\2\2\u0243\u0a2d\3\2\2\2\u0245\u0a41\3\2\2\2\u0247\u0a57\3\2"+ - "\2\2\u0249\u0a5c\3\2\2\2\u024b\u0a60\3\2\2\2\u024d\u0a7d\3\2\2\2\u024f"+ - "\u0a7f\3\2\2\2\u0251\u0a88\3\2\2\2\u0253\u0a8a\3\2\2\2\u0255\u0a8c\3\2"+ - "\2\2\u0257\u0a9d\3\2\2\2\u0259\u0aae\3\2\2\2\u025b\u0ab4\3\2\2\2\u025d"+ - "\u025e\7=\2\2\u025e\4\3\2\2\2\u025f\u0260\7*\2\2\u0260\6\3\2\2\2\u0261"+ - "\u0262\7+\2\2\u0262\b\3\2\2\2\u0263\u0264\7.\2\2\u0264\n\3\2\2\2\u0265"+ - "\u0266\7\60\2\2\u0266\f\3\2\2\2\u0267\u0268\7\61\2\2\u0268\u0269\7,\2"+ - "\2\u0269\u026a\7-\2\2\u026a\16\3\2\2\2\u026b\u026c\7,\2\2\u026c\u026d"+ - "\7\61\2\2\u026d\20\3\2\2\2\u026e\u026f\7/\2\2\u026f\u0270\7@\2\2\u0270"+ - "\22\3\2\2\2\u0271\u0272\7]\2\2\u0272\24\3\2\2\2\u0273\u0274\7_\2\2\u0274"+ - "\26\3\2\2\2\u0275\u0276\7<\2\2\u0276\30\3\2\2\2\u0277\u0278\7C\2\2\u0278"+ - "\u0279\7F\2\2\u0279\u027a\7F\2\2\u027a\32\3\2\2\2\u027b\u027c\7C\2\2\u027c"+ - "\u027d\7H\2\2\u027d\u027e\7V\2\2\u027e\u027f\7G\2\2\u027f\u0280\7T\2\2"+ - "\u0280\34\3\2\2\2\u0281\u0282\7C\2\2\u0282\u0283\7N\2\2\u0283\u0284\7"+ - "N\2\2\u0284\36\3\2\2\2\u0285\u0286\7C\2\2\u0286\u0287\7N\2\2\u0287\u0288"+ - "\7V\2\2\u0288\u0289\7G\2\2\u0289\u028a\7T\2\2\u028a \3\2\2\2\u028b\u028c"+ - "\7C\2\2\u028c\u028d\7P\2\2\u028d\u028e\7C\2\2\u028e\u028f\7N\2\2\u028f"+ - "\u0290\7[\2\2\u0290\u0291\7\\\2\2\u0291\u0292\7G\2\2\u0292\"\3\2\2\2\u0293"+ - "\u0294\7C\2\2\u0294\u0295\7P\2\2\u0295\u0296\7F\2\2\u0296$\3\2\2\2\u0297"+ - "\u0298\7C\2\2\u0298\u0299\7P\2\2\u0299\u029a\7V\2\2\u029a\u029b\7K\2\2"+ - "\u029b&\3\2\2\2\u029c\u029d\7C\2\2\u029d\u029e\7P\2\2\u029e\u029f\7[\2"+ - "\2\u029f(\3\2\2\2\u02a0\u02a1\7C\2\2\u02a1\u02a2\7T\2\2\u02a2\u02a3\7"+ - "E\2\2\u02a3\u02a4\7J\2\2\u02a4\u02a5\7K\2\2\u02a5\u02a6\7X\2\2\u02a6\u02a7"+ - "\7G\2\2\u02a7*\3\2\2\2\u02a8\u02a9\7C\2\2\u02a9\u02aa\7T\2\2\u02aa\u02ab"+ - "\7T\2\2\u02ab\u02ac\7C\2\2\u02ac\u02ad\7[\2\2\u02ad,\3\2\2\2\u02ae\u02af"+ - "\7C\2\2\u02af\u02b0\7U\2\2\u02b0.\3\2\2\2\u02b1\u02b2\7C\2\2\u02b2\u02b3"+ - "\7U\2\2\u02b3\u02b4\7E\2\2\u02b4\60\3\2\2\2\u02b5\u02b6\7C\2\2\u02b6\u02b7"+ - "\7V\2\2\u02b7\62\3\2\2\2\u02b8\u02b9\7C\2\2\u02b9\u02ba\7W\2\2\u02ba\u02bb"+ - "\7V\2\2\u02bb\u02bc\7J\2\2\u02bc\u02bd\7Q\2\2\u02bd\u02be\7T\2\2\u02be"+ - "\u02bf\7K\2\2\u02bf\u02c0\7\\\2\2\u02c0\u02c1\7C\2\2\u02c1\u02c2\7V\2"+ - "\2\u02c2\u02c3\7K\2\2\u02c3\u02c4\7Q\2\2\u02c4\u02c5\7P\2\2\u02c5\64\3"+ - "\2\2\2\u02c6\u02c7\7D\2\2\u02c7\u02c8\7G\2\2\u02c8\u02c9\7V\2\2\u02c9"+ - "\u02ca\7Y\2\2\u02ca\u02cb\7G\2\2\u02cb\u02cc\7G\2\2\u02cc\u02cd\7P\2\2"+ - "\u02cd\66\3\2\2\2\u02ce\u02cf\7D\2\2\u02cf\u02d0\7Q\2\2\u02d0\u02d1\7"+ - "V\2\2\u02d1\u02d2\7J\2\2\u02d28\3\2\2\2\u02d3\u02d4\7D\2\2\u02d4\u02d5"+ - "\7W\2\2\u02d5\u02d6\7E\2\2\u02d6\u02d7\7M\2\2\u02d7\u02d8\7G\2\2\u02d8"+ - "\u02d9\7V\2\2\u02d9:\3\2\2\2\u02da\u02db\7D\2\2\u02db\u02dc\7W\2\2\u02dc"+ - "\u02dd\7E\2\2\u02dd\u02de\7M\2\2\u02de\u02df\7G\2\2\u02df\u02e0\7V\2\2"+ - "\u02e0\u02e1\7U\2\2\u02e1<\3\2\2\2\u02e2\u02e3\7D\2\2\u02e3\u02e4\7[\2"+ - "\2\u02e4>\3\2\2\2\u02e5\u02e6\7E\2\2\u02e6\u02e7\7C\2\2\u02e7\u02e8\7"+ - "E\2\2\u02e8\u02e9\7J\2\2\u02e9\u02ea\7G\2\2\u02ea@\3\2\2\2\u02eb\u02ec"+ - "\7E\2\2\u02ec\u02ed\7C\2\2\u02ed\u02ee\7U\2\2\u02ee\u02ef\7E\2\2\u02ef"+ - "\u02f0\7C\2\2\u02f0\u02f1\7F\2\2\u02f1\u02f2\7G\2\2\u02f2B\3\2\2\2\u02f3"+ - "\u02f4\7E\2\2\u02f4\u02f5\7C\2\2\u02f5\u02f6\7U\2\2\u02f6\u02f7\7G\2\2"+ - "\u02f7D\3\2\2\2\u02f8\u02f9\7E\2\2\u02f9\u02fa\7C\2\2\u02fa\u02fb\7U\2"+ - "\2\u02fb\u02fc\7V\2\2\u02fcF\3\2\2\2\u02fd\u02fe\7E\2\2\u02fe\u02ff\7"+ - "J\2\2\u02ff\u0300\7C\2\2\u0300\u0301\7P\2\2\u0301\u0302\7I\2\2\u0302\u0303"+ - "\7G\2\2\u0303H\3\2\2\2\u0304\u0305\7E\2\2\u0305\u0306\7J\2\2\u0306\u0307"+ - "\7G\2\2\u0307\u0308\7E\2\2\u0308\u0309\7M\2\2\u0309J\3\2\2\2\u030a\u030b"+ - "\7E\2\2\u030b\u030c\7N\2\2\u030c\u030d\7G\2\2\u030d\u030e\7C\2\2\u030e"+ - "\u030f\7T\2\2\u030fL\3\2\2\2\u0310\u0311\7E\2\2\u0311\u0312\7N\2\2\u0312"+ - "\u0313\7W\2\2\u0313\u0314\7U\2\2\u0314\u0315\7V\2\2\u0315\u0316\7G\2\2"+ - "\u0316\u0317\7T\2\2\u0317N\3\2\2\2\u0318\u0319\7E\2\2\u0319\u031a\7N\2"+ - "\2\u031a\u031b\7W\2\2\u031b\u031c\7U\2\2\u031c\u031d\7V\2\2\u031d\u031e"+ - "\7G\2\2\u031e\u031f\7T\2\2\u031f\u0320\7G\2\2\u0320\u0321\7F\2\2\u0321"+ - "P\3\2\2\2\u0322\u0323\7E\2\2\u0323\u0324\7Q\2\2\u0324\u0325\7F\2\2\u0325"+ - "\u0326\7G\2\2\u0326\u0327\7I\2\2\u0327\u0328\7G\2\2\u0328\u0329\7P\2\2"+ - "\u0329R\3\2\2\2\u032a\u032b\7E\2\2\u032b\u032c\7Q\2\2\u032c\u032d\7N\2"+ - "\2\u032d\u032e\7N\2\2\u032e\u032f\7C\2\2\u032f\u0330\7V\2\2\u0330\u0331"+ - "\7G\2\2\u0331T\3\2\2\2\u0332\u0333\7E\2\2\u0333\u0334\7Q\2\2\u0334\u0335"+ - "\7N\2\2\u0335\u0336\7N\2\2\u0336\u0337\7G\2\2\u0337\u0338\7E\2\2\u0338"+ - "\u0339\7V\2\2\u0339\u033a\7K\2\2\u033a\u033b\7Q\2\2\u033b\u033c\7P\2\2"+ - "\u033cV\3\2\2\2\u033d\u033e\7E\2\2\u033e\u033f\7Q\2\2\u033f\u0340\7N\2"+ - "\2\u0340\u0341\7W\2\2\u0341\u0342\7O\2\2\u0342\u0343\7P\2\2\u0343X\3\2"+ - "\2\2\u0344\u0345\7E\2\2\u0345\u0346\7Q\2\2\u0346\u0347\7N\2\2\u0347\u0348"+ - "\7W\2\2\u0348\u0349\7O\2\2\u0349\u034a\7P\2\2\u034a\u034b\7U\2\2\u034b"+ - "Z\3\2\2\2\u034c\u034d\7E\2\2\u034d\u034e\7Q\2\2\u034e\u034f\7O\2\2\u034f"+ - "\u0350\7O\2\2\u0350\u0351\7G\2\2\u0351\u0352\7P\2\2\u0352\u0353\7V\2\2"+ - "\u0353\\\3\2\2\2\u0354\u0355\7E\2\2\u0355\u0356\7Q\2\2\u0356\u0357\7O"+ - "\2\2\u0357\u0358\7O\2\2\u0358\u0359\7K\2\2\u0359\u035a\7V\2\2\u035a^\3"+ - "\2\2\2\u035b\u035c\7E\2\2\u035c\u035d\7Q\2\2\u035d\u035e\7O\2\2\u035e"+ - "\u035f\7R\2\2\u035f\u0360\7C\2\2\u0360\u0361\7E\2\2\u0361\u0362\7V\2\2"+ - "\u0362`\3\2\2\2\u0363\u0364\7E\2\2\u0364\u0365\7Q\2\2\u0365\u0366\7O\2"+ - "\2\u0366\u0367\7R\2\2\u0367\u0368\7C\2\2\u0368\u0369\7E\2\2\u0369\u036a"+ - "\7V\2\2\u036a\u036b\7K\2\2\u036b\u036c\7Q\2\2\u036c\u036d\7P\2\2\u036d"+ - "\u036e\7U\2\2\u036eb\3\2\2\2\u036f\u0370\7E\2\2\u0370\u0371\7Q\2\2\u0371"+ - "\u0372\7O\2\2\u0372\u0373\7R\2\2\u0373\u0374\7W\2\2\u0374\u0375\7V\2\2"+ - "\u0375\u0376\7G\2\2\u0376d\3\2\2\2\u0377\u0378\7E\2\2\u0378\u0379\7Q\2"+ - "\2\u0379\u037a\7P\2\2\u037a\u037b\7E\2\2\u037b\u037c\7C\2\2\u037c\u037d"+ - "\7V\2\2\u037d\u037e\7G\2\2\u037e\u037f\7P\2\2\u037f\u0380\7C\2\2\u0380"+ - "\u0381\7V\2\2\u0381\u0382\7G\2\2\u0382f\3\2\2\2\u0383\u0384\7E\2\2\u0384"+ - "\u0385\7Q\2\2\u0385\u0386\7P\2\2\u0386\u0387\7U\2\2\u0387\u0388\7V\2\2"+ - "\u0388\u0389\7T\2\2\u0389\u038a\7C\2\2\u038a\u038b\7K\2\2\u038b\u038c"+ - "\7P\2\2\u038c\u038d\7V\2\2\u038dh\3\2\2\2\u038e\u038f\7E\2\2\u038f\u0390"+ - "\7Q\2\2\u0390\u0391\7U\2\2\u0391\u0392\7V\2\2\u0392j\3\2\2\2\u0393\u0394"+ - "\7E\2\2\u0394\u0395\7T\2\2\u0395\u0396\7G\2\2\u0396\u0397\7C\2\2\u0397"+ - "\u0398\7V\2\2\u0398\u0399\7G\2\2\u0399l\3\2\2\2\u039a\u039b\7E\2\2\u039b"+ - "\u039c\7T\2\2\u039c\u039d\7Q\2\2\u039d\u039e\7U\2\2\u039e\u039f\7U\2\2"+ - "\u039fn\3\2\2\2\u03a0\u03a1\7E\2\2\u03a1\u03a2\7W\2\2\u03a2\u03a3\7D\2"+ - "\2\u03a3\u03a4\7G\2\2\u03a4p\3\2\2\2\u03a5\u03a6\7E\2\2\u03a6\u03a7\7"+ - "W\2\2\u03a7\u03a8\7T\2\2\u03a8\u03a9\7T\2\2\u03a9\u03aa\7G\2\2\u03aa\u03ab"+ - "\7P\2\2\u03ab\u03ac\7V\2\2\u03acr\3\2\2\2\u03ad\u03ae\7E\2\2\u03ae\u03af"+ - "\7W\2\2\u03af\u03b0\7T\2\2\u03b0\u03b1\7T\2\2\u03b1\u03b2\7G\2\2\u03b2"+ - "\u03b3\7P\2\2\u03b3\u03b4\7V\2\2\u03b4\u03b5\7a\2\2\u03b5\u03b6\7F\2\2"+ - "\u03b6\u03b7\7C\2\2\u03b7\u03b8\7V\2\2\u03b8\u03b9\7G\2\2\u03b9t\3\2\2"+ - "\2\u03ba\u03bb\7E\2\2\u03bb\u03bc\7W\2\2\u03bc\u03bd\7T\2\2\u03bd\u03be"+ - "\7T\2\2\u03be\u03bf\7G\2\2\u03bf\u03c0\7P\2\2\u03c0\u03c1\7V\2\2\u03c1"+ - "\u03c2\7a\2\2\u03c2\u03c3\7V\2\2\u03c3\u03c4\7K\2\2\u03c4\u03c5\7O\2\2"+ - "\u03c5\u03c6\7G\2\2\u03c6v\3\2\2\2\u03c7\u03c8\7E\2\2\u03c8\u03c9\7W\2"+ - "\2\u03c9\u03ca\7T\2\2\u03ca\u03cb\7T\2\2\u03cb\u03cc\7G\2\2\u03cc\u03cd"+ - "\7P\2\2\u03cd\u03ce\7V\2\2\u03ce\u03cf\7a\2\2\u03cf\u03d0\7V\2\2\u03d0"+ - "\u03d1\7K\2\2\u03d1\u03d2\7O\2\2\u03d2\u03d3\7G\2\2\u03d3\u03d4\7U\2\2"+ - "\u03d4\u03d5\7V\2\2\u03d5\u03d6\7C\2\2\u03d6\u03d7\7O\2\2\u03d7\u03d8"+ - "\7R\2\2\u03d8x\3\2\2\2\u03d9\u03da\7E\2\2\u03da\u03db\7W\2\2\u03db\u03dc"+ - "\7T\2\2\u03dc\u03dd\7T\2\2\u03dd\u03de\7G\2\2\u03de\u03df\7P\2\2\u03df"+ - "\u03e0\7V\2\2\u03e0\u03e1\7a\2\2\u03e1\u03e2\7W\2\2\u03e2\u03e3\7U\2\2"+ - "\u03e3\u03e4\7G\2\2\u03e4\u03e5\7T\2\2\u03e5z\3\2\2\2\u03e6\u03e7\7F\2"+ - "\2\u03e7\u03e8\7C\2\2\u03e8\u03e9\7V\2\2\u03e9\u03ea\7C\2\2\u03ea|\3\2"+ - "\2\2\u03eb\u03ec\7F\2\2\u03ec\u03ed\7C\2\2\u03ed\u03ee\7V\2\2\u03ee\u03ef"+ - "\7C\2\2\u03ef\u03f0\7D\2\2\u03f0\u03f1\7C\2\2\u03f1\u03f2\7U\2\2\u03f2"+ - "\u03f3\7G\2\2\u03f3~\3\2\2\2\u03f4\u03f5\7F\2\2\u03f5\u03f6\7C\2\2\u03f6"+ - "\u03f7\7V\2\2\u03f7\u03f8\7C\2\2\u03f8\u03f9\7D\2\2\u03f9\u03fa\7C\2\2"+ - "\u03fa\u03fb\7U\2\2\u03fb\u03fc\7G\2\2\u03fc\u0405\7U\2\2\u03fd\u03fe"+ - "\7U\2\2\u03fe\u03ff\7E\2\2\u03ff\u0400\7J\2\2\u0400\u0401\7G\2\2\u0401"+ - "\u0402\7O\2\2\u0402\u0403\7C\2\2\u0403\u0405\7U\2\2\u0404\u03f4\3\2\2"+ - "\2\u0404\u03fd\3\2\2\2\u0405\u0080\3\2\2\2\u0406\u0407\7F\2\2\u0407\u0408"+ - "\7C\2\2\u0408\u0409\7[\2\2\u0409\u0082\3\2\2\2\u040a\u040b\7F\2\2\u040b"+ - "\u040c\7D\2\2\u040c\u040d\7R\2\2\u040d\u040e\7T\2\2\u040e\u040f\7Q\2\2"+ - "\u040f\u0410\7R\2\2\u0410\u0411\7G\2\2\u0411\u0412\7T\2\2\u0412\u0413"+ - "\7V\2\2\u0413\u0414\7K\2\2\u0414\u0415\7G\2\2\u0415\u0416\7U\2\2\u0416"+ - "\u0084\3\2\2\2\u0417\u0418\7F\2\2\u0418\u0419\7G\2\2\u0419\u041a\7H\2"+ - "\2\u041a\u041b\7K\2\2\u041b\u041c\7P\2\2\u041c\u041d\7G\2\2\u041d\u041e"+ - "\7F\2\2\u041e\u0086\3\2\2\2\u041f\u0420\7F\2\2\u0420\u0421\7G\2\2\u0421"+ - "\u0422\7N\2\2\u0422\u0423\7G\2\2\u0423\u0424\7V\2\2\u0424\u0425\7G\2\2"+ - "\u0425\u0088\3\2\2\2\u0426\u0427\7F\2\2\u0427\u0428\7G\2\2\u0428\u0429"+ - "\7N\2\2\u0429\u042a\7K\2\2\u042a\u042b\7O\2\2\u042b\u042c\7K\2\2\u042c"+ - "\u042d\7V\2\2\u042d\u042e\7G\2\2\u042e\u042f\7F\2\2\u042f\u008a\3\2\2"+ - "\2\u0430\u0431\7F\2\2\u0431\u0432\7G\2\2\u0432\u0433\7U\2\2\u0433\u0434"+ - "\7E\2\2\u0434\u008c\3\2\2\2\u0435\u0436\7F\2\2\u0436\u0437\7G\2\2\u0437"+ - "\u0438\7U\2\2\u0438\u0439\7E\2\2\u0439\u043a\7T\2\2\u043a\u043b\7K\2\2"+ - "\u043b\u043c\7D\2\2\u043c\u043d\7G\2\2\u043d\u008e\3\2\2\2\u043e\u043f"+ - "\7F\2\2\u043f\u0440\7H\2\2\u0440\u0441\7U\2\2\u0441\u0090\3\2\2\2\u0442"+ - "\u0443\7F\2\2\u0443\u0444\7K\2\2\u0444\u0445\7T\2\2\u0445\u0446\7G\2\2"+ - "\u0446\u0447\7E\2\2\u0447\u0448\7V\2\2\u0448\u0449\7Q\2\2\u0449\u044a"+ - "\7T\2\2\u044a\u044b\7K\2\2\u044b\u044c\7G\2\2\u044c\u044d\7U\2\2\u044d"+ - "\u0092\3\2\2\2\u044e\u044f\7F\2\2\u044f\u0450\7K\2\2\u0450\u0451\7T\2"+ - "\2\u0451\u0452\7G\2\2\u0452\u0453\7E\2\2\u0453\u0454\7V\2\2\u0454\u0455"+ - "\7Q\2\2\u0455\u0456\7T\2\2\u0456\u0457\7[\2\2\u0457\u0094\3\2\2\2\u0458"+ - "\u0459\7F\2\2\u0459\u045a\7K\2\2\u045a\u045b\7U\2\2\u045b\u045c\7V\2\2"+ - "\u045c\u045d\7K\2\2\u045d\u045e\7P\2\2\u045e\u045f\7E\2\2\u045f\u0460"+ - "\7V\2\2\u0460\u0096\3\2\2\2\u0461\u0462\7F\2\2\u0462\u0463\7K\2\2\u0463"+ - "\u0464\7U\2\2\u0464\u0465\7V\2\2\u0465\u0466\7T\2\2\u0466\u0467\7K\2\2"+ - "\u0467\u0468\7D\2\2\u0468\u0469\7W\2\2\u0469\u046a\7V\2\2\u046a\u046b"+ - "\7G\2\2\u046b\u0098\3\2\2\2\u046c\u046d\7F\2\2\u046d\u046e\7T\2\2\u046e"+ - "\u046f\7Q\2\2\u046f\u0470\7R\2\2\u0470\u009a\3\2\2\2\u0471\u0472\7G\2"+ - "\2\u0472\u0473\7N\2\2\u0473\u0474\7U\2\2\u0474\u0475\7G\2\2\u0475\u009c"+ - "\3\2\2\2\u0476\u0477\7G\2\2\u0477\u0478\7P\2\2\u0478\u0479\7F\2\2\u0479"+ - "\u009e\3\2\2\2\u047a\u047b\7G\2\2\u047b\u047c\7U\2\2\u047c\u047d\7E\2"+ - "\2\u047d\u047e\7C\2\2\u047e\u047f\7R\2\2\u047f\u0480\7G\2\2\u0480\u00a0"+ - "\3\2\2\2\u0481\u0482\7G\2\2\u0482\u0483\7U\2\2\u0483\u0484\7E\2\2\u0484"+ - "\u0485\7C\2\2\u0485\u0486\7R\2\2\u0486\u0487\7G\2\2\u0487\u0488\7F\2\2"+ - "\u0488\u00a2\3\2\2\2\u0489\u048a\7G\2\2\u048a\u048b\7Z\2\2\u048b\u048c"+ - "\7E\2\2\u048c\u048d\7G\2\2\u048d\u048e\7R\2\2\u048e\u048f\7V\2\2\u048f"+ - "\u00a4\3\2\2\2\u0490\u0491\7G\2\2\u0491\u0492\7Z\2\2\u0492\u0493\7E\2"+ - "\2\u0493\u0494\7J\2\2\u0494\u0495\7C\2\2\u0495\u0496\7P\2\2\u0496\u0497"+ - "\7I\2\2\u0497\u0498\7G\2\2\u0498\u00a6\3\2\2\2\u0499\u049a\7G\2\2\u049a"+ - "\u049b\7Z\2\2\u049b\u049c\7K\2\2\u049c\u049d\7U\2\2\u049d\u049e\7V\2\2"+ - "\u049e\u049f\7U\2\2\u049f\u00a8\3\2\2\2\u04a0\u04a1\7G\2\2\u04a1\u04a2"+ - "\7Z\2\2\u04a2\u04a3\7R\2\2\u04a3\u04a4\7N\2\2\u04a4\u04a5\7C\2\2\u04a5"+ - "\u04a6\7K\2\2\u04a6\u04a7\7P\2\2\u04a7\u00aa\3\2\2\2\u04a8\u04a9\7G\2"+ - "\2\u04a9\u04aa\7Z\2\2\u04aa\u04ab\7R\2\2\u04ab\u04ac\7Q\2\2\u04ac\u04ad"+ - "\7T\2\2\u04ad\u04ae\7V\2\2\u04ae\u00ac\3\2\2\2\u04af\u04b0\7G\2\2\u04b0"+ - "\u04b1\7Z\2\2\u04b1\u04b2\7V\2\2\u04b2\u04b3\7G\2\2\u04b3\u04b4\7P\2\2"+ - "\u04b4\u04b5\7F\2\2\u04b5\u04b6\7G\2\2\u04b6\u04b7\7F\2\2\u04b7\u00ae"+ - "\3\2\2\2\u04b8\u04b9\7G\2\2\u04b9\u04ba\7Z\2\2\u04ba\u04bb\7V\2\2\u04bb"+ - "\u04bc\7G\2\2\u04bc\u04bd\7T\2\2\u04bd\u04be\7P\2\2\u04be\u04bf\7C\2\2"+ - "\u04bf\u04c0\7N\2\2\u04c0\u00b0\3\2\2\2\u04c1\u04c2\7G\2\2\u04c2\u04c3"+ - "\7Z\2\2\u04c3\u04c4\7V\2\2\u04c4\u04c5\7T\2\2\u04c5\u04c6\7C\2\2\u04c6"+ - "\u04c7\7E\2\2\u04c7\u04c8\7V\2\2\u04c8\u00b2\3\2\2\2\u04c9\u04ca\7H\2"+ - "\2\u04ca\u04cb\7C\2\2\u04cb\u04cc\7N\2\2\u04cc\u04cd\7U\2\2\u04cd\u04ce"+ - "\7G\2\2\u04ce\u00b4\3\2\2\2\u04cf\u04d0\7H\2\2\u04d0\u04d1\7G\2\2\u04d1"+ - "\u04d2\7V\2\2\u04d2\u04d3\7E\2\2\u04d3\u04d4\7J\2\2\u04d4\u00b6\3\2\2"+ - "\2\u04d5\u04d6\7H\2\2\u04d6\u04d7\7K\2\2\u04d7\u04d8\7G\2\2\u04d8\u04d9"+ - "\7N\2\2\u04d9\u04da\7F\2\2\u04da\u04db\7U\2\2\u04db\u00b8\3\2\2\2\u04dc"+ - "\u04dd\7H\2\2\u04dd\u04de\7K\2\2\u04de\u04df\7N\2\2\u04df\u04e0\7V\2\2"+ - "\u04e0\u04e1\7G\2\2\u04e1\u04e2\7T\2\2\u04e2\u00ba\3\2\2\2\u04e3\u04e4"+ - "\7H\2\2\u04e4\u04e5\7K\2\2\u04e5\u04e6\7N\2\2\u04e6\u04e7\7G\2\2\u04e7"+ - "\u04e8\7H\2\2\u04e8\u04e9\7Q\2\2\u04e9\u04ea\7T\2\2\u04ea\u04eb\7O\2\2"+ - "\u04eb\u04ec\7C\2\2\u04ec\u04ed\7V\2\2\u04ed\u00bc\3\2\2\2\u04ee\u04ef"+ - "\7H\2\2\u04ef\u04f0\7K\2\2\u04f0\u04f1\7T\2\2\u04f1\u04f2\7U\2\2\u04f2"+ - "\u04f3\7V\2\2\u04f3\u00be\3\2\2\2\u04f4\u04f5\7H\2\2\u04f5\u04f6\7Q\2"+ - "\2\u04f6\u04f7\7N\2\2\u04f7\u04f8\7N\2\2\u04f8\u04f9\7Q\2\2\u04f9\u04fa"+ - "\7Y\2\2\u04fa\u04fb\7K\2\2\u04fb\u04fc\7P\2\2\u04fc\u04fd\7I\2\2\u04fd"+ - "\u00c0\3\2\2\2\u04fe\u04ff\7H\2\2\u04ff\u0500\7Q\2\2\u0500\u0501\7T\2"+ - "\2\u0501\u00c2\3\2\2\2\u0502\u0503\7H\2\2\u0503\u0504\7Q\2\2\u0504\u0505"+ - "\7T\2\2\u0505\u0506\7G\2\2\u0506\u0507\7K\2\2\u0507\u0508\7I\2\2\u0508"+ - "\u0509\7P\2\2\u0509\u00c4\3\2\2\2\u050a\u050b\7H\2\2\u050b\u050c\7Q\2"+ - "\2\u050c\u050d\7T\2\2\u050d\u050e\7O\2\2\u050e\u050f\7C\2\2\u050f\u0510"+ - "\7V\2\2\u0510\u00c6\3\2\2\2\u0511\u0512\7H\2\2\u0512\u0513\7Q\2\2\u0513"+ - "\u0514\7T\2\2\u0514\u0515\7O\2\2\u0515\u0516\7C\2\2\u0516\u0517\7V\2\2"+ - "\u0517\u0518\7V\2\2\u0518\u0519\7G\2\2\u0519\u051a\7F\2\2\u051a\u00c8"+ - "\3\2\2\2\u051b\u051c\7H\2\2\u051c\u051d\7T\2\2\u051d\u051e\7Q\2\2\u051e"+ - "\u051f\7O\2\2\u051f\u00ca\3\2\2\2\u0520\u0521\7H\2\2\u0521\u0522\7W\2"+ - "\2\u0522\u0523\7N\2\2\u0523\u0524\7N\2\2\u0524\u00cc\3\2\2\2\u0525\u0526"+ - "\7H\2\2\u0526\u0527\7W\2\2\u0527\u0528\7P\2\2\u0528\u0529\7E\2\2\u0529"+ - "\u052a\7V\2\2\u052a\u052b\7K\2\2\u052b\u052c\7Q\2\2\u052c\u052d\7P\2\2"+ - "\u052d\u00ce\3\2\2\2\u052e\u052f\7H\2\2\u052f\u0530\7W\2\2\u0530\u0531"+ - "\7P\2\2\u0531\u0532\7E\2\2\u0532\u0533\7V\2\2\u0533\u0534\7K\2\2\u0534"+ - "\u0535\7Q\2\2\u0535\u0536\7P\2\2\u0536\u0537\7U\2\2\u0537\u00d0\3\2\2"+ - "\2\u0538\u0539\7I\2\2\u0539\u053a\7N\2\2\u053a\u053b\7Q\2\2\u053b\u053c"+ - "\7D\2\2\u053c\u053d\7C\2\2\u053d\u053e\7N\2\2\u053e\u00d2\3\2\2\2\u053f"+ - "\u0540\7I\2\2\u0540\u0541\7T\2\2\u0541\u0542\7C\2\2\u0542\u0543\7P\2\2"+ - "\u0543\u0544\7V\2\2\u0544\u00d4\3\2\2\2\u0545\u0546\7I\2\2\u0546\u0547"+ - "\7T\2\2\u0547\u0548\7Q\2\2\u0548\u0549\7W\2\2\u0549\u054a\7R\2\2\u054a"+ - "\u00d6\3\2\2\2\u054b\u054c\7I\2\2\u054c\u054d\7T\2\2\u054d\u054e\7Q\2"+ - "\2\u054e\u054f\7W\2\2\u054f\u0550\7R\2\2\u0550\u0551\7K\2\2\u0551\u0552"+ - "\7P\2\2\u0552\u0553\7I\2\2\u0553\u00d8\3\2\2\2\u0554\u0555\7J\2\2\u0555"+ - "\u0556\7C\2\2\u0556\u0557\7X\2\2\u0557\u0558\7K\2\2\u0558\u0559\7P\2\2"+ - "\u0559\u055a\7I\2\2\u055a\u00da\3\2\2\2\u055b\u055c\7J\2\2\u055c\u055d"+ - "\7Q\2\2\u055d\u055e\7W\2\2\u055e\u055f\7T\2\2\u055f\u00dc\3\2\2\2\u0560"+ - "\u0561\7K\2\2\u0561\u0562\7H\2\2\u0562\u00de\3\2\2\2\u0563\u0564\7K\2"+ - "\2\u0564\u0565\7I\2\2\u0565\u0566\7P\2\2\u0566\u0567\7Q\2\2\u0567\u0568"+ - "\7T\2\2\u0568\u0569\7G\2\2\u0569\u00e0\3\2\2\2\u056a\u056b\7K\2\2\u056b"+ - "\u056c\7O\2\2\u056c\u056d\7R\2\2\u056d\u056e\7Q\2\2\u056e\u056f\7T\2\2"+ - "\u056f\u0570\7V\2\2\u0570\u00e2\3\2\2\2\u0571\u0572\7K\2\2\u0572\u0573"+ - "\7P\2\2\u0573\u00e4\3\2\2\2\u0574\u0575\7K\2\2\u0575\u0576\7P\2\2\u0576"+ - "\u0577\7F\2\2\u0577\u0578\7G\2\2\u0578\u0579\7Z\2\2\u0579\u00e6\3\2\2"+ - "\2\u057a\u057b\7K\2\2\u057b\u057c\7P\2\2\u057c\u057d\7F\2\2\u057d\u057e"+ - "\7G\2\2\u057e\u057f\7Z\2\2\u057f\u0580\7G\2\2\u0580\u0581\7U\2\2\u0581"+ - "\u00e8\3\2\2\2\u0582\u0583\7K\2\2\u0583\u0584\7P\2\2\u0584\u0585\7P\2"+ - "\2\u0585\u0586\7G\2\2\u0586\u0587\7T\2\2\u0587\u00ea\3\2\2\2\u0588\u0589"+ - "\7K\2\2\u0589\u058a\7P\2\2\u058a\u058b\7R\2\2\u058b\u058c\7C\2\2\u058c"+ - "\u058d\7V\2\2\u058d\u058e\7J\2\2\u058e\u00ec\3\2\2\2\u058f\u0590\7K\2"+ - "\2\u0590\u0591\7P\2\2\u0591\u0592\7R\2\2\u0592\u0593\7W\2\2\u0593\u0594"+ - "\7V\2\2\u0594\u0595\7H\2\2\u0595\u0596\7Q\2\2\u0596\u0597\7T\2\2\u0597"+ - "\u0598\7O\2\2\u0598\u0599\7C\2\2\u0599\u059a\7V\2\2\u059a\u00ee\3\2\2"+ - "\2\u059b\u059c\7K\2\2\u059c\u059d\7P\2\2\u059d\u059e\7U\2\2\u059e\u059f"+ - "\7G\2\2\u059f\u05a0\7T\2\2\u05a0\u05a1\7V\2\2\u05a1\u00f0\3\2\2\2\u05a2"+ - "\u05a3\7K\2\2\u05a3\u05a4\7P\2\2\u05a4\u05a5\7V\2\2\u05a5\u05a6\7G\2\2"+ - "\u05a6\u05a7\7T\2\2\u05a7\u05a8\7U\2\2\u05a8\u05a9\7G\2\2\u05a9\u05aa"+ - "\7E\2\2\u05aa\u05ab\7V\2\2\u05ab\u00f2\3\2\2\2\u05ac\u05ad\7K\2\2\u05ad"+ - "\u05ae\7P\2\2\u05ae\u05af\7V\2\2\u05af\u05b0\7G\2\2\u05b0\u05b1\7T\2\2"+ - "\u05b1\u05b2\7X\2\2\u05b2\u05b3\7C\2\2\u05b3\u05b4\7N\2\2\u05b4\u00f4"+ - "\3\2\2\2\u05b5\u05b6\7K\2\2\u05b6\u05b7\7P\2\2\u05b7\u05b8\7V\2\2\u05b8"+ - "\u05b9\7Q\2\2\u05b9\u00f6\3\2\2\2\u05ba\u05bb\7K\2\2\u05bb\u05bc\7U\2"+ - "\2\u05bc\u00f8\3\2\2\2\u05bd\u05be\7K\2\2\u05be\u05bf\7V\2\2\u05bf\u05c0"+ - "\7G\2\2\u05c0\u05c1\7O\2\2\u05c1\u05c2\7U\2\2\u05c2\u00fa\3\2\2\2\u05c3"+ - "\u05c4\7L\2\2\u05c4\u05c5\7Q\2\2\u05c5\u05c6\7K\2\2\u05c6\u05c7\7P\2\2"+ - "\u05c7\u00fc\3\2\2\2\u05c8\u05c9\7M\2\2\u05c9\u05ca\7G\2\2\u05ca\u05cb"+ - "\7[\2\2\u05cb\u05cc\7U\2\2\u05cc\u00fe\3\2\2\2\u05cd\u05ce\7N\2\2\u05ce"+ - "\u05cf\7C\2\2\u05cf\u05d0\7U\2\2\u05d0\u05d1\7V\2\2\u05d1\u0100\3\2\2"+ - "\2\u05d2\u05d3\7N\2\2\u05d3\u05d4\7C\2\2\u05d4\u05d5\7V\2\2\u05d5\u05d6"+ - "\7G\2\2\u05d6\u05d7\7T\2\2\u05d7\u05d8\7C\2\2\u05d8\u05d9\7N\2\2\u05d9"+ - "\u0102\3\2\2\2\u05da\u05db\7N\2\2\u05db\u05dc\7C\2\2\u05dc\u05dd\7\\\2"+ - "\2\u05dd\u05de\7[\2\2\u05de\u0104\3\2\2\2\u05df\u05e0\7N\2\2\u05e0\u05e1"+ - "\7G\2\2\u05e1\u05e2\7C\2\2\u05e2\u05e3\7F\2\2\u05e3\u05e4\7K\2\2\u05e4"+ - "\u05e5\7P\2\2\u05e5\u05e6\7I\2\2\u05e6\u0106\3\2\2\2\u05e7\u05e8\7N\2"+ - "\2\u05e8\u05e9\7G\2\2\u05e9\u05ea\7H\2\2\u05ea\u05eb\7V\2\2\u05eb\u0108"+ - "\3\2\2\2\u05ec\u05ed\7N\2\2\u05ed\u05ee\7K\2\2\u05ee\u05ef\7M\2\2\u05ef"+ - "\u05f0\7G\2\2\u05f0\u010a\3\2\2\2\u05f1\u05f2\7N\2\2\u05f2\u05f3\7K\2"+ - "\2\u05f3\u05f4\7O\2\2\u05f4\u05f5\7K\2\2\u05f5\u05f6\7V\2\2\u05f6\u010c"+ - "\3\2\2\2\u05f7\u05f8\7N\2\2\u05f8\u05f9\7K\2\2\u05f9\u05fa\7P\2\2\u05fa"+ - "\u05fb\7G\2\2\u05fb\u05fc\7U\2\2\u05fc\u010e\3\2\2\2\u05fd\u05fe\7N\2"+ - "\2\u05fe\u05ff\7K\2\2\u05ff\u0600\7U\2\2\u0600\u0601\7V\2\2\u0601\u0110"+ - "\3\2\2\2\u0602\u0603\7N\2\2\u0603\u0604\7Q\2\2\u0604\u0605\7C\2\2\u0605"+ - "\u0606\7F\2\2\u0606\u0112\3\2\2\2\u0607\u0608\7N\2\2\u0608\u0609\7Q\2"+ - "\2\u0609\u060a\7E\2\2\u060a\u060b\7C\2\2\u060b\u060c\7N\2\2\u060c\u0114"+ - "\3\2\2\2\u060d\u060e\7N\2\2\u060e\u060f\7Q\2\2\u060f\u0610\7E\2\2\u0610"+ - "\u0611\7C\2\2\u0611\u0612\7V\2\2\u0612\u0613\7K\2\2\u0613\u0614\7Q\2\2"+ - "\u0614\u0615\7P\2\2\u0615\u0116\3\2\2\2\u0616\u0617\7N\2\2\u0617\u0618"+ - "\7Q\2\2\u0618\u0619\7E\2\2\u0619\u061a\7M\2\2\u061a\u0118\3\2\2\2\u061b"+ - "\u061c\7N\2\2\u061c\u061d\7Q\2\2\u061d\u061e\7E\2\2\u061e\u061f\7M\2\2"+ - "\u061f\u0620\7U\2\2\u0620\u011a\3\2\2\2\u0621\u0622\7N\2\2\u0622\u0623"+ - "\7Q\2\2\u0623\u0624\7I\2\2\u0624\u0625\7K\2\2\u0625\u0626\7E\2\2\u0626"+ - "\u0627\7C\2\2\u0627\u0628\7N\2\2\u0628\u011c\3\2\2\2\u0629\u062a\7O\2"+ - "\2\u062a\u062b\7C\2\2\u062b\u062c\7E\2\2\u062c\u062d\7T\2\2\u062d\u062e"+ - "\7Q\2\2\u062e\u011e\3\2\2\2\u062f\u0630\7O\2\2\u0630\u0631\7C\2\2\u0631"+ - "\u0632\7R\2\2\u0632\u0120\3\2\2\2\u0633\u0634\7O\2\2\u0634\u0635\7C\2"+ - "\2\u0635\u0636\7V\2\2\u0636\u0637\7E\2\2\u0637\u0638\7J\2\2\u0638\u0639"+ - "\7G\2\2\u0639\u063a\7F\2\2\u063a\u0122\3\2\2\2\u063b\u063c\7O\2\2\u063c"+ - "\u063d\7G\2\2\u063d\u063e\7T\2\2\u063e\u063f\7I\2\2\u063f\u0640\7G\2\2"+ - "\u0640\u0124\3\2\2\2\u0641\u0642\7O\2\2\u0642\u0643\7K\2\2\u0643\u0644"+ - "\7P\2\2\u0644\u0645\7W\2\2\u0645\u0646\7V\2\2\u0646\u0647\7G\2\2\u0647"+ - "\u0126\3\2\2\2\u0648\u0649\7O\2\2\u0649\u064a\7Q\2\2\u064a\u064b\7P\2"+ - "\2\u064b\u064c\7V\2\2\u064c\u064d\7J\2\2\u064d\u0128\3\2\2\2\u064e\u064f"+ - "\7O\2\2\u064f\u0650\7U\2\2\u0650\u0651\7E\2\2\u0651\u0652\7M\2\2\u0652"+ - "\u012a\3\2\2\2\u0653\u0654\7P\2\2\u0654\u0655\7C\2\2\u0655\u0656\7O\2"+ - "\2\u0656\u0657\7G\2\2\u0657\u0658\7U\2\2\u0658\u0659\7R\2\2\u0659\u065a"+ - "\7C\2\2\u065a\u065b\7E\2\2\u065b\u065c\7G\2\2\u065c\u012c\3\2\2\2\u065d"+ - "\u065e\7P\2\2\u065e\u065f\7C\2\2\u065f\u0660\7O\2\2\u0660\u0661\7G\2\2"+ - "\u0661\u0662\7U\2\2\u0662\u0663\7R\2\2\u0663\u0664\7C\2\2\u0664\u0665"+ - "\7E\2\2\u0665\u0666\7G\2\2\u0666\u0667\7U\2\2\u0667\u012e\3\2\2\2\u0668"+ - "\u0669\7P\2\2\u0669\u066a\7C\2\2\u066a\u066b\7V\2\2\u066b\u066c\7W\2\2"+ - "\u066c\u066d\7T\2\2\u066d\u066e\7C\2\2\u066e\u066f\7N\2\2\u066f\u0130"+ - "\3\2\2\2\u0670\u0671\7P\2\2\u0671\u0672\7Q\2\2\u0672\u0132\3\2\2\2\u0673"+ - "\u0674\7P\2\2\u0674\u0675\7Q\2\2\u0675\u0678\7V\2\2\u0676\u0678\7#\2\2"+ - "\u0677\u0673\3\2\2\2\u0677\u0676\3\2\2\2\u0678\u0134\3\2\2\2\u0679\u067a"+ - "\7P\2\2\u067a\u067b\7W\2\2\u067b\u067c\7N\2\2\u067c\u067d\7N\2\2\u067d"+ - "\u0136\3\2\2\2\u067e\u067f\7P\2\2\u067f\u0680\7W\2\2\u0680\u0681\7N\2"+ - "\2\u0681\u0682\7N\2\2\u0682\u0683\7U\2\2\u0683\u0138\3\2\2\2\u0684\u0685"+ - "\7Q\2\2\u0685\u0686\7H\2\2\u0686\u013a\3\2\2\2\u0687\u0688\7Q\2\2\u0688"+ - "\u0689\7P\2\2\u0689\u013c\3\2\2\2\u068a\u068b\7Q\2\2\u068b\u068c\7P\2"+ - "\2\u068c\u068d\7N\2\2\u068d\u068e\7[\2\2\u068e\u013e\3\2\2\2\u068f\u0690"+ - "\7Q\2\2\u0690\u0691\7R\2\2\u0691\u0692\7V\2\2\u0692\u0693\7K\2\2\u0693"+ - "\u0694\7Q\2\2\u0694\u0695\7P\2\2\u0695\u0140\3\2\2\2\u0696\u0697\7Q\2"+ - "\2\u0697\u0698\7R\2\2\u0698\u0699\7V\2\2\u0699\u069a\7K\2\2\u069a\u069b"+ - "\7Q\2\2\u069b\u069c\7P\2\2\u069c\u069d\7U\2\2\u069d\u0142\3\2\2\2\u069e"+ - "\u069f\7Q\2\2\u069f\u06a0\7T\2\2\u06a0\u0144\3\2\2\2\u06a1\u06a2\7Q\2"+ - "\2\u06a2\u06a3\7T\2\2\u06a3\u06a4\7F\2\2\u06a4\u06a5\7G\2\2\u06a5\u06a6"+ - "\7T\2\2\u06a6\u0146\3\2\2\2\u06a7\u06a8\7Q\2\2\u06a8\u06a9\7W\2\2\u06a9"+ - "\u06aa\7V\2\2\u06aa\u0148\3\2\2\2\u06ab\u06ac\7Q\2\2\u06ac\u06ad\7W\2"+ - "\2\u06ad\u06ae\7V\2\2\u06ae\u06af\7G\2\2\u06af\u06b0\7T\2\2\u06b0\u014a"+ - "\3\2\2\2\u06b1\u06b2\7Q\2\2\u06b2\u06b3\7W\2\2\u06b3\u06b4\7V\2\2\u06b4"+ - "\u06b5\7R\2\2\u06b5\u06b6\7W\2\2\u06b6\u06b7\7V\2\2\u06b7\u06b8\7H\2\2"+ - "\u06b8\u06b9\7Q\2\2\u06b9\u06ba\7T\2\2\u06ba\u06bb\7O\2\2\u06bb\u06bc"+ - "\7C\2\2\u06bc\u06bd\7V\2\2\u06bd\u014c\3\2\2\2\u06be\u06bf\7Q\2\2\u06bf"+ - "\u06c0\7X\2\2\u06c0\u06c1\7G\2\2\u06c1\u06c2\7T\2\2\u06c2\u014e\3\2\2"+ - "\2\u06c3\u06c4\7Q\2\2\u06c4\u06c5\7X\2\2\u06c5\u06c6\7G\2\2\u06c6\u06c7"+ - "\7T\2\2\u06c7\u06c8\7N\2\2\u06c8\u06c9\7C\2\2\u06c9\u06ca\7R\2\2\u06ca"+ - "\u06cb\7U\2\2\u06cb\u0150\3\2\2\2\u06cc\u06cd\7Q\2\2\u06cd\u06ce\7X\2"+ - "\2\u06ce\u06cf\7G\2\2\u06cf\u06d0\7T\2\2\u06d0\u06d1\7N\2\2\u06d1\u06d2"+ - "\7C\2\2\u06d2\u06d3\7[\2\2\u06d3\u0152\3\2\2\2\u06d4\u06d5\7Q\2\2\u06d5"+ - "\u06d6\7X\2\2\u06d6\u06d7\7G\2\2\u06d7\u06d8\7T\2\2\u06d8\u06d9\7Y\2\2"+ - "\u06d9\u06da\7T\2\2\u06da\u06db\7K\2\2\u06db\u06dc\7V\2\2\u06dc\u06dd"+ - "\7G\2\2\u06dd\u0154\3\2\2\2\u06de\u06df\7R\2\2\u06df\u06e0\7C\2\2\u06e0"+ - "\u06e1\7T\2\2\u06e1\u06e2\7V\2\2\u06e2\u06e3\7K\2\2\u06e3\u06e4\7V\2\2"+ - "\u06e4\u06e5\7K\2\2\u06e5\u06e6\7Q\2\2\u06e6\u06e7\7P\2\2\u06e7\u0156"+ - "\3\2\2\2\u06e8\u06e9\7R\2\2\u06e9\u06ea\7C\2\2\u06ea\u06eb\7T\2\2\u06eb"+ - "\u06ec\7V\2\2\u06ec\u06ed\7K\2\2\u06ed\u06ee\7V\2\2\u06ee\u06ef\7K\2\2"+ - "\u06ef\u06f0\7Q\2\2\u06f0\u06f1\7P\2\2\u06f1\u06f2\7G\2\2\u06f2\u06f3"+ - "\7F\2\2\u06f3\u0158\3\2\2\2\u06f4\u06f5\7R\2\2\u06f5\u06f6\7C\2\2\u06f6"+ - "\u06f7\7T\2\2\u06f7\u06f8\7V\2\2\u06f8\u06f9\7K\2\2\u06f9\u06fa\7V\2\2"+ - "\u06fa\u06fb\7K\2\2\u06fb\u06fc\7Q\2\2\u06fc\u06fd\7P\2\2\u06fd\u06fe"+ - "\7U\2\2\u06fe\u015a\3\2\2\2\u06ff\u0700\7R\2\2\u0700\u0701\7G\2\2\u0701"+ - "\u0702\7T\2\2\u0702\u0703\7E\2\2\u0703\u0704\7G\2\2\u0704\u0705\7P\2\2"+ - "\u0705\u0706\7V\2\2\u0706\u015c\3\2\2\2\u0707\u0708\7R\2\2\u0708\u0709"+ - "\7K\2\2\u0709\u070a\7X\2\2\u070a\u070b\7Q\2\2\u070b\u070c\7V\2\2\u070c"+ - "\u015e\3\2\2\2\u070d\u070e\7R\2\2\u070e\u070f\7N\2\2\u070f\u0710\7C\2"+ - "\2\u0710\u0711\7E\2\2\u0711\u0712\7K\2\2\u0712\u0713\7P\2\2\u0713\u0714"+ - "\7I\2\2\u0714\u0160\3\2\2\2\u0715\u0716\7R\2\2\u0716\u0717\7Q\2\2\u0717"+ - "\u0718\7U\2\2\u0718\u0719\7K\2\2\u0719\u071a\7V\2\2\u071a\u071b\7K\2\2"+ - "\u071b\u071c\7Q\2\2\u071c\u071d\7P\2\2\u071d\u0162\3\2\2\2\u071e\u071f"+ - "\7R\2\2\u071f\u0720\7T\2\2\u0720\u0721\7G\2\2\u0721\u0722\7E\2\2\u0722"+ - "\u0723\7G\2\2\u0723\u0724\7F\2\2\u0724\u0725\7K\2\2\u0725\u0726\7P\2\2"+ - "\u0726\u0727\7I\2\2\u0727\u0164\3\2\2\2\u0728\u0729\7R\2\2\u0729\u072a"+ - "\7T\2\2\u072a\u072b\7K\2\2\u072b\u072c\7O\2\2\u072c\u072d\7C\2\2\u072d"+ - "\u072e\7T\2\2\u072e\u072f\7[\2\2\u072f\u0166\3\2\2\2\u0730\u0731\7R\2"+ - "\2\u0731\u0732\7T\2\2\u0732\u0733\7K\2\2\u0733\u0734\7P\2\2\u0734\u0735"+ - "\7E\2\2\u0735\u0736\7K\2\2\u0736\u0737\7R\2\2\u0737\u0738\7C\2\2\u0738"+ - "\u0739\7N\2\2\u0739\u073a\7U\2\2\u073a\u0168\3\2\2\2\u073b\u073c\7R\2"+ - "\2\u073c\u073d\7T\2\2\u073d\u073e\7Q\2\2\u073e\u073f\7R\2\2\u073f\u0740"+ - "\7G\2\2\u0740\u0741\7T\2\2\u0741\u0742\7V\2\2\u0742\u0743\7K\2\2\u0743"+ - "\u0744\7G\2\2\u0744\u0745\7U\2\2\u0745\u016a\3\2\2\2\u0746\u0747\7R\2"+ - "\2\u0747\u0748\7W\2\2\u0748\u0749\7T\2\2\u0749\u074a\7I\2\2\u074a\u074b"+ - "\7G\2\2\u074b\u016c\3\2\2\2\u074c\u074d\7S\2\2\u074d\u074e\7W\2\2\u074e"+ - "\u074f\7G\2\2\u074f\u0750\7T\2\2\u0750\u0751\7[\2\2\u0751\u016e\3\2\2"+ - "\2\u0752\u0753\7T\2\2\u0753\u0754\7C\2\2\u0754\u0755\7P\2\2\u0755\u0756"+ - "\7I\2\2\u0756\u0757\7G\2\2\u0757\u0170\3\2\2\2\u0758\u0759\7T\2\2\u0759"+ - "\u075a\7G\2\2\u075a\u075b\7E\2\2\u075b\u075c\7Q\2\2\u075c\u075d\7T\2\2"+ - "\u075d\u075e\7F\2\2\u075e\u075f\7T\2\2\u075f\u0760\7G\2\2\u0760\u0761"+ - "\7C\2\2\u0761\u0762\7F\2\2\u0762\u0763\7G\2\2\u0763\u0764\7T\2\2\u0764"+ - "\u0172\3\2\2\2\u0765\u0766\7T\2\2\u0766\u0767\7G\2\2\u0767\u0768\7E\2"+ - "\2\u0768\u0769\7Q\2\2\u0769\u076a\7T\2\2\u076a\u076b\7F\2\2\u076b\u076c"+ - "\7Y\2\2\u076c\u076d\7T\2\2\u076d\u076e\7K\2\2\u076e\u076f\7V\2\2\u076f"+ - "\u0770\7G\2\2\u0770\u0771\7T\2\2\u0771\u0174\3\2\2\2\u0772\u0773\7T\2"+ - "\2\u0773\u0774\7G\2\2\u0774\u0775\7E\2\2\u0775\u0776\7Q\2\2\u0776\u0777"+ - "\7X\2\2\u0777\u0778\7G\2\2\u0778\u0779\7T\2\2\u0779\u0176\3\2\2\2\u077a"+ - "\u077b\7T\2\2\u077b\u077c\7G\2\2\u077c\u077d\7F\2\2\u077d\u077e\7W\2\2"+ - "\u077e\u077f\7E\2\2\u077f\u0780\7G\2\2\u0780\u0178\3\2\2\2\u0781\u0782"+ - "\7T\2\2\u0782\u0783\7G\2\2\u0783\u0784\7H\2\2\u0784\u0785\7G\2\2\u0785"+ - "\u0786\7T\2\2\u0786\u0787\7G\2\2\u0787\u0788\7P\2\2\u0788\u0789\7E\2\2"+ - "\u0789\u078a\7G\2\2\u078a\u078b\7U\2\2\u078b\u017a\3\2\2\2\u078c\u078d"+ - "\7T\2\2\u078d\u078e\7G\2\2\u078e\u078f\7H\2\2\u078f\u0790\7T\2\2\u0790"+ - "\u0791\7G\2\2\u0791\u0792\7U\2\2\u0792\u0793\7J\2\2\u0793\u017c\3\2\2"+ - "\2\u0794\u0795\7T\2\2\u0795\u0796\7G\2\2\u0796\u0797\7P\2\2\u0797\u0798"+ - "\7C\2\2\u0798\u0799\7O\2\2\u0799\u079a\7G\2\2\u079a\u017e\3\2\2\2\u079b"+ - "\u079c\7T\2\2\u079c\u079d\7G\2\2\u079d\u079e\7R\2\2\u079e\u079f\7C\2\2"+ - "\u079f\u07a0\7K\2\2\u07a0\u07a1\7T\2\2\u07a1\u0180\3\2\2\2\u07a2\u07a3"+ - "\7T\2\2\u07a3\u07a4\7G\2\2\u07a4\u07a5\7R\2\2\u07a5\u07a6\7N\2\2\u07a6"+ - "\u07a7\7C\2\2\u07a7\u07a8\7E\2\2\u07a8\u07a9\7G\2\2\u07a9\u0182\3\2\2"+ - "\2\u07aa\u07ab\7T\2\2\u07ab\u07ac\7G\2\2\u07ac\u07ad\7U\2\2\u07ad\u07ae"+ - "\7G\2\2\u07ae\u07af\7V\2\2\u07af\u0184\3\2\2\2\u07b0\u07b1\7T\2\2\u07b1"+ - "\u07b2\7G\2\2\u07b2\u07b3\7U\2\2\u07b3\u07b4\7V\2\2\u07b4\u07b5\7T\2\2"+ - "\u07b5\u07b6\7K\2\2\u07b6\u07b7\7E\2\2\u07b7\u07b8\7V\2\2\u07b8\u0186"+ - "\3\2\2\2\u07b9\u07ba\7T\2\2\u07ba\u07bb\7G\2\2\u07bb\u07bc\7X\2\2\u07bc"+ - "\u07bd\7Q\2\2\u07bd\u07be\7M\2\2\u07be\u07bf\7G\2\2\u07bf\u0188\3\2\2"+ - "\2\u07c0\u07c1\7T\2\2\u07c1\u07c2\7K\2\2\u07c2\u07c3\7I\2\2\u07c3\u07c4"+ - "\7J\2\2\u07c4\u07c5\7V\2\2\u07c5\u018a\3\2\2\2\u07c6\u07c7\7T\2\2\u07c7"+ - "\u07c8\7N\2\2\u07c8\u07c9\7K\2\2\u07c9\u07ca\7M\2\2\u07ca\u07d2\7G\2\2"+ - "\u07cb\u07cc\7T\2\2\u07cc\u07cd\7G\2\2\u07cd\u07ce\7I\2\2\u07ce\u07cf"+ - "\7G\2\2\u07cf\u07d0\7Z\2\2\u07d0\u07d2\7R\2\2\u07d1\u07c6\3\2\2\2\u07d1"+ - "\u07cb\3\2\2\2\u07d2\u018c\3\2\2\2\u07d3\u07d4\7T\2\2\u07d4\u07d5\7Q\2"+ - "\2\u07d5\u07d6\7N\2\2\u07d6\u07d7\7G\2\2\u07d7\u018e\3\2\2\2\u07d8\u07d9"+ - "\7T\2\2\u07d9\u07da\7Q\2\2\u07da\u07db\7N\2\2\u07db\u07dc\7G\2\2\u07dc"+ - "\u07dd\7U\2\2\u07dd\u0190\3\2\2\2\u07de\u07df\7T\2\2\u07df\u07e0\7Q\2"+ - "\2\u07e0\u07e1\7N\2\2\u07e1\u07e2\7N\2\2\u07e2\u07e3\7D\2\2\u07e3\u07e4"+ - "\7C\2\2\u07e4\u07e5\7E\2\2\u07e5\u07e6\7M\2\2\u07e6\u0192\3\2\2\2\u07e7"+ - "\u07e8\7T\2\2\u07e8\u07e9\7Q\2\2\u07e9\u07ea\7N\2\2\u07ea\u07eb\7N\2\2"+ - "\u07eb\u07ec\7W\2\2\u07ec\u07ed\7R\2\2\u07ed\u0194\3\2\2\2\u07ee\u07ef"+ - "\7T\2\2\u07ef\u07f0\7Q\2\2\u07f0\u07f1\7Y\2\2\u07f1\u0196\3\2\2\2\u07f2"+ - "\u07f3\7T\2\2\u07f3\u07f4\7Q\2\2\u07f4\u07f5\7Y\2\2\u07f5\u07f6\7U\2\2"+ - "\u07f6\u0198\3\2\2\2\u07f7\u07f8\7U\2\2\u07f8\u07f9\7E\2\2\u07f9\u07fa"+ - "\7J\2\2\u07fa\u07fb\7G\2\2\u07fb\u07fc\7O\2\2\u07fc\u07fd\7C\2\2\u07fd"+ - "\u019a\3\2\2\2\u07fe\u07ff\7U\2\2\u07ff\u0800\7G\2\2\u0800\u0801\7E\2"+ - "\2\u0801\u0802\7Q\2\2\u0802\u0803\7P\2\2\u0803\u0804\7F\2\2\u0804\u019c"+ - "\3\2\2\2\u0805\u0806\7U\2\2\u0806\u0807\7G\2\2\u0807\u0808\7N\2\2\u0808"+ - "\u0809\7G\2\2\u0809\u080a\7E\2\2\u080a\u080b\7V\2\2\u080b\u019e\3\2\2"+ - "\2\u080c\u080d\7U\2\2\u080d\u080e\7G\2\2\u080e\u080f\7O\2\2\u080f\u0810"+ - "\7K\2\2\u0810\u01a0\3\2\2\2\u0811\u0812\7U\2\2\u0812\u0813\7G\2\2\u0813"+ - "\u0814\7R\2\2\u0814\u0815\7C\2\2\u0815\u0816\7T\2\2\u0816\u0817\7C\2\2"+ - "\u0817\u0818\7V\2\2\u0818\u0819\7G\2\2\u0819\u081a\7F\2\2\u081a\u01a2"+ - "\3\2\2\2\u081b\u081c\7U\2\2\u081c\u081d\7G\2\2\u081d\u081e\7T\2\2\u081e"+ - "\u081f\7F\2\2\u081f\u0820\7G\2\2\u0820\u01a4\3\2\2\2\u0821\u0822\7U\2"+ - "\2\u0822\u0823\7G\2\2\u0823\u0824\7T\2\2\u0824\u0825\7F\2\2\u0825\u0826"+ - "\7G\2\2\u0826\u0827\7R\2\2\u0827\u0828\7T\2\2\u0828\u0829\7Q\2\2\u0829"+ - "\u082a\7R\2\2\u082a\u082b\7G\2\2\u082b\u082c\7T\2\2\u082c\u082d\7V\2\2"+ - "\u082d\u082e\7K\2\2\u082e\u082f\7G\2\2\u082f\u0830\7U\2\2\u0830\u01a6"+ - "\3\2\2\2\u0831\u0832\7U\2\2\u0832\u0833\7G\2\2\u0833\u0834\7U\2\2\u0834"+ - "\u0835\7U\2\2\u0835\u0836\7K\2\2\u0836\u0837\7Q\2\2\u0837\u0838\7P\2\2"+ - "\u0838\u0839\7a\2\2\u0839\u083a\7W\2\2\u083a\u083b\7U\2\2\u083b\u083c"+ - "\7G\2\2\u083c\u083d\7T\2\2\u083d\u01a8\3\2\2\2\u083e\u083f\7U\2\2\u083f"+ - "\u0840\7G\2\2\u0840\u0841\7V\2\2\u0841\u01aa\3\2\2\2\u0842\u0843\7O\2"+ - "\2\u0843\u0844\7K\2\2\u0844\u0845\7P\2\2\u0845\u0846\7W\2\2\u0846\u0847"+ - "\7U\2\2\u0847\u01ac\3\2\2\2\u0848\u0849\7U\2\2\u0849\u084a\7G\2\2\u084a"+ - "\u084b\7V\2\2\u084b\u084c\7U\2\2\u084c\u01ae\3\2\2\2\u084d\u084e\7U\2"+ - "\2\u084e\u084f\7J\2\2\u084f\u0850\7Q\2\2\u0850\u0851\7Y\2\2\u0851\u01b0"+ - "\3\2\2\2\u0852\u0853\7U\2\2\u0853\u0854\7M\2\2\u0854\u0855\7G\2\2\u0855"+ - "\u0856\7Y\2\2\u0856\u0857\7G\2\2\u0857\u0858\7F\2\2\u0858\u01b2\3\2\2"+ - "\2\u0859\u085a\7U\2\2\u085a\u085b\7Q\2\2\u085b\u085c\7O\2\2\u085c\u085d"+ - "\7G\2\2\u085d\u01b4\3\2\2\2\u085e\u085f\7U\2\2\u085f\u0860\7Q\2\2\u0860"+ - "\u0861\7T\2\2\u0861\u0862\7V\2\2\u0862\u01b6\3\2\2\2\u0863\u0864\7U\2"+ - "\2\u0864\u0865\7Q\2\2\u0865\u0866\7T\2\2\u0866\u0867\7V\2\2\u0867\u0868"+ - "\7G\2\2\u0868\u0869\7F\2\2\u0869\u01b8\3\2\2\2\u086a\u086b\7U\2\2\u086b"+ - "\u086c\7V\2\2\u086c\u086d\7C\2\2\u086d\u086e\7T\2\2\u086e\u086f\7V\2\2"+ - "\u086f\u01ba\3\2\2\2\u0870\u0871\7U\2\2\u0871\u0872\7V\2\2\u0872\u0873"+ - "\7C\2\2\u0873\u0874\7V\2\2\u0874\u0875\7K\2\2\u0875\u0876\7U\2\2\u0876"+ - "\u0877\7V\2\2\u0877\u0878\7K\2\2\u0878\u0879\7E\2\2\u0879\u087a\7U\2\2"+ - "\u087a\u01bc\3\2\2\2\u087b\u087c\7U\2\2\u087c\u087d\7V\2\2\u087d\u087e"+ - "\7Q\2\2\u087e\u087f\7T\2\2\u087f\u0880\7G\2\2\u0880\u0881\7F\2\2\u0881"+ - "\u01be\3\2\2\2\u0882\u0883\7U\2\2\u0883\u0884\7V\2\2\u0884\u0885\7T\2"+ - "\2\u0885\u0886\7C\2\2\u0886\u0887\7V\2\2\u0887\u0888\7K\2\2\u0888\u0889"+ - "\7H\2\2\u0889\u088a\7[\2\2\u088a\u01c0\3\2\2\2\u088b\u088c\7U\2\2\u088c"+ - "\u088d\7V\2\2\u088d\u088e\7T\2\2\u088e\u088f\7W\2\2\u088f\u0890\7E\2\2"+ - "\u0890\u0891\7V\2\2\u0891\u01c2\3\2\2\2\u0892\u0893\7U\2\2\u0893\u0894"+ - "\7W\2\2\u0894\u0895\7D\2\2\u0895\u0896\7U\2\2\u0896\u0897\7V\2\2\u0897"+ - "\u0898\7T\2\2\u0898\u01c4\3\2\2\2\u0899\u089a\7U\2\2\u089a\u089b\7W\2"+ - "\2\u089b\u089c\7D\2\2\u089c\u089d\7U\2\2\u089d\u089e\7V\2\2\u089e\u089f"+ - "\7T\2\2\u089f\u08a0\7K\2\2\u08a0\u08a1\7P\2\2\u08a1\u08a2\7I\2\2\u08a2"+ - "\u01c6\3\2\2\2\u08a3\u08a4\7V\2\2\u08a4\u08a5\7C\2\2\u08a5\u08a6\7D\2"+ - "\2\u08a6\u08a7\7N\2\2\u08a7\u08a8\7G\2\2\u08a8\u01c8\3\2\2\2\u08a9\u08aa"+ - "\7V\2\2\u08aa\u08ab\7C\2\2\u08ab\u08ac\7D\2\2\u08ac\u08ad\7N\2\2\u08ad"+ - "\u08ae\7G\2\2\u08ae\u08af\7U\2\2\u08af\u01ca\3\2\2\2\u08b0\u08b1\7V\2"+ - "\2\u08b1\u08b2\7C\2\2\u08b2\u08b3\7D\2\2\u08b3\u08b4\7N\2\2\u08b4\u08b5"+ - "\7G\2\2\u08b5\u08b6\7U\2\2\u08b6\u08b7\7C\2\2\u08b7\u08b8\7O\2\2\u08b8"+ - "\u08b9\7R\2\2\u08b9\u08ba\7N\2\2\u08ba\u08bb\7G\2\2\u08bb\u01cc\3\2\2"+ - "\2\u08bc\u08bd\7V\2\2\u08bd\u08be\7D\2\2\u08be\u08bf\7N\2\2\u08bf\u08c0"+ - "\7R\2\2\u08c0\u08c1\7T\2\2\u08c1\u08c2\7Q\2\2\u08c2\u08c3\7R\2\2\u08c3"+ - "\u08c4\7G\2\2\u08c4\u08c5\7T\2\2\u08c5\u08c6\7V\2\2\u08c6\u08c7\7K\2\2"+ - "\u08c7\u08c8\7G\2\2\u08c8\u08c9\7U\2\2\u08c9\u01ce\3\2\2\2\u08ca\u08cb"+ - "\7V\2\2\u08cb\u08cc\7G\2\2\u08cc\u08cd\7O\2\2\u08cd\u08ce\7R\2\2\u08ce"+ - "\u08cf\7Q\2\2\u08cf\u08d0\7T\2\2\u08d0\u08d1\7C\2\2\u08d1\u08d2\7T\2\2"+ - "\u08d2\u08d8\7[\2\2\u08d3\u08d4\7V\2\2\u08d4\u08d5\7G\2\2\u08d5\u08d6"+ - "\7O\2\2\u08d6\u08d8\7R\2\2\u08d7\u08ca\3\2\2\2\u08d7\u08d3\3\2\2\2\u08d8"+ - "\u01d0\3\2\2\2\u08d9\u08da\7V\2\2\u08da\u08db\7G\2\2\u08db\u08dc\7T\2"+ - "\2\u08dc\u08dd\7O\2\2\u08dd\u08de\7K\2\2\u08de\u08df\7P\2\2\u08df\u08e0"+ - "\7C\2\2\u08e0\u08e1\7V\2\2\u08e1\u08e2\7G\2\2\u08e2\u08e3\7F\2\2\u08e3"+ - "\u01d2\3\2\2\2\u08e4\u08e5\7V\2\2\u08e5\u08e6\7J\2\2\u08e6\u08e7\7G\2"+ - "\2\u08e7\u08e8\7P\2\2\u08e8\u01d4\3\2\2\2\u08e9\u08ea\7V\2\2\u08ea\u08eb"+ - "\7Q\2\2\u08eb\u01d6\3\2\2\2\u08ec\u08ed\7V\2\2\u08ed\u08ee\7Q\2\2\u08ee"+ - "\u08ef\7W\2\2\u08ef\u08f0\7E\2\2\u08f0\u08f1\7J\2\2\u08f1\u01d8\3\2\2"+ - "\2\u08f2\u08f3\7V\2\2\u08f3\u08f4\7T\2\2\u08f4\u08f5\7C\2\2\u08f5\u08f6"+ - "\7K\2\2\u08f6\u08f7\7N\2\2\u08f7\u08f8\7K\2\2\u08f8\u08f9\7P\2\2\u08f9"+ - "\u08fa\7I\2\2\u08fa\u01da\3\2\2\2\u08fb\u08fc\7V\2\2\u08fc\u08fd\7T\2"+ - "\2\u08fd\u08fe\7C\2\2\u08fe\u08ff\7P\2\2\u08ff\u0900\7U\2\2\u0900\u0901"+ - "\7C\2\2\u0901\u0902\7E\2\2\u0902\u0903\7V\2\2\u0903\u0904\7K\2\2\u0904"+ - "\u0905\7Q\2\2\u0905\u0906\7P\2\2\u0906\u01dc\3\2\2\2\u0907\u0908\7V\2"+ - "\2\u0908\u0909\7T\2\2\u0909\u090a\7C\2\2\u090a\u090b\7P\2\2\u090b\u090c"+ - "\7U\2\2\u090c\u090d\7C\2\2\u090d\u090e\7E\2\2\u090e\u090f\7V\2\2\u090f"+ - "\u0910\7K\2\2\u0910\u0911\7Q\2\2\u0911\u0912\7P\2\2\u0912\u0913\7U\2\2"+ - "\u0913\u01de\3\2\2\2\u0914\u0915\7V\2\2\u0915\u0916\7T\2\2\u0916\u0917"+ - "\7C\2\2\u0917\u0918\7P\2\2\u0918\u0919\7U\2\2\u0919\u091a\7H\2\2\u091a"+ - "\u091b\7Q\2\2\u091b\u091c\7T\2\2\u091c\u091d\7O\2\2\u091d\u01e0\3\2\2"+ - "\2\u091e\u091f\7V\2\2\u091f\u0920\7T\2\2\u0920\u0921\7K\2\2\u0921\u0922"+ - "\7O\2\2\u0922\u01e2\3\2\2\2\u0923\u0924\7V\2\2\u0924\u0925\7T\2\2\u0925"+ - "\u0926\7W\2\2\u0926\u0927\7G\2\2\u0927\u01e4\3\2\2\2\u0928\u0929\7V\2"+ - "\2\u0929\u092a\7T\2\2\u092a\u092b\7W\2\2\u092b\u092c\7P\2\2\u092c\u092d"+ - "\7E\2\2\u092d\u092e\7C\2\2\u092e\u092f\7V\2\2\u092f\u0930\7G\2\2\u0930"+ - "\u01e6\3\2\2\2\u0931\u0932\7V\2\2\u0932\u0933\7[\2\2\u0933\u0934\7R\2"+ - "\2\u0934\u0935\7G\2\2\u0935\u01e8\3\2\2\2\u0936\u0937\7W\2\2\u0937\u0938"+ - "\7P\2\2\u0938\u0939\7C\2\2\u0939\u093a\7T\2\2\u093a\u093b\7E\2\2\u093b"+ - "\u093c\7J\2\2\u093c\u093d\7K\2\2\u093d\u093e\7X\2\2\u093e\u093f\7G\2\2"+ - "\u093f\u01ea\3\2\2\2\u0940\u0941\7W\2\2\u0941\u0942\7P\2\2\u0942\u0943"+ - "\7D\2\2\u0943\u0944\7Q\2\2\u0944\u0945\7W\2\2\u0945\u0946\7P\2\2\u0946"+ - "\u0947\7F\2\2\u0947\u0948\7G\2\2\u0948\u0949\7F\2\2\u0949\u01ec\3\2\2"+ - "\2\u094a\u094b\7W\2\2\u094b\u094c\7P\2\2\u094c\u094d\7E\2\2\u094d\u094e"+ - "\7C\2\2\u094e\u094f\7E\2\2\u094f\u0950\7J\2\2\u0950\u0951\7G\2\2\u0951"+ - "\u01ee\3\2\2\2\u0952\u0953\7W\2\2\u0953\u0954\7P\2\2\u0954\u0955\7K\2"+ - "\2\u0955\u0956\7Q\2\2\u0956\u0957\7P\2\2\u0957\u01f0\3\2\2\2\u0958\u0959"+ - "\7W\2\2\u0959\u095a\7P\2\2\u095a\u095b\7K\2\2\u095b\u095c\7S\2\2\u095c"+ - "\u095d\7W\2\2\u095d\u095e\7G\2\2\u095e\u01f2\3\2\2\2\u095f\u0960\7W\2"+ - "\2\u0960\u0961\7P\2\2\u0961\u0962\7M\2\2\u0962\u0963\7P\2\2\u0963\u0964"+ - "\7Q\2\2\u0964\u0965\7Y\2\2\u0965\u0966\7P\2\2\u0966\u01f4\3\2\2\2\u0967"+ - "\u0968\7W\2\2\u0968\u0969\7P\2\2\u0969\u096a\7N\2\2\u096a\u096b\7Q\2\2"+ - "\u096b\u096c\7E\2\2\u096c\u096d\7M\2\2\u096d\u01f6\3\2\2\2\u096e\u096f"+ - "\7W\2\2\u096f\u0970\7P\2\2\u0970\u0971\7U\2\2\u0971\u0972\7G\2\2\u0972"+ - "\u0973\7V\2\2\u0973\u01f8\3\2\2\2\u0974\u0975\7W\2\2\u0975\u0976\7R\2"+ - "\2\u0976\u0977\7F\2\2\u0977\u0978\7C\2\2\u0978\u0979\7V\2\2\u0979\u097a"+ - "\7G\2\2\u097a\u01fa\3\2\2\2\u097b\u097c\7W\2\2\u097c\u097d\7U\2\2\u097d"+ - "\u097e\7G\2\2\u097e\u01fc\3\2\2\2\u097f\u0980\7W\2\2\u0980\u0981\7U\2"+ - "\2\u0981\u0982\7G\2\2\u0982\u0983\7T\2\2\u0983\u01fe\3\2\2\2\u0984\u0985"+ - "\7W\2\2\u0985\u0986\7U\2\2\u0986\u0987\7K\2\2\u0987\u0988\7P\2\2\u0988"+ - "\u0989\7I\2\2\u0989\u0200\3\2\2\2\u098a\u098b\7X\2\2\u098b\u098c\7C\2"+ - "\2\u098c\u098d\7N\2\2\u098d\u098e\7W\2\2\u098e\u098f\7G\2\2\u098f\u0990"+ - "\7U\2\2\u0990\u0202\3\2\2\2\u0991\u0992\7X\2\2\u0992\u0993\7K\2\2\u0993"+ - "\u0994\7G\2\2\u0994\u0995\7Y\2\2\u0995\u0204\3\2\2\2\u0996\u0997\7X\2"+ - "\2\u0997\u0998\7K\2\2\u0998\u0999\7G\2\2\u0999\u099a\7Y\2\2\u099a\u099b"+ - "\7U\2\2\u099b\u0206\3\2\2\2\u099c\u099d\7Y\2\2\u099d\u099e\7J\2\2\u099e"+ - "\u099f\7G\2\2\u099f\u09a0\7P\2\2\u09a0\u0208\3\2\2\2\u09a1\u09a2\7Y\2"+ - "\2\u09a2\u09a3\7J\2\2\u09a3\u09a4\7G\2\2\u09a4\u09a5\7T\2\2\u09a5\u09a6"+ - "\7G\2\2\u09a6\u020a\3\2\2\2\u09a7\u09a8\7Y\2\2\u09a8\u09a9\7K\2\2\u09a9"+ - "\u09aa\7P\2\2\u09aa\u09ab\7F\2\2\u09ab\u09ac\7Q\2\2\u09ac\u09ad\7Y\2\2"+ - "\u09ad\u020c\3\2\2\2\u09ae\u09af\7Y\2\2\u09af\u09b0\7K\2\2\u09b0\u09b1"+ - "\7V\2\2\u09b1\u09b2\7J\2\2\u09b2\u020e\3\2\2\2\u09b3\u09b4\7[\2\2\u09b4"+ - "\u09b5\7G\2\2\u09b5\u09b6\7C\2\2\u09b6\u09b7\7T\2\2\u09b7\u0210\3\2\2"+ - "\2\u09b8\u09bc\7?\2\2\u09b9\u09ba\7?\2\2\u09ba\u09bc\7?\2\2\u09bb\u09b8"+ - "\3\2\2\2\u09bb\u09b9\3\2\2\2\u09bc\u0212\3\2\2\2\u09bd\u09be\7>\2\2\u09be"+ - "\u09bf\7?\2\2\u09bf\u09c0\7@\2\2\u09c0\u0214\3\2\2\2\u09c1\u09c2\7>\2"+ - "\2\u09c2\u09c3\7@\2\2\u09c3\u0216\3\2\2\2\u09c4\u09c5\7#\2\2\u09c5\u09c6"+ - "\7?\2\2\u09c6\u0218\3\2\2\2\u09c7\u09c8\7>\2\2\u09c8\u021a\3\2\2\2\u09c9"+ - "\u09ca\7>\2\2\u09ca\u09ce\7?\2\2\u09cb\u09cc\7#\2\2\u09cc\u09ce\7@\2\2"+ - "\u09cd\u09c9\3\2\2\2\u09cd\u09cb\3\2\2\2\u09ce\u021c\3\2\2\2\u09cf\u09d0"+ - "\7@\2\2\u09d0\u021e\3\2\2\2\u09d1\u09d2\7@\2\2\u09d2\u09d6\7?\2\2\u09d3"+ - "\u09d4\7#\2\2\u09d4\u09d6\7>\2\2\u09d5\u09d1\3\2\2\2\u09d5\u09d3\3\2\2"+ - "\2\u09d6\u0220\3\2\2\2\u09d7\u09d8\7-\2\2\u09d8\u0222\3\2\2\2\u09d9\u09da"+ - "\7/\2\2\u09da\u0224\3\2\2\2\u09db\u09dc\7,\2\2\u09dc\u0226\3\2\2\2\u09dd"+ - "\u09de\7\61\2\2\u09de\u0228\3\2\2\2\u09df\u09e0\7\'\2\2\u09e0\u022a\3"+ - "\2\2\2\u09e1\u09e2\7F\2\2\u09e2\u09e3\7K\2\2\u09e3\u09e4\7X\2\2\u09e4"+ - "\u022c\3\2\2\2\u09e5\u09e6\7\u0080\2\2\u09e6\u022e\3\2\2\2\u09e7\u09e8"+ - "\7(\2\2\u09e8\u0230\3\2\2\2\u09e9\u09ea\7~\2\2\u09ea\u0232\3\2\2\2\u09eb"+ - "\u09ec\7~\2\2\u09ec\u09ed\7~\2\2\u09ed\u0234\3\2\2\2\u09ee\u09ef\7`\2"+ - "\2\u09ef\u0236\3\2\2\2\u09f0\u09f6\7)\2\2\u09f1\u09f5\n\2\2\2\u09f2\u09f3"+ - "\7^\2\2\u09f3\u09f5\13\2\2\2\u09f4\u09f1\3\2\2\2\u09f4\u09f2\3\2\2\2\u09f5"+ - "\u09f8\3\2\2\2\u09f6\u09f4\3\2\2\2\u09f6\u09f7\3\2\2\2\u09f7\u09f9\3\2"+ - "\2\2\u09f8\u09f6\3\2\2\2\u09f9\u0a05\7)\2\2\u09fa\u0a00\7$\2\2\u09fb\u09ff"+ - "\n\3\2\2\u09fc\u09fd\7^\2\2\u09fd\u09ff\13\2\2\2\u09fe\u09fb\3\2\2\2\u09fe"+ - "\u09fc\3\2\2\2\u09ff\u0a02\3\2\2\2\u0a00\u09fe\3\2\2\2\u0a00\u0a01\3\2"+ - "\2\2\u0a01\u0a03\3\2\2\2\u0a02\u0a00\3\2\2\2\u0a03\u0a05\7$\2\2\u0a04"+ - "\u09f0\3\2\2\2\u0a04\u09fa\3\2\2\2\u0a05\u0238\3\2\2\2\u0a06\u0a08\5\u0251"+ - "\u0129\2\u0a07\u0a06\3\2\2\2\u0a08\u0a09\3\2\2\2\u0a09\u0a07\3\2\2\2\u0a09"+ - "\u0a0a\3\2\2\2\u0a0a\u0a0b\3\2\2\2\u0a0b\u0a0c\7N\2\2\u0a0c\u023a\3\2"+ - "\2\2\u0a0d\u0a0f\5\u0251\u0129\2\u0a0e\u0a0d\3\2\2\2\u0a0f\u0a10\3\2\2"+ - "\2\u0a10\u0a0e\3\2\2\2\u0a10\u0a11\3\2\2\2\u0a11\u0a12\3\2\2\2\u0a12\u0a13"+ - "\7U\2\2\u0a13\u023c\3\2\2\2\u0a14\u0a16\5\u0251\u0129\2\u0a15\u0a14\3"+ - "\2\2\2\u0a16\u0a17\3\2\2\2\u0a17\u0a15\3\2\2\2\u0a17\u0a18\3\2\2\2\u0a18"+ - "\u0a19\3\2\2\2\u0a19\u0a1a\7[\2\2\u0a1a\u023e\3\2\2\2\u0a1b\u0a1d\5\u0251"+ - "\u0129\2\u0a1c\u0a1b\3\2\2\2\u0a1d\u0a1e\3\2\2\2\u0a1e\u0a1c\3\2\2\2\u0a1e"+ - "\u0a1f\3\2\2\2\u0a1f\u0240\3\2\2\2\u0a20\u0a22\5\u0251\u0129\2\u0a21\u0a20"+ - "\3\2\2\2\u0a22\u0a23\3\2\2\2\u0a23\u0a21\3\2\2\2\u0a23\u0a24\3\2\2\2\u0a24"+ - "\u0a25\3\2\2\2\u0a25"; - private static final String _serializedATNSegment1 = - "\u0a26\5\u024f\u0128\2\u0a26\u0a2c\3\2\2\2\u0a27\u0a28\5\u024d\u0127\2"+ - "\u0a28\u0a29\5\u024f\u0128\2\u0a29\u0a2a\6\u0121\2\2\u0a2a\u0a2c\3\2\2"+ - "\2\u0a2b\u0a21\3\2\2\2\u0a2b\u0a27\3\2\2\2\u0a2c\u0242\3\2\2\2\u0a2d\u0a2e"+ - "\5\u024d\u0127\2\u0a2e\u0a2f\6\u0122\3\2\u0a2f\u0244\3\2\2\2\u0a30\u0a32"+ - "\5\u0251\u0129\2\u0a31\u0a30\3\2\2\2\u0a32\u0a33\3\2\2\2\u0a33\u0a31\3"+ - "\2\2\2\u0a33\u0a34\3\2\2\2\u0a34\u0a36\3\2\2\2\u0a35\u0a37\5\u024f\u0128"+ - "\2\u0a36\u0a35\3\2\2\2\u0a36\u0a37\3\2\2\2\u0a37\u0a38\3\2\2\2\u0a38\u0a39"+ - "\7F\2\2\u0a39\u0a42\3\2\2\2\u0a3a\u0a3c\5\u024d\u0127\2\u0a3b\u0a3d\5"+ - "\u024f\u0128\2\u0a3c\u0a3b\3\2\2\2\u0a3c\u0a3d\3\2\2\2\u0a3d\u0a3e\3\2"+ - "\2\2\u0a3e\u0a3f\7F\2\2\u0a3f\u0a40\6\u0123\4\2\u0a40\u0a42\3\2\2\2\u0a41"+ - "\u0a31\3\2\2\2\u0a41\u0a3a\3\2\2\2\u0a42\u0246\3\2\2\2\u0a43\u0a45\5\u0251"+ - "\u0129\2\u0a44\u0a43\3\2\2\2\u0a45\u0a46\3\2\2\2\u0a46\u0a44\3\2\2\2\u0a46"+ - "\u0a47\3\2\2\2\u0a47\u0a49\3\2\2\2\u0a48\u0a4a\5\u024f\u0128\2\u0a49\u0a48"+ - "\3\2\2\2\u0a49\u0a4a\3\2\2\2\u0a4a\u0a4b\3\2\2\2\u0a4b\u0a4c\7D\2\2\u0a4c"+ - "\u0a4d\7F\2\2\u0a4d\u0a58\3\2\2\2\u0a4e\u0a50\5\u024d\u0127\2\u0a4f\u0a51"+ - "\5\u024f\u0128\2\u0a50\u0a4f\3\2\2\2\u0a50\u0a51\3\2\2\2\u0a51\u0a52\3"+ - "\2\2\2\u0a52\u0a53\7D\2\2\u0a53\u0a54\7F\2\2\u0a54\u0a55\3\2\2\2\u0a55"+ - "\u0a56\6\u0124\5\2\u0a56\u0a58\3\2\2\2\u0a57\u0a44\3\2\2\2\u0a57\u0a4e"+ - "\3\2\2\2\u0a58\u0248\3\2\2\2\u0a59\u0a5d\5\u0253\u012a\2\u0a5a\u0a5d\5"+ - "\u0251\u0129\2\u0a5b\u0a5d\7a\2\2\u0a5c\u0a59\3\2\2\2\u0a5c\u0a5a\3\2"+ - "\2\2\u0a5c\u0a5b\3\2\2\2\u0a5d\u0a5e\3\2\2\2\u0a5e\u0a5c\3\2\2\2\u0a5e"+ - "\u0a5f\3\2\2\2\u0a5f\u024a\3\2\2\2\u0a60\u0a66\7b\2\2\u0a61\u0a65\n\4"+ - "\2\2\u0a62\u0a63\7b\2\2\u0a63\u0a65\7b\2\2\u0a64\u0a61\3\2\2\2\u0a64\u0a62"+ - "\3\2\2\2\u0a65\u0a68\3\2\2\2\u0a66\u0a64\3\2\2\2\u0a66\u0a67\3\2\2\2\u0a67"+ - "\u0a69\3\2\2\2\u0a68\u0a66\3\2\2\2\u0a69\u0a6a\7b\2\2\u0a6a\u024c\3\2"+ - "\2\2\u0a6b\u0a6d\5\u0251\u0129\2\u0a6c\u0a6b\3\2\2\2\u0a6d\u0a6e\3\2\2"+ - "\2\u0a6e\u0a6c\3\2\2\2\u0a6e\u0a6f\3\2\2\2\u0a6f\u0a70\3\2\2\2\u0a70\u0a74"+ - "\7\60\2\2\u0a71\u0a73\5\u0251\u0129\2\u0a72\u0a71\3\2\2\2\u0a73\u0a76"+ - "\3\2\2\2\u0a74\u0a72\3\2\2\2\u0a74\u0a75\3\2\2\2\u0a75\u0a7e\3\2\2\2\u0a76"+ - "\u0a74\3\2\2\2\u0a77\u0a79\7\60\2\2\u0a78\u0a7a\5\u0251\u0129\2\u0a79"+ - "\u0a78\3\2\2\2\u0a7a\u0a7b\3\2\2\2\u0a7b\u0a79\3\2\2\2\u0a7b\u0a7c\3\2"+ - "\2\2\u0a7c\u0a7e\3\2\2\2\u0a7d\u0a6c\3\2\2\2\u0a7d\u0a77\3\2\2\2\u0a7e"+ - "\u024e\3\2\2\2\u0a7f\u0a81\7G\2\2\u0a80\u0a82\t\5\2\2\u0a81\u0a80\3\2"+ - "\2\2\u0a81\u0a82\3\2\2\2\u0a82\u0a84\3\2\2\2\u0a83\u0a85\5\u0251\u0129"+ - "\2\u0a84\u0a83\3\2\2\2\u0a85\u0a86\3\2\2\2\u0a86\u0a84\3\2\2\2\u0a86\u0a87"+ - "\3\2\2\2\u0a87\u0250\3\2\2\2\u0a88\u0a89\t\6\2\2\u0a89\u0252\3\2\2\2\u0a8a"+ - "\u0a8b\t\7\2\2\u0a8b\u0254\3\2\2\2\u0a8c\u0a8d\7/\2\2\u0a8d\u0a8e\7/\2"+ - "\2\u0a8e\u0a92\3\2\2\2\u0a8f\u0a91\n\b\2\2\u0a90\u0a8f\3\2\2\2\u0a91\u0a94"+ - "\3\2\2\2\u0a92\u0a90\3\2\2\2\u0a92\u0a93\3\2\2\2\u0a93\u0a96\3\2\2\2\u0a94"+ - "\u0a92\3\2\2\2\u0a95\u0a97\7\17\2\2\u0a96\u0a95\3\2\2\2\u0a96\u0a97\3"+ - "\2\2\2\u0a97\u0a99\3\2\2\2\u0a98\u0a9a\7\f\2\2\u0a99\u0a98\3\2\2\2\u0a99"+ - "\u0a9a\3\2\2\2\u0a9a\u0a9b\3\2\2\2\u0a9b\u0a9c\b\u012b\2\2\u0a9c\u0256"+ - "\3\2\2\2\u0a9d\u0a9e\7\61\2\2\u0a9e\u0a9f\7,\2\2\u0a9f\u0aa0\3\2\2\2\u0aa0"+ - "\u0aa5\6\u012c\6\2\u0aa1\u0aa4\5\u0257\u012c\2\u0aa2\u0aa4\13\2\2\2\u0aa3"+ - "\u0aa1\3\2\2\2\u0aa3\u0aa2\3\2\2\2\u0aa4\u0aa7\3\2\2\2\u0aa5\u0aa6\3\2"+ - "\2\2\u0aa5\u0aa3\3\2\2\2\u0aa6\u0aa8\3\2\2\2\u0aa7\u0aa5\3\2\2\2\u0aa8"+ - "\u0aa9\7,\2\2\u0aa9\u0aaa\7\61\2\2\u0aaa\u0aab\3\2\2\2\u0aab\u0aac\b\u012c"+ - "\2\2\u0aac\u0258\3\2\2\2\u0aad\u0aaf\t\t\2\2\u0aae\u0aad\3\2\2\2\u0aaf"+ - "\u0ab0\3\2\2\2\u0ab0\u0aae\3\2\2\2\u0ab0\u0ab1\3\2\2\2\u0ab1\u0ab2\3\2"+ - "\2\2\u0ab2\u0ab3\b\u012d\2\2\u0ab3\u025a\3\2\2\2\u0ab4\u0ab5\13\2\2\2"+ - "\u0ab5\u025c\3\2\2\2-\2\u0404\u0677\u07d1\u08d7\u09bb\u09cd\u09d5\u09f4"+ - "\u09f6\u09fe\u0a00\u0a04\u0a09\u0a10\u0a17\u0a1e\u0a23\u0a2b\u0a33\u0a36"+ - "\u0a3c\u0a41\u0a46\u0a49\u0a50\u0a57\u0a5c\u0a5e\u0a64\u0a66\u0a6e\u0a74"+ - "\u0a7b\u0a7d\u0a81\u0a86\u0a92\u0a96\u0a99\u0aa3\u0aa5\u0ab0\3\2\3\2"; - public static final String _serializedATN = Utils.join( - new String[] { - _serializedATNSegment0, - _serializedATNSegment1 - }, - "" - ); - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/pysparkling/sql/ast/generated/SqlBaseLexer.py b/pysparkling/sql/ast/generated/SqlBaseLexer.py new file mode 100644 index 000000000..583ad6a05 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseLexer.py @@ -0,0 +1,1878 @@ +# Generated from ../grammar/SqlBase.g4 by ANTLR 4.7.1 +from antlr4 import * +from io import StringIO +from typing.io import TextIO +import sys + + +def serializedATN(): + with StringIO() as buf: + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u012b") + buf.write("\u0ab6\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") + buf.write("\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") + buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") + buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") + buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") + buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") + buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") + buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") + buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") + buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") + buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") + buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") + buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") + buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") + buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") + buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") + buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") + buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") + buf.write("\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087") + buf.write("\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a") + buf.write("\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e") + buf.write("\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091") + buf.write("\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095") + buf.write("\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098") + buf.write("\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c") + buf.write("\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f") + buf.write("\4\u00a0\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3") + buf.write("\t\u00a3\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6") + buf.write("\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa") + buf.write("\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad") + buf.write("\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1") + buf.write("\t\u00b1\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4") + buf.write("\4\u00b5\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8") + buf.write("\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb") + buf.write("\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf") + buf.write("\t\u00bf\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2") + buf.write("\4\u00c3\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6") + buf.write("\t\u00c6\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9") + buf.write("\4\u00ca\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd") + buf.write("\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0") + buf.write("\4\u00d1\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4") + buf.write("\t\u00d4\4\u00d5\t\u00d5\4\u00d6\t\u00d6\4\u00d7\t\u00d7") + buf.write("\4\u00d8\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da\4\u00db") + buf.write("\t\u00db\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de") + buf.write("\4\u00df\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2") + buf.write("\t\u00e2\4\u00e3\t\u00e3\4\u00e4\t\u00e4\4\u00e5\t\u00e5") + buf.write("\4\u00e6\t\u00e6\4\u00e7\t\u00e7\4\u00e8\t\u00e8\4\u00e9") + buf.write("\t\u00e9\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec") + buf.write("\4\u00ed\t\u00ed\4\u00ee\t\u00ee\4\u00ef\t\u00ef\4\u00f0") + buf.write("\t\u00f0\4\u00f1\t\u00f1\4\u00f2\t\u00f2\4\u00f3\t\u00f3") + buf.write("\4\u00f4\t\u00f4\4\u00f5\t\u00f5\4\u00f6\t\u00f6\4\u00f7") + buf.write("\t\u00f7\4\u00f8\t\u00f8\4\u00f9\t\u00f9\4\u00fa\t\u00fa") + buf.write("\4\u00fb\t\u00fb\4\u00fc\t\u00fc\4\u00fd\t\u00fd\4\u00fe") + buf.write("\t\u00fe\4\u00ff\t\u00ff\4\u0100\t\u0100\4\u0101\t\u0101") + buf.write("\4\u0102\t\u0102\4\u0103\t\u0103\4\u0104\t\u0104\4\u0105") + buf.write("\t\u0105\4\u0106\t\u0106\4\u0107\t\u0107\4\u0108\t\u0108") + buf.write("\4\u0109\t\u0109\4\u010a\t\u010a\4\u010b\t\u010b\4\u010c") + buf.write("\t\u010c\4\u010d\t\u010d\4\u010e\t\u010e\4\u010f\t\u010f") + buf.write("\4\u0110\t\u0110\4\u0111\t\u0111\4\u0112\t\u0112\4\u0113") + buf.write("\t\u0113\4\u0114\t\u0114\4\u0115\t\u0115\4\u0116\t\u0116") + buf.write("\4\u0117\t\u0117\4\u0118\t\u0118\4\u0119\t\u0119\4\u011a") + buf.write("\t\u011a\4\u011b\t\u011b\4\u011c\t\u011c\4\u011d\t\u011d") + buf.write("\4\u011e\t\u011e\4\u011f\t\u011f\4\u0120\t\u0120\4\u0121") + buf.write("\t\u0121\4\u0122\t\u0122\4\u0123\t\u0123\4\u0124\t\u0124") + buf.write("\4\u0125\t\u0125\4\u0126\t\u0126\4\u0127\t\u0127\4\u0128") + buf.write("\t\u0128\4\u0129\t\u0129\4\u012a\t\u012a\4\u012b\t\u012b") + buf.write("\4\u012c\t\u012c\4\u012d\t\u012d\4\u012e\t\u012e\3\2\3") + buf.write("\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\7\3\7\3\b") + buf.write("\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r") + buf.write("\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17") + buf.write("\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21") + buf.write("\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\23\3\23\3\23") + buf.write("\3\23\3\23\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25") + buf.write("\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27") + buf.write("\3\27\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32") + buf.write("\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32") + buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34") + buf.write("\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3\36") + buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3 \3 \3") + buf.write(" \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"") + buf.write("\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3") + buf.write("%\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") + buf.write("(\3(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3") + buf.write("*\3*\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3") + buf.write("+\3,\3,\3,\3,\3,\3,\3,\3-\3-\3-\3-\3-\3-\3-\3-\3.\3.\3") + buf.write(".\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3") + buf.write("\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61") + buf.write("\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62") + buf.write("\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63") + buf.write("\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64") + buf.write("\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\66\3\66") + buf.write("\3\66\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67") + buf.write("\38\38\38\38\38\39\39\39\39\39\39\39\39\3:\3:\3:\3:\3") + buf.write(":\3:\3:\3:\3:\3:\3:\3:\3:\3;\3;\3;\3;\3;\3;\3;\3;\3;\3") + buf.write(";\3;\3;\3;\3<\3<\3<\3<\3<\3<\3<\3<\3<\3<\3<\3<\3<\3<\3") + buf.write("<\3<\3<\3<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3>\3") + buf.write(">\3>\3>\3>\3?\3?\3?\3?\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3") + buf.write("@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\5@\u0405\n@\3A\3A\3A\3") + buf.write("A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3") + buf.write("C\3C\3C\3C\3D\3D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3E\3") + buf.write("E\3E\3E\3F\3F\3F\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3G\3H\3") + buf.write("H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3J\3J\3J\3") + buf.write("J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3K\3K\3K\3L\3L\3") + buf.write("L\3L\3L\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3N\3N\3N\3N\3") + buf.write("N\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3Q\3") + buf.write("Q\3Q\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\3S\3S\3S\3S\3") + buf.write("T\3T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3U\3V\3V\3V\3") + buf.write("V\3V\3V\3V\3W\3W\3W\3W\3W\3W\3W\3W\3W\3X\3X\3X\3X\3X\3") + buf.write("X\3X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\3") + buf.write("[\3[\3[\3[\3[\3[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3]\3]\3]") + buf.write("\3]\3]\3]\3]\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3_\3_\3") + buf.write("_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3`\3`\3`\3`\3a\3a\3a\3a\3") + buf.write("b\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3d\3d\3d\3") + buf.write("d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3g\3") + buf.write("g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3") + buf.write("i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3") + buf.write("k\3l\3l\3l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3n\3") + buf.write("n\3n\3n\3n\3o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3q\3q\3q\3q\3") + buf.write("q\3q\3q\3r\3r\3r\3s\3s\3s\3s\3s\3s\3t\3t\3t\3t\3t\3t\3") + buf.write("t\3t\3u\3u\3u\3u\3u\3u\3v\3v\3v\3v\3v\3v\3v\3w\3w\3w\3") + buf.write("w\3w\3w\3w\3w\3w\3w\3w\3w\3x\3x\3x\3x\3x\3x\3x\3y\3y\3") + buf.write("y\3y\3y\3y\3y\3y\3y\3y\3z\3z\3z\3z\3z\3z\3z\3z\3z\3{\3") + buf.write("{\3{\3{\3{\3|\3|\3|\3}\3}\3}\3}\3}\3}\3~\3~\3~\3~\3~\3") + buf.write("\177\3\177\3\177\3\177\3\177\3\u0080\3\u0080\3\u0080\3") + buf.write("\u0080\3\u0080\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081") + buf.write("\3\u0081\3\u0081\3\u0081\3\u0082\3\u0082\3\u0082\3\u0082") + buf.write("\3\u0082\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083") + buf.write("\3\u0083\3\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084") + buf.write("\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0086\3\u0086") + buf.write("\3\u0086\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087") + buf.write("\3\u0087\3\u0087\3\u0087\3\u0088\3\u0088\3\u0088\3\u0088") + buf.write("\3\u0088\3\u0089\3\u0089\3\u0089\3\u0089\3\u0089\3\u008a") + buf.write("\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b") + buf.write("\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b") + buf.write("\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d") + buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e") + buf.write("\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008f\3\u008f") + buf.write("\3\u008f\3\u008f\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090") + buf.write("\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091") + buf.write("\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092") + buf.write("\3\u0092\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093") + buf.write("\3\u0093\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094") + buf.write("\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0096\3\u0096") + buf.write("\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096") + buf.write("\3\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") + buf.write("\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0098\3\u0098") + buf.write("\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099") + buf.write("\3\u0099\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\5\u009a") + buf.write("\u0678\n\u009a\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b") + buf.write("\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009d") + buf.write("\3\u009d\3\u009d\3\u009e\3\u009e\3\u009e\3\u009f\3\u009f") + buf.write("\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\3\u00a0") + buf.write("\3\u00a0\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1") + buf.write("\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2") + buf.write("\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a4") + buf.write("\3\u00a4\3\u00a4\3\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a5") + buf.write("\3\u00a5\3\u00a5\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6") + buf.write("\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6") + buf.write("\3\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a8") + buf.write("\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8") + buf.write("\3\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9") + buf.write("\3\u00a9\3\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa") + buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00ab\3\u00ab") + buf.write("\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab") + buf.write("\3\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac") + buf.write("\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ad") + buf.write("\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad") + buf.write("\3\u00ad\3\u00ad\3\u00ad\3\u00ae\3\u00ae\3\u00ae\3\u00ae") + buf.write("\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00af\3\u00af\3\u00af") + buf.write("\3\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0\3\u00b0\3\u00b0") + buf.write("\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b1") + buf.write("\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b2") + buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2") + buf.write("\3\u00b2\3\u00b2\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3") + buf.write("\3\u00b3\3\u00b3\3\u00b3\3\u00b4\3\u00b4\3\u00b4\3\u00b4") + buf.write("\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4") + buf.write("\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5") + buf.write("\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b6\3\u00b6\3\u00b6") + buf.write("\3\u00b6\3\u00b6\3\u00b6\3\u00b7\3\u00b7\3\u00b7\3\u00b7") + buf.write("\3\u00b7\3\u00b7\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") + buf.write("\3\u00b8\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9") + buf.write("\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9") + buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") + buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00bb") + buf.write("\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb") + buf.write("\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc") + buf.write("\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd") + buf.write("\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00be\3\u00be\3\u00be") + buf.write("\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be\3\u00bf\3\u00bf") + buf.write("\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00c0\3\u00c0") + buf.write("\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c1\3\u00c1") + buf.write("\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c2") + buf.write("\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c3\3\u00c3") + buf.write("\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3") + buf.write("\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4") + buf.write("\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c6") + buf.write("\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6") + buf.write("\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u07d2\n\u00c6\3\u00c7") + buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c8\3\u00c8\3\u00c8") + buf.write("\3\u00c8\3\u00c8\3\u00c8\3\u00c9\3\u00c9\3\u00c9\3\u00c9") + buf.write("\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00ca\3\u00ca") + buf.write("\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00cb\3\u00cb") + buf.write("\3\u00cb\3\u00cb\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc") + buf.write("\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd") + buf.write("\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce") + buf.write("\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf") + buf.write("\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d1\3\u00d1") + buf.write("\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1") + buf.write("\3\u00d1\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2") + buf.write("\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3") + buf.write("\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d3") + buf.write("\3\u00d3\3\u00d3\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4") + buf.write("\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4") + buf.write("\3\u00d4\3\u00d5\3\u00d5\3\u00d5\3\u00d5\3\u00d6\3\u00d6") + buf.write("\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d7\3\u00d7\3\u00d7") + buf.write("\3\u00d7\3\u00d7\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8") + buf.write("\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9") + buf.write("\3\u00da\3\u00da\3\u00da\3\u00da\3\u00da\3\u00db\3\u00db") + buf.write("\3\u00db\3\u00db\3\u00db\3\u00dc\3\u00dc\3\u00dc\3\u00dc") + buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd") + buf.write("\3\u00dd\3\u00dd\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de") + buf.write("\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00df") + buf.write("\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00e0") + buf.write("\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0") + buf.write("\3\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1") + buf.write("\3\u00e1\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2") + buf.write("\3\u00e2\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3") + buf.write("\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e4\3\u00e4\3\u00e4") + buf.write("\3\u00e4\3\u00e4\3\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e5") + buf.write("\3\u00e5\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e6") + buf.write("\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6") + buf.write("\3\u00e6\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7") + buf.write("\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7") + buf.write("\3\u00e7\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8") + buf.write("\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8") + buf.write("\5\u00e8\u08d8\n\u00e8\3\u00e9\3\u00e9\3\u00e9\3\u00e9") + buf.write("\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9") + buf.write("\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00eb\3\u00eb") + buf.write("\3\u00eb\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec") + buf.write("\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed") + buf.write("\3\u00ed\3\u00ed\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee") + buf.write("\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee") + buf.write("\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef") + buf.write("\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00f0") + buf.write("\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0") + buf.write("\3\u00f0\3\u00f0\3\u00f1\3\u00f1\3\u00f1\3\u00f1\3\u00f1") + buf.write("\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f3\3\u00f3") + buf.write("\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f3") + buf.write("\3\u00f4\3\u00f4\3\u00f4\3\u00f4\3\u00f4\3\u00f5\3\u00f5") + buf.write("\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5") + buf.write("\3\u00f5\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6") + buf.write("\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f7\3\u00f7\3\u00f7") + buf.write("\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f8\3\u00f8") + buf.write("\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f9\3\u00f9\3\u00f9") + buf.write("\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00fa\3\u00fa\3\u00fa") + buf.write("\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fb\3\u00fb") + buf.write("\3\u00fb\3\u00fb\3\u00fb\3\u00fb\3\u00fb\3\u00fc\3\u00fc") + buf.write("\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fd\3\u00fd\3\u00fd") + buf.write("\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fe\3\u00fe\3\u00fe") + buf.write("\3\u00fe\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u0100") + buf.write("\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0101\3\u0101") + buf.write("\3\u0101\3\u0101\3\u0101\3\u0101\3\u0101\3\u0102\3\u0102") + buf.write("\3\u0102\3\u0102\3\u0102\3\u0103\3\u0103\3\u0103\3\u0103") + buf.write("\3\u0103\3\u0103\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104") + buf.write("\3\u0105\3\u0105\3\u0105\3\u0105\3\u0105\3\u0105\3\u0106") + buf.write("\3\u0106\3\u0106\3\u0106\3\u0106\3\u0106\3\u0106\3\u0107") + buf.write("\3\u0107\3\u0107\3\u0107\3\u0107\3\u0108\3\u0108\3\u0108") + buf.write("\3\u0108\3\u0108\3\u0109\3\u0109\3\u0109\5\u0109\u09bc") + buf.write("\n\u0109\3\u010a\3\u010a\3\u010a\3\u010a\3\u010b\3\u010b") + buf.write("\3\u010b\3\u010c\3\u010c\3\u010c\3\u010d\3\u010d\3\u010e") + buf.write("\3\u010e\3\u010e\3\u010e\5\u010e\u09ce\n\u010e\3\u010f") + buf.write("\3\u010f\3\u0110\3\u0110\3\u0110\3\u0110\5\u0110\u09d6") + buf.write("\n\u0110\3\u0111\3\u0111\3\u0112\3\u0112\3\u0113\3\u0113") + buf.write("\3\u0114\3\u0114\3\u0115\3\u0115\3\u0116\3\u0116\3\u0116") + buf.write("\3\u0116\3\u0117\3\u0117\3\u0118\3\u0118\3\u0119\3\u0119") + buf.write("\3\u011a\3\u011a\3\u011a\3\u011b\3\u011b\3\u011c\3\u011c") + buf.write("\3\u011c\3\u011c\7\u011c\u09f5\n\u011c\f\u011c\16\u011c") + buf.write("\u09f8\13\u011c\3\u011c\3\u011c\3\u011c\3\u011c\3\u011c") + buf.write("\7\u011c\u09ff\n\u011c\f\u011c\16\u011c\u0a02\13\u011c") + buf.write("\3\u011c\5\u011c\u0a05\n\u011c\3\u011d\6\u011d\u0a08\n") + buf.write("\u011d\r\u011d\16\u011d\u0a09\3\u011d\3\u011d\3\u011e") + buf.write("\6\u011e\u0a0f\n\u011e\r\u011e\16\u011e\u0a10\3\u011e") + buf.write("\3\u011e\3\u011f\6\u011f\u0a16\n\u011f\r\u011f\16\u011f") + buf.write("\u0a17\3\u011f\3\u011f\3\u0120\6\u0120\u0a1d\n\u0120\r") + buf.write("\u0120\16\u0120\u0a1e\3\u0121\6\u0121\u0a22\n\u0121\r") + buf.write("\u0121\16\u0121\u0a23\3\u0121\3\u0121\3\u0121\3\u0121") + buf.write("\3\u0121\3\u0121\5\u0121\u0a2c\n\u0121\3\u0122\3\u0122") + buf.write("\3\u0122\3\u0123\6\u0123\u0a32\n\u0123\r\u0123\16\u0123") + buf.write("\u0a33\3\u0123\5\u0123\u0a37\n\u0123\3\u0123\3\u0123\3") + buf.write("\u0123\3\u0123\5\u0123\u0a3d\n\u0123\3\u0123\3\u0123\3") + buf.write("\u0123\5\u0123\u0a42\n\u0123\3\u0124\6\u0124\u0a45\n\u0124") + buf.write("\r\u0124\16\u0124\u0a46\3\u0124\5\u0124\u0a4a\n\u0124") + buf.write("\3\u0124\3\u0124\3\u0124\3\u0124\3\u0124\5\u0124\u0a51") + buf.write("\n\u0124\3\u0124\3\u0124\3\u0124\3\u0124\3\u0124\5\u0124") + buf.write("\u0a58\n\u0124\3\u0125\3\u0125\3\u0125\6\u0125\u0a5d\n") + buf.write("\u0125\r\u0125\16\u0125\u0a5e\3\u0126\3\u0126\3\u0126") + buf.write("\3\u0126\7\u0126\u0a65\n\u0126\f\u0126\16\u0126\u0a68") + buf.write("\13\u0126\3\u0126\3\u0126\3\u0127\6\u0127\u0a6d\n\u0127") + buf.write("\r\u0127\16\u0127\u0a6e\3\u0127\3\u0127\7\u0127\u0a73") + buf.write("\n\u0127\f\u0127\16\u0127\u0a76\13\u0127\3\u0127\3\u0127") + buf.write("\6\u0127\u0a7a\n\u0127\r\u0127\16\u0127\u0a7b\5\u0127") + buf.write("\u0a7e\n\u0127\3\u0128\3\u0128\5\u0128\u0a82\n\u0128\3") + buf.write("\u0128\6\u0128\u0a85\n\u0128\r\u0128\16\u0128\u0a86\3") + buf.write("\u0129\3\u0129\3\u012a\3\u012a\3\u012b\3\u012b\3\u012b") + buf.write("\3\u012b\7\u012b\u0a91\n\u012b\f\u012b\16\u012b\u0a94") + buf.write("\13\u012b\3\u012b\5\u012b\u0a97\n\u012b\3\u012b\5\u012b") + buf.write("\u0a9a\n\u012b\3\u012b\3\u012b\3\u012c\3\u012c\3\u012c") + buf.write("\3\u012c\3\u012c\3\u012c\7\u012c\u0aa4\n\u012c\f\u012c") + buf.write("\16\u012c\u0aa7\13\u012c\3\u012c\3\u012c\3\u012c\3\u012c") + buf.write("\3\u012c\3\u012d\6\u012d\u0aaf\n\u012d\r\u012d\16\u012d") + buf.write("\u0ab0\3\u012d\3\u012d\3\u012e\3\u012e\3\u0aa5\2\u012f") + buf.write("\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31") + buf.write("\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31") + buf.write("\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O") + buf.write(")Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;") + buf.write("u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008b") + buf.write("G\u008dH\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009b") + buf.write("O\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00ab") + buf.write("W\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb") + buf.write("_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cb") + buf.write("g\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00db") + buf.write("o\u00ddp\u00dfq\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00eb") + buf.write("w\u00edx\u00efy\u00f1z\u00f3{\u00f5|\u00f7}\u00f9~\u00fb") + buf.write("\177\u00fd\u0080\u00ff\u0081\u0101\u0082\u0103\u0083\u0105") + buf.write("\u0084\u0107\u0085\u0109\u0086\u010b\u0087\u010d\u0088") + buf.write("\u010f\u0089\u0111\u008a\u0113\u008b\u0115\u008c\u0117") + buf.write("\u008d\u0119\u008e\u011b\u008f\u011d\u0090\u011f\u0091") + buf.write("\u0121\u0092\u0123\u0093\u0125\u0094\u0127\u0095\u0129") + buf.write("\u0096\u012b\u0097\u012d\u0098\u012f\u0099\u0131\u009a") + buf.write("\u0133\u009b\u0135\u009c\u0137\u009d\u0139\u009e\u013b") + buf.write("\u009f\u013d\u00a0\u013f\u00a1\u0141\u00a2\u0143\u00a3") + buf.write("\u0145\u00a4\u0147\u00a5\u0149\u00a6\u014b\u00a7\u014d") + buf.write("\u00a8\u014f\u00a9\u0151\u00aa\u0153\u00ab\u0155\u00ac") + buf.write("\u0157\u00ad\u0159\u00ae\u015b\u00af\u015d\u00b0\u015f") + buf.write("\u00b1\u0161\u00b2\u0163\u00b3\u0165\u00b4\u0167\u00b5") + buf.write("\u0169\u00b6\u016b\u00b7\u016d\u00b8\u016f\u00b9\u0171") + buf.write("\u00ba\u0173\u00bb\u0175\u00bc\u0177\u00bd\u0179\u00be") + buf.write("\u017b\u00bf\u017d\u00c0\u017f\u00c1\u0181\u00c2\u0183") + buf.write("\u00c3\u0185\u00c4\u0187\u00c5\u0189\u00c6\u018b\u00c7") + buf.write("\u018d\u00c8\u018f\u00c9\u0191\u00ca\u0193\u00cb\u0195") + buf.write("\u00cc\u0197\u00cd\u0199\u00ce\u019b\u00cf\u019d\u00d0") + buf.write("\u019f\u00d1\u01a1\u00d2\u01a3\u00d3\u01a5\u00d4\u01a7") + buf.write("\u00d5\u01a9\u00d6\u01ab\u00d7\u01ad\u00d8\u01af\u00d9") + buf.write("\u01b1\u00da\u01b3\u00db\u01b5\u00dc\u01b7\u00dd\u01b9") + buf.write("\u00de\u01bb\u00df\u01bd\u00e0\u01bf\u00e1\u01c1\u00e2") + buf.write("\u01c3\u00e3\u01c5\u00e4\u01c7\u00e5\u01c9\u00e6\u01cb") + buf.write("\u00e7\u01cd\u00e8\u01cf\u00e9\u01d1\u00ea\u01d3\u00eb") + buf.write("\u01d5\u00ec\u01d7\u00ed\u01d9\u00ee\u01db\u00ef\u01dd") + buf.write("\u00f0\u01df\u00f1\u01e1\u00f2\u01e3\u00f3\u01e5\u00f4") + buf.write("\u01e7\u00f5\u01e9\u00f6\u01eb\u00f7\u01ed\u00f8\u01ef") + buf.write("\u00f9\u01f1\u00fa\u01f3\u00fb\u01f5\u00fc\u01f7\u00fd") + buf.write("\u01f9\u00fe\u01fb\u00ff\u01fd\u0100\u01ff\u0101\u0201") + buf.write("\u0102\u0203\u0103\u0205\u0104\u0207\u0105\u0209\u0106") + buf.write("\u020b\u0107\u020d\u0108\u020f\u0109\u0211\u010a\u0213") + buf.write("\u010b\u0215\u010c\u0217\u010d\u0219\u010e\u021b\u010f") + buf.write("\u021d\u0110\u021f\u0111\u0221\u0112\u0223\u0113\u0225") + buf.write("\u0114\u0227\u0115\u0229\u0116\u022b\u0117\u022d\u0118") + buf.write("\u022f\u0119\u0231\u011a\u0233\u011b\u0235\u011c\u0237") + buf.write("\u011d\u0239\u011e\u023b\u011f\u023d\u0120\u023f\u0121") + buf.write("\u0241\u0122\u0243\u0123\u0245\u0124\u0247\u0125\u0249") + buf.write("\u0126\u024b\u0127\u024d\2\u024f\2\u0251\2\u0253\2\u0255") + buf.write("\u0128\u0257\u0129\u0259\u012a\u025b\u012b\3\2\n\4\2)") + buf.write(")^^\4\2$$^^\3\2bb\4\2--//\3\2\62;\3\2C\\\4\2\f\f\17\17") + buf.write("\5\2\13\f\17\17\"\"\2\u0adc\2\3\3\2\2\2\2\5\3\2\2\2\2") + buf.write("\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3") + buf.write("\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2") + buf.write("\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2") + buf.write("\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2") + buf.write("\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") + buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") + buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") + buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") + buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") + buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") + buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") + buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") + buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") + buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") + buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") + buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2") + buf.write("\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b") + buf.write("\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2") + buf.write("\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9") + buf.write("\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2") + buf.write("\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7") + buf.write("\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2") + buf.write("\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5") + buf.write("\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2") + buf.write("\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3") + buf.write("\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2") + buf.write("\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1") + buf.write("\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2") + buf.write("\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef") + buf.write("\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2") + buf.write("\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd") + buf.write("\3\2\2\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2") + buf.write("\2\2\u0105\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b") + buf.write("\3\2\2\2\2\u010d\3\2\2\2\2\u010f\3\2\2\2\2\u0111\3\2\2") + buf.write("\2\2\u0113\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119") + buf.write("\3\2\2\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2") + buf.write("\2\2\u0121\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u0127") + buf.write("\3\2\2\2\2\u0129\3\2\2\2\2\u012b\3\2\2\2\2\u012d\3\2\2") + buf.write("\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133\3\2\2\2\2\u0135") + buf.write("\3\2\2\2\2\u0137\3\2\2\2\2\u0139\3\2\2\2\2\u013b\3\2\2") + buf.write("\2\2\u013d\3\2\2\2\2\u013f\3\2\2\2\2\u0141\3\2\2\2\2\u0143") + buf.write("\3\2\2\2\2\u0145\3\2\2\2\2\u0147\3\2\2\2\2\u0149\3\2\2") + buf.write("\2\2\u014b\3\2\2\2\2\u014d\3\2\2\2\2\u014f\3\2\2\2\2\u0151") + buf.write("\3\2\2\2\2\u0153\3\2\2\2\2\u0155\3\2\2\2\2\u0157\3\2\2") + buf.write("\2\2\u0159\3\2\2\2\2\u015b\3\2\2\2\2\u015d\3\2\2\2\2\u015f") + buf.write("\3\2\2\2\2\u0161\3\2\2\2\2\u0163\3\2\2\2\2\u0165\3\2\2") + buf.write("\2\2\u0167\3\2\2\2\2\u0169\3\2\2\2\2\u016b\3\2\2\2\2\u016d") + buf.write("\3\2\2\2\2\u016f\3\2\2\2\2\u0171\3\2\2\2\2\u0173\3\2\2") + buf.write("\2\2\u0175\3\2\2\2\2\u0177\3\2\2\2\2\u0179\3\2\2\2\2\u017b") + buf.write("\3\2\2\2\2\u017d\3\2\2\2\2\u017f\3\2\2\2\2\u0181\3\2\2") + buf.write("\2\2\u0183\3\2\2\2\2\u0185\3\2\2\2\2\u0187\3\2\2\2\2\u0189") + buf.write("\3\2\2\2\2\u018b\3\2\2\2\2\u018d\3\2\2\2\2\u018f\3\2\2") + buf.write("\2\2\u0191\3\2\2\2\2\u0193\3\2\2\2\2\u0195\3\2\2\2\2\u0197") + buf.write("\3\2\2\2\2\u0199\3\2\2\2\2\u019b\3\2\2\2\2\u019d\3\2\2") + buf.write("\2\2\u019f\3\2\2\2\2\u01a1\3\2\2\2\2\u01a3\3\2\2\2\2\u01a5") + buf.write("\3\2\2\2\2\u01a7\3\2\2\2\2\u01a9\3\2\2\2\2\u01ab\3\2\2") + buf.write("\2\2\u01ad\3\2\2\2\2\u01af\3\2\2\2\2\u01b1\3\2\2\2\2\u01b3") + buf.write("\3\2\2\2\2\u01b5\3\2\2\2\2\u01b7\3\2\2\2\2\u01b9\3\2\2") + buf.write("\2\2\u01bb\3\2\2\2\2\u01bd\3\2\2\2\2\u01bf\3\2\2\2\2\u01c1") + buf.write("\3\2\2\2\2\u01c3\3\2\2\2\2\u01c5\3\2\2\2\2\u01c7\3\2\2") + buf.write("\2\2\u01c9\3\2\2\2\2\u01cb\3\2\2\2\2\u01cd\3\2\2\2\2\u01cf") + buf.write("\3\2\2\2\2\u01d1\3\2\2\2\2\u01d3\3\2\2\2\2\u01d5\3\2\2") + buf.write("\2\2\u01d7\3\2\2\2\2\u01d9\3\2\2\2\2\u01db\3\2\2\2\2\u01dd") + buf.write("\3\2\2\2\2\u01df\3\2\2\2\2\u01e1\3\2\2\2\2\u01e3\3\2\2") + buf.write("\2\2\u01e5\3\2\2\2\2\u01e7\3\2\2\2\2\u01e9\3\2\2\2\2\u01eb") + buf.write("\3\2\2\2\2\u01ed\3\2\2\2\2\u01ef\3\2\2\2\2\u01f1\3\2\2") + buf.write("\2\2\u01f3\3\2\2\2\2\u01f5\3\2\2\2\2\u01f7\3\2\2\2\2\u01f9") + buf.write("\3\2\2\2\2\u01fb\3\2\2\2\2\u01fd\3\2\2\2\2\u01ff\3\2\2") + buf.write("\2\2\u0201\3\2\2\2\2\u0203\3\2\2\2\2\u0205\3\2\2\2\2\u0207") + buf.write("\3\2\2\2\2\u0209\3\2\2\2\2\u020b\3\2\2\2\2\u020d\3\2\2") + buf.write("\2\2\u020f\3\2\2\2\2\u0211\3\2\2\2\2\u0213\3\2\2\2\2\u0215") + buf.write("\3\2\2\2\2\u0217\3\2\2\2\2\u0219\3\2\2\2\2\u021b\3\2\2") + buf.write("\2\2\u021d\3\2\2\2\2\u021f\3\2\2\2\2\u0221\3\2\2\2\2\u0223") + buf.write("\3\2\2\2\2\u0225\3\2\2\2\2\u0227\3\2\2\2\2\u0229\3\2\2") + buf.write("\2\2\u022b\3\2\2\2\2\u022d\3\2\2\2\2\u022f\3\2\2\2\2\u0231") + buf.write("\3\2\2\2\2\u0233\3\2\2\2\2\u0235\3\2\2\2\2\u0237\3\2\2") + buf.write("\2\2\u0239\3\2\2\2\2\u023b\3\2\2\2\2\u023d\3\2\2\2\2\u023f") + buf.write("\3\2\2\2\2\u0241\3\2\2\2\2\u0243\3\2\2\2\2\u0245\3\2\2") + buf.write("\2\2\u0247\3\2\2\2\2\u0249\3\2\2\2\2\u024b\3\2\2\2\2\u0255") + buf.write("\3\2\2\2\2\u0257\3\2\2\2\2\u0259\3\2\2\2\2\u025b\3\2\2") + buf.write("\2\3\u025d\3\2\2\2\5\u025f\3\2\2\2\7\u0261\3\2\2\2\t\u0263") + buf.write("\3\2\2\2\13\u0265\3\2\2\2\r\u0267\3\2\2\2\17\u026b\3\2") + buf.write("\2\2\21\u026e\3\2\2\2\23\u0271\3\2\2\2\25\u0273\3\2\2") + buf.write("\2\27\u0275\3\2\2\2\31\u0277\3\2\2\2\33\u027b\3\2\2\2") + buf.write("\35\u0281\3\2\2\2\37\u0285\3\2\2\2!\u028b\3\2\2\2#\u0293") + buf.write("\3\2\2\2%\u0297\3\2\2\2\'\u029c\3\2\2\2)\u02a0\3\2\2\2") + buf.write("+\u02a8\3\2\2\2-\u02ae\3\2\2\2/\u02b1\3\2\2\2\61\u02b5") + buf.write("\3\2\2\2\63\u02b8\3\2\2\2\65\u02c6\3\2\2\2\67\u02ce\3") + buf.write("\2\2\29\u02d3\3\2\2\2;\u02da\3\2\2\2=\u02e2\3\2\2\2?\u02e5") + buf.write("\3\2\2\2A\u02eb\3\2\2\2C\u02f3\3\2\2\2E\u02f8\3\2\2\2") + buf.write("G\u02fd\3\2\2\2I\u0304\3\2\2\2K\u030a\3\2\2\2M\u0310\3") + buf.write("\2\2\2O\u0318\3\2\2\2Q\u0322\3\2\2\2S\u032a\3\2\2\2U\u0332") + buf.write("\3\2\2\2W\u033d\3\2\2\2Y\u0344\3\2\2\2[\u034c\3\2\2\2") + buf.write("]\u0354\3\2\2\2_\u035b\3\2\2\2a\u0363\3\2\2\2c\u036f\3") + buf.write("\2\2\2e\u0377\3\2\2\2g\u0383\3\2\2\2i\u038e\3\2\2\2k\u0393") + buf.write("\3\2\2\2m\u039a\3\2\2\2o\u03a0\3\2\2\2q\u03a5\3\2\2\2") + buf.write("s\u03ad\3\2\2\2u\u03ba\3\2\2\2w\u03c7\3\2\2\2y\u03d9\3") + buf.write("\2\2\2{\u03e6\3\2\2\2}\u03eb\3\2\2\2\177\u0404\3\2\2\2") + buf.write("\u0081\u0406\3\2\2\2\u0083\u040a\3\2\2\2\u0085\u0417\3") + buf.write("\2\2\2\u0087\u041f\3\2\2\2\u0089\u0426\3\2\2\2\u008b\u0430") + buf.write("\3\2\2\2\u008d\u0435\3\2\2\2\u008f\u043e\3\2\2\2\u0091") + buf.write("\u0442\3\2\2\2\u0093\u044e\3\2\2\2\u0095\u0458\3\2\2\2") + buf.write("\u0097\u0461\3\2\2\2\u0099\u046c\3\2\2\2\u009b\u0471\3") + buf.write("\2\2\2\u009d\u0476\3\2\2\2\u009f\u047a\3\2\2\2\u00a1\u0481") + buf.write("\3\2\2\2\u00a3\u0489\3\2\2\2\u00a5\u0490\3\2\2\2\u00a7") + buf.write("\u0499\3\2\2\2\u00a9\u04a0\3\2\2\2\u00ab\u04a8\3\2\2\2") + buf.write("\u00ad\u04af\3\2\2\2\u00af\u04b8\3\2\2\2\u00b1\u04c1\3") + buf.write("\2\2\2\u00b3\u04c9\3\2\2\2\u00b5\u04cf\3\2\2\2\u00b7\u04d5") + buf.write("\3\2\2\2\u00b9\u04dc\3\2\2\2\u00bb\u04e3\3\2\2\2\u00bd") + buf.write("\u04ee\3\2\2\2\u00bf\u04f4\3\2\2\2\u00c1\u04fe\3\2\2\2") + buf.write("\u00c3\u0502\3\2\2\2\u00c5\u050a\3\2\2\2\u00c7\u0511\3") + buf.write("\2\2\2\u00c9\u051b\3\2\2\2\u00cb\u0520\3\2\2\2\u00cd\u0525") + buf.write("\3\2\2\2\u00cf\u052e\3\2\2\2\u00d1\u0538\3\2\2\2\u00d3") + buf.write("\u053f\3\2\2\2\u00d5\u0545\3\2\2\2\u00d7\u054b\3\2\2\2") + buf.write("\u00d9\u0554\3\2\2\2\u00db\u055b\3\2\2\2\u00dd\u0560\3") + buf.write("\2\2\2\u00df\u0563\3\2\2\2\u00e1\u056a\3\2\2\2\u00e3\u0571") + buf.write("\3\2\2\2\u00e5\u0574\3\2\2\2\u00e7\u057a\3\2\2\2\u00e9") + buf.write("\u0582\3\2\2\2\u00eb\u0588\3\2\2\2\u00ed\u058f\3\2\2\2") + buf.write("\u00ef\u059b\3\2\2\2\u00f1\u05a2\3\2\2\2\u00f3\u05ac\3") + buf.write("\2\2\2\u00f5\u05b5\3\2\2\2\u00f7\u05ba\3\2\2\2\u00f9\u05bd") + buf.write("\3\2\2\2\u00fb\u05c3\3\2\2\2\u00fd\u05c8\3\2\2\2\u00ff") + buf.write("\u05cd\3\2\2\2\u0101\u05d2\3\2\2\2\u0103\u05da\3\2\2\2") + buf.write("\u0105\u05df\3\2\2\2\u0107\u05e7\3\2\2\2\u0109\u05ec\3") + buf.write("\2\2\2\u010b\u05f1\3\2\2\2\u010d\u05f7\3\2\2\2\u010f\u05fd") + buf.write("\3\2\2\2\u0111\u0602\3\2\2\2\u0113\u0607\3\2\2\2\u0115") + buf.write("\u060d\3\2\2\2\u0117\u0616\3\2\2\2\u0119\u061b\3\2\2\2") + buf.write("\u011b\u0621\3\2\2\2\u011d\u0629\3\2\2\2\u011f\u062f\3") + buf.write("\2\2\2\u0121\u0633\3\2\2\2\u0123\u063b\3\2\2\2\u0125\u0641") + buf.write("\3\2\2\2\u0127\u0648\3\2\2\2\u0129\u064e\3\2\2\2\u012b") + buf.write("\u0653\3\2\2\2\u012d\u065d\3\2\2\2\u012f\u0668\3\2\2\2") + buf.write("\u0131\u0670\3\2\2\2\u0133\u0677\3\2\2\2\u0135\u0679\3") + buf.write("\2\2\2\u0137\u067e\3\2\2\2\u0139\u0684\3\2\2\2\u013b\u0687") + buf.write("\3\2\2\2\u013d\u068a\3\2\2\2\u013f\u068f\3\2\2\2\u0141") + buf.write("\u0696\3\2\2\2\u0143\u069e\3\2\2\2\u0145\u06a1\3\2\2\2") + buf.write("\u0147\u06a7\3\2\2\2\u0149\u06ab\3\2\2\2\u014b\u06b1\3") + buf.write("\2\2\2\u014d\u06be\3\2\2\2\u014f\u06c3\3\2\2\2\u0151\u06cc") + buf.write("\3\2\2\2\u0153\u06d4\3\2\2\2\u0155\u06de\3\2\2\2\u0157") + buf.write("\u06e8\3\2\2\2\u0159\u06f4\3\2\2\2\u015b\u06ff\3\2\2\2") + buf.write("\u015d\u0707\3\2\2\2\u015f\u070d\3\2\2\2\u0161\u0715\3") + buf.write("\2\2\2\u0163\u071e\3\2\2\2\u0165\u0728\3\2\2\2\u0167\u0730") + buf.write("\3\2\2\2\u0169\u073b\3\2\2\2\u016b\u0746\3\2\2\2\u016d") + buf.write("\u074c\3\2\2\2\u016f\u0752\3\2\2\2\u0171\u0758\3\2\2\2") + buf.write("\u0173\u0765\3\2\2\2\u0175\u0772\3\2\2\2\u0177\u077a\3") + buf.write("\2\2\2\u0179\u0781\3\2\2\2\u017b\u078c\3\2\2\2\u017d\u0794") + buf.write("\3\2\2\2\u017f\u079b\3\2\2\2\u0181\u07a2\3\2\2\2\u0183") + buf.write("\u07aa\3\2\2\2\u0185\u07b0\3\2\2\2\u0187\u07b9\3\2\2\2") + buf.write("\u0189\u07c0\3\2\2\2\u018b\u07d1\3\2\2\2\u018d\u07d3\3") + buf.write("\2\2\2\u018f\u07d8\3\2\2\2\u0191\u07de\3\2\2\2\u0193\u07e7") + buf.write("\3\2\2\2\u0195\u07ee\3\2\2\2\u0197\u07f2\3\2\2\2\u0199") + buf.write("\u07f7\3\2\2\2\u019b\u07fe\3\2\2\2\u019d\u0805\3\2\2\2") + buf.write("\u019f\u080c\3\2\2\2\u01a1\u0811\3\2\2\2\u01a3\u081b\3") + buf.write("\2\2\2\u01a5\u0821\3\2\2\2\u01a7\u0831\3\2\2\2\u01a9\u083e") + buf.write("\3\2\2\2\u01ab\u0842\3\2\2\2\u01ad\u0848\3\2\2\2\u01af") + buf.write("\u084d\3\2\2\2\u01b1\u0852\3\2\2\2\u01b3\u0859\3\2\2\2") + buf.write("\u01b5\u085e\3\2\2\2\u01b7\u0863\3\2\2\2\u01b9\u086a\3") + buf.write("\2\2\2\u01bb\u0870\3\2\2\2\u01bd\u087b\3\2\2\2\u01bf\u0882") + buf.write("\3\2\2\2\u01c1\u088b\3\2\2\2\u01c3\u0892\3\2\2\2\u01c5") + buf.write("\u0899\3\2\2\2\u01c7\u08a3\3\2\2\2\u01c9\u08a9\3\2\2\2") + buf.write("\u01cb\u08b0\3\2\2\2\u01cd\u08bc\3\2\2\2\u01cf\u08d7\3") + buf.write("\2\2\2\u01d1\u08d9\3\2\2\2\u01d3\u08e4\3\2\2\2\u01d5\u08e9") + buf.write("\3\2\2\2\u01d7\u08ec\3\2\2\2\u01d9\u08f2\3\2\2\2\u01db") + buf.write("\u08fb\3\2\2\2\u01dd\u0907\3\2\2\2\u01df\u0914\3\2\2\2") + buf.write("\u01e1\u091e\3\2\2\2\u01e3\u0923\3\2\2\2\u01e5\u0928\3") + buf.write("\2\2\2\u01e7\u0931\3\2\2\2\u01e9\u0936\3\2\2\2\u01eb\u0940") + buf.write("\3\2\2\2\u01ed\u094a\3\2\2\2\u01ef\u0952\3\2\2\2\u01f1") + buf.write("\u0958\3\2\2\2\u01f3\u095f\3\2\2\2\u01f5\u0967\3\2\2\2") + buf.write("\u01f7\u096e\3\2\2\2\u01f9\u0974\3\2\2\2\u01fb\u097b\3") + buf.write("\2\2\2\u01fd\u097f\3\2\2\2\u01ff\u0984\3\2\2\2\u0201\u098a") + buf.write("\3\2\2\2\u0203\u0991\3\2\2\2\u0205\u0996\3\2\2\2\u0207") + buf.write("\u099c\3\2\2\2\u0209\u09a1\3\2\2\2\u020b\u09a7\3\2\2\2") + buf.write("\u020d\u09ae\3\2\2\2\u020f\u09b3\3\2\2\2\u0211\u09bb\3") + buf.write("\2\2\2\u0213\u09bd\3\2\2\2\u0215\u09c1\3\2\2\2\u0217\u09c4") + buf.write("\3\2\2\2\u0219\u09c7\3\2\2\2\u021b\u09cd\3\2\2\2\u021d") + buf.write("\u09cf\3\2\2\2\u021f\u09d5\3\2\2\2\u0221\u09d7\3\2\2\2") + buf.write("\u0223\u09d9\3\2\2\2\u0225\u09db\3\2\2\2\u0227\u09dd\3") + buf.write("\2\2\2\u0229\u09df\3\2\2\2\u022b\u09e1\3\2\2\2\u022d\u09e5") + buf.write("\3\2\2\2\u022f\u09e7\3\2\2\2\u0231\u09e9\3\2\2\2\u0233") + buf.write("\u09eb\3\2\2\2\u0235\u09ee\3\2\2\2\u0237\u0a04\3\2\2\2") + buf.write("\u0239\u0a07\3\2\2\2\u023b\u0a0e\3\2\2\2\u023d\u0a15\3") + buf.write("\2\2\2\u023f\u0a1c\3\2\2\2\u0241\u0a2b\3\2\2\2\u0243\u0a2d") + buf.write("\3\2\2\2\u0245\u0a41\3\2\2\2\u0247\u0a57\3\2\2\2\u0249") + buf.write("\u0a5c\3\2\2\2\u024b\u0a60\3\2\2\2\u024d\u0a7d\3\2\2\2") + buf.write("\u024f\u0a7f\3\2\2\2\u0251\u0a88\3\2\2\2\u0253\u0a8a\3") + buf.write("\2\2\2\u0255\u0a8c\3\2\2\2\u0257\u0a9d\3\2\2\2\u0259\u0aae") + buf.write("\3\2\2\2\u025b\u0ab4\3\2\2\2\u025d\u025e\7=\2\2\u025e") + buf.write("\4\3\2\2\2\u025f\u0260\7*\2\2\u0260\6\3\2\2\2\u0261\u0262") + buf.write("\7+\2\2\u0262\b\3\2\2\2\u0263\u0264\7.\2\2\u0264\n\3\2") + buf.write("\2\2\u0265\u0266\7\60\2\2\u0266\f\3\2\2\2\u0267\u0268") + buf.write("\7\61\2\2\u0268\u0269\7,\2\2\u0269\u026a\7-\2\2\u026a") + buf.write("\16\3\2\2\2\u026b\u026c\7,\2\2\u026c\u026d\7\61\2\2\u026d") + buf.write("\20\3\2\2\2\u026e\u026f\7/\2\2\u026f\u0270\7@\2\2\u0270") + buf.write("\22\3\2\2\2\u0271\u0272\7]\2\2\u0272\24\3\2\2\2\u0273") + buf.write("\u0274\7_\2\2\u0274\26\3\2\2\2\u0275\u0276\7<\2\2\u0276") + buf.write("\30\3\2\2\2\u0277\u0278\7C\2\2\u0278\u0279\7F\2\2\u0279") + buf.write("\u027a\7F\2\2\u027a\32\3\2\2\2\u027b\u027c\7C\2\2\u027c") + buf.write("\u027d\7H\2\2\u027d\u027e\7V\2\2\u027e\u027f\7G\2\2\u027f") + buf.write("\u0280\7T\2\2\u0280\34\3\2\2\2\u0281\u0282\7C\2\2\u0282") + buf.write("\u0283\7N\2\2\u0283\u0284\7N\2\2\u0284\36\3\2\2\2\u0285") + buf.write("\u0286\7C\2\2\u0286\u0287\7N\2\2\u0287\u0288\7V\2\2\u0288") + buf.write("\u0289\7G\2\2\u0289\u028a\7T\2\2\u028a \3\2\2\2\u028b") + buf.write("\u028c\7C\2\2\u028c\u028d\7P\2\2\u028d\u028e\7C\2\2\u028e") + buf.write("\u028f\7N\2\2\u028f\u0290\7[\2\2\u0290\u0291\7\\\2\2\u0291") + buf.write("\u0292\7G\2\2\u0292\"\3\2\2\2\u0293\u0294\7C\2\2\u0294") + buf.write("\u0295\7P\2\2\u0295\u0296\7F\2\2\u0296$\3\2\2\2\u0297") + buf.write("\u0298\7C\2\2\u0298\u0299\7P\2\2\u0299\u029a\7V\2\2\u029a") + buf.write("\u029b\7K\2\2\u029b&\3\2\2\2\u029c\u029d\7C\2\2\u029d") + buf.write("\u029e\7P\2\2\u029e\u029f\7[\2\2\u029f(\3\2\2\2\u02a0") + buf.write("\u02a1\7C\2\2\u02a1\u02a2\7T\2\2\u02a2\u02a3\7E\2\2\u02a3") + buf.write("\u02a4\7J\2\2\u02a4\u02a5\7K\2\2\u02a5\u02a6\7X\2\2\u02a6") + buf.write("\u02a7\7G\2\2\u02a7*\3\2\2\2\u02a8\u02a9\7C\2\2\u02a9") + buf.write("\u02aa\7T\2\2\u02aa\u02ab\7T\2\2\u02ab\u02ac\7C\2\2\u02ac") + buf.write("\u02ad\7[\2\2\u02ad,\3\2\2\2\u02ae\u02af\7C\2\2\u02af") + buf.write("\u02b0\7U\2\2\u02b0.\3\2\2\2\u02b1\u02b2\7C\2\2\u02b2") + buf.write("\u02b3\7U\2\2\u02b3\u02b4\7E\2\2\u02b4\60\3\2\2\2\u02b5") + buf.write("\u02b6\7C\2\2\u02b6\u02b7\7V\2\2\u02b7\62\3\2\2\2\u02b8") + buf.write("\u02b9\7C\2\2\u02b9\u02ba\7W\2\2\u02ba\u02bb\7V\2\2\u02bb") + buf.write("\u02bc\7J\2\2\u02bc\u02bd\7Q\2\2\u02bd\u02be\7T\2\2\u02be") + buf.write("\u02bf\7K\2\2\u02bf\u02c0\7\\\2\2\u02c0\u02c1\7C\2\2\u02c1") + buf.write("\u02c2\7V\2\2\u02c2\u02c3\7K\2\2\u02c3\u02c4\7Q\2\2\u02c4") + buf.write("\u02c5\7P\2\2\u02c5\64\3\2\2\2\u02c6\u02c7\7D\2\2\u02c7") + buf.write("\u02c8\7G\2\2\u02c8\u02c9\7V\2\2\u02c9\u02ca\7Y\2\2\u02ca") + buf.write("\u02cb\7G\2\2\u02cb\u02cc\7G\2\2\u02cc\u02cd\7P\2\2\u02cd") + buf.write("\66\3\2\2\2\u02ce\u02cf\7D\2\2\u02cf\u02d0\7Q\2\2\u02d0") + buf.write("\u02d1\7V\2\2\u02d1\u02d2\7J\2\2\u02d28\3\2\2\2\u02d3") + buf.write("\u02d4\7D\2\2\u02d4\u02d5\7W\2\2\u02d5\u02d6\7E\2\2\u02d6") + buf.write("\u02d7\7M\2\2\u02d7\u02d8\7G\2\2\u02d8\u02d9\7V\2\2\u02d9") + buf.write(":\3\2\2\2\u02da\u02db\7D\2\2\u02db\u02dc\7W\2\2\u02dc") + buf.write("\u02dd\7E\2\2\u02dd\u02de\7M\2\2\u02de\u02df\7G\2\2\u02df") + buf.write("\u02e0\7V\2\2\u02e0\u02e1\7U\2\2\u02e1<\3\2\2\2\u02e2") + buf.write("\u02e3\7D\2\2\u02e3\u02e4\7[\2\2\u02e4>\3\2\2\2\u02e5") + buf.write("\u02e6\7E\2\2\u02e6\u02e7\7C\2\2\u02e7\u02e8\7E\2\2\u02e8") + buf.write("\u02e9\7J\2\2\u02e9\u02ea\7G\2\2\u02ea@\3\2\2\2\u02eb") + buf.write("\u02ec\7E\2\2\u02ec\u02ed\7C\2\2\u02ed\u02ee\7U\2\2\u02ee") + buf.write("\u02ef\7E\2\2\u02ef\u02f0\7C\2\2\u02f0\u02f1\7F\2\2\u02f1") + buf.write("\u02f2\7G\2\2\u02f2B\3\2\2\2\u02f3\u02f4\7E\2\2\u02f4") + buf.write("\u02f5\7C\2\2\u02f5\u02f6\7U\2\2\u02f6\u02f7\7G\2\2\u02f7") + buf.write("D\3\2\2\2\u02f8\u02f9\7E\2\2\u02f9\u02fa\7C\2\2\u02fa") + buf.write("\u02fb\7U\2\2\u02fb\u02fc\7V\2\2\u02fcF\3\2\2\2\u02fd") + buf.write("\u02fe\7E\2\2\u02fe\u02ff\7J\2\2\u02ff\u0300\7C\2\2\u0300") + buf.write("\u0301\7P\2\2\u0301\u0302\7I\2\2\u0302\u0303\7G\2\2\u0303") + buf.write("H\3\2\2\2\u0304\u0305\7E\2\2\u0305\u0306\7J\2\2\u0306") + buf.write("\u0307\7G\2\2\u0307\u0308\7E\2\2\u0308\u0309\7M\2\2\u0309") + buf.write("J\3\2\2\2\u030a\u030b\7E\2\2\u030b\u030c\7N\2\2\u030c") + buf.write("\u030d\7G\2\2\u030d\u030e\7C\2\2\u030e\u030f\7T\2\2\u030f") + buf.write("L\3\2\2\2\u0310\u0311\7E\2\2\u0311\u0312\7N\2\2\u0312") + buf.write("\u0313\7W\2\2\u0313\u0314\7U\2\2\u0314\u0315\7V\2\2\u0315") + buf.write("\u0316\7G\2\2\u0316\u0317\7T\2\2\u0317N\3\2\2\2\u0318") + buf.write("\u0319\7E\2\2\u0319\u031a\7N\2\2\u031a\u031b\7W\2\2\u031b") + buf.write("\u031c\7U\2\2\u031c\u031d\7V\2\2\u031d\u031e\7G\2\2\u031e") + buf.write("\u031f\7T\2\2\u031f\u0320\7G\2\2\u0320\u0321\7F\2\2\u0321") + buf.write("P\3\2\2\2\u0322\u0323\7E\2\2\u0323\u0324\7Q\2\2\u0324") + buf.write("\u0325\7F\2\2\u0325\u0326\7G\2\2\u0326\u0327\7I\2\2\u0327") + buf.write("\u0328\7G\2\2\u0328\u0329\7P\2\2\u0329R\3\2\2\2\u032a") + buf.write("\u032b\7E\2\2\u032b\u032c\7Q\2\2\u032c\u032d\7N\2\2\u032d") + buf.write("\u032e\7N\2\2\u032e\u032f\7C\2\2\u032f\u0330\7V\2\2\u0330") + buf.write("\u0331\7G\2\2\u0331T\3\2\2\2\u0332\u0333\7E\2\2\u0333") + buf.write("\u0334\7Q\2\2\u0334\u0335\7N\2\2\u0335\u0336\7N\2\2\u0336") + buf.write("\u0337\7G\2\2\u0337\u0338\7E\2\2\u0338\u0339\7V\2\2\u0339") + buf.write("\u033a\7K\2\2\u033a\u033b\7Q\2\2\u033b\u033c\7P\2\2\u033c") + buf.write("V\3\2\2\2\u033d\u033e\7E\2\2\u033e\u033f\7Q\2\2\u033f") + buf.write("\u0340\7N\2\2\u0340\u0341\7W\2\2\u0341\u0342\7O\2\2\u0342") + buf.write("\u0343\7P\2\2\u0343X\3\2\2\2\u0344\u0345\7E\2\2\u0345") + buf.write("\u0346\7Q\2\2\u0346\u0347\7N\2\2\u0347\u0348\7W\2\2\u0348") + buf.write("\u0349\7O\2\2\u0349\u034a\7P\2\2\u034a\u034b\7U\2\2\u034b") + buf.write("Z\3\2\2\2\u034c\u034d\7E\2\2\u034d\u034e\7Q\2\2\u034e") + buf.write("\u034f\7O\2\2\u034f\u0350\7O\2\2\u0350\u0351\7G\2\2\u0351") + buf.write("\u0352\7P\2\2\u0352\u0353\7V\2\2\u0353\\\3\2\2\2\u0354") + buf.write("\u0355\7E\2\2\u0355\u0356\7Q\2\2\u0356\u0357\7O\2\2\u0357") + buf.write("\u0358\7O\2\2\u0358\u0359\7K\2\2\u0359\u035a\7V\2\2\u035a") + buf.write("^\3\2\2\2\u035b\u035c\7E\2\2\u035c\u035d\7Q\2\2\u035d") + buf.write("\u035e\7O\2\2\u035e\u035f\7R\2\2\u035f\u0360\7C\2\2\u0360") + buf.write("\u0361\7E\2\2\u0361\u0362\7V\2\2\u0362`\3\2\2\2\u0363") + buf.write("\u0364\7E\2\2\u0364\u0365\7Q\2\2\u0365\u0366\7O\2\2\u0366") + buf.write("\u0367\7R\2\2\u0367\u0368\7C\2\2\u0368\u0369\7E\2\2\u0369") + buf.write("\u036a\7V\2\2\u036a\u036b\7K\2\2\u036b\u036c\7Q\2\2\u036c") + buf.write("\u036d\7P\2\2\u036d\u036e\7U\2\2\u036eb\3\2\2\2\u036f") + buf.write("\u0370\7E\2\2\u0370\u0371\7Q\2\2\u0371\u0372\7O\2\2\u0372") + buf.write("\u0373\7R\2\2\u0373\u0374\7W\2\2\u0374\u0375\7V\2\2\u0375") + buf.write("\u0376\7G\2\2\u0376d\3\2\2\2\u0377\u0378\7E\2\2\u0378") + buf.write("\u0379\7Q\2\2\u0379\u037a\7P\2\2\u037a\u037b\7E\2\2\u037b") + buf.write("\u037c\7C\2\2\u037c\u037d\7V\2\2\u037d\u037e\7G\2\2\u037e") + buf.write("\u037f\7P\2\2\u037f\u0380\7C\2\2\u0380\u0381\7V\2\2\u0381") + buf.write("\u0382\7G\2\2\u0382f\3\2\2\2\u0383\u0384\7E\2\2\u0384") + buf.write("\u0385\7Q\2\2\u0385\u0386\7P\2\2\u0386\u0387\7U\2\2\u0387") + buf.write("\u0388\7V\2\2\u0388\u0389\7T\2\2\u0389\u038a\7C\2\2\u038a") + buf.write("\u038b\7K\2\2\u038b\u038c\7P\2\2\u038c\u038d\7V\2\2\u038d") + buf.write("h\3\2\2\2\u038e\u038f\7E\2\2\u038f\u0390\7Q\2\2\u0390") + buf.write("\u0391\7U\2\2\u0391\u0392\7V\2\2\u0392j\3\2\2\2\u0393") + buf.write("\u0394\7E\2\2\u0394\u0395\7T\2\2\u0395\u0396\7G\2\2\u0396") + buf.write("\u0397\7C\2\2\u0397\u0398\7V\2\2\u0398\u0399\7G\2\2\u0399") + buf.write("l\3\2\2\2\u039a\u039b\7E\2\2\u039b\u039c\7T\2\2\u039c") + buf.write("\u039d\7Q\2\2\u039d\u039e\7U\2\2\u039e\u039f\7U\2\2\u039f") + buf.write("n\3\2\2\2\u03a0\u03a1\7E\2\2\u03a1\u03a2\7W\2\2\u03a2") + buf.write("\u03a3\7D\2\2\u03a3\u03a4\7G\2\2\u03a4p\3\2\2\2\u03a5") + buf.write("\u03a6\7E\2\2\u03a6\u03a7\7W\2\2\u03a7\u03a8\7T\2\2\u03a8") + buf.write("\u03a9\7T\2\2\u03a9\u03aa\7G\2\2\u03aa\u03ab\7P\2\2\u03ab") + buf.write("\u03ac\7V\2\2\u03acr\3\2\2\2\u03ad\u03ae\7E\2\2\u03ae") + buf.write("\u03af\7W\2\2\u03af\u03b0\7T\2\2\u03b0\u03b1\7T\2\2\u03b1") + buf.write("\u03b2\7G\2\2\u03b2\u03b3\7P\2\2\u03b3\u03b4\7V\2\2\u03b4") + buf.write("\u03b5\7a\2\2\u03b5\u03b6\7F\2\2\u03b6\u03b7\7C\2\2\u03b7") + buf.write("\u03b8\7V\2\2\u03b8\u03b9\7G\2\2\u03b9t\3\2\2\2\u03ba") + buf.write("\u03bb\7E\2\2\u03bb\u03bc\7W\2\2\u03bc\u03bd\7T\2\2\u03bd") + buf.write("\u03be\7T\2\2\u03be\u03bf\7G\2\2\u03bf\u03c0\7P\2\2\u03c0") + buf.write("\u03c1\7V\2\2\u03c1\u03c2\7a\2\2\u03c2\u03c3\7V\2\2\u03c3") + buf.write("\u03c4\7K\2\2\u03c4\u03c5\7O\2\2\u03c5\u03c6\7G\2\2\u03c6") + buf.write("v\3\2\2\2\u03c7\u03c8\7E\2\2\u03c8\u03c9\7W\2\2\u03c9") + buf.write("\u03ca\7T\2\2\u03ca\u03cb\7T\2\2\u03cb\u03cc\7G\2\2\u03cc") + buf.write("\u03cd\7P\2\2\u03cd\u03ce\7V\2\2\u03ce\u03cf\7a\2\2\u03cf") + buf.write("\u03d0\7V\2\2\u03d0\u03d1\7K\2\2\u03d1\u03d2\7O\2\2\u03d2") + buf.write("\u03d3\7G\2\2\u03d3\u03d4\7U\2\2\u03d4\u03d5\7V\2\2\u03d5") + buf.write("\u03d6\7C\2\2\u03d6\u03d7\7O\2\2\u03d7\u03d8\7R\2\2\u03d8") + buf.write("x\3\2\2\2\u03d9\u03da\7E\2\2\u03da\u03db\7W\2\2\u03db") + buf.write("\u03dc\7T\2\2\u03dc\u03dd\7T\2\2\u03dd\u03de\7G\2\2\u03de") + buf.write("\u03df\7P\2\2\u03df\u03e0\7V\2\2\u03e0\u03e1\7a\2\2\u03e1") + buf.write("\u03e2\7W\2\2\u03e2\u03e3\7U\2\2\u03e3\u03e4\7G\2\2\u03e4") + buf.write("\u03e5\7T\2\2\u03e5z\3\2\2\2\u03e6\u03e7\7F\2\2\u03e7") + buf.write("\u03e8\7C\2\2\u03e8\u03e9\7V\2\2\u03e9\u03ea\7C\2\2\u03ea") + buf.write("|\3\2\2\2\u03eb\u03ec\7F\2\2\u03ec\u03ed\7C\2\2\u03ed") + buf.write("\u03ee\7V\2\2\u03ee\u03ef\7C\2\2\u03ef\u03f0\7D\2\2\u03f0") + buf.write("\u03f1\7C\2\2\u03f1\u03f2\7U\2\2\u03f2\u03f3\7G\2\2\u03f3") + buf.write("~\3\2\2\2\u03f4\u03f5\7F\2\2\u03f5\u03f6\7C\2\2\u03f6") + buf.write("\u03f7\7V\2\2\u03f7\u03f8\7C\2\2\u03f8\u03f9\7D\2\2\u03f9") + buf.write("\u03fa\7C\2\2\u03fa\u03fb\7U\2\2\u03fb\u03fc\7G\2\2\u03fc") + buf.write("\u0405\7U\2\2\u03fd\u03fe\7U\2\2\u03fe\u03ff\7E\2\2\u03ff") + buf.write("\u0400\7J\2\2\u0400\u0401\7G\2\2\u0401\u0402\7O\2\2\u0402") + buf.write("\u0403\7C\2\2\u0403\u0405\7U\2\2\u0404\u03f4\3\2\2\2\u0404") + buf.write("\u03fd\3\2\2\2\u0405\u0080\3\2\2\2\u0406\u0407\7F\2\2") + buf.write("\u0407\u0408\7C\2\2\u0408\u0409\7[\2\2\u0409\u0082\3\2") + buf.write("\2\2\u040a\u040b\7F\2\2\u040b\u040c\7D\2\2\u040c\u040d") + buf.write("\7R\2\2\u040d\u040e\7T\2\2\u040e\u040f\7Q\2\2\u040f\u0410") + buf.write("\7R\2\2\u0410\u0411\7G\2\2\u0411\u0412\7T\2\2\u0412\u0413") + buf.write("\7V\2\2\u0413\u0414\7K\2\2\u0414\u0415\7G\2\2\u0415\u0416") + buf.write("\7U\2\2\u0416\u0084\3\2\2\2\u0417\u0418\7F\2\2\u0418\u0419") + buf.write("\7G\2\2\u0419\u041a\7H\2\2\u041a\u041b\7K\2\2\u041b\u041c") + buf.write("\7P\2\2\u041c\u041d\7G\2\2\u041d\u041e\7F\2\2\u041e\u0086") + buf.write("\3\2\2\2\u041f\u0420\7F\2\2\u0420\u0421\7G\2\2\u0421\u0422") + buf.write("\7N\2\2\u0422\u0423\7G\2\2\u0423\u0424\7V\2\2\u0424\u0425") + buf.write("\7G\2\2\u0425\u0088\3\2\2\2\u0426\u0427\7F\2\2\u0427\u0428") + buf.write("\7G\2\2\u0428\u0429\7N\2\2\u0429\u042a\7K\2\2\u042a\u042b") + buf.write("\7O\2\2\u042b\u042c\7K\2\2\u042c\u042d\7V\2\2\u042d\u042e") + buf.write("\7G\2\2\u042e\u042f\7F\2\2\u042f\u008a\3\2\2\2\u0430\u0431") + buf.write("\7F\2\2\u0431\u0432\7G\2\2\u0432\u0433\7U\2\2\u0433\u0434") + buf.write("\7E\2\2\u0434\u008c\3\2\2\2\u0435\u0436\7F\2\2\u0436\u0437") + buf.write("\7G\2\2\u0437\u0438\7U\2\2\u0438\u0439\7E\2\2\u0439\u043a") + buf.write("\7T\2\2\u043a\u043b\7K\2\2\u043b\u043c\7D\2\2\u043c\u043d") + buf.write("\7G\2\2\u043d\u008e\3\2\2\2\u043e\u043f\7F\2\2\u043f\u0440") + buf.write("\7H\2\2\u0440\u0441\7U\2\2\u0441\u0090\3\2\2\2\u0442\u0443") + buf.write("\7F\2\2\u0443\u0444\7K\2\2\u0444\u0445\7T\2\2\u0445\u0446") + buf.write("\7G\2\2\u0446\u0447\7E\2\2\u0447\u0448\7V\2\2\u0448\u0449") + buf.write("\7Q\2\2\u0449\u044a\7T\2\2\u044a\u044b\7K\2\2\u044b\u044c") + buf.write("\7G\2\2\u044c\u044d\7U\2\2\u044d\u0092\3\2\2\2\u044e\u044f") + buf.write("\7F\2\2\u044f\u0450\7K\2\2\u0450\u0451\7T\2\2\u0451\u0452") + buf.write("\7G\2\2\u0452\u0453\7E\2\2\u0453\u0454\7V\2\2\u0454\u0455") + buf.write("\7Q\2\2\u0455\u0456\7T\2\2\u0456\u0457\7[\2\2\u0457\u0094") + buf.write("\3\2\2\2\u0458\u0459\7F\2\2\u0459\u045a\7K\2\2\u045a\u045b") + buf.write("\7U\2\2\u045b\u045c\7V\2\2\u045c\u045d\7K\2\2\u045d\u045e") + buf.write("\7P\2\2\u045e\u045f\7E\2\2\u045f\u0460\7V\2\2\u0460\u0096") + buf.write("\3\2\2\2\u0461\u0462\7F\2\2\u0462\u0463\7K\2\2\u0463\u0464") + buf.write("\7U\2\2\u0464\u0465\7V\2\2\u0465\u0466\7T\2\2\u0466\u0467") + buf.write("\7K\2\2\u0467\u0468\7D\2\2\u0468\u0469\7W\2\2\u0469\u046a") + buf.write("\7V\2\2\u046a\u046b\7G\2\2\u046b\u0098\3\2\2\2\u046c\u046d") + buf.write("\7F\2\2\u046d\u046e\7T\2\2\u046e\u046f\7Q\2\2\u046f\u0470") + buf.write("\7R\2\2\u0470\u009a\3\2\2\2\u0471\u0472\7G\2\2\u0472\u0473") + buf.write("\7N\2\2\u0473\u0474\7U\2\2\u0474\u0475\7G\2\2\u0475\u009c") + buf.write("\3\2\2\2\u0476\u0477\7G\2\2\u0477\u0478\7P\2\2\u0478\u0479") + buf.write("\7F\2\2\u0479\u009e\3\2\2\2\u047a\u047b\7G\2\2\u047b\u047c") + buf.write("\7U\2\2\u047c\u047d\7E\2\2\u047d\u047e\7C\2\2\u047e\u047f") + buf.write("\7R\2\2\u047f\u0480\7G\2\2\u0480\u00a0\3\2\2\2\u0481\u0482") + buf.write("\7G\2\2\u0482\u0483\7U\2\2\u0483\u0484\7E\2\2\u0484\u0485") + buf.write("\7C\2\2\u0485\u0486\7R\2\2\u0486\u0487\7G\2\2\u0487\u0488") + buf.write("\7F\2\2\u0488\u00a2\3\2\2\2\u0489\u048a\7G\2\2\u048a\u048b") + buf.write("\7Z\2\2\u048b\u048c\7E\2\2\u048c\u048d\7G\2\2\u048d\u048e") + buf.write("\7R\2\2\u048e\u048f\7V\2\2\u048f\u00a4\3\2\2\2\u0490\u0491") + buf.write("\7G\2\2\u0491\u0492\7Z\2\2\u0492\u0493\7E\2\2\u0493\u0494") + buf.write("\7J\2\2\u0494\u0495\7C\2\2\u0495\u0496\7P\2\2\u0496\u0497") + buf.write("\7I\2\2\u0497\u0498\7G\2\2\u0498\u00a6\3\2\2\2\u0499\u049a") + buf.write("\7G\2\2\u049a\u049b\7Z\2\2\u049b\u049c\7K\2\2\u049c\u049d") + buf.write("\7U\2\2\u049d\u049e\7V\2\2\u049e\u049f\7U\2\2\u049f\u00a8") + buf.write("\3\2\2\2\u04a0\u04a1\7G\2\2\u04a1\u04a2\7Z\2\2\u04a2\u04a3") + buf.write("\7R\2\2\u04a3\u04a4\7N\2\2\u04a4\u04a5\7C\2\2\u04a5\u04a6") + buf.write("\7K\2\2\u04a6\u04a7\7P\2\2\u04a7\u00aa\3\2\2\2\u04a8\u04a9") + buf.write("\7G\2\2\u04a9\u04aa\7Z\2\2\u04aa\u04ab\7R\2\2\u04ab\u04ac") + buf.write("\7Q\2\2\u04ac\u04ad\7T\2\2\u04ad\u04ae\7V\2\2\u04ae\u00ac") + buf.write("\3\2\2\2\u04af\u04b0\7G\2\2\u04b0\u04b1\7Z\2\2\u04b1\u04b2") + buf.write("\7V\2\2\u04b2\u04b3\7G\2\2\u04b3\u04b4\7P\2\2\u04b4\u04b5") + buf.write("\7F\2\2\u04b5\u04b6\7G\2\2\u04b6\u04b7\7F\2\2\u04b7\u00ae") + buf.write("\3\2\2\2\u04b8\u04b9\7G\2\2\u04b9\u04ba\7Z\2\2\u04ba\u04bb") + buf.write("\7V\2\2\u04bb\u04bc\7G\2\2\u04bc\u04bd\7T\2\2\u04bd\u04be") + buf.write("\7P\2\2\u04be\u04bf\7C\2\2\u04bf\u04c0\7N\2\2\u04c0\u00b0") + buf.write("\3\2\2\2\u04c1\u04c2\7G\2\2\u04c2\u04c3\7Z\2\2\u04c3\u04c4") + buf.write("\7V\2\2\u04c4\u04c5\7T\2\2\u04c5\u04c6\7C\2\2\u04c6\u04c7") + buf.write("\7E\2\2\u04c7\u04c8\7V\2\2\u04c8\u00b2\3\2\2\2\u04c9\u04ca") + buf.write("\7H\2\2\u04ca\u04cb\7C\2\2\u04cb\u04cc\7N\2\2\u04cc\u04cd") + buf.write("\7U\2\2\u04cd\u04ce\7G\2\2\u04ce\u00b4\3\2\2\2\u04cf\u04d0") + buf.write("\7H\2\2\u04d0\u04d1\7G\2\2\u04d1\u04d2\7V\2\2\u04d2\u04d3") + buf.write("\7E\2\2\u04d3\u04d4\7J\2\2\u04d4\u00b6\3\2\2\2\u04d5\u04d6") + buf.write("\7H\2\2\u04d6\u04d7\7K\2\2\u04d7\u04d8\7G\2\2\u04d8\u04d9") + buf.write("\7N\2\2\u04d9\u04da\7F\2\2\u04da\u04db\7U\2\2\u04db\u00b8") + buf.write("\3\2\2\2\u04dc\u04dd\7H\2\2\u04dd\u04de\7K\2\2\u04de\u04df") + buf.write("\7N\2\2\u04df\u04e0\7V\2\2\u04e0\u04e1\7G\2\2\u04e1\u04e2") + buf.write("\7T\2\2\u04e2\u00ba\3\2\2\2\u04e3\u04e4\7H\2\2\u04e4\u04e5") + buf.write("\7K\2\2\u04e5\u04e6\7N\2\2\u04e6\u04e7\7G\2\2\u04e7\u04e8") + buf.write("\7H\2\2\u04e8\u04e9\7Q\2\2\u04e9\u04ea\7T\2\2\u04ea\u04eb") + buf.write("\7O\2\2\u04eb\u04ec\7C\2\2\u04ec\u04ed\7V\2\2\u04ed\u00bc") + buf.write("\3\2\2\2\u04ee\u04ef\7H\2\2\u04ef\u04f0\7K\2\2\u04f0\u04f1") + buf.write("\7T\2\2\u04f1\u04f2\7U\2\2\u04f2\u04f3\7V\2\2\u04f3\u00be") + buf.write("\3\2\2\2\u04f4\u04f5\7H\2\2\u04f5\u04f6\7Q\2\2\u04f6\u04f7") + buf.write("\7N\2\2\u04f7\u04f8\7N\2\2\u04f8\u04f9\7Q\2\2\u04f9\u04fa") + buf.write("\7Y\2\2\u04fa\u04fb\7K\2\2\u04fb\u04fc\7P\2\2\u04fc\u04fd") + buf.write("\7I\2\2\u04fd\u00c0\3\2\2\2\u04fe\u04ff\7H\2\2\u04ff\u0500") + buf.write("\7Q\2\2\u0500\u0501\7T\2\2\u0501\u00c2\3\2\2\2\u0502\u0503") + buf.write("\7H\2\2\u0503\u0504\7Q\2\2\u0504\u0505\7T\2\2\u0505\u0506") + buf.write("\7G\2\2\u0506\u0507\7K\2\2\u0507\u0508\7I\2\2\u0508\u0509") + buf.write("\7P\2\2\u0509\u00c4\3\2\2\2\u050a\u050b\7H\2\2\u050b\u050c") + buf.write("\7Q\2\2\u050c\u050d\7T\2\2\u050d\u050e\7O\2\2\u050e\u050f") + buf.write("\7C\2\2\u050f\u0510\7V\2\2\u0510\u00c6\3\2\2\2\u0511\u0512") + buf.write("\7H\2\2\u0512\u0513\7Q\2\2\u0513\u0514\7T\2\2\u0514\u0515") + buf.write("\7O\2\2\u0515\u0516\7C\2\2\u0516\u0517\7V\2\2\u0517\u0518") + buf.write("\7V\2\2\u0518\u0519\7G\2\2\u0519\u051a\7F\2\2\u051a\u00c8") + buf.write("\3\2\2\2\u051b\u051c\7H\2\2\u051c\u051d\7T\2\2\u051d\u051e") + buf.write("\7Q\2\2\u051e\u051f\7O\2\2\u051f\u00ca\3\2\2\2\u0520\u0521") + buf.write("\7H\2\2\u0521\u0522\7W\2\2\u0522\u0523\7N\2\2\u0523\u0524") + buf.write("\7N\2\2\u0524\u00cc\3\2\2\2\u0525\u0526\7H\2\2\u0526\u0527") + buf.write("\7W\2\2\u0527\u0528\7P\2\2\u0528\u0529\7E\2\2\u0529\u052a") + buf.write("\7V\2\2\u052a\u052b\7K\2\2\u052b\u052c\7Q\2\2\u052c\u052d") + buf.write("\7P\2\2\u052d\u00ce\3\2\2\2\u052e\u052f\7H\2\2\u052f\u0530") + buf.write("\7W\2\2\u0530\u0531\7P\2\2\u0531\u0532\7E\2\2\u0532\u0533") + buf.write("\7V\2\2\u0533\u0534\7K\2\2\u0534\u0535\7Q\2\2\u0535\u0536") + buf.write("\7P\2\2\u0536\u0537\7U\2\2\u0537\u00d0\3\2\2\2\u0538\u0539") + buf.write("\7I\2\2\u0539\u053a\7N\2\2\u053a\u053b\7Q\2\2\u053b\u053c") + buf.write("\7D\2\2\u053c\u053d\7C\2\2\u053d\u053e\7N\2\2\u053e\u00d2") + buf.write("\3\2\2\2\u053f\u0540\7I\2\2\u0540\u0541\7T\2\2\u0541\u0542") + buf.write("\7C\2\2\u0542\u0543\7P\2\2\u0543\u0544\7V\2\2\u0544\u00d4") + buf.write("\3\2\2\2\u0545\u0546\7I\2\2\u0546\u0547\7T\2\2\u0547\u0548") + buf.write("\7Q\2\2\u0548\u0549\7W\2\2\u0549\u054a\7R\2\2\u054a\u00d6") + buf.write("\3\2\2\2\u054b\u054c\7I\2\2\u054c\u054d\7T\2\2\u054d\u054e") + buf.write("\7Q\2\2\u054e\u054f\7W\2\2\u054f\u0550\7R\2\2\u0550\u0551") + buf.write("\7K\2\2\u0551\u0552\7P\2\2\u0552\u0553\7I\2\2\u0553\u00d8") + buf.write("\3\2\2\2\u0554\u0555\7J\2\2\u0555\u0556\7C\2\2\u0556\u0557") + buf.write("\7X\2\2\u0557\u0558\7K\2\2\u0558\u0559\7P\2\2\u0559\u055a") + buf.write("\7I\2\2\u055a\u00da\3\2\2\2\u055b\u055c\7J\2\2\u055c\u055d") + buf.write("\7Q\2\2\u055d\u055e\7W\2\2\u055e\u055f\7T\2\2\u055f\u00dc") + buf.write("\3\2\2\2\u0560\u0561\7K\2\2\u0561\u0562\7H\2\2\u0562\u00de") + buf.write("\3\2\2\2\u0563\u0564\7K\2\2\u0564\u0565\7I\2\2\u0565\u0566") + buf.write("\7P\2\2\u0566\u0567\7Q\2\2\u0567\u0568\7T\2\2\u0568\u0569") + buf.write("\7G\2\2\u0569\u00e0\3\2\2\2\u056a\u056b\7K\2\2\u056b\u056c") + buf.write("\7O\2\2\u056c\u056d\7R\2\2\u056d\u056e\7Q\2\2\u056e\u056f") + buf.write("\7T\2\2\u056f\u0570\7V\2\2\u0570\u00e2\3\2\2\2\u0571\u0572") + buf.write("\7K\2\2\u0572\u0573\7P\2\2\u0573\u00e4\3\2\2\2\u0574\u0575") + buf.write("\7K\2\2\u0575\u0576\7P\2\2\u0576\u0577\7F\2\2\u0577\u0578") + buf.write("\7G\2\2\u0578\u0579\7Z\2\2\u0579\u00e6\3\2\2\2\u057a\u057b") + buf.write("\7K\2\2\u057b\u057c\7P\2\2\u057c\u057d\7F\2\2\u057d\u057e") + buf.write("\7G\2\2\u057e\u057f\7Z\2\2\u057f\u0580\7G\2\2\u0580\u0581") + buf.write("\7U\2\2\u0581\u00e8\3\2\2\2\u0582\u0583\7K\2\2\u0583\u0584") + buf.write("\7P\2\2\u0584\u0585\7P\2\2\u0585\u0586\7G\2\2\u0586\u0587") + buf.write("\7T\2\2\u0587\u00ea\3\2\2\2\u0588\u0589\7K\2\2\u0589\u058a") + buf.write("\7P\2\2\u058a\u058b\7R\2\2\u058b\u058c\7C\2\2\u058c\u058d") + buf.write("\7V\2\2\u058d\u058e\7J\2\2\u058e\u00ec\3\2\2\2\u058f\u0590") + buf.write("\7K\2\2\u0590\u0591\7P\2\2\u0591\u0592\7R\2\2\u0592\u0593") + buf.write("\7W\2\2\u0593\u0594\7V\2\2\u0594\u0595\7H\2\2\u0595\u0596") + buf.write("\7Q\2\2\u0596\u0597\7T\2\2\u0597\u0598\7O\2\2\u0598\u0599") + buf.write("\7C\2\2\u0599\u059a\7V\2\2\u059a\u00ee\3\2\2\2\u059b\u059c") + buf.write("\7K\2\2\u059c\u059d\7P\2\2\u059d\u059e\7U\2\2\u059e\u059f") + buf.write("\7G\2\2\u059f\u05a0\7T\2\2\u05a0\u05a1\7V\2\2\u05a1\u00f0") + buf.write("\3\2\2\2\u05a2\u05a3\7K\2\2\u05a3\u05a4\7P\2\2\u05a4\u05a5") + buf.write("\7V\2\2\u05a5\u05a6\7G\2\2\u05a6\u05a7\7T\2\2\u05a7\u05a8") + buf.write("\7U\2\2\u05a8\u05a9\7G\2\2\u05a9\u05aa\7E\2\2\u05aa\u05ab") + buf.write("\7V\2\2\u05ab\u00f2\3\2\2\2\u05ac\u05ad\7K\2\2\u05ad\u05ae") + buf.write("\7P\2\2\u05ae\u05af\7V\2\2\u05af\u05b0\7G\2\2\u05b0\u05b1") + buf.write("\7T\2\2\u05b1\u05b2\7X\2\2\u05b2\u05b3\7C\2\2\u05b3\u05b4") + buf.write("\7N\2\2\u05b4\u00f4\3\2\2\2\u05b5\u05b6\7K\2\2\u05b6\u05b7") + buf.write("\7P\2\2\u05b7\u05b8\7V\2\2\u05b8\u05b9\7Q\2\2\u05b9\u00f6") + buf.write("\3\2\2\2\u05ba\u05bb\7K\2\2\u05bb\u05bc\7U\2\2\u05bc\u00f8") + buf.write("\3\2\2\2\u05bd\u05be\7K\2\2\u05be\u05bf\7V\2\2\u05bf\u05c0") + buf.write("\7G\2\2\u05c0\u05c1\7O\2\2\u05c1\u05c2\7U\2\2\u05c2\u00fa") + buf.write("\3\2\2\2\u05c3\u05c4\7L\2\2\u05c4\u05c5\7Q\2\2\u05c5\u05c6") + buf.write("\7K\2\2\u05c6\u05c7\7P\2\2\u05c7\u00fc\3\2\2\2\u05c8\u05c9") + buf.write("\7M\2\2\u05c9\u05ca\7G\2\2\u05ca\u05cb\7[\2\2\u05cb\u05cc") + buf.write("\7U\2\2\u05cc\u00fe\3\2\2\2\u05cd\u05ce\7N\2\2\u05ce\u05cf") + buf.write("\7C\2\2\u05cf\u05d0\7U\2\2\u05d0\u05d1\7V\2\2\u05d1\u0100") + buf.write("\3\2\2\2\u05d2\u05d3\7N\2\2\u05d3\u05d4\7C\2\2\u05d4\u05d5") + buf.write("\7V\2\2\u05d5\u05d6\7G\2\2\u05d6\u05d7\7T\2\2\u05d7\u05d8") + buf.write("\7C\2\2\u05d8\u05d9\7N\2\2\u05d9\u0102\3\2\2\2\u05da\u05db") + buf.write("\7N\2\2\u05db\u05dc\7C\2\2\u05dc\u05dd\7\\\2\2\u05dd\u05de") + buf.write("\7[\2\2\u05de\u0104\3\2\2\2\u05df\u05e0\7N\2\2\u05e0\u05e1") + buf.write("\7G\2\2\u05e1\u05e2\7C\2\2\u05e2\u05e3\7F\2\2\u05e3\u05e4") + buf.write("\7K\2\2\u05e4\u05e5\7P\2\2\u05e5\u05e6\7I\2\2\u05e6\u0106") + buf.write("\3\2\2\2\u05e7\u05e8\7N\2\2\u05e8\u05e9\7G\2\2\u05e9\u05ea") + buf.write("\7H\2\2\u05ea\u05eb\7V\2\2\u05eb\u0108\3\2\2\2\u05ec\u05ed") + buf.write("\7N\2\2\u05ed\u05ee\7K\2\2\u05ee\u05ef\7M\2\2\u05ef\u05f0") + buf.write("\7G\2\2\u05f0\u010a\3\2\2\2\u05f1\u05f2\7N\2\2\u05f2\u05f3") + buf.write("\7K\2\2\u05f3\u05f4\7O\2\2\u05f4\u05f5\7K\2\2\u05f5\u05f6") + buf.write("\7V\2\2\u05f6\u010c\3\2\2\2\u05f7\u05f8\7N\2\2\u05f8\u05f9") + buf.write("\7K\2\2\u05f9\u05fa\7P\2\2\u05fa\u05fb\7G\2\2\u05fb\u05fc") + buf.write("\7U\2\2\u05fc\u010e\3\2\2\2\u05fd\u05fe\7N\2\2\u05fe\u05ff") + buf.write("\7K\2\2\u05ff\u0600\7U\2\2\u0600\u0601\7V\2\2\u0601\u0110") + buf.write("\3\2\2\2\u0602\u0603\7N\2\2\u0603\u0604\7Q\2\2\u0604\u0605") + buf.write("\7C\2\2\u0605\u0606\7F\2\2\u0606\u0112\3\2\2\2\u0607\u0608") + buf.write("\7N\2\2\u0608\u0609\7Q\2\2\u0609\u060a\7E\2\2\u060a\u060b") + buf.write("\7C\2\2\u060b\u060c\7N\2\2\u060c\u0114\3\2\2\2\u060d\u060e") + buf.write("\7N\2\2\u060e\u060f\7Q\2\2\u060f\u0610\7E\2\2\u0610\u0611") + buf.write("\7C\2\2\u0611\u0612\7V\2\2\u0612\u0613\7K\2\2\u0613\u0614") + buf.write("\7Q\2\2\u0614\u0615\7P\2\2\u0615\u0116\3\2\2\2\u0616\u0617") + buf.write("\7N\2\2\u0617\u0618\7Q\2\2\u0618\u0619\7E\2\2\u0619\u061a") + buf.write("\7M\2\2\u061a\u0118\3\2\2\2\u061b\u061c\7N\2\2\u061c\u061d") + buf.write("\7Q\2\2\u061d\u061e\7E\2\2\u061e\u061f\7M\2\2\u061f\u0620") + buf.write("\7U\2\2\u0620\u011a\3\2\2\2\u0621\u0622\7N\2\2\u0622\u0623") + buf.write("\7Q\2\2\u0623\u0624\7I\2\2\u0624\u0625\7K\2\2\u0625\u0626") + buf.write("\7E\2\2\u0626\u0627\7C\2\2\u0627\u0628\7N\2\2\u0628\u011c") + buf.write("\3\2\2\2\u0629\u062a\7O\2\2\u062a\u062b\7C\2\2\u062b\u062c") + buf.write("\7E\2\2\u062c\u062d\7T\2\2\u062d\u062e\7Q\2\2\u062e\u011e") + buf.write("\3\2\2\2\u062f\u0630\7O\2\2\u0630\u0631\7C\2\2\u0631\u0632") + buf.write("\7R\2\2\u0632\u0120\3\2\2\2\u0633\u0634\7O\2\2\u0634\u0635") + buf.write("\7C\2\2\u0635\u0636\7V\2\2\u0636\u0637\7E\2\2\u0637\u0638") + buf.write("\7J\2\2\u0638\u0639\7G\2\2\u0639\u063a\7F\2\2\u063a\u0122") + buf.write("\3\2\2\2\u063b\u063c\7O\2\2\u063c\u063d\7G\2\2\u063d\u063e") + buf.write("\7T\2\2\u063e\u063f\7I\2\2\u063f\u0640\7G\2\2\u0640\u0124") + buf.write("\3\2\2\2\u0641\u0642\7O\2\2\u0642\u0643\7K\2\2\u0643\u0644") + buf.write("\7P\2\2\u0644\u0645\7W\2\2\u0645\u0646\7V\2\2\u0646\u0647") + buf.write("\7G\2\2\u0647\u0126\3\2\2\2\u0648\u0649\7O\2\2\u0649\u064a") + buf.write("\7Q\2\2\u064a\u064b\7P\2\2\u064b\u064c\7V\2\2\u064c\u064d") + buf.write("\7J\2\2\u064d\u0128\3\2\2\2\u064e\u064f\7O\2\2\u064f\u0650") + buf.write("\7U\2\2\u0650\u0651\7E\2\2\u0651\u0652\7M\2\2\u0652\u012a") + buf.write("\3\2\2\2\u0653\u0654\7P\2\2\u0654\u0655\7C\2\2\u0655\u0656") + buf.write("\7O\2\2\u0656\u0657\7G\2\2\u0657\u0658\7U\2\2\u0658\u0659") + buf.write("\7R\2\2\u0659\u065a\7C\2\2\u065a\u065b\7E\2\2\u065b\u065c") + buf.write("\7G\2\2\u065c\u012c\3\2\2\2\u065d\u065e\7P\2\2\u065e\u065f") + buf.write("\7C\2\2\u065f\u0660\7O\2\2\u0660\u0661\7G\2\2\u0661\u0662") + buf.write("\7U\2\2\u0662\u0663\7R\2\2\u0663\u0664\7C\2\2\u0664\u0665") + buf.write("\7E\2\2\u0665\u0666\7G\2\2\u0666\u0667\7U\2\2\u0667\u012e") + buf.write("\3\2\2\2\u0668\u0669\7P\2\2\u0669\u066a\7C\2\2\u066a\u066b") + buf.write("\7V\2\2\u066b\u066c\7W\2\2\u066c\u066d\7T\2\2\u066d\u066e") + buf.write("\7C\2\2\u066e\u066f\7N\2\2\u066f\u0130\3\2\2\2\u0670\u0671") + buf.write("\7P\2\2\u0671\u0672\7Q\2\2\u0672\u0132\3\2\2\2\u0673\u0674") + buf.write("\7P\2\2\u0674\u0675\7Q\2\2\u0675\u0678\7V\2\2\u0676\u0678") + buf.write("\7#\2\2\u0677\u0673\3\2\2\2\u0677\u0676\3\2\2\2\u0678") + buf.write("\u0134\3\2\2\2\u0679\u067a\7P\2\2\u067a\u067b\7W\2\2\u067b") + buf.write("\u067c\7N\2\2\u067c\u067d\7N\2\2\u067d\u0136\3\2\2\2\u067e") + buf.write("\u067f\7P\2\2\u067f\u0680\7W\2\2\u0680\u0681\7N\2\2\u0681") + buf.write("\u0682\7N\2\2\u0682\u0683\7U\2\2\u0683\u0138\3\2\2\2\u0684") + buf.write("\u0685\7Q\2\2\u0685\u0686\7H\2\2\u0686\u013a\3\2\2\2\u0687") + buf.write("\u0688\7Q\2\2\u0688\u0689\7P\2\2\u0689\u013c\3\2\2\2\u068a") + buf.write("\u068b\7Q\2\2\u068b\u068c\7P\2\2\u068c\u068d\7N\2\2\u068d") + buf.write("\u068e\7[\2\2\u068e\u013e\3\2\2\2\u068f\u0690\7Q\2\2\u0690") + buf.write("\u0691\7R\2\2\u0691\u0692\7V\2\2\u0692\u0693\7K\2\2\u0693") + buf.write("\u0694\7Q\2\2\u0694\u0695\7P\2\2\u0695\u0140\3\2\2\2\u0696") + buf.write("\u0697\7Q\2\2\u0697\u0698\7R\2\2\u0698\u0699\7V\2\2\u0699") + buf.write("\u069a\7K\2\2\u069a\u069b\7Q\2\2\u069b\u069c\7P\2\2\u069c") + buf.write("\u069d\7U\2\2\u069d\u0142\3\2\2\2\u069e\u069f\7Q\2\2\u069f") + buf.write("\u06a0\7T\2\2\u06a0\u0144\3\2\2\2\u06a1\u06a2\7Q\2\2\u06a2") + buf.write("\u06a3\7T\2\2\u06a3\u06a4\7F\2\2\u06a4\u06a5\7G\2\2\u06a5") + buf.write("\u06a6\7T\2\2\u06a6\u0146\3\2\2\2\u06a7\u06a8\7Q\2\2\u06a8") + buf.write("\u06a9\7W\2\2\u06a9\u06aa\7V\2\2\u06aa\u0148\3\2\2\2\u06ab") + buf.write("\u06ac\7Q\2\2\u06ac\u06ad\7W\2\2\u06ad\u06ae\7V\2\2\u06ae") + buf.write("\u06af\7G\2\2\u06af\u06b0\7T\2\2\u06b0\u014a\3\2\2\2\u06b1") + buf.write("\u06b2\7Q\2\2\u06b2\u06b3\7W\2\2\u06b3\u06b4\7V\2\2\u06b4") + buf.write("\u06b5\7R\2\2\u06b5\u06b6\7W\2\2\u06b6\u06b7\7V\2\2\u06b7") + buf.write("\u06b8\7H\2\2\u06b8\u06b9\7Q\2\2\u06b9\u06ba\7T\2\2\u06ba") + buf.write("\u06bb\7O\2\2\u06bb\u06bc\7C\2\2\u06bc\u06bd\7V\2\2\u06bd") + buf.write("\u014c\3\2\2\2\u06be\u06bf\7Q\2\2\u06bf\u06c0\7X\2\2\u06c0") + buf.write("\u06c1\7G\2\2\u06c1\u06c2\7T\2\2\u06c2\u014e\3\2\2\2\u06c3") + buf.write("\u06c4\7Q\2\2\u06c4\u06c5\7X\2\2\u06c5\u06c6\7G\2\2\u06c6") + buf.write("\u06c7\7T\2\2\u06c7\u06c8\7N\2\2\u06c8\u06c9\7C\2\2\u06c9") + buf.write("\u06ca\7R\2\2\u06ca\u06cb\7U\2\2\u06cb\u0150\3\2\2\2\u06cc") + buf.write("\u06cd\7Q\2\2\u06cd\u06ce\7X\2\2\u06ce\u06cf\7G\2\2\u06cf") + buf.write("\u06d0\7T\2\2\u06d0\u06d1\7N\2\2\u06d1\u06d2\7C\2\2\u06d2") + buf.write("\u06d3\7[\2\2\u06d3\u0152\3\2\2\2\u06d4\u06d5\7Q\2\2\u06d5") + buf.write("\u06d6\7X\2\2\u06d6\u06d7\7G\2\2\u06d7\u06d8\7T\2\2\u06d8") + buf.write("\u06d9\7Y\2\2\u06d9\u06da\7T\2\2\u06da\u06db\7K\2\2\u06db") + buf.write("\u06dc\7V\2\2\u06dc\u06dd\7G\2\2\u06dd\u0154\3\2\2\2\u06de") + buf.write("\u06df\7R\2\2\u06df\u06e0\7C\2\2\u06e0\u06e1\7T\2\2\u06e1") + buf.write("\u06e2\7V\2\2\u06e2\u06e3\7K\2\2\u06e3\u06e4\7V\2\2\u06e4") + buf.write("\u06e5\7K\2\2\u06e5\u06e6\7Q\2\2\u06e6\u06e7\7P\2\2\u06e7") + buf.write("\u0156\3\2\2\2\u06e8\u06e9\7R\2\2\u06e9\u06ea\7C\2\2\u06ea") + buf.write("\u06eb\7T\2\2\u06eb\u06ec\7V\2\2\u06ec\u06ed\7K\2\2\u06ed") + buf.write("\u06ee\7V\2\2\u06ee\u06ef\7K\2\2\u06ef\u06f0\7Q\2\2\u06f0") + buf.write("\u06f1\7P\2\2\u06f1\u06f2\7G\2\2\u06f2\u06f3\7F\2\2\u06f3") + buf.write("\u0158\3\2\2\2\u06f4\u06f5\7R\2\2\u06f5\u06f6\7C\2\2\u06f6") + buf.write("\u06f7\7T\2\2\u06f7\u06f8\7V\2\2\u06f8\u06f9\7K\2\2\u06f9") + buf.write("\u06fa\7V\2\2\u06fa\u06fb\7K\2\2\u06fb\u06fc\7Q\2\2\u06fc") + buf.write("\u06fd\7P\2\2\u06fd\u06fe\7U\2\2\u06fe\u015a\3\2\2\2\u06ff") + buf.write("\u0700\7R\2\2\u0700\u0701\7G\2\2\u0701\u0702\7T\2\2\u0702") + buf.write("\u0703\7E\2\2\u0703\u0704\7G\2\2\u0704\u0705\7P\2\2\u0705") + buf.write("\u0706\7V\2\2\u0706\u015c\3\2\2\2\u0707\u0708\7R\2\2\u0708") + buf.write("\u0709\7K\2\2\u0709\u070a\7X\2\2\u070a\u070b\7Q\2\2\u070b") + buf.write("\u070c\7V\2\2\u070c\u015e\3\2\2\2\u070d\u070e\7R\2\2\u070e") + buf.write("\u070f\7N\2\2\u070f\u0710\7C\2\2\u0710\u0711\7E\2\2\u0711") + buf.write("\u0712\7K\2\2\u0712\u0713\7P\2\2\u0713\u0714\7I\2\2\u0714") + buf.write("\u0160\3\2\2\2\u0715\u0716\7R\2\2\u0716\u0717\7Q\2\2\u0717") + buf.write("\u0718\7U\2\2\u0718\u0719\7K\2\2\u0719\u071a\7V\2\2\u071a") + buf.write("\u071b\7K\2\2\u071b\u071c\7Q\2\2\u071c\u071d\7P\2\2\u071d") + buf.write("\u0162\3\2\2\2\u071e\u071f\7R\2\2\u071f\u0720\7T\2\2\u0720") + buf.write("\u0721\7G\2\2\u0721\u0722\7E\2\2\u0722\u0723\7G\2\2\u0723") + buf.write("\u0724\7F\2\2\u0724\u0725\7K\2\2\u0725\u0726\7P\2\2\u0726") + buf.write("\u0727\7I\2\2\u0727\u0164\3\2\2\2\u0728\u0729\7R\2\2\u0729") + buf.write("\u072a\7T\2\2\u072a\u072b\7K\2\2\u072b\u072c\7O\2\2\u072c") + buf.write("\u072d\7C\2\2\u072d\u072e\7T\2\2\u072e\u072f\7[\2\2\u072f") + buf.write("\u0166\3\2\2\2\u0730\u0731\7R\2\2\u0731\u0732\7T\2\2\u0732") + buf.write("\u0733\7K\2\2\u0733\u0734\7P\2\2\u0734\u0735\7E\2\2\u0735") + buf.write("\u0736\7K\2\2\u0736\u0737\7R\2\2\u0737\u0738\7C\2\2\u0738") + buf.write("\u0739\7N\2\2\u0739\u073a\7U\2\2\u073a\u0168\3\2\2\2\u073b") + buf.write("\u073c\7R\2\2\u073c\u073d\7T\2\2\u073d\u073e\7Q\2\2\u073e") + buf.write("\u073f\7R\2\2\u073f\u0740\7G\2\2\u0740\u0741\7T\2\2\u0741") + buf.write("\u0742\7V\2\2\u0742\u0743\7K\2\2\u0743\u0744\7G\2\2\u0744") + buf.write("\u0745\7U\2\2\u0745\u016a\3\2\2\2\u0746\u0747\7R\2\2\u0747") + buf.write("\u0748\7W\2\2\u0748\u0749\7T\2\2\u0749\u074a\7I\2\2\u074a") + buf.write("\u074b\7G\2\2\u074b\u016c\3\2\2\2\u074c\u074d\7S\2\2\u074d") + buf.write("\u074e\7W\2\2\u074e\u074f\7G\2\2\u074f\u0750\7T\2\2\u0750") + buf.write("\u0751\7[\2\2\u0751\u016e\3\2\2\2\u0752\u0753\7T\2\2\u0753") + buf.write("\u0754\7C\2\2\u0754\u0755\7P\2\2\u0755\u0756\7I\2\2\u0756") + buf.write("\u0757\7G\2\2\u0757\u0170\3\2\2\2\u0758\u0759\7T\2\2\u0759") + buf.write("\u075a\7G\2\2\u075a\u075b\7E\2\2\u075b\u075c\7Q\2\2\u075c") + buf.write("\u075d\7T\2\2\u075d\u075e\7F\2\2\u075e\u075f\7T\2\2\u075f") + buf.write("\u0760\7G\2\2\u0760\u0761\7C\2\2\u0761\u0762\7F\2\2\u0762") + buf.write("\u0763\7G\2\2\u0763\u0764\7T\2\2\u0764\u0172\3\2\2\2\u0765") + buf.write("\u0766\7T\2\2\u0766\u0767\7G\2\2\u0767\u0768\7E\2\2\u0768") + buf.write("\u0769\7Q\2\2\u0769\u076a\7T\2\2\u076a\u076b\7F\2\2\u076b") + buf.write("\u076c\7Y\2\2\u076c\u076d\7T\2\2\u076d\u076e\7K\2\2\u076e") + buf.write("\u076f\7V\2\2\u076f\u0770\7G\2\2\u0770\u0771\7T\2\2\u0771") + buf.write("\u0174\3\2\2\2\u0772\u0773\7T\2\2\u0773\u0774\7G\2\2\u0774") + buf.write("\u0775\7E\2\2\u0775\u0776\7Q\2\2\u0776\u0777\7X\2\2\u0777") + buf.write("\u0778\7G\2\2\u0778\u0779\7T\2\2\u0779\u0176\3\2\2\2\u077a") + buf.write("\u077b\7T\2\2\u077b\u077c\7G\2\2\u077c\u077d\7F\2\2\u077d") + buf.write("\u077e\7W\2\2\u077e\u077f\7E\2\2\u077f\u0780\7G\2\2\u0780") + buf.write("\u0178\3\2\2\2\u0781\u0782\7T\2\2\u0782\u0783\7G\2\2\u0783") + buf.write("\u0784\7H\2\2\u0784\u0785\7G\2\2\u0785\u0786\7T\2\2\u0786") + buf.write("\u0787\7G\2\2\u0787\u0788\7P\2\2\u0788\u0789\7E\2\2\u0789") + buf.write("\u078a\7G\2\2\u078a\u078b\7U\2\2\u078b\u017a\3\2\2\2\u078c") + buf.write("\u078d\7T\2\2\u078d\u078e\7G\2\2\u078e\u078f\7H\2\2\u078f") + buf.write("\u0790\7T\2\2\u0790\u0791\7G\2\2\u0791\u0792\7U\2\2\u0792") + buf.write("\u0793\7J\2\2\u0793\u017c\3\2\2\2\u0794\u0795\7T\2\2\u0795") + buf.write("\u0796\7G\2\2\u0796\u0797\7P\2\2\u0797\u0798\7C\2\2\u0798") + buf.write("\u0799\7O\2\2\u0799\u079a\7G\2\2\u079a\u017e\3\2\2\2\u079b") + buf.write("\u079c\7T\2\2\u079c\u079d\7G\2\2\u079d\u079e\7R\2\2\u079e") + buf.write("\u079f\7C\2\2\u079f\u07a0\7K\2\2\u07a0\u07a1\7T\2\2\u07a1") + buf.write("\u0180\3\2\2\2\u07a2\u07a3\7T\2\2\u07a3\u07a4\7G\2\2\u07a4") + buf.write("\u07a5\7R\2\2\u07a5\u07a6\7N\2\2\u07a6\u07a7\7C\2\2\u07a7") + buf.write("\u07a8\7E\2\2\u07a8\u07a9\7G\2\2\u07a9\u0182\3\2\2\2\u07aa") + buf.write("\u07ab\7T\2\2\u07ab\u07ac\7G\2\2\u07ac\u07ad\7U\2\2\u07ad") + buf.write("\u07ae\7G\2\2\u07ae\u07af\7V\2\2\u07af\u0184\3\2\2\2\u07b0") + buf.write("\u07b1\7T\2\2\u07b1\u07b2\7G\2\2\u07b2\u07b3\7U\2\2\u07b3") + buf.write("\u07b4\7V\2\2\u07b4\u07b5\7T\2\2\u07b5\u07b6\7K\2\2\u07b6") + buf.write("\u07b7\7E\2\2\u07b7\u07b8\7V\2\2\u07b8\u0186\3\2\2\2\u07b9") + buf.write("\u07ba\7T\2\2\u07ba\u07bb\7G\2\2\u07bb\u07bc\7X\2\2\u07bc") + buf.write("\u07bd\7Q\2\2\u07bd\u07be\7M\2\2\u07be\u07bf\7G\2\2\u07bf") + buf.write("\u0188\3\2\2\2\u07c0\u07c1\7T\2\2\u07c1\u07c2\7K\2\2\u07c2") + buf.write("\u07c3\7I\2\2\u07c3\u07c4\7J\2\2\u07c4\u07c5\7V\2\2\u07c5") + buf.write("\u018a\3\2\2\2\u07c6\u07c7\7T\2\2\u07c7\u07c8\7N\2\2\u07c8") + buf.write("\u07c9\7K\2\2\u07c9\u07ca\7M\2\2\u07ca\u07d2\7G\2\2\u07cb") + buf.write("\u07cc\7T\2\2\u07cc\u07cd\7G\2\2\u07cd\u07ce\7I\2\2\u07ce") + buf.write("\u07cf\7G\2\2\u07cf\u07d0\7Z\2\2\u07d0\u07d2\7R\2\2\u07d1") + buf.write("\u07c6\3\2\2\2\u07d1\u07cb\3\2\2\2\u07d2\u018c\3\2\2\2") + buf.write("\u07d3\u07d4\7T\2\2\u07d4\u07d5\7Q\2\2\u07d5\u07d6\7N") + buf.write("\2\2\u07d6\u07d7\7G\2\2\u07d7\u018e\3\2\2\2\u07d8\u07d9") + buf.write("\7T\2\2\u07d9\u07da\7Q\2\2\u07da\u07db\7N\2\2\u07db\u07dc") + buf.write("\7G\2\2\u07dc\u07dd\7U\2\2\u07dd\u0190\3\2\2\2\u07de\u07df") + buf.write("\7T\2\2\u07df\u07e0\7Q\2\2\u07e0\u07e1\7N\2\2\u07e1\u07e2") + buf.write("\7N\2\2\u07e2\u07e3\7D\2\2\u07e3\u07e4\7C\2\2\u07e4\u07e5") + buf.write("\7E\2\2\u07e5\u07e6\7M\2\2\u07e6\u0192\3\2\2\2\u07e7\u07e8") + buf.write("\7T\2\2\u07e8\u07e9\7Q\2\2\u07e9\u07ea\7N\2\2\u07ea\u07eb") + buf.write("\7N\2\2\u07eb\u07ec\7W\2\2\u07ec\u07ed\7R\2\2\u07ed\u0194") + buf.write("\3\2\2\2\u07ee\u07ef\7T\2\2\u07ef\u07f0\7Q\2\2\u07f0\u07f1") + buf.write("\7Y\2\2\u07f1\u0196\3\2\2\2\u07f2\u07f3\7T\2\2\u07f3\u07f4") + buf.write("\7Q\2\2\u07f4\u07f5\7Y\2\2\u07f5\u07f6\7U\2\2\u07f6\u0198") + buf.write("\3\2\2\2\u07f7\u07f8\7U\2\2\u07f8\u07f9\7E\2\2\u07f9\u07fa") + buf.write("\7J\2\2\u07fa\u07fb\7G\2\2\u07fb\u07fc\7O\2\2\u07fc\u07fd") + buf.write("\7C\2\2\u07fd\u019a\3\2\2\2\u07fe\u07ff\7U\2\2\u07ff\u0800") + buf.write("\7G\2\2\u0800\u0801\7E\2\2\u0801\u0802\7Q\2\2\u0802\u0803") + buf.write("\7P\2\2\u0803\u0804\7F\2\2\u0804\u019c\3\2\2\2\u0805\u0806") + buf.write("\7U\2\2\u0806\u0807\7G\2\2\u0807\u0808\7N\2\2\u0808\u0809") + buf.write("\7G\2\2\u0809\u080a\7E\2\2\u080a\u080b\7V\2\2\u080b\u019e") + buf.write("\3\2\2\2\u080c\u080d\7U\2\2\u080d\u080e\7G\2\2\u080e\u080f") + buf.write("\7O\2\2\u080f\u0810\7K\2\2\u0810\u01a0\3\2\2\2\u0811\u0812") + buf.write("\7U\2\2\u0812\u0813\7G\2\2\u0813\u0814\7R\2\2\u0814\u0815") + buf.write("\7C\2\2\u0815\u0816\7T\2\2\u0816\u0817\7C\2\2\u0817\u0818") + buf.write("\7V\2\2\u0818\u0819\7G\2\2\u0819\u081a\7F\2\2\u081a\u01a2") + buf.write("\3\2\2\2\u081b\u081c\7U\2\2\u081c\u081d\7G\2\2\u081d\u081e") + buf.write("\7T\2\2\u081e\u081f\7F\2\2\u081f\u0820\7G\2\2\u0820\u01a4") + buf.write("\3\2\2\2\u0821\u0822\7U\2\2\u0822\u0823\7G\2\2\u0823\u0824") + buf.write("\7T\2\2\u0824\u0825\7F\2\2\u0825\u0826\7G\2\2\u0826\u0827") + buf.write("\7R\2\2\u0827\u0828\7T\2\2\u0828\u0829\7Q\2\2\u0829\u082a") + buf.write("\7R\2\2\u082a\u082b\7G\2\2\u082b\u082c\7T\2\2\u082c\u082d") + buf.write("\7V\2\2\u082d\u082e\7K\2\2\u082e\u082f\7G\2\2\u082f\u0830") + buf.write("\7U\2\2\u0830\u01a6\3\2\2\2\u0831\u0832\7U\2\2\u0832\u0833") + buf.write("\7G\2\2\u0833\u0834\7U\2\2\u0834\u0835\7U\2\2\u0835\u0836") + buf.write("\7K\2\2\u0836\u0837\7Q\2\2\u0837\u0838\7P\2\2\u0838\u0839") + buf.write("\7a\2\2\u0839\u083a\7W\2\2\u083a\u083b\7U\2\2\u083b\u083c") + buf.write("\7G\2\2\u083c\u083d\7T\2\2\u083d\u01a8\3\2\2\2\u083e\u083f") + buf.write("\7U\2\2\u083f\u0840\7G\2\2\u0840\u0841\7V\2\2\u0841\u01aa") + buf.write("\3\2\2\2\u0842\u0843\7O\2\2\u0843\u0844\7K\2\2\u0844\u0845") + buf.write("\7P\2\2\u0845\u0846\7W\2\2\u0846\u0847\7U\2\2\u0847\u01ac") + buf.write("\3\2\2\2\u0848\u0849\7U\2\2\u0849\u084a\7G\2\2\u084a\u084b") + buf.write("\7V\2\2\u084b\u084c\7U\2\2\u084c\u01ae\3\2\2\2\u084d\u084e") + buf.write("\7U\2\2\u084e\u084f\7J\2\2\u084f\u0850\7Q\2\2\u0850\u0851") + buf.write("\7Y\2\2\u0851\u01b0\3\2\2\2\u0852\u0853\7U\2\2\u0853\u0854") + buf.write("\7M\2\2\u0854\u0855\7G\2\2\u0855\u0856\7Y\2\2\u0856\u0857") + buf.write("\7G\2\2\u0857\u0858\7F\2\2\u0858\u01b2\3\2\2\2\u0859\u085a") + buf.write("\7U\2\2\u085a\u085b\7Q\2\2\u085b\u085c\7O\2\2\u085c\u085d") + buf.write("\7G\2\2\u085d\u01b4\3\2\2\2\u085e\u085f\7U\2\2\u085f\u0860") + buf.write("\7Q\2\2\u0860\u0861\7T\2\2\u0861\u0862\7V\2\2\u0862\u01b6") + buf.write("\3\2\2\2\u0863\u0864\7U\2\2\u0864\u0865\7Q\2\2\u0865\u0866") + buf.write("\7T\2\2\u0866\u0867\7V\2\2\u0867\u0868\7G\2\2\u0868\u0869") + buf.write("\7F\2\2\u0869\u01b8\3\2\2\2\u086a\u086b\7U\2\2\u086b\u086c") + buf.write("\7V\2\2\u086c\u086d\7C\2\2\u086d\u086e\7T\2\2\u086e\u086f") + buf.write("\7V\2\2\u086f\u01ba\3\2\2\2\u0870\u0871\7U\2\2\u0871\u0872") + buf.write("\7V\2\2\u0872\u0873\7C\2\2\u0873\u0874\7V\2\2\u0874\u0875") + buf.write("\7K\2\2\u0875\u0876\7U\2\2\u0876\u0877\7V\2\2\u0877\u0878") + buf.write("\7K\2\2\u0878\u0879\7E\2\2\u0879\u087a\7U\2\2\u087a\u01bc") + buf.write("\3\2\2\2\u087b\u087c\7U\2\2\u087c\u087d\7V\2\2\u087d\u087e") + buf.write("\7Q\2\2\u087e\u087f\7T\2\2\u087f\u0880\7G\2\2\u0880\u0881") + buf.write("\7F\2\2\u0881\u01be\3\2\2\2\u0882\u0883\7U\2\2\u0883\u0884") + buf.write("\7V\2\2\u0884\u0885\7T\2\2\u0885\u0886\7C\2\2\u0886\u0887") + buf.write("\7V\2\2\u0887\u0888\7K\2\2\u0888\u0889\7H\2\2\u0889\u088a") + buf.write("\7[\2\2\u088a\u01c0\3\2\2\2\u088b\u088c\7U\2\2\u088c\u088d") + buf.write("\7V\2\2\u088d\u088e\7T\2\2\u088e\u088f\7W\2\2\u088f\u0890") + buf.write("\7E\2\2\u0890\u0891\7V\2\2\u0891\u01c2\3\2\2\2\u0892\u0893") + buf.write("\7U\2\2\u0893\u0894\7W\2\2\u0894\u0895\7D\2\2\u0895\u0896") + buf.write("\7U\2\2\u0896\u0897\7V\2\2\u0897\u0898\7T\2\2\u0898\u01c4") + buf.write("\3\2\2\2\u0899\u089a\7U\2\2\u089a\u089b\7W\2\2\u089b\u089c") + buf.write("\7D\2\2\u089c\u089d\7U\2\2\u089d\u089e\7V\2\2\u089e\u089f") + buf.write("\7T\2\2\u089f\u08a0\7K\2\2\u08a0\u08a1\7P\2\2\u08a1\u08a2") + buf.write("\7I\2\2\u08a2\u01c6\3\2\2\2\u08a3\u08a4\7V\2\2\u08a4\u08a5") + buf.write("\7C\2\2\u08a5\u08a6\7D\2\2\u08a6\u08a7\7N\2\2\u08a7\u08a8") + buf.write("\7G\2\2\u08a8\u01c8\3\2\2\2\u08a9\u08aa\7V\2\2\u08aa\u08ab") + buf.write("\7C\2\2\u08ab\u08ac\7D\2\2\u08ac\u08ad\7N\2\2\u08ad\u08ae") + buf.write("\7G\2\2\u08ae\u08af\7U\2\2\u08af\u01ca\3\2\2\2\u08b0\u08b1") + buf.write("\7V\2\2\u08b1\u08b2\7C\2\2\u08b2\u08b3\7D\2\2\u08b3\u08b4") + buf.write("\7N\2\2\u08b4\u08b5\7G\2\2\u08b5\u08b6\7U\2\2\u08b6\u08b7") + buf.write("\7C\2\2\u08b7\u08b8\7O\2\2\u08b8\u08b9\7R\2\2\u08b9\u08ba") + buf.write("\7N\2\2\u08ba\u08bb\7G\2\2\u08bb\u01cc\3\2\2\2\u08bc\u08bd") + buf.write("\7V\2\2\u08bd\u08be\7D\2\2\u08be\u08bf\7N\2\2\u08bf\u08c0") + buf.write("\7R\2\2\u08c0\u08c1\7T\2\2\u08c1\u08c2\7Q\2\2\u08c2\u08c3") + buf.write("\7R\2\2\u08c3\u08c4\7G\2\2\u08c4\u08c5\7T\2\2\u08c5\u08c6") + buf.write("\7V\2\2\u08c6\u08c7\7K\2\2\u08c7\u08c8\7G\2\2\u08c8\u08c9") + buf.write("\7U\2\2\u08c9\u01ce\3\2\2\2\u08ca\u08cb\7V\2\2\u08cb\u08cc") + buf.write("\7G\2\2\u08cc\u08cd\7O\2\2\u08cd\u08ce\7R\2\2\u08ce\u08cf") + buf.write("\7Q\2\2\u08cf\u08d0\7T\2\2\u08d0\u08d1\7C\2\2\u08d1\u08d2") + buf.write("\7T\2\2\u08d2\u08d8\7[\2\2\u08d3\u08d4\7V\2\2\u08d4\u08d5") + buf.write("\7G\2\2\u08d5\u08d6\7O\2\2\u08d6\u08d8\7R\2\2\u08d7\u08ca") + buf.write("\3\2\2\2\u08d7\u08d3\3\2\2\2\u08d8\u01d0\3\2\2\2\u08d9") + buf.write("\u08da\7V\2\2\u08da\u08db\7G\2\2\u08db\u08dc\7T\2\2\u08dc") + buf.write("\u08dd\7O\2\2\u08dd\u08de\7K\2\2\u08de\u08df\7P\2\2\u08df") + buf.write("\u08e0\7C\2\2\u08e0\u08e1\7V\2\2\u08e1\u08e2\7G\2\2\u08e2") + buf.write("\u08e3\7F\2\2\u08e3\u01d2\3\2\2\2\u08e4\u08e5\7V\2\2\u08e5") + buf.write("\u08e6\7J\2\2\u08e6\u08e7\7G\2\2\u08e7\u08e8\7P\2\2\u08e8") + buf.write("\u01d4\3\2\2\2\u08e9\u08ea\7V\2\2\u08ea\u08eb\7Q\2\2\u08eb") + buf.write("\u01d6\3\2\2\2\u08ec\u08ed\7V\2\2\u08ed\u08ee\7Q\2\2\u08ee") + buf.write("\u08ef\7W\2\2\u08ef\u08f0\7E\2\2\u08f0\u08f1\7J\2\2\u08f1") + buf.write("\u01d8\3\2\2\2\u08f2\u08f3\7V\2\2\u08f3\u08f4\7T\2\2\u08f4") + buf.write("\u08f5\7C\2\2\u08f5\u08f6\7K\2\2\u08f6\u08f7\7N\2\2\u08f7") + buf.write("\u08f8\7K\2\2\u08f8\u08f9\7P\2\2\u08f9\u08fa\7I\2\2\u08fa") + buf.write("\u01da\3\2\2\2\u08fb\u08fc\7V\2\2\u08fc\u08fd\7T\2\2\u08fd") + buf.write("\u08fe\7C\2\2\u08fe\u08ff\7P\2\2\u08ff\u0900\7U\2\2\u0900") + buf.write("\u0901\7C\2\2\u0901\u0902\7E\2\2\u0902\u0903\7V\2\2\u0903") + buf.write("\u0904\7K\2\2\u0904\u0905\7Q\2\2\u0905\u0906\7P\2\2\u0906") + buf.write("\u01dc\3\2\2\2\u0907\u0908\7V\2\2\u0908\u0909\7T\2\2\u0909") + buf.write("\u090a\7C\2\2\u090a\u090b\7P\2\2\u090b\u090c\7U\2\2\u090c") + buf.write("\u090d\7C\2\2\u090d\u090e\7E\2\2\u090e\u090f\7V\2\2\u090f") + buf.write("\u0910\7K\2\2\u0910\u0911\7Q\2\2\u0911\u0912\7P\2\2\u0912") + buf.write("\u0913\7U\2\2\u0913\u01de\3\2\2\2\u0914\u0915\7V\2\2\u0915") + buf.write("\u0916\7T\2\2\u0916\u0917\7C\2\2\u0917\u0918\7P\2\2\u0918") + buf.write("\u0919\7U\2\2\u0919\u091a\7H\2\2\u091a\u091b\7Q\2\2\u091b") + buf.write("\u091c\7T\2\2\u091c\u091d\7O\2\2\u091d\u01e0\3\2\2\2\u091e") + buf.write("\u091f\7V\2\2\u091f\u0920\7T\2\2\u0920\u0921\7K\2\2\u0921") + buf.write("\u0922\7O\2\2\u0922\u01e2\3\2\2\2\u0923\u0924\7V\2\2\u0924") + buf.write("\u0925\7T\2\2\u0925\u0926\7W\2\2\u0926\u0927\7G\2\2\u0927") + buf.write("\u01e4\3\2\2\2\u0928\u0929\7V\2\2\u0929\u092a\7T\2\2\u092a") + buf.write("\u092b\7W\2\2\u092b\u092c\7P\2\2\u092c\u092d\7E\2\2\u092d") + buf.write("\u092e\7C\2\2\u092e\u092f\7V\2\2\u092f\u0930\7G\2\2\u0930") + buf.write("\u01e6\3\2\2\2\u0931\u0932\7V\2\2\u0932\u0933\7[\2\2\u0933") + buf.write("\u0934\7R\2\2\u0934\u0935\7G\2\2\u0935\u01e8\3\2\2\2\u0936") + buf.write("\u0937\7W\2\2\u0937\u0938\7P\2\2\u0938\u0939\7C\2\2\u0939") + buf.write("\u093a\7T\2\2\u093a\u093b\7E\2\2\u093b\u093c\7J\2\2\u093c") + buf.write("\u093d\7K\2\2\u093d\u093e\7X\2\2\u093e\u093f\7G\2\2\u093f") + buf.write("\u01ea\3\2\2\2\u0940\u0941\7W\2\2\u0941\u0942\7P\2\2\u0942") + buf.write("\u0943\7D\2\2\u0943\u0944\7Q\2\2\u0944\u0945\7W\2\2\u0945") + buf.write("\u0946\7P\2\2\u0946\u0947\7F\2\2\u0947\u0948\7G\2\2\u0948") + buf.write("\u0949\7F\2\2\u0949\u01ec\3\2\2\2\u094a\u094b\7W\2\2\u094b") + buf.write("\u094c\7P\2\2\u094c\u094d\7E\2\2\u094d\u094e\7C\2\2\u094e") + buf.write("\u094f\7E\2\2\u094f\u0950\7J\2\2\u0950\u0951\7G\2\2\u0951") + buf.write("\u01ee\3\2\2\2\u0952\u0953\7W\2\2\u0953\u0954\7P\2\2\u0954") + buf.write("\u0955\7K\2\2\u0955\u0956\7Q\2\2\u0956\u0957\7P\2\2\u0957") + buf.write("\u01f0\3\2\2\2\u0958\u0959\7W\2\2\u0959\u095a\7P\2\2\u095a") + buf.write("\u095b\7K\2\2\u095b\u095c\7S\2\2\u095c\u095d\7W\2\2\u095d") + buf.write("\u095e\7G\2\2\u095e\u01f2\3\2\2\2\u095f\u0960\7W\2\2\u0960") + buf.write("\u0961\7P\2\2\u0961\u0962\7M\2\2\u0962\u0963\7P\2\2\u0963") + buf.write("\u0964\7Q\2\2\u0964\u0965\7Y\2\2\u0965\u0966\7P\2\2\u0966") + buf.write("\u01f4\3\2\2\2\u0967\u0968\7W\2\2\u0968\u0969\7P\2\2\u0969") + buf.write("\u096a\7N\2\2\u096a\u096b\7Q\2\2\u096b\u096c\7E\2\2\u096c") + buf.write("\u096d\7M\2\2\u096d\u01f6\3\2\2\2\u096e\u096f\7W\2\2\u096f") + buf.write("\u0970\7P\2\2\u0970\u0971\7U\2\2\u0971\u0972\7G\2\2\u0972") + buf.write("\u0973\7V\2\2\u0973\u01f8\3\2\2\2\u0974\u0975\7W\2\2\u0975") + buf.write("\u0976\7R\2\2\u0976\u0977\7F\2\2\u0977\u0978\7C\2\2\u0978") + buf.write("\u0979\7V\2\2\u0979\u097a\7G\2\2\u097a\u01fa\3\2\2\2\u097b") + buf.write("\u097c\7W\2\2\u097c\u097d\7U\2\2\u097d\u097e\7G\2\2\u097e") + buf.write("\u01fc\3\2\2\2\u097f\u0980\7W\2\2\u0980\u0981\7U\2\2\u0981") + buf.write("\u0982\7G\2\2\u0982\u0983\7T\2\2\u0983\u01fe\3\2\2\2\u0984") + buf.write("\u0985\7W\2\2\u0985\u0986\7U\2\2\u0986\u0987\7K\2\2\u0987") + buf.write("\u0988\7P\2\2\u0988\u0989\7I\2\2\u0989\u0200\3\2\2\2\u098a") + buf.write("\u098b\7X\2\2\u098b\u098c\7C\2\2\u098c\u098d\7N\2\2\u098d") + buf.write("\u098e\7W\2\2\u098e\u098f\7G\2\2\u098f\u0990\7U\2\2\u0990") + buf.write("\u0202\3\2\2\2\u0991\u0992\7X\2\2\u0992\u0993\7K\2\2\u0993") + buf.write("\u0994\7G\2\2\u0994\u0995\7Y\2\2\u0995\u0204\3\2\2\2\u0996") + buf.write("\u0997\7X\2\2\u0997\u0998\7K\2\2\u0998\u0999\7G\2\2\u0999") + buf.write("\u099a\7Y\2\2\u099a\u099b\7U\2\2\u099b\u0206\3\2\2\2\u099c") + buf.write("\u099d\7Y\2\2\u099d\u099e\7J\2\2\u099e\u099f\7G\2\2\u099f") + buf.write("\u09a0\7P\2\2\u09a0\u0208\3\2\2\2\u09a1\u09a2\7Y\2\2\u09a2") + buf.write("\u09a3\7J\2\2\u09a3\u09a4\7G\2\2\u09a4\u09a5\7T\2\2\u09a5") + buf.write("\u09a6\7G\2\2\u09a6\u020a\3\2\2\2\u09a7\u09a8\7Y\2\2\u09a8") + buf.write("\u09a9\7K\2\2\u09a9\u09aa\7P\2\2\u09aa\u09ab\7F\2\2\u09ab") + buf.write("\u09ac\7Q\2\2\u09ac\u09ad\7Y\2\2\u09ad\u020c\3\2\2\2\u09ae") + buf.write("\u09af\7Y\2\2\u09af\u09b0\7K\2\2\u09b0\u09b1\7V\2\2\u09b1") + buf.write("\u09b2\7J\2\2\u09b2\u020e\3\2\2\2\u09b3\u09b4\7[\2\2\u09b4") + buf.write("\u09b5\7G\2\2\u09b5\u09b6\7C\2\2\u09b6\u09b7\7T\2\2\u09b7") + buf.write("\u0210\3\2\2\2\u09b8\u09bc\7?\2\2\u09b9\u09ba\7?\2\2\u09ba") + buf.write("\u09bc\7?\2\2\u09bb\u09b8\3\2\2\2\u09bb\u09b9\3\2\2\2") + buf.write("\u09bc\u0212\3\2\2\2\u09bd\u09be\7>\2\2\u09be\u09bf\7") + buf.write("?\2\2\u09bf\u09c0\7@\2\2\u09c0\u0214\3\2\2\2\u09c1\u09c2") + buf.write("\7>\2\2\u09c2\u09c3\7@\2\2\u09c3\u0216\3\2\2\2\u09c4\u09c5") + buf.write("\7#\2\2\u09c5\u09c6\7?\2\2\u09c6\u0218\3\2\2\2\u09c7\u09c8") + buf.write("\7>\2\2\u09c8\u021a\3\2\2\2\u09c9\u09ca\7>\2\2\u09ca\u09ce") + buf.write("\7?\2\2\u09cb\u09cc\7#\2\2\u09cc\u09ce\7@\2\2\u09cd\u09c9") + buf.write("\3\2\2\2\u09cd\u09cb\3\2\2\2\u09ce\u021c\3\2\2\2\u09cf") + buf.write("\u09d0\7@\2\2\u09d0\u021e\3\2\2\2\u09d1\u09d2\7@\2\2\u09d2") + buf.write("\u09d6\7?\2\2\u09d3\u09d4\7#\2\2\u09d4\u09d6\7>\2\2\u09d5") + buf.write("\u09d1\3\2\2\2\u09d5\u09d3\3\2\2\2\u09d6\u0220\3\2\2\2") + buf.write("\u09d7\u09d8\7-\2\2\u09d8\u0222\3\2\2\2\u09d9\u09da\7") + buf.write("/\2\2\u09da\u0224\3\2\2\2\u09db\u09dc\7,\2\2\u09dc\u0226") + buf.write("\3\2\2\2\u09dd\u09de\7\61\2\2\u09de\u0228\3\2\2\2\u09df") + buf.write("\u09e0\7\'\2\2\u09e0\u022a\3\2\2\2\u09e1\u09e2\7F\2\2") + buf.write("\u09e2\u09e3\7K\2\2\u09e3\u09e4\7X\2\2\u09e4\u022c\3\2") + buf.write("\2\2\u09e5\u09e6\7\u0080\2\2\u09e6\u022e\3\2\2\2\u09e7") + buf.write("\u09e8\7(\2\2\u09e8\u0230\3\2\2\2\u09e9\u09ea\7~\2\2\u09ea") + buf.write("\u0232\3\2\2\2\u09eb\u09ec\7~\2\2\u09ec\u09ed\7~\2\2\u09ed") + buf.write("\u0234\3\2\2\2\u09ee\u09ef\7`\2\2\u09ef\u0236\3\2\2\2") + buf.write("\u09f0\u09f6\7)\2\2\u09f1\u09f5\n\2\2\2\u09f2\u09f3\7") + buf.write("^\2\2\u09f3\u09f5\13\2\2\2\u09f4\u09f1\3\2\2\2\u09f4\u09f2") + buf.write("\3\2\2\2\u09f5\u09f8\3\2\2\2\u09f6\u09f4\3\2\2\2\u09f6") + buf.write("\u09f7\3\2\2\2\u09f7\u09f9\3\2\2\2\u09f8\u09f6\3\2\2\2") + buf.write("\u09f9\u0a05\7)\2\2\u09fa\u0a00\7$\2\2\u09fb\u09ff\n\3") + buf.write("\2\2\u09fc\u09fd\7^\2\2\u09fd\u09ff\13\2\2\2\u09fe\u09fb") + buf.write("\3\2\2\2\u09fe\u09fc\3\2\2\2\u09ff\u0a02\3\2\2\2\u0a00") + buf.write("\u09fe\3\2\2\2\u0a00\u0a01\3\2\2\2\u0a01\u0a03\3\2\2\2") + buf.write("\u0a02\u0a00\3\2\2\2\u0a03\u0a05\7$\2\2\u0a04\u09f0\3") + buf.write("\2\2\2\u0a04\u09fa\3\2\2\2\u0a05\u0238\3\2\2\2\u0a06\u0a08") + buf.write("\5\u0251\u0129\2\u0a07\u0a06\3\2\2\2\u0a08\u0a09\3\2\2") + buf.write("\2\u0a09\u0a07\3\2\2\2\u0a09\u0a0a\3\2\2\2\u0a0a\u0a0b") + buf.write("\3\2\2\2\u0a0b\u0a0c\7N\2\2\u0a0c\u023a\3\2\2\2\u0a0d") + buf.write("\u0a0f\5\u0251\u0129\2\u0a0e\u0a0d\3\2\2\2\u0a0f\u0a10") + buf.write("\3\2\2\2\u0a10\u0a0e\3\2\2\2\u0a10\u0a11\3\2\2\2\u0a11") + buf.write("\u0a12\3\2\2\2\u0a12\u0a13\7U\2\2\u0a13\u023c\3\2\2\2") + buf.write("\u0a14\u0a16\5\u0251\u0129\2\u0a15\u0a14\3\2\2\2\u0a16") + buf.write("\u0a17\3\2\2\2\u0a17\u0a15\3\2\2\2\u0a17\u0a18\3\2\2\2") + buf.write("\u0a18\u0a19\3\2\2\2\u0a19\u0a1a\7[\2\2\u0a1a\u023e\3") + buf.write("\2\2\2\u0a1b\u0a1d\5\u0251\u0129\2\u0a1c\u0a1b\3\2\2\2") + buf.write("\u0a1d\u0a1e\3\2\2\2\u0a1e\u0a1c\3\2\2\2\u0a1e\u0a1f\3") + buf.write("\2\2\2\u0a1f\u0240\3\2\2\2\u0a20\u0a22\5\u0251\u0129\2") + buf.write("\u0a21\u0a20\3\2\2\2\u0a22\u0a23\3\2\2\2\u0a23\u0a21\3") + buf.write("\2\2\2\u0a23\u0a24\3\2\2\2\u0a24\u0a25\3\2\2\2\u0a25\u0a26") + buf.write("\5\u024f\u0128\2\u0a26\u0a2c\3\2\2\2\u0a27\u0a28\5\u024d") + buf.write("\u0127\2\u0a28\u0a29\5\u024f\u0128\2\u0a29\u0a2a\6\u0121") + buf.write("\2\2\u0a2a\u0a2c\3\2\2\2\u0a2b\u0a21\3\2\2\2\u0a2b\u0a27") + buf.write("\3\2\2\2\u0a2c\u0242\3\2\2\2\u0a2d\u0a2e\5\u024d\u0127") + buf.write("\2\u0a2e\u0a2f\6\u0122\3\2\u0a2f\u0244\3\2\2\2\u0a30\u0a32") + buf.write("\5\u0251\u0129\2\u0a31\u0a30\3\2\2\2\u0a32\u0a33\3\2\2") + buf.write("\2\u0a33\u0a31\3\2\2\2\u0a33\u0a34\3\2\2\2\u0a34\u0a36") + buf.write("\3\2\2\2\u0a35\u0a37\5\u024f\u0128\2\u0a36\u0a35\3\2\2") + buf.write("\2\u0a36\u0a37\3\2\2\2\u0a37\u0a38\3\2\2\2\u0a38\u0a39") + buf.write("\7F\2\2\u0a39\u0a42\3\2\2\2\u0a3a\u0a3c\5\u024d\u0127") + buf.write("\2\u0a3b\u0a3d\5\u024f\u0128\2\u0a3c\u0a3b\3\2\2\2\u0a3c") + buf.write("\u0a3d\3\2\2\2\u0a3d\u0a3e\3\2\2\2\u0a3e\u0a3f\7F\2\2") + buf.write("\u0a3f\u0a40\6\u0123\4\2\u0a40\u0a42\3\2\2\2\u0a41\u0a31") + buf.write("\3\2\2\2\u0a41\u0a3a\3\2\2\2\u0a42\u0246\3\2\2\2\u0a43") + buf.write("\u0a45\5\u0251\u0129\2\u0a44\u0a43\3\2\2\2\u0a45\u0a46") + buf.write("\3\2\2\2\u0a46\u0a44\3\2\2\2\u0a46\u0a47\3\2\2\2\u0a47") + buf.write("\u0a49\3\2\2\2\u0a48\u0a4a\5\u024f\u0128\2\u0a49\u0a48") + buf.write("\3\2\2\2\u0a49\u0a4a\3\2\2\2\u0a4a\u0a4b\3\2\2\2\u0a4b") + buf.write("\u0a4c\7D\2\2\u0a4c\u0a4d\7F\2\2\u0a4d\u0a58\3\2\2\2\u0a4e") + buf.write("\u0a50\5\u024d\u0127\2\u0a4f\u0a51\5\u024f\u0128\2\u0a50") + buf.write("\u0a4f\3\2\2\2\u0a50\u0a51\3\2\2\2\u0a51\u0a52\3\2\2\2") + buf.write("\u0a52\u0a53\7D\2\2\u0a53\u0a54\7F\2\2\u0a54\u0a55\3\2") + buf.write("\2\2\u0a55\u0a56\6\u0124\5\2\u0a56\u0a58\3\2\2\2\u0a57") + buf.write("\u0a44\3\2\2\2\u0a57\u0a4e\3\2\2\2\u0a58\u0248\3\2\2\2") + buf.write("\u0a59\u0a5d\5\u0253\u012a\2\u0a5a\u0a5d\5\u0251\u0129") + buf.write("\2\u0a5b\u0a5d\7a\2\2\u0a5c\u0a59\3\2\2\2\u0a5c\u0a5a") + buf.write("\3\2\2\2\u0a5c\u0a5b\3\2\2\2\u0a5d\u0a5e\3\2\2\2\u0a5e") + buf.write("\u0a5c\3\2\2\2\u0a5e\u0a5f\3\2\2\2\u0a5f\u024a\3\2\2\2") + buf.write("\u0a60\u0a66\7b\2\2\u0a61\u0a65\n\4\2\2\u0a62\u0a63\7") + buf.write("b\2\2\u0a63\u0a65\7b\2\2\u0a64\u0a61\3\2\2\2\u0a64\u0a62") + buf.write("\3\2\2\2\u0a65\u0a68\3\2\2\2\u0a66\u0a64\3\2\2\2\u0a66") + buf.write("\u0a67\3\2\2\2\u0a67\u0a69\3\2\2\2\u0a68\u0a66\3\2\2\2") + buf.write("\u0a69\u0a6a\7b\2\2\u0a6a\u024c\3\2\2\2\u0a6b\u0a6d\5") + buf.write("\u0251\u0129\2\u0a6c\u0a6b\3\2\2\2\u0a6d\u0a6e\3\2\2\2") + buf.write("\u0a6e\u0a6c\3\2\2\2\u0a6e\u0a6f\3\2\2\2\u0a6f\u0a70\3") + buf.write("\2\2\2\u0a70\u0a74\7\60\2\2\u0a71\u0a73\5\u0251\u0129") + buf.write("\2\u0a72\u0a71\3\2\2\2\u0a73\u0a76\3\2\2\2\u0a74\u0a72") + buf.write("\3\2\2\2\u0a74\u0a75\3\2\2\2\u0a75\u0a7e\3\2\2\2\u0a76") + buf.write("\u0a74\3\2\2\2\u0a77\u0a79\7\60\2\2\u0a78\u0a7a\5\u0251") + buf.write("\u0129\2\u0a79\u0a78\3\2\2\2\u0a7a\u0a7b\3\2\2\2\u0a7b") + buf.write("\u0a79\3\2\2\2\u0a7b\u0a7c\3\2\2\2\u0a7c\u0a7e\3\2\2\2") + buf.write("\u0a7d\u0a6c\3\2\2\2\u0a7d\u0a77\3\2\2\2\u0a7e\u024e\3") + buf.write("\2\2\2\u0a7f\u0a81\7G\2\2\u0a80\u0a82\t\5\2\2\u0a81\u0a80") + buf.write("\3\2\2\2\u0a81\u0a82\3\2\2\2\u0a82\u0a84\3\2\2\2\u0a83") + buf.write("\u0a85\5\u0251\u0129\2\u0a84\u0a83\3\2\2\2\u0a85\u0a86") + buf.write("\3\2\2\2\u0a86\u0a84\3\2\2\2\u0a86\u0a87\3\2\2\2\u0a87") + buf.write("\u0250\3\2\2\2\u0a88\u0a89\t\6\2\2\u0a89\u0252\3\2\2\2") + buf.write("\u0a8a\u0a8b\t\7\2\2\u0a8b\u0254\3\2\2\2\u0a8c\u0a8d\7") + buf.write("/\2\2\u0a8d\u0a8e\7/\2\2\u0a8e\u0a92\3\2\2\2\u0a8f\u0a91") + buf.write("\n\b\2\2\u0a90\u0a8f\3\2\2\2\u0a91\u0a94\3\2\2\2\u0a92") + buf.write("\u0a90\3\2\2\2\u0a92\u0a93\3\2\2\2\u0a93\u0a96\3\2\2\2") + buf.write("\u0a94\u0a92\3\2\2\2\u0a95\u0a97\7\17\2\2\u0a96\u0a95") + buf.write("\3\2\2\2\u0a96\u0a97\3\2\2\2\u0a97\u0a99\3\2\2\2\u0a98") + buf.write("\u0a9a\7\f\2\2\u0a99\u0a98\3\2\2\2\u0a99\u0a9a\3\2\2\2") + buf.write("\u0a9a\u0a9b\3\2\2\2\u0a9b\u0a9c\b\u012b\2\2\u0a9c\u0256") + buf.write("\3\2\2\2\u0a9d\u0a9e\7\61\2\2\u0a9e\u0a9f\7,\2\2\u0a9f") + buf.write("\u0aa0\3\2\2\2\u0aa0\u0aa5\6\u012c\6\2\u0aa1\u0aa4\5\u0257") + buf.write("\u012c\2\u0aa2\u0aa4\13\2\2\2\u0aa3\u0aa1\3\2\2\2\u0aa3") + buf.write("\u0aa2\3\2\2\2\u0aa4\u0aa7\3\2\2\2\u0aa5\u0aa6\3\2\2\2") + buf.write("\u0aa5\u0aa3\3\2\2\2\u0aa6\u0aa8\3\2\2\2\u0aa7\u0aa5\3") + buf.write("\2\2\2\u0aa8\u0aa9\7,\2\2\u0aa9\u0aaa\7\61\2\2\u0aaa\u0aab") + buf.write("\3\2\2\2\u0aab\u0aac\b\u012c\2\2\u0aac\u0258\3\2\2\2\u0aad") + buf.write("\u0aaf\t\t\2\2\u0aae\u0aad\3\2\2\2\u0aaf\u0ab0\3\2\2\2") + buf.write("\u0ab0\u0aae\3\2\2\2\u0ab0\u0ab1\3\2\2\2\u0ab1\u0ab2\3") + buf.write("\2\2\2\u0ab2\u0ab3\b\u012d\2\2\u0ab3\u025a\3\2\2\2\u0ab4") + buf.write("\u0ab5\13\2\2\2\u0ab5\u025c\3\2\2\2-\2\u0404\u0677\u07d1") + buf.write("\u08d7\u09bb\u09cd\u09d5\u09f4\u09f6\u09fe\u0a00\u0a04") + buf.write("\u0a09\u0a10\u0a17\u0a1e\u0a23\u0a2b\u0a33\u0a36\u0a3c") + buf.write("\u0a41\u0a46\u0a49\u0a50\u0a57\u0a5c\u0a5e\u0a64\u0a66") + buf.write("\u0a6e\u0a74\u0a7b\u0a7d\u0a81\u0a86\u0a92\u0a96\u0a99") + buf.write("\u0aa3\u0aa5\u0ab0\3\2\3\2") + return buf.getvalue() + + +class SqlBaseLexer(Lexer): + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + T__0 = 1 + T__1 = 2 + T__2 = 3 + T__3 = 4 + T__4 = 5 + T__5 = 6 + T__6 = 7 + T__7 = 8 + T__8 = 9 + T__9 = 10 + T__10 = 11 + ADD = 12 + AFTER = 13 + ALL = 14 + ALTER = 15 + ANALYZE = 16 + AND = 17 + ANTI = 18 + ANY = 19 + ARCHIVE = 20 + ARRAY = 21 + AS = 22 + ASC = 23 + AT = 24 + AUTHORIZATION = 25 + BETWEEN = 26 + BOTH = 27 + BUCKET = 28 + BUCKETS = 29 + BY = 30 + CACHE = 31 + CASCADE = 32 + CASE = 33 + CAST = 34 + CHANGE = 35 + CHECK = 36 + CLEAR = 37 + CLUSTER = 38 + CLUSTERED = 39 + CODEGEN = 40 + COLLATE = 41 + COLLECTION = 42 + COLUMN = 43 + COLUMNS = 44 + COMMENT = 45 + COMMIT = 46 + COMPACT = 47 + COMPACTIONS = 48 + COMPUTE = 49 + CONCATENATE = 50 + CONSTRAINT = 51 + COST = 52 + CREATE = 53 + CROSS = 54 + CUBE = 55 + CURRENT = 56 + CURRENT_DATE = 57 + CURRENT_TIME = 58 + CURRENT_TIMESTAMP = 59 + CURRENT_USER = 60 + DATA = 61 + DATABASE = 62 + DATABASES = 63 + DAY = 64 + DBPROPERTIES = 65 + DEFINED = 66 + DELETE = 67 + DELIMITED = 68 + DESC = 69 + DESCRIBE = 70 + DFS = 71 + DIRECTORIES = 72 + DIRECTORY = 73 + DISTINCT = 74 + DISTRIBUTE = 75 + DROP = 76 + ELSE = 77 + END = 78 + ESCAPE = 79 + ESCAPED = 80 + EXCEPT = 81 + EXCHANGE = 82 + EXISTS = 83 + EXPLAIN = 84 + EXPORT = 85 + EXTENDED = 86 + EXTERNAL = 87 + EXTRACT = 88 + FALSE = 89 + FETCH = 90 + FIELDS = 91 + FILTER = 92 + FILEFORMAT = 93 + FIRST = 94 + FOLLOWING = 95 + FOR = 96 + FOREIGN = 97 + FORMAT = 98 + FORMATTED = 99 + FROM = 100 + FULL = 101 + FUNCTION = 102 + FUNCTIONS = 103 + GLOBAL = 104 + GRANT = 105 + GROUP = 106 + GROUPING = 107 + HAVING = 108 + HOUR = 109 + IF = 110 + IGNORE = 111 + IMPORT = 112 + IN = 113 + INDEX = 114 + INDEXES = 115 + INNER = 116 + INPATH = 117 + INPUTFORMAT = 118 + INSERT = 119 + INTERSECT = 120 + INTERVAL = 121 + INTO = 122 + IS = 123 + ITEMS = 124 + JOIN = 125 + KEYS = 126 + LAST = 127 + LATERAL = 128 + LAZY = 129 + LEADING = 130 + LEFT = 131 + LIKE = 132 + LIMIT = 133 + LINES = 134 + LIST = 135 + LOAD = 136 + LOCAL = 137 + LOCATION = 138 + LOCK = 139 + LOCKS = 140 + LOGICAL = 141 + MACRO = 142 + MAP = 143 + MATCHED = 144 + MERGE = 145 + MINUTE = 146 + MONTH = 147 + MSCK = 148 + NAMESPACE = 149 + NAMESPACES = 150 + NATURAL = 151 + NO = 152 + NOT = 153 + NULL = 154 + NULLS = 155 + OF = 156 + ON = 157 + ONLY = 158 + OPTION = 159 + OPTIONS = 160 + OR = 161 + ORDER = 162 + OUT = 163 + OUTER = 164 + OUTPUTFORMAT = 165 + OVER = 166 + OVERLAPS = 167 + OVERLAY = 168 + OVERWRITE = 169 + PARTITION = 170 + PARTITIONED = 171 + PARTITIONS = 172 + PERCENTLIT = 173 + PIVOT = 174 + PLACING = 175 + POSITION = 176 + PRECEDING = 177 + PRIMARY = 178 + PRINCIPALS = 179 + PROPERTIES = 180 + PURGE = 181 + QUERY = 182 + RANGE = 183 + RECORDREADER = 184 + RECORDWRITER = 185 + RECOVER = 186 + REDUCE = 187 + REFERENCES = 188 + REFRESH = 189 + RENAME = 190 + REPAIR = 191 + REPLACE = 192 + RESET = 193 + RESTRICT = 194 + REVOKE = 195 + RIGHT = 196 + RLIKE = 197 + ROLE = 198 + ROLES = 199 + ROLLBACK = 200 + ROLLUP = 201 + ROW = 202 + ROWS = 203 + SCHEMA = 204 + SECOND = 205 + SELECT = 206 + SEMI = 207 + SEPARATED = 208 + SERDE = 209 + SERDEPROPERTIES = 210 + SESSION_USER = 211 + SET = 212 + SETMINUS = 213 + SETS = 214 + SHOW = 215 + SKEWED = 216 + SOME = 217 + SORT = 218 + SORTED = 219 + START = 220 + STATISTICS = 221 + STORED = 222 + STRATIFY = 223 + STRUCT = 224 + SUBSTR = 225 + SUBSTRING = 226 + TABLE = 227 + TABLES = 228 + TABLESAMPLE = 229 + TBLPROPERTIES = 230 + TEMPORARY = 231 + TERMINATED = 232 + THEN = 233 + TO = 234 + TOUCH = 235 + TRAILING = 236 + TRANSACTION = 237 + TRANSACTIONS = 238 + TRANSFORM = 239 + TRIM = 240 + TRUE = 241 + TRUNCATE = 242 + TYPE = 243 + UNARCHIVE = 244 + UNBOUNDED = 245 + UNCACHE = 246 + UNION = 247 + UNIQUE = 248 + UNKNOWN = 249 + UNLOCK = 250 + UNSET = 251 + UPDATE = 252 + USE = 253 + USER = 254 + USING = 255 + VALUES = 256 + VIEW = 257 + VIEWS = 258 + WHEN = 259 + WHERE = 260 + WINDOW = 261 + WITH = 262 + YEAR = 263 + EQ = 264 + NSEQ = 265 + NEQ = 266 + NEQJ = 267 + LT = 268 + LTE = 269 + GT = 270 + GTE = 271 + PLUS = 272 + MINUS = 273 + ASTERISK = 274 + SLASH = 275 + PERCENT = 276 + DIV = 277 + TILDE = 278 + AMPERSAND = 279 + PIPE = 280 + CONCAT_PIPE = 281 + HAT = 282 + STRING = 283 + BIGINT_LITERAL = 284 + SMALLINT_LITERAL = 285 + TINYINT_LITERAL = 286 + INTEGER_VALUE = 287 + EXPONENT_VALUE = 288 + DECIMAL_VALUE = 289 + DOUBLE_LITERAL = 290 + BIGDECIMAL_LITERAL = 291 + IDENTIFIER = 292 + BACKQUOTED_IDENTIFIER = 293 + SIMPLE_COMMENT = 294 + BRACKETED_COMMENT = 295 + WS = 296 + UNRECOGNIZED = 297 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "';'", "'('", "')'", "','", "'.'", "'/*+'", "'*/'", "'->'", + "'['", "']'", "':'", "'ADD'", "'AFTER'", "'ALL'", "'ALTER'", + "'ANALYZE'", "'AND'", "'ANTI'", "'ANY'", "'ARCHIVE'", "'ARRAY'", + "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", "'BETWEEN'", "'BOTH'", + "'BUCKET'", "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", "'CASE'", + "'CAST'", "'CHANGE'", "'CHECK'", "'CLEAR'", "'CLUSTER'", "'CLUSTERED'", + "'CODEGEN'", "'COLLATE'", "'COLLECTION'", "'COLUMN'", "'COLUMNS'", + "'COMMENT'", "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", "'COMPUTE'", + "'CONCATENATE'", "'CONSTRAINT'", "'COST'", "'CREATE'", "'CROSS'", + "'CUBE'", "'CURRENT'", "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", + "'CURRENT_USER'", "'DATA'", "'DATABASE'", "'DAY'", "'DBPROPERTIES'", + "'DEFINED'", "'DELETE'", "'DELIMITED'", "'DESC'", "'DESCRIBE'", + "'DFS'", "'DIRECTORIES'", "'DIRECTORY'", "'DISTINCT'", "'DISTRIBUTE'", + "'DROP'", "'ELSE'", "'END'", "'ESCAPE'", "'ESCAPED'", "'EXCEPT'", + "'EXCHANGE'", "'EXISTS'", "'EXPLAIN'", "'EXPORT'", "'EXTENDED'", + "'EXTERNAL'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FIELDS'", + "'FILTER'", "'FILEFORMAT'", "'FIRST'", "'FOLLOWING'", "'FOR'", + "'FOREIGN'", "'FORMAT'", "'FORMATTED'", "'FROM'", "'FULL'", + "'FUNCTION'", "'FUNCTIONS'", "'GLOBAL'", "'GRANT'", "'GROUP'", + "'GROUPING'", "'HAVING'", "'HOUR'", "'IF'", "'IGNORE'", "'IMPORT'", + "'IN'", "'INDEX'", "'INDEXES'", "'INNER'", "'INPATH'", "'INPUTFORMAT'", + "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'IS'", "'ITEMS'", + "'JOIN'", "'KEYS'", "'LAST'", "'LATERAL'", "'LAZY'", "'LEADING'", + "'LEFT'", "'LIKE'", "'LIMIT'", "'LINES'", "'LIST'", "'LOAD'", + "'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCKS'", "'LOGICAL'", "'MACRO'", + "'MAP'", "'MATCHED'", "'MERGE'", "'MINUTE'", "'MONTH'", "'MSCK'", + "'NAMESPACE'", "'NAMESPACES'", "'NATURAL'", "'NO'", "'NULL'", + "'NULLS'", "'OF'", "'ON'", "'ONLY'", "'OPTION'", "'OPTIONS'", + "'OR'", "'ORDER'", "'OUT'", "'OUTER'", "'OUTPUTFORMAT'", "'OVER'", + "'OVERLAPS'", "'OVERLAY'", "'OVERWRITE'", "'PARTITION'", "'PARTITIONED'", + "'PARTITIONS'", "'PERCENT'", "'PIVOT'", "'PLACING'", "'POSITION'", + "'PRECEDING'", "'PRIMARY'", "'PRINCIPALS'", "'PROPERTIES'", + "'PURGE'", "'QUERY'", "'RANGE'", "'RECORDREADER'", "'RECORDWRITER'", + "'RECOVER'", "'REDUCE'", "'REFERENCES'", "'REFRESH'", "'RENAME'", + "'REPAIR'", "'REPLACE'", "'RESET'", "'RESTRICT'", "'REVOKE'", + "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", + "'ROWS'", "'SCHEMA'", "'SECOND'", "'SELECT'", "'SEMI'", "'SEPARATED'", + "'SERDE'", "'SERDEPROPERTIES'", "'SESSION_USER'", "'SET'", "'MINUS'", + "'SETS'", "'SHOW'", "'SKEWED'", "'SOME'", "'SORT'", "'SORTED'", + "'START'", "'STATISTICS'", "'STORED'", "'STRATIFY'", "'STRUCT'", + "'SUBSTR'", "'SUBSTRING'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'TBLPROPERTIES'", "'TERMINATED'", "'THEN'", "'TO'", "'TOUCH'", + "'TRAILING'", "'TRANSACTION'", "'TRANSACTIONS'", "'TRANSFORM'", + "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", "'UNARCHIVE'", "'UNBOUNDED'", + "'UNCACHE'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", "'UNLOCK'", + "'UNSET'", "'UPDATE'", "'USE'", "'USER'", "'USING'", "'VALUES'", + "'VIEW'", "'VIEWS'", "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", + "'YEAR'", "'<=>'", "'<>'", "'!='", "'<'", "'>'", "'+'", "'-'", + "'*'", "'/'", "'%'", "'DIV'", "'~'", "'&'", "'|'", "'||'", "'^'" ] + + symbolicNames = [ "", + "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANTI", "ANY", + "ARCHIVE", "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", + "BOTH", "BUCKET", "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", + "CAST", "CHANGE", "CHECK", "CLEAR", "CLUSTER", "CLUSTERED", + "CODEGEN", "COLLATE", "COLLECTION", "COLUMN", "COLUMNS", "COMMENT", + "COMMIT", "COMPACT", "COMPACTIONS", "COMPUTE", "CONCATENATE", + "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", "CURRENT", + "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", + "DATA", "DATABASE", "DATABASES", "DAY", "DBPROPERTIES", "DEFINED", + "DELETE", "DELIMITED", "DESC", "DESCRIBE", "DFS", "DIRECTORIES", + "DIRECTORY", "DISTINCT", "DISTRIBUTE", "DROP", "ELSE", "END", + "ESCAPE", "ESCAPED", "EXCEPT", "EXCHANGE", "EXISTS", "EXPLAIN", + "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", + "FIELDS", "FILTER", "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", + "FOREIGN", "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", + "FUNCTIONS", "GLOBAL", "GRANT", "GROUP", "GROUPING", "HAVING", + "HOUR", "IF", "IGNORE", "IMPORT", "IN", "INDEX", "INDEXES", + "INNER", "INPATH", "INPUTFORMAT", "INSERT", "INTERSECT", "INTERVAL", + "INTO", "IS", "ITEMS", "JOIN", "KEYS", "LAST", "LATERAL", "LAZY", + "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", "LIST", "LOAD", + "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", "MACRO", "MAP", + "MATCHED", "MERGE", "MINUTE", "MONTH", "MSCK", "NAMESPACE", + "NAMESPACES", "NATURAL", "NO", "NOT", "NULL", "NULLS", "OF", + "ON", "ONLY", "OPTION", "OPTIONS", "OR", "ORDER", "OUT", "OUTER", + "OUTPUTFORMAT", "OVER", "OVERLAPS", "OVERLAY", "OVERWRITE", + "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", "PIVOT", + "PLACING", "POSITION", "PRECEDING", "PRIMARY", "PRINCIPALS", + "PROPERTIES", "PURGE", "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", + "RECOVER", "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", + "REPLACE", "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", + "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROW", "ROWS", "SCHEMA", + "SECOND", "SELECT", "SEMI", "SEPARATED", "SERDE", "SERDEPROPERTIES", + "SESSION_USER", "SET", "SETMINUS", "SETS", "SHOW", "SKEWED", + "SOME", "SORT", "SORTED", "START", "STATISTICS", "STORED", "STRATIFY", + "STRUCT", "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", + "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", + "TRAILING", "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", + "TRUE", "TRUNCATE", "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", + "UNION", "UNIQUE", "UNKNOWN", "UNLOCK", "UNSET", "UPDATE", "USE", + "USER", "USING", "VALUES", "VIEW", "VIEWS", "WHEN", "WHERE", + "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", "NEQJ", "LT", + "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", + "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", "HAT", "STRING", + "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", + "EXPONENT_VALUE", "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED" ] + + ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", + "T__7", "T__8", "T__9", "T__10", "ADD", "AFTER", "ALL", + "ALTER", "ANALYZE", "AND", "ANTI", "ANY", "ARCHIVE", "ARRAY", + "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", "BOTH", + "BUCKET", "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", + "CAST", "CHANGE", "CHECK", "CLEAR", "CLUSTER", "CLUSTERED", + "CODEGEN", "COLLATE", "COLLECTION", "COLUMN", "COLUMNS", + "COMMENT", "COMMIT", "COMPACT", "COMPACTIONS", "COMPUTE", + "CONCATENATE", "CONSTRAINT", "COST", "CREATE", "CROSS", + "CUBE", "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DAY", + "DBPROPERTIES", "DEFINED", "DELETE", "DELIMITED", "DESC", + "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", "DISTINCT", + "DISTRIBUTE", "DROP", "ELSE", "END", "ESCAPE", "ESCAPED", + "EXCEPT", "EXCHANGE", "EXISTS", "EXPLAIN", "EXPORT", "EXTENDED", + "EXTERNAL", "EXTRACT", "FALSE", "FETCH", "FIELDS", "FILTER", + "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", "FOREIGN", + "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", "FUNCTIONS", + "GLOBAL", "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", + "IF", "IGNORE", "IMPORT", "IN", "INDEX", "INDEXES", "INNER", + "INPATH", "INPUTFORMAT", "INSERT", "INTERSECT", "INTERVAL", + "INTO", "IS", "ITEMS", "JOIN", "KEYS", "LAST", "LATERAL", + "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", "LIST", + "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", + "MACRO", "MAP", "MATCHED", "MERGE", "MINUTE", "MONTH", + "MSCK", "NAMESPACE", "NAMESPACES", "NATURAL", "NO", "NOT", + "NULL", "NULLS", "OF", "ON", "ONLY", "OPTION", "OPTIONS", + "OR", "ORDER", "OUT", "OUTER", "OUTPUTFORMAT", "OVER", + "OVERLAPS", "OVERLAY", "OVERWRITE", "PARTITION", "PARTITIONED", + "PARTITIONS", "PERCENTLIT", "PIVOT", "PLACING", "POSITION", + "PRECEDING", "PRIMARY", "PRINCIPALS", "PROPERTIES", "PURGE", + "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", "RECOVER", + "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", + "REPLACE", "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", + "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROW", "ROWS", + "SCHEMA", "SECOND", "SELECT", "SEMI", "SEPARATED", "SERDE", + "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", + "SETS", "SHOW", "SKEWED", "SOME", "SORT", "SORTED", "START", + "STATISTICS", "STORED", "STRATIFY", "STRUCT", "SUBSTR", + "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", "TBLPROPERTIES", + "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", "TRAILING", + "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", "TRUE", + "TRUNCATE", "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", + "UNION", "UNIQUE", "UNKNOWN", "UNLOCK", "UNSET", "UPDATE", + "USE", "USER", "USING", "VALUES", "VIEW", "VIEWS", "WHEN", + "WHERE", "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", + "NEQJ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", + "CONCAT_PIPE", "HAT", "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", + "TINYINT_LITERAL", "INTEGER_VALUE", "EXPONENT_VALUE", + "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "DECIMAL_DIGITS", + "EXPONENT", "DIGIT", "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED" ] + + grammarFileName = "SqlBase.g4" + + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.7.1") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + + """ + When false, INTERSECT is given the greater precedence over the other set + operations (UNION, EXCEPT and MINUS) as per the SQL standard. + """ + legacy_setops_precedence_enbled = False + + """ + When false, a literal with an exponent would be converted into + double type rather than decimal type. + """ + legacy_exponent_literal_as_decimal_enabled = False + + """ + When false, CREATE TABLE syntax without a provider will use + the value of spark.sql.sources.default as its provider. + """ + legacy_create_hive_table_by_default_enabled = False + + """ + When true, the behavior of keywords follows ANSI SQL standard. + """ + SQL_standard_keyword_behavior = False + + def isValidDecimal(self): + """ + Verify whether current token is a valid decimal token (which contains dot). + Returns true if the character that follows the token is not a digit or letter or underscore. + + For example: + For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. + For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. + For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. + For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed + by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' + which is not a digit or letter or underscore. + """ + nextChar = self._input.LA(1) + if 'A' <= nextChar <= 'Z' or '0' <= nextChar <= '9' or nextChar == '_': + return False + else: + return True + + def isHint(self): + """ + This method will be called when we see '/*' and try to match it as a bracketed comment. + If the next character is '+', it should be parsed as hint later, and we cannot match + it as a bracketed comment. + + Returns true if the next character is '+'. + """ + nextChar = self._input.LA(1) + if nextChar == '+': + return True + else: + return False + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates is None: + preds = dict() + preds[287] = self.EXPONENT_VALUE_sempred + preds[288] = self.DECIMAL_VALUE_sempred + preds[289] = self.DOUBLE_LITERAL_sempred + preds[290] = self.BIGDECIMAL_LITERAL_sempred + preds[298] = self.BRACKETED_COMMENT_sempred + self._predicates = preds + pred = self._predicates.get(ruleIndex, None) + if pred is not None: + return pred(localctx, predIndex) + else: + raise Exception("No registered predicate for:" + str(ruleIndex)) + + def EXPONENT_VALUE_sempred(self, localctx:RuleContext, predIndex:int): + if predIndex == 0: + return self.isValidDecimal() + + + def DECIMAL_VALUE_sempred(self, localctx:RuleContext, predIndex:int): + if predIndex == 1: + return self.isValidDecimal() + + + def DOUBLE_LITERAL_sempred(self, localctx:RuleContext, predIndex:int): + if predIndex == 2: + return self.isValidDecimal() + + + def BIGDECIMAL_LITERAL_sempred(self, localctx:RuleContext, predIndex:int): + if predIndex == 3: + return self.isValidDecimal() + + + def BRACKETED_COMMENT_sempred(self, localctx:RuleContext, predIndex:int): + if predIndex == 4: + return not self.isHint() + + + diff --git a/pysparkling/sql/ast/generated/SqlBaseListener.java b/pysparkling/sql/ast/generated/SqlBaseListener.java deleted file mode 100644 index 62889c03b..000000000 --- a/pysparkling/sql/ast/generated/SqlBaseListener.java +++ /dev/null @@ -1,2967 +0,0 @@ -// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 -import org.antlr.v4.runtime.tree.ParseTreeListener; - -/** - * This interface defines a complete listener for a parse tree produced by - * {@link SqlBaseParser}. - */ -public interface SqlBaseListener extends ParseTreeListener { - /** - * Enter a parse tree produced by {@link SqlBaseParser#singleStatement}. - * @param ctx the parse tree - */ - void enterSingleStatement(SqlBaseParser.SingleStatementContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#singleStatement}. - * @param ctx the parse tree - */ - void exitSingleStatement(SqlBaseParser.SingleStatementContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#singleExpression}. - * @param ctx the parse tree - */ - void enterSingleExpression(SqlBaseParser.SingleExpressionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#singleExpression}. - * @param ctx the parse tree - */ - void exitSingleExpression(SqlBaseParser.SingleExpressionContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#singleTableIdentifier}. - * @param ctx the parse tree - */ - void enterSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#singleTableIdentifier}. - * @param ctx the parse tree - */ - void exitSingleTableIdentifier(SqlBaseParser.SingleTableIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#singleMultipartIdentifier}. - * @param ctx the parse tree - */ - void enterSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#singleMultipartIdentifier}. - * @param ctx the parse tree - */ - void exitSingleMultipartIdentifier(SqlBaseParser.SingleMultipartIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#singleFunctionIdentifier}. - * @param ctx the parse tree - */ - void enterSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#singleFunctionIdentifier}. - * @param ctx the parse tree - */ - void exitSingleFunctionIdentifier(SqlBaseParser.SingleFunctionIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#singleDataType}. - * @param ctx the parse tree - */ - void enterSingleDataType(SqlBaseParser.SingleDataTypeContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#singleDataType}. - * @param ctx the parse tree - */ - void exitSingleDataType(SqlBaseParser.SingleDataTypeContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#singleTableSchema}. - * @param ctx the parse tree - */ - void enterSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#singleTableSchema}. - * @param ctx the parse tree - */ - void exitSingleTableSchema(SqlBaseParser.SingleTableSchemaContext ctx); - /** - * Enter a parse tree produced by the {@code statementDefault} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterStatementDefault(SqlBaseParser.StatementDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code statementDefault} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitStatementDefault(SqlBaseParser.StatementDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code dmlStatement} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDmlStatement(SqlBaseParser.DmlStatementContext ctx); - /** - * Exit a parse tree produced by the {@code dmlStatement} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDmlStatement(SqlBaseParser.DmlStatementContext ctx); - /** - * Enter a parse tree produced by the {@code use} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterUse(SqlBaseParser.UseContext ctx); - /** - * Exit a parse tree produced by the {@code use} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitUse(SqlBaseParser.UseContext ctx); - /** - * Enter a parse tree produced by the {@code createNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx); - /** - * Exit a parse tree produced by the {@code createNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCreateNamespace(SqlBaseParser.CreateNamespaceContext ctx); - /** - * Enter a parse tree produced by the {@code setNamespaceProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code setNamespaceProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitSetNamespaceProperties(SqlBaseParser.SetNamespacePropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code setNamespaceLocation} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx); - /** - * Exit a parse tree produced by the {@code setNamespaceLocation} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitSetNamespaceLocation(SqlBaseParser.SetNamespaceLocationContext ctx); - /** - * Enter a parse tree produced by the {@code dropNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDropNamespace(SqlBaseParser.DropNamespaceContext ctx); - /** - * Exit a parse tree produced by the {@code dropNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDropNamespace(SqlBaseParser.DropNamespaceContext ctx); - /** - * Enter a parse tree produced by the {@code showNamespaces} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx); - /** - * Exit a parse tree produced by the {@code showNamespaces} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowNamespaces(SqlBaseParser.ShowNamespacesContext ctx); - /** - * Enter a parse tree produced by the {@code createTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCreateTable(SqlBaseParser.CreateTableContext ctx); - /** - * Exit a parse tree produced by the {@code createTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCreateTable(SqlBaseParser.CreateTableContext ctx); - /** - * Enter a parse tree produced by the {@code createHiveTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx); - /** - * Exit a parse tree produced by the {@code createHiveTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCreateHiveTable(SqlBaseParser.CreateHiveTableContext ctx); - /** - * Enter a parse tree produced by the {@code createTableLike} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx); - /** - * Exit a parse tree produced by the {@code createTableLike} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCreateTableLike(SqlBaseParser.CreateTableLikeContext ctx); - /** - * Enter a parse tree produced by the {@code replaceTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterReplaceTable(SqlBaseParser.ReplaceTableContext ctx); - /** - * Exit a parse tree produced by the {@code replaceTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitReplaceTable(SqlBaseParser.ReplaceTableContext ctx); - /** - * Enter a parse tree produced by the {@code analyze} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterAnalyze(SqlBaseParser.AnalyzeContext ctx); - /** - * Exit a parse tree produced by the {@code analyze} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitAnalyze(SqlBaseParser.AnalyzeContext ctx); - /** - * Enter a parse tree produced by the {@code addTableColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx); - /** - * Exit a parse tree produced by the {@code addTableColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitAddTableColumns(SqlBaseParser.AddTableColumnsContext ctx); - /** - * Enter a parse tree produced by the {@code renameTableColumn} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx); - /** - * Exit a parse tree produced by the {@code renameTableColumn} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitRenameTableColumn(SqlBaseParser.RenameTableColumnContext ctx); - /** - * Enter a parse tree produced by the {@code dropTableColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx); - /** - * Exit a parse tree produced by the {@code dropTableColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDropTableColumns(SqlBaseParser.DropTableColumnsContext ctx); - /** - * Enter a parse tree produced by the {@code renameTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterRenameTable(SqlBaseParser.RenameTableContext ctx); - /** - * Exit a parse tree produced by the {@code renameTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitRenameTable(SqlBaseParser.RenameTableContext ctx); - /** - * Enter a parse tree produced by the {@code setTableProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code setTableProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitSetTableProperties(SqlBaseParser.SetTablePropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code unsetTableProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code unsetTableProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitUnsetTableProperties(SqlBaseParser.UnsetTablePropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code alterTableAlterColumn} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx); - /** - * Exit a parse tree produced by the {@code alterTableAlterColumn} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitAlterTableAlterColumn(SqlBaseParser.AlterTableAlterColumnContext ctx); - /** - * Enter a parse tree produced by the {@code hiveChangeColumn} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx); - /** - * Exit a parse tree produced by the {@code hiveChangeColumn} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitHiveChangeColumn(SqlBaseParser.HiveChangeColumnContext ctx); - /** - * Enter a parse tree produced by the {@code hiveReplaceColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx); - /** - * Exit a parse tree produced by the {@code hiveReplaceColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitHiveReplaceColumns(SqlBaseParser.HiveReplaceColumnsContext ctx); - /** - * Enter a parse tree produced by the {@code setTableSerDe} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx); - /** - * Exit a parse tree produced by the {@code setTableSerDe} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitSetTableSerDe(SqlBaseParser.SetTableSerDeContext ctx); - /** - * Enter a parse tree produced by the {@code addTablePartition} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx); - /** - * Exit a parse tree produced by the {@code addTablePartition} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitAddTablePartition(SqlBaseParser.AddTablePartitionContext ctx); - /** - * Enter a parse tree produced by the {@code renameTablePartition} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx); - /** - * Exit a parse tree produced by the {@code renameTablePartition} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitRenameTablePartition(SqlBaseParser.RenameTablePartitionContext ctx); - /** - * Enter a parse tree produced by the {@code dropTablePartitions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx); - /** - * Exit a parse tree produced by the {@code dropTablePartitions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDropTablePartitions(SqlBaseParser.DropTablePartitionsContext ctx); - /** - * Enter a parse tree produced by the {@code setTableLocation} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterSetTableLocation(SqlBaseParser.SetTableLocationContext ctx); - /** - * Exit a parse tree produced by the {@code setTableLocation} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitSetTableLocation(SqlBaseParser.SetTableLocationContext ctx); - /** - * Enter a parse tree produced by the {@code recoverPartitions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx); - /** - * Exit a parse tree produced by the {@code recoverPartitions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitRecoverPartitions(SqlBaseParser.RecoverPartitionsContext ctx); - /** - * Enter a parse tree produced by the {@code dropTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDropTable(SqlBaseParser.DropTableContext ctx); - /** - * Exit a parse tree produced by the {@code dropTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDropTable(SqlBaseParser.DropTableContext ctx); - /** - * Enter a parse tree produced by the {@code dropView} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDropView(SqlBaseParser.DropViewContext ctx); - /** - * Exit a parse tree produced by the {@code dropView} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDropView(SqlBaseParser.DropViewContext ctx); - /** - * Enter a parse tree produced by the {@code createView} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCreateView(SqlBaseParser.CreateViewContext ctx); - /** - * Exit a parse tree produced by the {@code createView} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCreateView(SqlBaseParser.CreateViewContext ctx); - /** - * Enter a parse tree produced by the {@code createTempViewUsing} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx); - /** - * Exit a parse tree produced by the {@code createTempViewUsing} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCreateTempViewUsing(SqlBaseParser.CreateTempViewUsingContext ctx); - /** - * Enter a parse tree produced by the {@code alterViewQuery} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx); - /** - * Exit a parse tree produced by the {@code alterViewQuery} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitAlterViewQuery(SqlBaseParser.AlterViewQueryContext ctx); - /** - * Enter a parse tree produced by the {@code createFunction} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCreateFunction(SqlBaseParser.CreateFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code createFunction} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCreateFunction(SqlBaseParser.CreateFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code dropFunction} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDropFunction(SqlBaseParser.DropFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code dropFunction} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDropFunction(SqlBaseParser.DropFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code explain} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterExplain(SqlBaseParser.ExplainContext ctx); - /** - * Exit a parse tree produced by the {@code explain} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitExplain(SqlBaseParser.ExplainContext ctx); - /** - * Enter a parse tree produced by the {@code showTables} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowTables(SqlBaseParser.ShowTablesContext ctx); - /** - * Exit a parse tree produced by the {@code showTables} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowTables(SqlBaseParser.ShowTablesContext ctx); - /** - * Enter a parse tree produced by the {@code showTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowTable(SqlBaseParser.ShowTableContext ctx); - /** - * Exit a parse tree produced by the {@code showTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowTable(SqlBaseParser.ShowTableContext ctx); - /** - * Enter a parse tree produced by the {@code showTblProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code showTblProperties} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowTblProperties(SqlBaseParser.ShowTblPropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code showColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowColumns(SqlBaseParser.ShowColumnsContext ctx); - /** - * Exit a parse tree produced by the {@code showColumns} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowColumns(SqlBaseParser.ShowColumnsContext ctx); - /** - * Enter a parse tree produced by the {@code showViews} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowViews(SqlBaseParser.ShowViewsContext ctx); - /** - * Exit a parse tree produced by the {@code showViews} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowViews(SqlBaseParser.ShowViewsContext ctx); - /** - * Enter a parse tree produced by the {@code showPartitions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowPartitions(SqlBaseParser.ShowPartitionsContext ctx); - /** - * Exit a parse tree produced by the {@code showPartitions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowPartitions(SqlBaseParser.ShowPartitionsContext ctx); - /** - * Enter a parse tree produced by the {@code showFunctions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowFunctions(SqlBaseParser.ShowFunctionsContext ctx); - /** - * Exit a parse tree produced by the {@code showFunctions} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowFunctions(SqlBaseParser.ShowFunctionsContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowCreateTable(SqlBaseParser.ShowCreateTableContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowCreateTable(SqlBaseParser.ShowCreateTableContext ctx); - /** - * Enter a parse tree produced by the {@code showCurrentNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx); - /** - * Exit a parse tree produced by the {@code showCurrentNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitShowCurrentNamespace(SqlBaseParser.ShowCurrentNamespaceContext ctx); - /** - * Enter a parse tree produced by the {@code describeFunction} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code describeFunction} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDescribeFunction(SqlBaseParser.DescribeFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code describeNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx); - /** - * Exit a parse tree produced by the {@code describeNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDescribeNamespace(SqlBaseParser.DescribeNamespaceContext ctx); - /** - * Enter a parse tree produced by the {@code describeRelation} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDescribeRelation(SqlBaseParser.DescribeRelationContext ctx); - /** - * Exit a parse tree produced by the {@code describeRelation} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDescribeRelation(SqlBaseParser.DescribeRelationContext ctx); - /** - * Enter a parse tree produced by the {@code describeQuery} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterDescribeQuery(SqlBaseParser.DescribeQueryContext ctx); - /** - * Exit a parse tree produced by the {@code describeQuery} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitDescribeQuery(SqlBaseParser.DescribeQueryContext ctx); - /** - * Enter a parse tree produced by the {@code commentNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx); - /** - * Exit a parse tree produced by the {@code commentNamespace} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCommentNamespace(SqlBaseParser.CommentNamespaceContext ctx); - /** - * Enter a parse tree produced by the {@code commentTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCommentTable(SqlBaseParser.CommentTableContext ctx); - /** - * Exit a parse tree produced by the {@code commentTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCommentTable(SqlBaseParser.CommentTableContext ctx); - /** - * Enter a parse tree produced by the {@code refreshTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterRefreshTable(SqlBaseParser.RefreshTableContext ctx); - /** - * Exit a parse tree produced by the {@code refreshTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitRefreshTable(SqlBaseParser.RefreshTableContext ctx); - /** - * Enter a parse tree produced by the {@code refreshResource} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterRefreshResource(SqlBaseParser.RefreshResourceContext ctx); - /** - * Exit a parse tree produced by the {@code refreshResource} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitRefreshResource(SqlBaseParser.RefreshResourceContext ctx); - /** - * Enter a parse tree produced by the {@code cacheTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterCacheTable(SqlBaseParser.CacheTableContext ctx); - /** - * Exit a parse tree produced by the {@code cacheTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitCacheTable(SqlBaseParser.CacheTableContext ctx); - /** - * Enter a parse tree produced by the {@code uncacheTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterUncacheTable(SqlBaseParser.UncacheTableContext ctx); - /** - * Exit a parse tree produced by the {@code uncacheTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitUncacheTable(SqlBaseParser.UncacheTableContext ctx); - /** - * Enter a parse tree produced by the {@code clearCache} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterClearCache(SqlBaseParser.ClearCacheContext ctx); - /** - * Exit a parse tree produced by the {@code clearCache} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitClearCache(SqlBaseParser.ClearCacheContext ctx); - /** - * Enter a parse tree produced by the {@code loadData} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterLoadData(SqlBaseParser.LoadDataContext ctx); - /** - * Exit a parse tree produced by the {@code loadData} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitLoadData(SqlBaseParser.LoadDataContext ctx); - /** - * Enter a parse tree produced by the {@code truncateTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterTruncateTable(SqlBaseParser.TruncateTableContext ctx); - /** - * Exit a parse tree produced by the {@code truncateTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitTruncateTable(SqlBaseParser.TruncateTableContext ctx); - /** - * Enter a parse tree produced by the {@code repairTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterRepairTable(SqlBaseParser.RepairTableContext ctx); - /** - * Exit a parse tree produced by the {@code repairTable} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitRepairTable(SqlBaseParser.RepairTableContext ctx); - /** - * Enter a parse tree produced by the {@code manageResource} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterManageResource(SqlBaseParser.ManageResourceContext ctx); - /** - * Exit a parse tree produced by the {@code manageResource} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitManageResource(SqlBaseParser.ManageResourceContext ctx); - /** - * Enter a parse tree produced by the {@code failNativeCommand} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx); - /** - * Exit a parse tree produced by the {@code failNativeCommand} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitFailNativeCommand(SqlBaseParser.FailNativeCommandContext ctx); - /** - * Enter a parse tree produced by the {@code setConfiguration} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterSetConfiguration(SqlBaseParser.SetConfigurationContext ctx); - /** - * Exit a parse tree produced by the {@code setConfiguration} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitSetConfiguration(SqlBaseParser.SetConfigurationContext ctx); - /** - * Enter a parse tree produced by the {@code resetConfiguration} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void enterResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx); - /** - * Exit a parse tree produced by the {@code resetConfiguration} - * labeled alternative in {@link SqlBaseParser#statement}. - * @param ctx the parse tree - */ - void exitResetConfiguration(SqlBaseParser.ResetConfigurationContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#unsupportedHiveNativeCommands}. - * @param ctx the parse tree - */ - void enterUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#unsupportedHiveNativeCommands}. - * @param ctx the parse tree - */ - void exitUnsupportedHiveNativeCommands(SqlBaseParser.UnsupportedHiveNativeCommandsContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#createTableHeader}. - * @param ctx the parse tree - */ - void enterCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#createTableHeader}. - * @param ctx the parse tree - */ - void exitCreateTableHeader(SqlBaseParser.CreateTableHeaderContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#replaceTableHeader}. - * @param ctx the parse tree - */ - void enterReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#replaceTableHeader}. - * @param ctx the parse tree - */ - void exitReplaceTableHeader(SqlBaseParser.ReplaceTableHeaderContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#bucketSpec}. - * @param ctx the parse tree - */ - void enterBucketSpec(SqlBaseParser.BucketSpecContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#bucketSpec}. - * @param ctx the parse tree - */ - void exitBucketSpec(SqlBaseParser.BucketSpecContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#skewSpec}. - * @param ctx the parse tree - */ - void enterSkewSpec(SqlBaseParser.SkewSpecContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#skewSpec}. - * @param ctx the parse tree - */ - void exitSkewSpec(SqlBaseParser.SkewSpecContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#locationSpec}. - * @param ctx the parse tree - */ - void enterLocationSpec(SqlBaseParser.LocationSpecContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#locationSpec}. - * @param ctx the parse tree - */ - void exitLocationSpec(SqlBaseParser.LocationSpecContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#commentSpec}. - * @param ctx the parse tree - */ - void enterCommentSpec(SqlBaseParser.CommentSpecContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#commentSpec}. - * @param ctx the parse tree - */ - void exitCommentSpec(SqlBaseParser.CommentSpecContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#query}. - * @param ctx the parse tree - */ - void enterQuery(SqlBaseParser.QueryContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#query}. - * @param ctx the parse tree - */ - void exitQuery(SqlBaseParser.QueryContext ctx); - /** - * Enter a parse tree produced by the {@code insertOverwriteTable} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void enterInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx); - /** - * Exit a parse tree produced by the {@code insertOverwriteTable} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void exitInsertOverwriteTable(SqlBaseParser.InsertOverwriteTableContext ctx); - /** - * Enter a parse tree produced by the {@code insertIntoTable} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void enterInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx); - /** - * Exit a parse tree produced by the {@code insertIntoTable} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void exitInsertIntoTable(SqlBaseParser.InsertIntoTableContext ctx); - /** - * Enter a parse tree produced by the {@code insertOverwriteHiveDir} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void enterInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx); - /** - * Exit a parse tree produced by the {@code insertOverwriteHiveDir} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void exitInsertOverwriteHiveDir(SqlBaseParser.InsertOverwriteHiveDirContext ctx); - /** - * Enter a parse tree produced by the {@code insertOverwriteDir} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void enterInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx); - /** - * Exit a parse tree produced by the {@code insertOverwriteDir} - * labeled alternative in {@link SqlBaseParser#insertInto}. - * @param ctx the parse tree - */ - void exitInsertOverwriteDir(SqlBaseParser.InsertOverwriteDirContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#partitionSpecLocation}. - * @param ctx the parse tree - */ - void enterPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#partitionSpecLocation}. - * @param ctx the parse tree - */ - void exitPartitionSpecLocation(SqlBaseParser.PartitionSpecLocationContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#partitionSpec}. - * @param ctx the parse tree - */ - void enterPartitionSpec(SqlBaseParser.PartitionSpecContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#partitionSpec}. - * @param ctx the parse tree - */ - void exitPartitionSpec(SqlBaseParser.PartitionSpecContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#partitionVal}. - * @param ctx the parse tree - */ - void enterPartitionVal(SqlBaseParser.PartitionValContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#partitionVal}. - * @param ctx the parse tree - */ - void exitPartitionVal(SqlBaseParser.PartitionValContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#namespace}. - * @param ctx the parse tree - */ - void enterNamespace(SqlBaseParser.NamespaceContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#namespace}. - * @param ctx the parse tree - */ - void exitNamespace(SqlBaseParser.NamespaceContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#describeFuncName}. - * @param ctx the parse tree - */ - void enterDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#describeFuncName}. - * @param ctx the parse tree - */ - void exitDescribeFuncName(SqlBaseParser.DescribeFuncNameContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#describeColName}. - * @param ctx the parse tree - */ - void enterDescribeColName(SqlBaseParser.DescribeColNameContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#describeColName}. - * @param ctx the parse tree - */ - void exitDescribeColName(SqlBaseParser.DescribeColNameContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#ctes}. - * @param ctx the parse tree - */ - void enterCtes(SqlBaseParser.CtesContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#ctes}. - * @param ctx the parse tree - */ - void exitCtes(SqlBaseParser.CtesContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#namedQuery}. - * @param ctx the parse tree - */ - void enterNamedQuery(SqlBaseParser.NamedQueryContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#namedQuery}. - * @param ctx the parse tree - */ - void exitNamedQuery(SqlBaseParser.NamedQueryContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#tableProvider}. - * @param ctx the parse tree - */ - void enterTableProvider(SqlBaseParser.TableProviderContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#tableProvider}. - * @param ctx the parse tree - */ - void exitTableProvider(SqlBaseParser.TableProviderContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#createTableClauses}. - * @param ctx the parse tree - */ - void enterCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#createTableClauses}. - * @param ctx the parse tree - */ - void exitCreateTableClauses(SqlBaseParser.CreateTableClausesContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#tablePropertyList}. - * @param ctx the parse tree - */ - void enterTablePropertyList(SqlBaseParser.TablePropertyListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#tablePropertyList}. - * @param ctx the parse tree - */ - void exitTablePropertyList(SqlBaseParser.TablePropertyListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#tableProperty}. - * @param ctx the parse tree - */ - void enterTableProperty(SqlBaseParser.TablePropertyContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#tableProperty}. - * @param ctx the parse tree - */ - void exitTableProperty(SqlBaseParser.TablePropertyContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#tablePropertyKey}. - * @param ctx the parse tree - */ - void enterTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#tablePropertyKey}. - * @param ctx the parse tree - */ - void exitTablePropertyKey(SqlBaseParser.TablePropertyKeyContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#tablePropertyValue}. - * @param ctx the parse tree - */ - void enterTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#tablePropertyValue}. - * @param ctx the parse tree - */ - void exitTablePropertyValue(SqlBaseParser.TablePropertyValueContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#constantList}. - * @param ctx the parse tree - */ - void enterConstantList(SqlBaseParser.ConstantListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#constantList}. - * @param ctx the parse tree - */ - void exitConstantList(SqlBaseParser.ConstantListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#nestedConstantList}. - * @param ctx the parse tree - */ - void enterNestedConstantList(SqlBaseParser.NestedConstantListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#nestedConstantList}. - * @param ctx the parse tree - */ - void exitNestedConstantList(SqlBaseParser.NestedConstantListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#createFileFormat}. - * @param ctx the parse tree - */ - void enterCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#createFileFormat}. - * @param ctx the parse tree - */ - void exitCreateFileFormat(SqlBaseParser.CreateFileFormatContext ctx); - /** - * Enter a parse tree produced by the {@code tableFileFormat} - * labeled alternative in {@link SqlBaseParser#fileFormat}. - * @param ctx the parse tree - */ - void enterTableFileFormat(SqlBaseParser.TableFileFormatContext ctx); - /** - * Exit a parse tree produced by the {@code tableFileFormat} - * labeled alternative in {@link SqlBaseParser#fileFormat}. - * @param ctx the parse tree - */ - void exitTableFileFormat(SqlBaseParser.TableFileFormatContext ctx); - /** - * Enter a parse tree produced by the {@code genericFileFormat} - * labeled alternative in {@link SqlBaseParser#fileFormat}. - * @param ctx the parse tree - */ - void enterGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx); - /** - * Exit a parse tree produced by the {@code genericFileFormat} - * labeled alternative in {@link SqlBaseParser#fileFormat}. - * @param ctx the parse tree - */ - void exitGenericFileFormat(SqlBaseParser.GenericFileFormatContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#storageHandler}. - * @param ctx the parse tree - */ - void enterStorageHandler(SqlBaseParser.StorageHandlerContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#storageHandler}. - * @param ctx the parse tree - */ - void exitStorageHandler(SqlBaseParser.StorageHandlerContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#resource}. - * @param ctx the parse tree - */ - void enterResource(SqlBaseParser.ResourceContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#resource}. - * @param ctx the parse tree - */ - void exitResource(SqlBaseParser.ResourceContext ctx); - /** - * Enter a parse tree produced by the {@code singleInsertQuery} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void enterSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx); - /** - * Exit a parse tree produced by the {@code singleInsertQuery} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void exitSingleInsertQuery(SqlBaseParser.SingleInsertQueryContext ctx); - /** - * Enter a parse tree produced by the {@code multiInsertQuery} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void enterMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx); - /** - * Exit a parse tree produced by the {@code multiInsertQuery} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void exitMultiInsertQuery(SqlBaseParser.MultiInsertQueryContext ctx); - /** - * Enter a parse tree produced by the {@code deleteFromTable} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void enterDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx); - /** - * Exit a parse tree produced by the {@code deleteFromTable} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void exitDeleteFromTable(SqlBaseParser.DeleteFromTableContext ctx); - /** - * Enter a parse tree produced by the {@code updateTable} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void enterUpdateTable(SqlBaseParser.UpdateTableContext ctx); - /** - * Exit a parse tree produced by the {@code updateTable} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void exitUpdateTable(SqlBaseParser.UpdateTableContext ctx); - /** - * Enter a parse tree produced by the {@code mergeIntoTable} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void enterMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx); - /** - * Exit a parse tree produced by the {@code mergeIntoTable} - * labeled alternative in {@link SqlBaseParser#dmlStatementNoWith}. - * @param ctx the parse tree - */ - void exitMergeIntoTable(SqlBaseParser.MergeIntoTableContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#queryOrganization}. - * @param ctx the parse tree - */ - void enterQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#queryOrganization}. - * @param ctx the parse tree - */ - void exitQueryOrganization(SqlBaseParser.QueryOrganizationContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#multiInsertQueryBody}. - * @param ctx the parse tree - */ - void enterMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#multiInsertQueryBody}. - * @param ctx the parse tree - */ - void exitMultiInsertQueryBody(SqlBaseParser.MultiInsertQueryBodyContext ctx); - /** - * Enter a parse tree produced by the {@code queryTermDefault} - * labeled alternative in {@link SqlBaseParser#queryTerm}. - * @param ctx the parse tree - */ - void enterQueryTermDefault(SqlBaseParser.QueryTermDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code queryTermDefault} - * labeled alternative in {@link SqlBaseParser#queryTerm}. - * @param ctx the parse tree - */ - void exitQueryTermDefault(SqlBaseParser.QueryTermDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code setOperation} - * labeled alternative in {@link SqlBaseParser#queryTerm}. - * @param ctx the parse tree - */ - void enterSetOperation(SqlBaseParser.SetOperationContext ctx); - /** - * Exit a parse tree produced by the {@code setOperation} - * labeled alternative in {@link SqlBaseParser#queryTerm}. - * @param ctx the parse tree - */ - void exitSetOperation(SqlBaseParser.SetOperationContext ctx); - /** - * Enter a parse tree produced by the {@code queryPrimaryDefault} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterQueryPrimaryDefault(SqlBaseParser.QueryPrimaryDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code queryPrimaryDefault} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitQueryPrimaryDefault(SqlBaseParser.QueryPrimaryDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code fromStmt} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterFromStmt(SqlBaseParser.FromStmtContext ctx); - /** - * Exit a parse tree produced by the {@code fromStmt} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitFromStmt(SqlBaseParser.FromStmtContext ctx); - /** - * Enter a parse tree produced by the {@code table} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterTable(SqlBaseParser.TableContext ctx); - /** - * Exit a parse tree produced by the {@code table} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitTable(SqlBaseParser.TableContext ctx); - /** - * Enter a parse tree produced by the {@code inlineTableDefault1} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx); - /** - * Exit a parse tree produced by the {@code inlineTableDefault1} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitInlineTableDefault1(SqlBaseParser.InlineTableDefault1Context ctx); - /** - * Enter a parse tree produced by the {@code subquery} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterSubquery(SqlBaseParser.SubqueryContext ctx); - /** - * Exit a parse tree produced by the {@code subquery} - * labeled alternative in {@link SqlBaseParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitSubquery(SqlBaseParser.SubqueryContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#sortItem}. - * @param ctx the parse tree - */ - void enterSortItem(SqlBaseParser.SortItemContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#sortItem}. - * @param ctx the parse tree - */ - void exitSortItem(SqlBaseParser.SortItemContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#fromStatement}. - * @param ctx the parse tree - */ - void enterFromStatement(SqlBaseParser.FromStatementContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#fromStatement}. - * @param ctx the parse tree - */ - void exitFromStatement(SqlBaseParser.FromStatementContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#fromStatementBody}. - * @param ctx the parse tree - */ - void enterFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#fromStatementBody}. - * @param ctx the parse tree - */ - void exitFromStatementBody(SqlBaseParser.FromStatementBodyContext ctx); - /** - * Enter a parse tree produced by the {@code transformQuerySpecification} - * labeled alternative in {@link SqlBaseParser#querySpecification}. - * @param ctx the parse tree - */ - void enterTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx); - /** - * Exit a parse tree produced by the {@code transformQuerySpecification} - * labeled alternative in {@link SqlBaseParser#querySpecification}. - * @param ctx the parse tree - */ - void exitTransformQuerySpecification(SqlBaseParser.TransformQuerySpecificationContext ctx); - /** - * Enter a parse tree produced by the {@code regularQuerySpecification} - * labeled alternative in {@link SqlBaseParser#querySpecification}. - * @param ctx the parse tree - */ - void enterRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx); - /** - * Exit a parse tree produced by the {@code regularQuerySpecification} - * labeled alternative in {@link SqlBaseParser#querySpecification}. - * @param ctx the parse tree - */ - void exitRegularQuerySpecification(SqlBaseParser.RegularQuerySpecificationContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#transformClause}. - * @param ctx the parse tree - */ - void enterTransformClause(SqlBaseParser.TransformClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#transformClause}. - * @param ctx the parse tree - */ - void exitTransformClause(SqlBaseParser.TransformClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#selectClause}. - * @param ctx the parse tree - */ - void enterSelectClause(SqlBaseParser.SelectClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#selectClause}. - * @param ctx the parse tree - */ - void exitSelectClause(SqlBaseParser.SelectClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#setClause}. - * @param ctx the parse tree - */ - void enterSetClause(SqlBaseParser.SetClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#setClause}. - * @param ctx the parse tree - */ - void exitSetClause(SqlBaseParser.SetClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#matchedClause}. - * @param ctx the parse tree - */ - void enterMatchedClause(SqlBaseParser.MatchedClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#matchedClause}. - * @param ctx the parse tree - */ - void exitMatchedClause(SqlBaseParser.MatchedClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#notMatchedClause}. - * @param ctx the parse tree - */ - void enterNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#notMatchedClause}. - * @param ctx the parse tree - */ - void exitNotMatchedClause(SqlBaseParser.NotMatchedClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#matchedAction}. - * @param ctx the parse tree - */ - void enterMatchedAction(SqlBaseParser.MatchedActionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#matchedAction}. - * @param ctx the parse tree - */ - void exitMatchedAction(SqlBaseParser.MatchedActionContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#notMatchedAction}. - * @param ctx the parse tree - */ - void enterNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#notMatchedAction}. - * @param ctx the parse tree - */ - void exitNotMatchedAction(SqlBaseParser.NotMatchedActionContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#assignmentList}. - * @param ctx the parse tree - */ - void enterAssignmentList(SqlBaseParser.AssignmentListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#assignmentList}. - * @param ctx the parse tree - */ - void exitAssignmentList(SqlBaseParser.AssignmentListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#assignment}. - * @param ctx the parse tree - */ - void enterAssignment(SqlBaseParser.AssignmentContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#assignment}. - * @param ctx the parse tree - */ - void exitAssignment(SqlBaseParser.AssignmentContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#whereClause}. - * @param ctx the parse tree - */ - void enterWhereClause(SqlBaseParser.WhereClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#whereClause}. - * @param ctx the parse tree - */ - void exitWhereClause(SqlBaseParser.WhereClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#havingClause}. - * @param ctx the parse tree - */ - void enterHavingClause(SqlBaseParser.HavingClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#havingClause}. - * @param ctx the parse tree - */ - void exitHavingClause(SqlBaseParser.HavingClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#hint}. - * @param ctx the parse tree - */ - void enterHint(SqlBaseParser.HintContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#hint}. - * @param ctx the parse tree - */ - void exitHint(SqlBaseParser.HintContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#hintStatement}. - * @param ctx the parse tree - */ - void enterHintStatement(SqlBaseParser.HintStatementContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#hintStatement}. - * @param ctx the parse tree - */ - void exitHintStatement(SqlBaseParser.HintStatementContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#fromClause}. - * @param ctx the parse tree - */ - void enterFromClause(SqlBaseParser.FromClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#fromClause}. - * @param ctx the parse tree - */ - void exitFromClause(SqlBaseParser.FromClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#aggregationClause}. - * @param ctx the parse tree - */ - void enterAggregationClause(SqlBaseParser.AggregationClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#aggregationClause}. - * @param ctx the parse tree - */ - void exitAggregationClause(SqlBaseParser.AggregationClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#groupingSet}. - * @param ctx the parse tree - */ - void enterGroupingSet(SqlBaseParser.GroupingSetContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#groupingSet}. - * @param ctx the parse tree - */ - void exitGroupingSet(SqlBaseParser.GroupingSetContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#pivotClause}. - * @param ctx the parse tree - */ - void enterPivotClause(SqlBaseParser.PivotClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#pivotClause}. - * @param ctx the parse tree - */ - void exitPivotClause(SqlBaseParser.PivotClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#pivotColumn}. - * @param ctx the parse tree - */ - void enterPivotColumn(SqlBaseParser.PivotColumnContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#pivotColumn}. - * @param ctx the parse tree - */ - void exitPivotColumn(SqlBaseParser.PivotColumnContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#pivotValue}. - * @param ctx the parse tree - */ - void enterPivotValue(SqlBaseParser.PivotValueContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#pivotValue}. - * @param ctx the parse tree - */ - void exitPivotValue(SqlBaseParser.PivotValueContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#lateralView}. - * @param ctx the parse tree - */ - void enterLateralView(SqlBaseParser.LateralViewContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#lateralView}. - * @param ctx the parse tree - */ - void exitLateralView(SqlBaseParser.LateralViewContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#setQuantifier}. - * @param ctx the parse tree - */ - void enterSetQuantifier(SqlBaseParser.SetQuantifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#setQuantifier}. - * @param ctx the parse tree - */ - void exitSetQuantifier(SqlBaseParser.SetQuantifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#relation}. - * @param ctx the parse tree - */ - void enterRelation(SqlBaseParser.RelationContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#relation}. - * @param ctx the parse tree - */ - void exitRelation(SqlBaseParser.RelationContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#joinRelation}. - * @param ctx the parse tree - */ - void enterJoinRelation(SqlBaseParser.JoinRelationContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#joinRelation}. - * @param ctx the parse tree - */ - void exitJoinRelation(SqlBaseParser.JoinRelationContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#joinType}. - * @param ctx the parse tree - */ - void enterJoinType(SqlBaseParser.JoinTypeContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#joinType}. - * @param ctx the parse tree - */ - void exitJoinType(SqlBaseParser.JoinTypeContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#joinCriteria}. - * @param ctx the parse tree - */ - void enterJoinCriteria(SqlBaseParser.JoinCriteriaContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#joinCriteria}. - * @param ctx the parse tree - */ - void exitJoinCriteria(SqlBaseParser.JoinCriteriaContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#sample}. - * @param ctx the parse tree - */ - void enterSample(SqlBaseParser.SampleContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#sample}. - * @param ctx the parse tree - */ - void exitSample(SqlBaseParser.SampleContext ctx); - /** - * Enter a parse tree produced by the {@code sampleByPercentile} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void enterSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx); - /** - * Exit a parse tree produced by the {@code sampleByPercentile} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void exitSampleByPercentile(SqlBaseParser.SampleByPercentileContext ctx); - /** - * Enter a parse tree produced by the {@code sampleByRows} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void enterSampleByRows(SqlBaseParser.SampleByRowsContext ctx); - /** - * Exit a parse tree produced by the {@code sampleByRows} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void exitSampleByRows(SqlBaseParser.SampleByRowsContext ctx); - /** - * Enter a parse tree produced by the {@code sampleByBucket} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void enterSampleByBucket(SqlBaseParser.SampleByBucketContext ctx); - /** - * Exit a parse tree produced by the {@code sampleByBucket} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void exitSampleByBucket(SqlBaseParser.SampleByBucketContext ctx); - /** - * Enter a parse tree produced by the {@code sampleByBytes} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void enterSampleByBytes(SqlBaseParser.SampleByBytesContext ctx); - /** - * Exit a parse tree produced by the {@code sampleByBytes} - * labeled alternative in {@link SqlBaseParser#sampleMethod}. - * @param ctx the parse tree - */ - void exitSampleByBytes(SqlBaseParser.SampleByBytesContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#identifierList}. - * @param ctx the parse tree - */ - void enterIdentifierList(SqlBaseParser.IdentifierListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#identifierList}. - * @param ctx the parse tree - */ - void exitIdentifierList(SqlBaseParser.IdentifierListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#identifierSeq}. - * @param ctx the parse tree - */ - void enterIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#identifierSeq}. - * @param ctx the parse tree - */ - void exitIdentifierSeq(SqlBaseParser.IdentifierSeqContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#orderedIdentifierList}. - * @param ctx the parse tree - */ - void enterOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#orderedIdentifierList}. - * @param ctx the parse tree - */ - void exitOrderedIdentifierList(SqlBaseParser.OrderedIdentifierListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#orderedIdentifier}. - * @param ctx the parse tree - */ - void enterOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#orderedIdentifier}. - * @param ctx the parse tree - */ - void exitOrderedIdentifier(SqlBaseParser.OrderedIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#identifierCommentList}. - * @param ctx the parse tree - */ - void enterIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#identifierCommentList}. - * @param ctx the parse tree - */ - void exitIdentifierCommentList(SqlBaseParser.IdentifierCommentListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#identifierComment}. - * @param ctx the parse tree - */ - void enterIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#identifierComment}. - * @param ctx the parse tree - */ - void exitIdentifierComment(SqlBaseParser.IdentifierCommentContext ctx); - /** - * Enter a parse tree produced by the {@code tableName} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterTableName(SqlBaseParser.TableNameContext ctx); - /** - * Exit a parse tree produced by the {@code tableName} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitTableName(SqlBaseParser.TableNameContext ctx); - /** - * Enter a parse tree produced by the {@code aliasedQuery} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterAliasedQuery(SqlBaseParser.AliasedQueryContext ctx); - /** - * Exit a parse tree produced by the {@code aliasedQuery} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitAliasedQuery(SqlBaseParser.AliasedQueryContext ctx); - /** - * Enter a parse tree produced by the {@code aliasedRelation} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterAliasedRelation(SqlBaseParser.AliasedRelationContext ctx); - /** - * Exit a parse tree produced by the {@code aliasedRelation} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitAliasedRelation(SqlBaseParser.AliasedRelationContext ctx); - /** - * Enter a parse tree produced by the {@code inlineTableDefault2} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx); - /** - * Exit a parse tree produced by the {@code inlineTableDefault2} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitInlineTableDefault2(SqlBaseParser.InlineTableDefault2Context ctx); - /** - * Enter a parse tree produced by the {@code tableValuedFunction} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code tableValuedFunction} - * labeled alternative in {@link SqlBaseParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitTableValuedFunction(SqlBaseParser.TableValuedFunctionContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#inlineTable}. - * @param ctx the parse tree - */ - void enterInlineTable(SqlBaseParser.InlineTableContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#inlineTable}. - * @param ctx the parse tree - */ - void exitInlineTable(SqlBaseParser.InlineTableContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#functionTable}. - * @param ctx the parse tree - */ - void enterFunctionTable(SqlBaseParser.FunctionTableContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#functionTable}. - * @param ctx the parse tree - */ - void exitFunctionTable(SqlBaseParser.FunctionTableContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#tableAlias}. - * @param ctx the parse tree - */ - void enterTableAlias(SqlBaseParser.TableAliasContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#tableAlias}. - * @param ctx the parse tree - */ - void exitTableAlias(SqlBaseParser.TableAliasContext ctx); - /** - * Enter a parse tree produced by the {@code rowFormatSerde} - * labeled alternative in {@link SqlBaseParser#rowFormat}. - * @param ctx the parse tree - */ - void enterRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx); - /** - * Exit a parse tree produced by the {@code rowFormatSerde} - * labeled alternative in {@link SqlBaseParser#rowFormat}. - * @param ctx the parse tree - */ - void exitRowFormatSerde(SqlBaseParser.RowFormatSerdeContext ctx); - /** - * Enter a parse tree produced by the {@code rowFormatDelimited} - * labeled alternative in {@link SqlBaseParser#rowFormat}. - * @param ctx the parse tree - */ - void enterRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx); - /** - * Exit a parse tree produced by the {@code rowFormatDelimited} - * labeled alternative in {@link SqlBaseParser#rowFormat}. - * @param ctx the parse tree - */ - void exitRowFormatDelimited(SqlBaseParser.RowFormatDelimitedContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#multipartIdentifierList}. - * @param ctx the parse tree - */ - void enterMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#multipartIdentifierList}. - * @param ctx the parse tree - */ - void exitMultipartIdentifierList(SqlBaseParser.MultipartIdentifierListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#multipartIdentifier}. - * @param ctx the parse tree - */ - void enterMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#multipartIdentifier}. - * @param ctx the parse tree - */ - void exitMultipartIdentifier(SqlBaseParser.MultipartIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#tableIdentifier}. - * @param ctx the parse tree - */ - void enterTableIdentifier(SqlBaseParser.TableIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#tableIdentifier}. - * @param ctx the parse tree - */ - void exitTableIdentifier(SqlBaseParser.TableIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#functionIdentifier}. - * @param ctx the parse tree - */ - void enterFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#functionIdentifier}. - * @param ctx the parse tree - */ - void exitFunctionIdentifier(SqlBaseParser.FunctionIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#namedExpression}. - * @param ctx the parse tree - */ - void enterNamedExpression(SqlBaseParser.NamedExpressionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#namedExpression}. - * @param ctx the parse tree - */ - void exitNamedExpression(SqlBaseParser.NamedExpressionContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#namedExpressionSeq}. - * @param ctx the parse tree - */ - void enterNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#namedExpressionSeq}. - * @param ctx the parse tree - */ - void exitNamedExpressionSeq(SqlBaseParser.NamedExpressionSeqContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#transformList}. - * @param ctx the parse tree - */ - void enterTransformList(SqlBaseParser.TransformListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#transformList}. - * @param ctx the parse tree - */ - void exitTransformList(SqlBaseParser.TransformListContext ctx); - /** - * Enter a parse tree produced by the {@code identityTransform} - * labeled alternative in {@link SqlBaseParser#transform}. - * @param ctx the parse tree - */ - void enterIdentityTransform(SqlBaseParser.IdentityTransformContext ctx); - /** - * Exit a parse tree produced by the {@code identityTransform} - * labeled alternative in {@link SqlBaseParser#transform}. - * @param ctx the parse tree - */ - void exitIdentityTransform(SqlBaseParser.IdentityTransformContext ctx); - /** - * Enter a parse tree produced by the {@code applyTransform} - * labeled alternative in {@link SqlBaseParser#transform}. - * @param ctx the parse tree - */ - void enterApplyTransform(SqlBaseParser.ApplyTransformContext ctx); - /** - * Exit a parse tree produced by the {@code applyTransform} - * labeled alternative in {@link SqlBaseParser#transform}. - * @param ctx the parse tree - */ - void exitApplyTransform(SqlBaseParser.ApplyTransformContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#transformArgument}. - * @param ctx the parse tree - */ - void enterTransformArgument(SqlBaseParser.TransformArgumentContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#transformArgument}. - * @param ctx the parse tree - */ - void exitTransformArgument(SqlBaseParser.TransformArgumentContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#expression}. - * @param ctx the parse tree - */ - void enterExpression(SqlBaseParser.ExpressionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#expression}. - * @param ctx the parse tree - */ - void exitExpression(SqlBaseParser.ExpressionContext ctx); - /** - * Enter a parse tree produced by the {@code logicalNot} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterLogicalNot(SqlBaseParser.LogicalNotContext ctx); - /** - * Exit a parse tree produced by the {@code logicalNot} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitLogicalNot(SqlBaseParser.LogicalNotContext ctx); - /** - * Enter a parse tree produced by the {@code predicated} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterPredicated(SqlBaseParser.PredicatedContext ctx); - /** - * Exit a parse tree produced by the {@code predicated} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitPredicated(SqlBaseParser.PredicatedContext ctx); - /** - * Enter a parse tree produced by the {@code exists} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterExists(SqlBaseParser.ExistsContext ctx); - /** - * Exit a parse tree produced by the {@code exists} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitExists(SqlBaseParser.ExistsContext ctx); - /** - * Enter a parse tree produced by the {@code logicalBinary} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterLogicalBinary(SqlBaseParser.LogicalBinaryContext ctx); - /** - * Exit a parse tree produced by the {@code logicalBinary} - * labeled alternative in {@link SqlBaseParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitLogicalBinary(SqlBaseParser.LogicalBinaryContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#predicate}. - * @param ctx the parse tree - */ - void enterPredicate(SqlBaseParser.PredicateContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#predicate}. - * @param ctx the parse tree - */ - void exitPredicate(SqlBaseParser.PredicateContext ctx); - /** - * Enter a parse tree produced by the {@code valueExpressionDefault} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void enterValueExpressionDefault(SqlBaseParser.ValueExpressionDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code valueExpressionDefault} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void exitValueExpressionDefault(SqlBaseParser.ValueExpressionDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code comparison} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void enterComparison(SqlBaseParser.ComparisonContext ctx); - /** - * Exit a parse tree produced by the {@code comparison} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void exitComparison(SqlBaseParser.ComparisonContext ctx); - /** - * Enter a parse tree produced by the {@code arithmeticBinary} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void enterArithmeticBinary(SqlBaseParser.ArithmeticBinaryContext ctx); - /** - * Exit a parse tree produced by the {@code arithmeticBinary} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void exitArithmeticBinary(SqlBaseParser.ArithmeticBinaryContext ctx); - /** - * Enter a parse tree produced by the {@code arithmeticUnary} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void enterArithmeticUnary(SqlBaseParser.ArithmeticUnaryContext ctx); - /** - * Exit a parse tree produced by the {@code arithmeticUnary} - * labeled alternative in {@link SqlBaseParser#valueExpression}. - * @param ctx the parse tree - */ - void exitArithmeticUnary(SqlBaseParser.ArithmeticUnaryContext ctx); - /** - * Enter a parse tree produced by the {@code struct} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterStruct(SqlBaseParser.StructContext ctx); - /** - * Exit a parse tree produced by the {@code struct} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitStruct(SqlBaseParser.StructContext ctx); - /** - * Enter a parse tree produced by the {@code dereference} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterDereference(SqlBaseParser.DereferenceContext ctx); - /** - * Exit a parse tree produced by the {@code dereference} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitDereference(SqlBaseParser.DereferenceContext ctx); - /** - * Enter a parse tree produced by the {@code simpleCase} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSimpleCase(SqlBaseParser.SimpleCaseContext ctx); - /** - * Exit a parse tree produced by the {@code simpleCase} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSimpleCase(SqlBaseParser.SimpleCaseContext ctx); - /** - * Enter a parse tree produced by the {@code columnReference} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterColumnReference(SqlBaseParser.ColumnReferenceContext ctx); - /** - * Exit a parse tree produced by the {@code columnReference} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitColumnReference(SqlBaseParser.ColumnReferenceContext ctx); - /** - * Enter a parse tree produced by the {@code rowConstructor} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterRowConstructor(SqlBaseParser.RowConstructorContext ctx); - /** - * Exit a parse tree produced by the {@code rowConstructor} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitRowConstructor(SqlBaseParser.RowConstructorContext ctx); - /** - * Enter a parse tree produced by the {@code last} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterLast(SqlBaseParser.LastContext ctx); - /** - * Exit a parse tree produced by the {@code last} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitLast(SqlBaseParser.LastContext ctx); - /** - * Enter a parse tree produced by the {@code star} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterStar(SqlBaseParser.StarContext ctx); - /** - * Exit a parse tree produced by the {@code star} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitStar(SqlBaseParser.StarContext ctx); - /** - * Enter a parse tree produced by the {@code overlay} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterOverlay(SqlBaseParser.OverlayContext ctx); - /** - * Exit a parse tree produced by the {@code overlay} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitOverlay(SqlBaseParser.OverlayContext ctx); - /** - * Enter a parse tree produced by the {@code subscript} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSubscript(SqlBaseParser.SubscriptContext ctx); - /** - * Exit a parse tree produced by the {@code subscript} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSubscript(SqlBaseParser.SubscriptContext ctx); - /** - * Enter a parse tree produced by the {@code subqueryExpression} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSubqueryExpression(SqlBaseParser.SubqueryExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code subqueryExpression} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSubqueryExpression(SqlBaseParser.SubqueryExpressionContext ctx); - /** - * Enter a parse tree produced by the {@code substring} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSubstring(SqlBaseParser.SubstringContext ctx); - /** - * Exit a parse tree produced by the {@code substring} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSubstring(SqlBaseParser.SubstringContext ctx); - /** - * Enter a parse tree produced by the {@code currentDatetime} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx); - /** - * Exit a parse tree produced by the {@code currentDatetime} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCurrentDatetime(SqlBaseParser.CurrentDatetimeContext ctx); - /** - * Enter a parse tree produced by the {@code cast} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCast(SqlBaseParser.CastContext ctx); - /** - * Exit a parse tree produced by the {@code cast} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCast(SqlBaseParser.CastContext ctx); - /** - * Enter a parse tree produced by the {@code constantDefault} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterConstantDefault(SqlBaseParser.ConstantDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code constantDefault} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitConstantDefault(SqlBaseParser.ConstantDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code lambda} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterLambda(SqlBaseParser.LambdaContext ctx); - /** - * Exit a parse tree produced by the {@code lambda} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitLambda(SqlBaseParser.LambdaContext ctx); - /** - * Enter a parse tree produced by the {@code parenthesizedExpression} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterParenthesizedExpression(SqlBaseParser.ParenthesizedExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code parenthesizedExpression} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitParenthesizedExpression(SqlBaseParser.ParenthesizedExpressionContext ctx); - /** - * Enter a parse tree produced by the {@code extract} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterExtract(SqlBaseParser.ExtractContext ctx); - /** - * Exit a parse tree produced by the {@code extract} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitExtract(SqlBaseParser.ExtractContext ctx); - /** - * Enter a parse tree produced by the {@code trim} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterTrim(SqlBaseParser.TrimContext ctx); - /** - * Exit a parse tree produced by the {@code trim} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitTrim(SqlBaseParser.TrimContext ctx); - /** - * Enter a parse tree produced by the {@code functionCall} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterFunctionCall(SqlBaseParser.FunctionCallContext ctx); - /** - * Exit a parse tree produced by the {@code functionCall} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitFunctionCall(SqlBaseParser.FunctionCallContext ctx); - /** - * Enter a parse tree produced by the {@code searchedCase} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSearchedCase(SqlBaseParser.SearchedCaseContext ctx); - /** - * Exit a parse tree produced by the {@code searchedCase} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSearchedCase(SqlBaseParser.SearchedCaseContext ctx); - /** - * Enter a parse tree produced by the {@code position} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterPosition(SqlBaseParser.PositionContext ctx); - /** - * Exit a parse tree produced by the {@code position} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitPosition(SqlBaseParser.PositionContext ctx); - /** - * Enter a parse tree produced by the {@code first} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterFirst(SqlBaseParser.FirstContext ctx); - /** - * Exit a parse tree produced by the {@code first} - * labeled alternative in {@link SqlBaseParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitFirst(SqlBaseParser.FirstContext ctx); - /** - * Enter a parse tree produced by the {@code nullLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void enterNullLiteral(SqlBaseParser.NullLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code nullLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void exitNullLiteral(SqlBaseParser.NullLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code intervalLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void enterIntervalLiteral(SqlBaseParser.IntervalLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code intervalLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void exitIntervalLiteral(SqlBaseParser.IntervalLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code typeConstructor} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void enterTypeConstructor(SqlBaseParser.TypeConstructorContext ctx); - /** - * Exit a parse tree produced by the {@code typeConstructor} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void exitTypeConstructor(SqlBaseParser.TypeConstructorContext ctx); - /** - * Enter a parse tree produced by the {@code numericLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void enterNumericLiteral(SqlBaseParser.NumericLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code numericLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void exitNumericLiteral(SqlBaseParser.NumericLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code booleanLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void enterBooleanLiteral(SqlBaseParser.BooleanLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code booleanLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void exitBooleanLiteral(SqlBaseParser.BooleanLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code stringLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void enterStringLiteral(SqlBaseParser.StringLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code stringLiteral} - * labeled alternative in {@link SqlBaseParser#constant}. - * @param ctx the parse tree - */ - void exitStringLiteral(SqlBaseParser.StringLiteralContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#comparisonOperator}. - * @param ctx the parse tree - */ - void enterComparisonOperator(SqlBaseParser.ComparisonOperatorContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#comparisonOperator}. - * @param ctx the parse tree - */ - void exitComparisonOperator(SqlBaseParser.ComparisonOperatorContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#arithmeticOperator}. - * @param ctx the parse tree - */ - void enterArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#arithmeticOperator}. - * @param ctx the parse tree - */ - void exitArithmeticOperator(SqlBaseParser.ArithmeticOperatorContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#predicateOperator}. - * @param ctx the parse tree - */ - void enterPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#predicateOperator}. - * @param ctx the parse tree - */ - void exitPredicateOperator(SqlBaseParser.PredicateOperatorContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#booleanValue}. - * @param ctx the parse tree - */ - void enterBooleanValue(SqlBaseParser.BooleanValueContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#booleanValue}. - * @param ctx the parse tree - */ - void exitBooleanValue(SqlBaseParser.BooleanValueContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#interval}. - * @param ctx the parse tree - */ - void enterInterval(SqlBaseParser.IntervalContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#interval}. - * @param ctx the parse tree - */ - void exitInterval(SqlBaseParser.IntervalContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#errorCapturingMultiUnitsInterval}. - * @param ctx the parse tree - */ - void enterErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#errorCapturingMultiUnitsInterval}. - * @param ctx the parse tree - */ - void exitErrorCapturingMultiUnitsInterval(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#multiUnitsInterval}. - * @param ctx the parse tree - */ - void enterMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#multiUnitsInterval}. - * @param ctx the parse tree - */ - void exitMultiUnitsInterval(SqlBaseParser.MultiUnitsIntervalContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#errorCapturingUnitToUnitInterval}. - * @param ctx the parse tree - */ - void enterErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#errorCapturingUnitToUnitInterval}. - * @param ctx the parse tree - */ - void exitErrorCapturingUnitToUnitInterval(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#unitToUnitInterval}. - * @param ctx the parse tree - */ - void enterUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#unitToUnitInterval}. - * @param ctx the parse tree - */ - void exitUnitToUnitInterval(SqlBaseParser.UnitToUnitIntervalContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#intervalValue}. - * @param ctx the parse tree - */ - void enterIntervalValue(SqlBaseParser.IntervalValueContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#intervalValue}. - * @param ctx the parse tree - */ - void exitIntervalValue(SqlBaseParser.IntervalValueContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#intervalUnit}. - * @param ctx the parse tree - */ - void enterIntervalUnit(SqlBaseParser.IntervalUnitContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#intervalUnit}. - * @param ctx the parse tree - */ - void exitIntervalUnit(SqlBaseParser.IntervalUnitContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#colPosition}. - * @param ctx the parse tree - */ - void enterColPosition(SqlBaseParser.ColPositionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#colPosition}. - * @param ctx the parse tree - */ - void exitColPosition(SqlBaseParser.ColPositionContext ctx); - /** - * Enter a parse tree produced by the {@code complexDataType} - * labeled alternative in {@link SqlBaseParser#dataType}. - * @param ctx the parse tree - */ - void enterComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx); - /** - * Exit a parse tree produced by the {@code complexDataType} - * labeled alternative in {@link SqlBaseParser#dataType}. - * @param ctx the parse tree - */ - void exitComplexDataType(SqlBaseParser.ComplexDataTypeContext ctx); - /** - * Enter a parse tree produced by the {@code primitiveDataType} - * labeled alternative in {@link SqlBaseParser#dataType}. - * @param ctx the parse tree - */ - void enterPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx); - /** - * Exit a parse tree produced by the {@code primitiveDataType} - * labeled alternative in {@link SqlBaseParser#dataType}. - * @param ctx the parse tree - */ - void exitPrimitiveDataType(SqlBaseParser.PrimitiveDataTypeContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPositionList}. - * @param ctx the parse tree - */ - void enterQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPositionList}. - * @param ctx the parse tree - */ - void exitQualifiedColTypeWithPositionList(SqlBaseParser.QualifiedColTypeWithPositionListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPosition}. - * @param ctx the parse tree - */ - void enterQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#qualifiedColTypeWithPosition}. - * @param ctx the parse tree - */ - void exitQualifiedColTypeWithPosition(SqlBaseParser.QualifiedColTypeWithPositionContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#colTypeList}. - * @param ctx the parse tree - */ - void enterColTypeList(SqlBaseParser.ColTypeListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#colTypeList}. - * @param ctx the parse tree - */ - void exitColTypeList(SqlBaseParser.ColTypeListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#colType}. - * @param ctx the parse tree - */ - void enterColType(SqlBaseParser.ColTypeContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#colType}. - * @param ctx the parse tree - */ - void exitColType(SqlBaseParser.ColTypeContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#complexColTypeList}. - * @param ctx the parse tree - */ - void enterComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#complexColTypeList}. - * @param ctx the parse tree - */ - void exitComplexColTypeList(SqlBaseParser.ComplexColTypeListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#complexColType}. - * @param ctx the parse tree - */ - void enterComplexColType(SqlBaseParser.ComplexColTypeContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#complexColType}. - * @param ctx the parse tree - */ - void exitComplexColType(SqlBaseParser.ComplexColTypeContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#whenClause}. - * @param ctx the parse tree - */ - void enterWhenClause(SqlBaseParser.WhenClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#whenClause}. - * @param ctx the parse tree - */ - void exitWhenClause(SqlBaseParser.WhenClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#windowClause}. - * @param ctx the parse tree - */ - void enterWindowClause(SqlBaseParser.WindowClauseContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#windowClause}. - * @param ctx the parse tree - */ - void exitWindowClause(SqlBaseParser.WindowClauseContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#namedWindow}. - * @param ctx the parse tree - */ - void enterNamedWindow(SqlBaseParser.NamedWindowContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#namedWindow}. - * @param ctx the parse tree - */ - void exitNamedWindow(SqlBaseParser.NamedWindowContext ctx); - /** - * Enter a parse tree produced by the {@code windowRef} - * labeled alternative in {@link SqlBaseParser#windowSpec}. - * @param ctx the parse tree - */ - void enterWindowRef(SqlBaseParser.WindowRefContext ctx); - /** - * Exit a parse tree produced by the {@code windowRef} - * labeled alternative in {@link SqlBaseParser#windowSpec}. - * @param ctx the parse tree - */ - void exitWindowRef(SqlBaseParser.WindowRefContext ctx); - /** - * Enter a parse tree produced by the {@code windowDef} - * labeled alternative in {@link SqlBaseParser#windowSpec}. - * @param ctx the parse tree - */ - void enterWindowDef(SqlBaseParser.WindowDefContext ctx); - /** - * Exit a parse tree produced by the {@code windowDef} - * labeled alternative in {@link SqlBaseParser#windowSpec}. - * @param ctx the parse tree - */ - void exitWindowDef(SqlBaseParser.WindowDefContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#windowFrame}. - * @param ctx the parse tree - */ - void enterWindowFrame(SqlBaseParser.WindowFrameContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#windowFrame}. - * @param ctx the parse tree - */ - void exitWindowFrame(SqlBaseParser.WindowFrameContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#frameBound}. - * @param ctx the parse tree - */ - void enterFrameBound(SqlBaseParser.FrameBoundContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#frameBound}. - * @param ctx the parse tree - */ - void exitFrameBound(SqlBaseParser.FrameBoundContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#qualifiedNameList}. - * @param ctx the parse tree - */ - void enterQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#qualifiedNameList}. - * @param ctx the parse tree - */ - void exitQualifiedNameList(SqlBaseParser.QualifiedNameListContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#functionName}. - * @param ctx the parse tree - */ - void enterFunctionName(SqlBaseParser.FunctionNameContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#functionName}. - * @param ctx the parse tree - */ - void exitFunctionName(SqlBaseParser.FunctionNameContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#qualifiedName}. - * @param ctx the parse tree - */ - void enterQualifiedName(SqlBaseParser.QualifiedNameContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#qualifiedName}. - * @param ctx the parse tree - */ - void exitQualifiedName(SqlBaseParser.QualifiedNameContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#errorCapturingIdentifier}. - * @param ctx the parse tree - */ - void enterErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#errorCapturingIdentifier}. - * @param ctx the parse tree - */ - void exitErrorCapturingIdentifier(SqlBaseParser.ErrorCapturingIdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code errorIdent} - * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void enterErrorIdent(SqlBaseParser.ErrorIdentContext ctx); - /** - * Exit a parse tree produced by the {@code errorIdent} - * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void exitErrorIdent(SqlBaseParser.ErrorIdentContext ctx); - /** - * Enter a parse tree produced by the {@code realIdent} - * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void enterRealIdent(SqlBaseParser.RealIdentContext ctx); - /** - * Exit a parse tree produced by the {@code realIdent} - * labeled alternative in {@link SqlBaseParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void exitRealIdent(SqlBaseParser.RealIdentContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#identifier}. - * @param ctx the parse tree - */ - void enterIdentifier(SqlBaseParser.IdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#identifier}. - * @param ctx the parse tree - */ - void exitIdentifier(SqlBaseParser.IdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code unquotedIdentifier} - * labeled alternative in {@link SqlBaseParser#strictIdentifier}. - * @param ctx the parse tree - */ - void enterUnquotedIdentifier(SqlBaseParser.UnquotedIdentifierContext ctx); - /** - * Exit a parse tree produced by the {@code unquotedIdentifier} - * labeled alternative in {@link SqlBaseParser#strictIdentifier}. - * @param ctx the parse tree - */ - void exitUnquotedIdentifier(SqlBaseParser.UnquotedIdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code quotedIdentifierAlternative} - * labeled alternative in {@link SqlBaseParser#strictIdentifier}. - * @param ctx the parse tree - */ - void enterQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx); - /** - * Exit a parse tree produced by the {@code quotedIdentifierAlternative} - * labeled alternative in {@link SqlBaseParser#strictIdentifier}. - * @param ctx the parse tree - */ - void exitQuotedIdentifierAlternative(SqlBaseParser.QuotedIdentifierAlternativeContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#quotedIdentifier}. - * @param ctx the parse tree - */ - void enterQuotedIdentifier(SqlBaseParser.QuotedIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#quotedIdentifier}. - * @param ctx the parse tree - */ - void exitQuotedIdentifier(SqlBaseParser.QuotedIdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code exponentLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code exponentLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitExponentLiteral(SqlBaseParser.ExponentLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code decimalLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterDecimalLiteral(SqlBaseParser.DecimalLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code decimalLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitDecimalLiteral(SqlBaseParser.DecimalLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code legacyDecimalLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code legacyDecimalLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitLegacyDecimalLiteral(SqlBaseParser.LegacyDecimalLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code integerLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterIntegerLiteral(SqlBaseParser.IntegerLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code integerLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitIntegerLiteral(SqlBaseParser.IntegerLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code bigIntLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code bigIntLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitBigIntLiteral(SqlBaseParser.BigIntLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code smallIntLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code smallIntLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitSmallIntLiteral(SqlBaseParser.SmallIntLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code tinyIntLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code tinyIntLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitTinyIntLiteral(SqlBaseParser.TinyIntLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code doubleLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterDoubleLiteral(SqlBaseParser.DoubleLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code doubleLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitDoubleLiteral(SqlBaseParser.DoubleLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code bigDecimalLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void enterBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code bigDecimalLiteral} - * labeled alternative in {@link SqlBaseParser#number}. - * @param ctx the parse tree - */ - void exitBigDecimalLiteral(SqlBaseParser.BigDecimalLiteralContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#alterColumnAction}. - * @param ctx the parse tree - */ - void enterAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#alterColumnAction}. - * @param ctx the parse tree - */ - void exitAlterColumnAction(SqlBaseParser.AlterColumnActionContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#ansiNonReserved}. - * @param ctx the parse tree - */ - void enterAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#ansiNonReserved}. - * @param ctx the parse tree - */ - void exitAnsiNonReserved(SqlBaseParser.AnsiNonReservedContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#strictNonReserved}. - * @param ctx the parse tree - */ - void enterStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#strictNonReserved}. - * @param ctx the parse tree - */ - void exitStrictNonReserved(SqlBaseParser.StrictNonReservedContext ctx); - /** - * Enter a parse tree produced by {@link SqlBaseParser#nonReserved}. - * @param ctx the parse tree - */ - void enterNonReserved(SqlBaseParser.NonReservedContext ctx); - /** - * Exit a parse tree produced by {@link SqlBaseParser#nonReserved}. - * @param ctx the parse tree - */ - void exitNonReserved(SqlBaseParser.NonReservedContext ctx); -} \ No newline at end of file diff --git a/pysparkling/sql/ast/generated/SqlBaseListener.py b/pysparkling/sql/ast/generated/SqlBaseListener.py new file mode 100644 index 000000000..f12369053 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseListener.py @@ -0,0 +1,2404 @@ +# Generated from ../grammar/SqlBase.g4 by ANTLR 4.7.1 +from antlr4 import * +if __name__ is not None and "." in __name__: + from .SqlBaseParser import SqlBaseParser +else: + from SqlBaseParser import SqlBaseParser + +# This class defines a complete listener for a parse tree produced by SqlBaseParser. +class SqlBaseListener(ParseTreeListener): + + # Enter a parse tree produced by SqlBaseParser#singleStatement. + def enterSingleStatement(self, ctx:SqlBaseParser.SingleStatementContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleStatement. + def exitSingleStatement(self, ctx:SqlBaseParser.SingleStatementContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#singleExpression. + def enterSingleExpression(self, ctx:SqlBaseParser.SingleExpressionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleExpression. + def exitSingleExpression(self, ctx:SqlBaseParser.SingleExpressionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#singleTableIdentifier. + def enterSingleTableIdentifier(self, ctx:SqlBaseParser.SingleTableIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleTableIdentifier. + def exitSingleTableIdentifier(self, ctx:SqlBaseParser.SingleTableIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#singleMultipartIdentifier. + def enterSingleMultipartIdentifier(self, ctx:SqlBaseParser.SingleMultipartIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleMultipartIdentifier. + def exitSingleMultipartIdentifier(self, ctx:SqlBaseParser.SingleMultipartIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#singleFunctionIdentifier. + def enterSingleFunctionIdentifier(self, ctx:SqlBaseParser.SingleFunctionIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleFunctionIdentifier. + def exitSingleFunctionIdentifier(self, ctx:SqlBaseParser.SingleFunctionIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#singleDataType. + def enterSingleDataType(self, ctx:SqlBaseParser.SingleDataTypeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleDataType. + def exitSingleDataType(self, ctx:SqlBaseParser.SingleDataTypeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#singleTableSchema. + def enterSingleTableSchema(self, ctx:SqlBaseParser.SingleTableSchemaContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleTableSchema. + def exitSingleTableSchema(self, ctx:SqlBaseParser.SingleTableSchemaContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#statementDefault. + def enterStatementDefault(self, ctx:SqlBaseParser.StatementDefaultContext): + pass + + # Exit a parse tree produced by SqlBaseParser#statementDefault. + def exitStatementDefault(self, ctx:SqlBaseParser.StatementDefaultContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dmlStatement. + def enterDmlStatement(self, ctx:SqlBaseParser.DmlStatementContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dmlStatement. + def exitDmlStatement(self, ctx:SqlBaseParser.DmlStatementContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#use. + def enterUse(self, ctx:SqlBaseParser.UseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#use. + def exitUse(self, ctx:SqlBaseParser.UseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createNamespace. + def enterCreateNamespace(self, ctx:SqlBaseParser.CreateNamespaceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createNamespace. + def exitCreateNamespace(self, ctx:SqlBaseParser.CreateNamespaceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setNamespaceProperties. + def enterSetNamespaceProperties(self, ctx:SqlBaseParser.SetNamespacePropertiesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setNamespaceProperties. + def exitSetNamespaceProperties(self, ctx:SqlBaseParser.SetNamespacePropertiesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setNamespaceLocation. + def enterSetNamespaceLocation(self, ctx:SqlBaseParser.SetNamespaceLocationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setNamespaceLocation. + def exitSetNamespaceLocation(self, ctx:SqlBaseParser.SetNamespaceLocationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dropNamespace. + def enterDropNamespace(self, ctx:SqlBaseParser.DropNamespaceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dropNamespace. + def exitDropNamespace(self, ctx:SqlBaseParser.DropNamespaceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showNamespaces. + def enterShowNamespaces(self, ctx:SqlBaseParser.ShowNamespacesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showNamespaces. + def exitShowNamespaces(self, ctx:SqlBaseParser.ShowNamespacesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createTable. + def enterCreateTable(self, ctx:SqlBaseParser.CreateTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createTable. + def exitCreateTable(self, ctx:SqlBaseParser.CreateTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createHiveTable. + def enterCreateHiveTable(self, ctx:SqlBaseParser.CreateHiveTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createHiveTable. + def exitCreateHiveTable(self, ctx:SqlBaseParser.CreateHiveTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createTableLike. + def enterCreateTableLike(self, ctx:SqlBaseParser.CreateTableLikeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createTableLike. + def exitCreateTableLike(self, ctx:SqlBaseParser.CreateTableLikeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#replaceTable. + def enterReplaceTable(self, ctx:SqlBaseParser.ReplaceTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#replaceTable. + def exitReplaceTable(self, ctx:SqlBaseParser.ReplaceTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#analyze. + def enterAnalyze(self, ctx:SqlBaseParser.AnalyzeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#analyze. + def exitAnalyze(self, ctx:SqlBaseParser.AnalyzeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#addTableColumns. + def enterAddTableColumns(self, ctx:SqlBaseParser.AddTableColumnsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#addTableColumns. + def exitAddTableColumns(self, ctx:SqlBaseParser.AddTableColumnsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#renameTableColumn. + def enterRenameTableColumn(self, ctx:SqlBaseParser.RenameTableColumnContext): + pass + + # Exit a parse tree produced by SqlBaseParser#renameTableColumn. + def exitRenameTableColumn(self, ctx:SqlBaseParser.RenameTableColumnContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dropTableColumns. + def enterDropTableColumns(self, ctx:SqlBaseParser.DropTableColumnsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dropTableColumns. + def exitDropTableColumns(self, ctx:SqlBaseParser.DropTableColumnsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#renameTable. + def enterRenameTable(self, ctx:SqlBaseParser.RenameTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#renameTable. + def exitRenameTable(self, ctx:SqlBaseParser.RenameTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setTableProperties. + def enterSetTableProperties(self, ctx:SqlBaseParser.SetTablePropertiesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setTableProperties. + def exitSetTableProperties(self, ctx:SqlBaseParser.SetTablePropertiesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#unsetTableProperties. + def enterUnsetTableProperties(self, ctx:SqlBaseParser.UnsetTablePropertiesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#unsetTableProperties. + def exitUnsetTableProperties(self, ctx:SqlBaseParser.UnsetTablePropertiesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#alterTableAlterColumn. + def enterAlterTableAlterColumn(self, ctx:SqlBaseParser.AlterTableAlterColumnContext): + pass + + # Exit a parse tree produced by SqlBaseParser#alterTableAlterColumn. + def exitAlterTableAlterColumn(self, ctx:SqlBaseParser.AlterTableAlterColumnContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#hiveChangeColumn. + def enterHiveChangeColumn(self, ctx:SqlBaseParser.HiveChangeColumnContext): + pass + + # Exit a parse tree produced by SqlBaseParser#hiveChangeColumn. + def exitHiveChangeColumn(self, ctx:SqlBaseParser.HiveChangeColumnContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#hiveReplaceColumns. + def enterHiveReplaceColumns(self, ctx:SqlBaseParser.HiveReplaceColumnsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#hiveReplaceColumns. + def exitHiveReplaceColumns(self, ctx:SqlBaseParser.HiveReplaceColumnsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setTableSerDe. + def enterSetTableSerDe(self, ctx:SqlBaseParser.SetTableSerDeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setTableSerDe. + def exitSetTableSerDe(self, ctx:SqlBaseParser.SetTableSerDeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#addTablePartition. + def enterAddTablePartition(self, ctx:SqlBaseParser.AddTablePartitionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#addTablePartition. + def exitAddTablePartition(self, ctx:SqlBaseParser.AddTablePartitionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#renameTablePartition. + def enterRenameTablePartition(self, ctx:SqlBaseParser.RenameTablePartitionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#renameTablePartition. + def exitRenameTablePartition(self, ctx:SqlBaseParser.RenameTablePartitionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dropTablePartitions. + def enterDropTablePartitions(self, ctx:SqlBaseParser.DropTablePartitionsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dropTablePartitions. + def exitDropTablePartitions(self, ctx:SqlBaseParser.DropTablePartitionsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setTableLocation. + def enterSetTableLocation(self, ctx:SqlBaseParser.SetTableLocationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setTableLocation. + def exitSetTableLocation(self, ctx:SqlBaseParser.SetTableLocationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#recoverPartitions. + def enterRecoverPartitions(self, ctx:SqlBaseParser.RecoverPartitionsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#recoverPartitions. + def exitRecoverPartitions(self, ctx:SqlBaseParser.RecoverPartitionsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dropTable. + def enterDropTable(self, ctx:SqlBaseParser.DropTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dropTable. + def exitDropTable(self, ctx:SqlBaseParser.DropTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dropView. + def enterDropView(self, ctx:SqlBaseParser.DropViewContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dropView. + def exitDropView(self, ctx:SqlBaseParser.DropViewContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createView. + def enterCreateView(self, ctx:SqlBaseParser.CreateViewContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createView. + def exitCreateView(self, ctx:SqlBaseParser.CreateViewContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createTempViewUsing. + def enterCreateTempViewUsing(self, ctx:SqlBaseParser.CreateTempViewUsingContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createTempViewUsing. + def exitCreateTempViewUsing(self, ctx:SqlBaseParser.CreateTempViewUsingContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#alterViewQuery. + def enterAlterViewQuery(self, ctx:SqlBaseParser.AlterViewQueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#alterViewQuery. + def exitAlterViewQuery(self, ctx:SqlBaseParser.AlterViewQueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createFunction. + def enterCreateFunction(self, ctx:SqlBaseParser.CreateFunctionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createFunction. + def exitCreateFunction(self, ctx:SqlBaseParser.CreateFunctionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dropFunction. + def enterDropFunction(self, ctx:SqlBaseParser.DropFunctionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dropFunction. + def exitDropFunction(self, ctx:SqlBaseParser.DropFunctionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#explain. + def enterExplain(self, ctx:SqlBaseParser.ExplainContext): + pass + + # Exit a parse tree produced by SqlBaseParser#explain. + def exitExplain(self, ctx:SqlBaseParser.ExplainContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showTables. + def enterShowTables(self, ctx:SqlBaseParser.ShowTablesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showTables. + def exitShowTables(self, ctx:SqlBaseParser.ShowTablesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showTable. + def enterShowTable(self, ctx:SqlBaseParser.ShowTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showTable. + def exitShowTable(self, ctx:SqlBaseParser.ShowTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showTblProperties. + def enterShowTblProperties(self, ctx:SqlBaseParser.ShowTblPropertiesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showTblProperties. + def exitShowTblProperties(self, ctx:SqlBaseParser.ShowTblPropertiesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showColumns. + def enterShowColumns(self, ctx:SqlBaseParser.ShowColumnsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showColumns. + def exitShowColumns(self, ctx:SqlBaseParser.ShowColumnsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showViews. + def enterShowViews(self, ctx:SqlBaseParser.ShowViewsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showViews. + def exitShowViews(self, ctx:SqlBaseParser.ShowViewsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showPartitions. + def enterShowPartitions(self, ctx:SqlBaseParser.ShowPartitionsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showPartitions. + def exitShowPartitions(self, ctx:SqlBaseParser.ShowPartitionsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showFunctions. + def enterShowFunctions(self, ctx:SqlBaseParser.ShowFunctionsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showFunctions. + def exitShowFunctions(self, ctx:SqlBaseParser.ShowFunctionsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showCreateTable. + def enterShowCreateTable(self, ctx:SqlBaseParser.ShowCreateTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showCreateTable. + def exitShowCreateTable(self, ctx:SqlBaseParser.ShowCreateTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#showCurrentNamespace. + def enterShowCurrentNamespace(self, ctx:SqlBaseParser.ShowCurrentNamespaceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#showCurrentNamespace. + def exitShowCurrentNamespace(self, ctx:SqlBaseParser.ShowCurrentNamespaceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#describeFunction. + def enterDescribeFunction(self, ctx:SqlBaseParser.DescribeFunctionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#describeFunction. + def exitDescribeFunction(self, ctx:SqlBaseParser.DescribeFunctionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#describeNamespace. + def enterDescribeNamespace(self, ctx:SqlBaseParser.DescribeNamespaceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#describeNamespace. + def exitDescribeNamespace(self, ctx:SqlBaseParser.DescribeNamespaceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#describeRelation. + def enterDescribeRelation(self, ctx:SqlBaseParser.DescribeRelationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#describeRelation. + def exitDescribeRelation(self, ctx:SqlBaseParser.DescribeRelationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#describeQuery. + def enterDescribeQuery(self, ctx:SqlBaseParser.DescribeQueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#describeQuery. + def exitDescribeQuery(self, ctx:SqlBaseParser.DescribeQueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#commentNamespace. + def enterCommentNamespace(self, ctx:SqlBaseParser.CommentNamespaceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#commentNamespace. + def exitCommentNamespace(self, ctx:SqlBaseParser.CommentNamespaceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#commentTable. + def enterCommentTable(self, ctx:SqlBaseParser.CommentTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#commentTable. + def exitCommentTable(self, ctx:SqlBaseParser.CommentTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#refreshTable. + def enterRefreshTable(self, ctx:SqlBaseParser.RefreshTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#refreshTable. + def exitRefreshTable(self, ctx:SqlBaseParser.RefreshTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#refreshResource. + def enterRefreshResource(self, ctx:SqlBaseParser.RefreshResourceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#refreshResource. + def exitRefreshResource(self, ctx:SqlBaseParser.RefreshResourceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#cacheTable. + def enterCacheTable(self, ctx:SqlBaseParser.CacheTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#cacheTable. + def exitCacheTable(self, ctx:SqlBaseParser.CacheTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#uncacheTable. + def enterUncacheTable(self, ctx:SqlBaseParser.UncacheTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#uncacheTable. + def exitUncacheTable(self, ctx:SqlBaseParser.UncacheTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#clearCache. + def enterClearCache(self, ctx:SqlBaseParser.ClearCacheContext): + pass + + # Exit a parse tree produced by SqlBaseParser#clearCache. + def exitClearCache(self, ctx:SqlBaseParser.ClearCacheContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#loadData. + def enterLoadData(self, ctx:SqlBaseParser.LoadDataContext): + pass + + # Exit a parse tree produced by SqlBaseParser#loadData. + def exitLoadData(self, ctx:SqlBaseParser.LoadDataContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#truncateTable. + def enterTruncateTable(self, ctx:SqlBaseParser.TruncateTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#truncateTable. + def exitTruncateTable(self, ctx:SqlBaseParser.TruncateTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#repairTable. + def enterRepairTable(self, ctx:SqlBaseParser.RepairTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#repairTable. + def exitRepairTable(self, ctx:SqlBaseParser.RepairTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#manageResource. + def enterManageResource(self, ctx:SqlBaseParser.ManageResourceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#manageResource. + def exitManageResource(self, ctx:SqlBaseParser.ManageResourceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#failNativeCommand. + def enterFailNativeCommand(self, ctx:SqlBaseParser.FailNativeCommandContext): + pass + + # Exit a parse tree produced by SqlBaseParser#failNativeCommand. + def exitFailNativeCommand(self, ctx:SqlBaseParser.FailNativeCommandContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setConfiguration. + def enterSetConfiguration(self, ctx:SqlBaseParser.SetConfigurationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setConfiguration. + def exitSetConfiguration(self, ctx:SqlBaseParser.SetConfigurationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#resetConfiguration. + def enterResetConfiguration(self, ctx:SqlBaseParser.ResetConfigurationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#resetConfiguration. + def exitResetConfiguration(self, ctx:SqlBaseParser.ResetConfigurationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#unsupportedHiveNativeCommands. + def enterUnsupportedHiveNativeCommands(self, ctx:SqlBaseParser.UnsupportedHiveNativeCommandsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#unsupportedHiveNativeCommands. + def exitUnsupportedHiveNativeCommands(self, ctx:SqlBaseParser.UnsupportedHiveNativeCommandsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createTableHeader. + def enterCreateTableHeader(self, ctx:SqlBaseParser.CreateTableHeaderContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createTableHeader. + def exitCreateTableHeader(self, ctx:SqlBaseParser.CreateTableHeaderContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#replaceTableHeader. + def enterReplaceTableHeader(self, ctx:SqlBaseParser.ReplaceTableHeaderContext): + pass + + # Exit a parse tree produced by SqlBaseParser#replaceTableHeader. + def exitReplaceTableHeader(self, ctx:SqlBaseParser.ReplaceTableHeaderContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#bucketSpec. + def enterBucketSpec(self, ctx:SqlBaseParser.BucketSpecContext): + pass + + # Exit a parse tree produced by SqlBaseParser#bucketSpec. + def exitBucketSpec(self, ctx:SqlBaseParser.BucketSpecContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#skewSpec. + def enterSkewSpec(self, ctx:SqlBaseParser.SkewSpecContext): + pass + + # Exit a parse tree produced by SqlBaseParser#skewSpec. + def exitSkewSpec(self, ctx:SqlBaseParser.SkewSpecContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#locationSpec. + def enterLocationSpec(self, ctx:SqlBaseParser.LocationSpecContext): + pass + + # Exit a parse tree produced by SqlBaseParser#locationSpec. + def exitLocationSpec(self, ctx:SqlBaseParser.LocationSpecContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#commentSpec. + def enterCommentSpec(self, ctx:SqlBaseParser.CommentSpecContext): + pass + + # Exit a parse tree produced by SqlBaseParser#commentSpec. + def exitCommentSpec(self, ctx:SqlBaseParser.CommentSpecContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#query. + def enterQuery(self, ctx:SqlBaseParser.QueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#query. + def exitQuery(self, ctx:SqlBaseParser.QueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#insertOverwriteTable. + def enterInsertOverwriteTable(self, ctx:SqlBaseParser.InsertOverwriteTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#insertOverwriteTable. + def exitInsertOverwriteTable(self, ctx:SqlBaseParser.InsertOverwriteTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#insertIntoTable. + def enterInsertIntoTable(self, ctx:SqlBaseParser.InsertIntoTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#insertIntoTable. + def exitInsertIntoTable(self, ctx:SqlBaseParser.InsertIntoTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#insertOverwriteHiveDir. + def enterInsertOverwriteHiveDir(self, ctx:SqlBaseParser.InsertOverwriteHiveDirContext): + pass + + # Exit a parse tree produced by SqlBaseParser#insertOverwriteHiveDir. + def exitInsertOverwriteHiveDir(self, ctx:SqlBaseParser.InsertOverwriteHiveDirContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#insertOverwriteDir. + def enterInsertOverwriteDir(self, ctx:SqlBaseParser.InsertOverwriteDirContext): + pass + + # Exit a parse tree produced by SqlBaseParser#insertOverwriteDir. + def exitInsertOverwriteDir(self, ctx:SqlBaseParser.InsertOverwriteDirContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#partitionSpecLocation. + def enterPartitionSpecLocation(self, ctx:SqlBaseParser.PartitionSpecLocationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#partitionSpecLocation. + def exitPartitionSpecLocation(self, ctx:SqlBaseParser.PartitionSpecLocationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#partitionSpec. + def enterPartitionSpec(self, ctx:SqlBaseParser.PartitionSpecContext): + pass + + # Exit a parse tree produced by SqlBaseParser#partitionSpec. + def exitPartitionSpec(self, ctx:SqlBaseParser.PartitionSpecContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#partitionVal. + def enterPartitionVal(self, ctx:SqlBaseParser.PartitionValContext): + pass + + # Exit a parse tree produced by SqlBaseParser#partitionVal. + def exitPartitionVal(self, ctx:SqlBaseParser.PartitionValContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#namespace. + def enterNamespace(self, ctx:SqlBaseParser.NamespaceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#namespace. + def exitNamespace(self, ctx:SqlBaseParser.NamespaceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#describeFuncName. + def enterDescribeFuncName(self, ctx:SqlBaseParser.DescribeFuncNameContext): + pass + + # Exit a parse tree produced by SqlBaseParser#describeFuncName. + def exitDescribeFuncName(self, ctx:SqlBaseParser.DescribeFuncNameContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#describeColName. + def enterDescribeColName(self, ctx:SqlBaseParser.DescribeColNameContext): + pass + + # Exit a parse tree produced by SqlBaseParser#describeColName. + def exitDescribeColName(self, ctx:SqlBaseParser.DescribeColNameContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#ctes. + def enterCtes(self, ctx:SqlBaseParser.CtesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#ctes. + def exitCtes(self, ctx:SqlBaseParser.CtesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#namedQuery. + def enterNamedQuery(self, ctx:SqlBaseParser.NamedQueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#namedQuery. + def exitNamedQuery(self, ctx:SqlBaseParser.NamedQueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tableProvider. + def enterTableProvider(self, ctx:SqlBaseParser.TableProviderContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tableProvider. + def exitTableProvider(self, ctx:SqlBaseParser.TableProviderContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createTableClauses. + def enterCreateTableClauses(self, ctx:SqlBaseParser.CreateTableClausesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createTableClauses. + def exitCreateTableClauses(self, ctx:SqlBaseParser.CreateTableClausesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tablePropertyList. + def enterTablePropertyList(self, ctx:SqlBaseParser.TablePropertyListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tablePropertyList. + def exitTablePropertyList(self, ctx:SqlBaseParser.TablePropertyListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tableProperty. + def enterTableProperty(self, ctx:SqlBaseParser.TablePropertyContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tableProperty. + def exitTableProperty(self, ctx:SqlBaseParser.TablePropertyContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tablePropertyKey. + def enterTablePropertyKey(self, ctx:SqlBaseParser.TablePropertyKeyContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tablePropertyKey. + def exitTablePropertyKey(self, ctx:SqlBaseParser.TablePropertyKeyContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tablePropertyValue. + def enterTablePropertyValue(self, ctx:SqlBaseParser.TablePropertyValueContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tablePropertyValue. + def exitTablePropertyValue(self, ctx:SqlBaseParser.TablePropertyValueContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#constantList. + def enterConstantList(self, ctx:SqlBaseParser.ConstantListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#constantList. + def exitConstantList(self, ctx:SqlBaseParser.ConstantListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#nestedConstantList. + def enterNestedConstantList(self, ctx:SqlBaseParser.NestedConstantListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#nestedConstantList. + def exitNestedConstantList(self, ctx:SqlBaseParser.NestedConstantListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#createFileFormat. + def enterCreateFileFormat(self, ctx:SqlBaseParser.CreateFileFormatContext): + pass + + # Exit a parse tree produced by SqlBaseParser#createFileFormat. + def exitCreateFileFormat(self, ctx:SqlBaseParser.CreateFileFormatContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tableFileFormat. + def enterTableFileFormat(self, ctx:SqlBaseParser.TableFileFormatContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tableFileFormat. + def exitTableFileFormat(self, ctx:SqlBaseParser.TableFileFormatContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#genericFileFormat. + def enterGenericFileFormat(self, ctx:SqlBaseParser.GenericFileFormatContext): + pass + + # Exit a parse tree produced by SqlBaseParser#genericFileFormat. + def exitGenericFileFormat(self, ctx:SqlBaseParser.GenericFileFormatContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#storageHandler. + def enterStorageHandler(self, ctx:SqlBaseParser.StorageHandlerContext): + pass + + # Exit a parse tree produced by SqlBaseParser#storageHandler. + def exitStorageHandler(self, ctx:SqlBaseParser.StorageHandlerContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#resource. + def enterResource(self, ctx:SqlBaseParser.ResourceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#resource. + def exitResource(self, ctx:SqlBaseParser.ResourceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#singleInsertQuery. + def enterSingleInsertQuery(self, ctx:SqlBaseParser.SingleInsertQueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#singleInsertQuery. + def exitSingleInsertQuery(self, ctx:SqlBaseParser.SingleInsertQueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#multiInsertQuery. + def enterMultiInsertQuery(self, ctx:SqlBaseParser.MultiInsertQueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#multiInsertQuery. + def exitMultiInsertQuery(self, ctx:SqlBaseParser.MultiInsertQueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#deleteFromTable. + def enterDeleteFromTable(self, ctx:SqlBaseParser.DeleteFromTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#deleteFromTable. + def exitDeleteFromTable(self, ctx:SqlBaseParser.DeleteFromTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#updateTable. + def enterUpdateTable(self, ctx:SqlBaseParser.UpdateTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#updateTable. + def exitUpdateTable(self, ctx:SqlBaseParser.UpdateTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#mergeIntoTable. + def enterMergeIntoTable(self, ctx:SqlBaseParser.MergeIntoTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#mergeIntoTable. + def exitMergeIntoTable(self, ctx:SqlBaseParser.MergeIntoTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#queryOrganization. + def enterQueryOrganization(self, ctx:SqlBaseParser.QueryOrganizationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#queryOrganization. + def exitQueryOrganization(self, ctx:SqlBaseParser.QueryOrganizationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#multiInsertQueryBody. + def enterMultiInsertQueryBody(self, ctx:SqlBaseParser.MultiInsertQueryBodyContext): + pass + + # Exit a parse tree produced by SqlBaseParser#multiInsertQueryBody. + def exitMultiInsertQueryBody(self, ctx:SqlBaseParser.MultiInsertQueryBodyContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#queryTermDefault. + def enterQueryTermDefault(self, ctx:SqlBaseParser.QueryTermDefaultContext): + pass + + # Exit a parse tree produced by SqlBaseParser#queryTermDefault. + def exitQueryTermDefault(self, ctx:SqlBaseParser.QueryTermDefaultContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setOperation. + def enterSetOperation(self, ctx:SqlBaseParser.SetOperationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setOperation. + def exitSetOperation(self, ctx:SqlBaseParser.SetOperationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#queryPrimaryDefault. + def enterQueryPrimaryDefault(self, ctx:SqlBaseParser.QueryPrimaryDefaultContext): + pass + + # Exit a parse tree produced by SqlBaseParser#queryPrimaryDefault. + def exitQueryPrimaryDefault(self, ctx:SqlBaseParser.QueryPrimaryDefaultContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#fromStmt. + def enterFromStmt(self, ctx:SqlBaseParser.FromStmtContext): + pass + + # Exit a parse tree produced by SqlBaseParser#fromStmt. + def exitFromStmt(self, ctx:SqlBaseParser.FromStmtContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#table. + def enterTable(self, ctx:SqlBaseParser.TableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#table. + def exitTable(self, ctx:SqlBaseParser.TableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#inlineTableDefault1. + def enterInlineTableDefault1(self, ctx:SqlBaseParser.InlineTableDefault1Context): + pass + + # Exit a parse tree produced by SqlBaseParser#inlineTableDefault1. + def exitInlineTableDefault1(self, ctx:SqlBaseParser.InlineTableDefault1Context): + pass + + + # Enter a parse tree produced by SqlBaseParser#subquery. + def enterSubquery(self, ctx:SqlBaseParser.SubqueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#subquery. + def exitSubquery(self, ctx:SqlBaseParser.SubqueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#sortItem. + def enterSortItem(self, ctx:SqlBaseParser.SortItemContext): + pass + + # Exit a parse tree produced by SqlBaseParser#sortItem. + def exitSortItem(self, ctx:SqlBaseParser.SortItemContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#fromStatement. + def enterFromStatement(self, ctx:SqlBaseParser.FromStatementContext): + pass + + # Exit a parse tree produced by SqlBaseParser#fromStatement. + def exitFromStatement(self, ctx:SqlBaseParser.FromStatementContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#fromStatementBody. + def enterFromStatementBody(self, ctx:SqlBaseParser.FromStatementBodyContext): + pass + + # Exit a parse tree produced by SqlBaseParser#fromStatementBody. + def exitFromStatementBody(self, ctx:SqlBaseParser.FromStatementBodyContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#transformQuerySpecification. + def enterTransformQuerySpecification(self, ctx:SqlBaseParser.TransformQuerySpecificationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#transformQuerySpecification. + def exitTransformQuerySpecification(self, ctx:SqlBaseParser.TransformQuerySpecificationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#regularQuerySpecification. + def enterRegularQuerySpecification(self, ctx:SqlBaseParser.RegularQuerySpecificationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#regularQuerySpecification. + def exitRegularQuerySpecification(self, ctx:SqlBaseParser.RegularQuerySpecificationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#transformClause. + def enterTransformClause(self, ctx:SqlBaseParser.TransformClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#transformClause. + def exitTransformClause(self, ctx:SqlBaseParser.TransformClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#selectClause. + def enterSelectClause(self, ctx:SqlBaseParser.SelectClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#selectClause. + def exitSelectClause(self, ctx:SqlBaseParser.SelectClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setClause. + def enterSetClause(self, ctx:SqlBaseParser.SetClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setClause. + def exitSetClause(self, ctx:SqlBaseParser.SetClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#matchedClause. + def enterMatchedClause(self, ctx:SqlBaseParser.MatchedClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#matchedClause. + def exitMatchedClause(self, ctx:SqlBaseParser.MatchedClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#notMatchedClause. + def enterNotMatchedClause(self, ctx:SqlBaseParser.NotMatchedClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#notMatchedClause. + def exitNotMatchedClause(self, ctx:SqlBaseParser.NotMatchedClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#matchedAction. + def enterMatchedAction(self, ctx:SqlBaseParser.MatchedActionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#matchedAction. + def exitMatchedAction(self, ctx:SqlBaseParser.MatchedActionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#notMatchedAction. + def enterNotMatchedAction(self, ctx:SqlBaseParser.NotMatchedActionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#notMatchedAction. + def exitNotMatchedAction(self, ctx:SqlBaseParser.NotMatchedActionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#assignmentList. + def enterAssignmentList(self, ctx:SqlBaseParser.AssignmentListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#assignmentList. + def exitAssignmentList(self, ctx:SqlBaseParser.AssignmentListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#assignment. + def enterAssignment(self, ctx:SqlBaseParser.AssignmentContext): + pass + + # Exit a parse tree produced by SqlBaseParser#assignment. + def exitAssignment(self, ctx:SqlBaseParser.AssignmentContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#whereClause. + def enterWhereClause(self, ctx:SqlBaseParser.WhereClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#whereClause. + def exitWhereClause(self, ctx:SqlBaseParser.WhereClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#havingClause. + def enterHavingClause(self, ctx:SqlBaseParser.HavingClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#havingClause. + def exitHavingClause(self, ctx:SqlBaseParser.HavingClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#hint. + def enterHint(self, ctx:SqlBaseParser.HintContext): + pass + + # Exit a parse tree produced by SqlBaseParser#hint. + def exitHint(self, ctx:SqlBaseParser.HintContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#hintStatement. + def enterHintStatement(self, ctx:SqlBaseParser.HintStatementContext): + pass + + # Exit a parse tree produced by SqlBaseParser#hintStatement. + def exitHintStatement(self, ctx:SqlBaseParser.HintStatementContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#fromClause. + def enterFromClause(self, ctx:SqlBaseParser.FromClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#fromClause. + def exitFromClause(self, ctx:SqlBaseParser.FromClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#aggregationClause. + def enterAggregationClause(self, ctx:SqlBaseParser.AggregationClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#aggregationClause. + def exitAggregationClause(self, ctx:SqlBaseParser.AggregationClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#groupingSet. + def enterGroupingSet(self, ctx:SqlBaseParser.GroupingSetContext): + pass + + # Exit a parse tree produced by SqlBaseParser#groupingSet. + def exitGroupingSet(self, ctx:SqlBaseParser.GroupingSetContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#pivotClause. + def enterPivotClause(self, ctx:SqlBaseParser.PivotClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#pivotClause. + def exitPivotClause(self, ctx:SqlBaseParser.PivotClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#pivotColumn. + def enterPivotColumn(self, ctx:SqlBaseParser.PivotColumnContext): + pass + + # Exit a parse tree produced by SqlBaseParser#pivotColumn. + def exitPivotColumn(self, ctx:SqlBaseParser.PivotColumnContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#pivotValue. + def enterPivotValue(self, ctx:SqlBaseParser.PivotValueContext): + pass + + # Exit a parse tree produced by SqlBaseParser#pivotValue. + def exitPivotValue(self, ctx:SqlBaseParser.PivotValueContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#lateralView. + def enterLateralView(self, ctx:SqlBaseParser.LateralViewContext): + pass + + # Exit a parse tree produced by SqlBaseParser#lateralView. + def exitLateralView(self, ctx:SqlBaseParser.LateralViewContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#setQuantifier. + def enterSetQuantifier(self, ctx:SqlBaseParser.SetQuantifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#setQuantifier. + def exitSetQuantifier(self, ctx:SqlBaseParser.SetQuantifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#relation. + def enterRelation(self, ctx:SqlBaseParser.RelationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#relation. + def exitRelation(self, ctx:SqlBaseParser.RelationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#joinRelation. + def enterJoinRelation(self, ctx:SqlBaseParser.JoinRelationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#joinRelation. + def exitJoinRelation(self, ctx:SqlBaseParser.JoinRelationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#joinType. + def enterJoinType(self, ctx:SqlBaseParser.JoinTypeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#joinType. + def exitJoinType(self, ctx:SqlBaseParser.JoinTypeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#joinCriteria. + def enterJoinCriteria(self, ctx:SqlBaseParser.JoinCriteriaContext): + pass + + # Exit a parse tree produced by SqlBaseParser#joinCriteria. + def exitJoinCriteria(self, ctx:SqlBaseParser.JoinCriteriaContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#sample. + def enterSample(self, ctx:SqlBaseParser.SampleContext): + pass + + # Exit a parse tree produced by SqlBaseParser#sample. + def exitSample(self, ctx:SqlBaseParser.SampleContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#sampleByPercentile. + def enterSampleByPercentile(self, ctx:SqlBaseParser.SampleByPercentileContext): + pass + + # Exit a parse tree produced by SqlBaseParser#sampleByPercentile. + def exitSampleByPercentile(self, ctx:SqlBaseParser.SampleByPercentileContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#sampleByRows. + def enterSampleByRows(self, ctx:SqlBaseParser.SampleByRowsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#sampleByRows. + def exitSampleByRows(self, ctx:SqlBaseParser.SampleByRowsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#sampleByBucket. + def enterSampleByBucket(self, ctx:SqlBaseParser.SampleByBucketContext): + pass + + # Exit a parse tree produced by SqlBaseParser#sampleByBucket. + def exitSampleByBucket(self, ctx:SqlBaseParser.SampleByBucketContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#sampleByBytes. + def enterSampleByBytes(self, ctx:SqlBaseParser.SampleByBytesContext): + pass + + # Exit a parse tree produced by SqlBaseParser#sampleByBytes. + def exitSampleByBytes(self, ctx:SqlBaseParser.SampleByBytesContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#identifierList. + def enterIdentifierList(self, ctx:SqlBaseParser.IdentifierListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#identifierList. + def exitIdentifierList(self, ctx:SqlBaseParser.IdentifierListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#identifierSeq. + def enterIdentifierSeq(self, ctx:SqlBaseParser.IdentifierSeqContext): + pass + + # Exit a parse tree produced by SqlBaseParser#identifierSeq. + def exitIdentifierSeq(self, ctx:SqlBaseParser.IdentifierSeqContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#orderedIdentifierList. + def enterOrderedIdentifierList(self, ctx:SqlBaseParser.OrderedIdentifierListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#orderedIdentifierList. + def exitOrderedIdentifierList(self, ctx:SqlBaseParser.OrderedIdentifierListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#orderedIdentifier. + def enterOrderedIdentifier(self, ctx:SqlBaseParser.OrderedIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#orderedIdentifier. + def exitOrderedIdentifier(self, ctx:SqlBaseParser.OrderedIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#identifierCommentList. + def enterIdentifierCommentList(self, ctx:SqlBaseParser.IdentifierCommentListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#identifierCommentList. + def exitIdentifierCommentList(self, ctx:SqlBaseParser.IdentifierCommentListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#identifierComment. + def enterIdentifierComment(self, ctx:SqlBaseParser.IdentifierCommentContext): + pass + + # Exit a parse tree produced by SqlBaseParser#identifierComment. + def exitIdentifierComment(self, ctx:SqlBaseParser.IdentifierCommentContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tableName. + def enterTableName(self, ctx:SqlBaseParser.TableNameContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tableName. + def exitTableName(self, ctx:SqlBaseParser.TableNameContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#aliasedQuery. + def enterAliasedQuery(self, ctx:SqlBaseParser.AliasedQueryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#aliasedQuery. + def exitAliasedQuery(self, ctx:SqlBaseParser.AliasedQueryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#aliasedRelation. + def enterAliasedRelation(self, ctx:SqlBaseParser.AliasedRelationContext): + pass + + # Exit a parse tree produced by SqlBaseParser#aliasedRelation. + def exitAliasedRelation(self, ctx:SqlBaseParser.AliasedRelationContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#inlineTableDefault2. + def enterInlineTableDefault2(self, ctx:SqlBaseParser.InlineTableDefault2Context): + pass + + # Exit a parse tree produced by SqlBaseParser#inlineTableDefault2. + def exitInlineTableDefault2(self, ctx:SqlBaseParser.InlineTableDefault2Context): + pass + + + # Enter a parse tree produced by SqlBaseParser#tableValuedFunction. + def enterTableValuedFunction(self, ctx:SqlBaseParser.TableValuedFunctionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tableValuedFunction. + def exitTableValuedFunction(self, ctx:SqlBaseParser.TableValuedFunctionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#inlineTable. + def enterInlineTable(self, ctx:SqlBaseParser.InlineTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#inlineTable. + def exitInlineTable(self, ctx:SqlBaseParser.InlineTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#functionTable. + def enterFunctionTable(self, ctx:SqlBaseParser.FunctionTableContext): + pass + + # Exit a parse tree produced by SqlBaseParser#functionTable. + def exitFunctionTable(self, ctx:SqlBaseParser.FunctionTableContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tableAlias. + def enterTableAlias(self, ctx:SqlBaseParser.TableAliasContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tableAlias. + def exitTableAlias(self, ctx:SqlBaseParser.TableAliasContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#rowFormatSerde. + def enterRowFormatSerde(self, ctx:SqlBaseParser.RowFormatSerdeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#rowFormatSerde. + def exitRowFormatSerde(self, ctx:SqlBaseParser.RowFormatSerdeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#rowFormatDelimited. + def enterRowFormatDelimited(self, ctx:SqlBaseParser.RowFormatDelimitedContext): + pass + + # Exit a parse tree produced by SqlBaseParser#rowFormatDelimited. + def exitRowFormatDelimited(self, ctx:SqlBaseParser.RowFormatDelimitedContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#multipartIdentifierList. + def enterMultipartIdentifierList(self, ctx:SqlBaseParser.MultipartIdentifierListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#multipartIdentifierList. + def exitMultipartIdentifierList(self, ctx:SqlBaseParser.MultipartIdentifierListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#multipartIdentifier. + def enterMultipartIdentifier(self, ctx:SqlBaseParser.MultipartIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#multipartIdentifier. + def exitMultipartIdentifier(self, ctx:SqlBaseParser.MultipartIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tableIdentifier. + def enterTableIdentifier(self, ctx:SqlBaseParser.TableIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tableIdentifier. + def exitTableIdentifier(self, ctx:SqlBaseParser.TableIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#functionIdentifier. + def enterFunctionIdentifier(self, ctx:SqlBaseParser.FunctionIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#functionIdentifier. + def exitFunctionIdentifier(self, ctx:SqlBaseParser.FunctionIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#namedExpression. + def enterNamedExpression(self, ctx:SqlBaseParser.NamedExpressionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#namedExpression. + def exitNamedExpression(self, ctx:SqlBaseParser.NamedExpressionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#namedExpressionSeq. + def enterNamedExpressionSeq(self, ctx:SqlBaseParser.NamedExpressionSeqContext): + pass + + # Exit a parse tree produced by SqlBaseParser#namedExpressionSeq. + def exitNamedExpressionSeq(self, ctx:SqlBaseParser.NamedExpressionSeqContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#transformList. + def enterTransformList(self, ctx:SqlBaseParser.TransformListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#transformList. + def exitTransformList(self, ctx:SqlBaseParser.TransformListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#identityTransform. + def enterIdentityTransform(self, ctx:SqlBaseParser.IdentityTransformContext): + pass + + # Exit a parse tree produced by SqlBaseParser#identityTransform. + def exitIdentityTransform(self, ctx:SqlBaseParser.IdentityTransformContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#applyTransform. + def enterApplyTransform(self, ctx:SqlBaseParser.ApplyTransformContext): + pass + + # Exit a parse tree produced by SqlBaseParser#applyTransform. + def exitApplyTransform(self, ctx:SqlBaseParser.ApplyTransformContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#transformArgument. + def enterTransformArgument(self, ctx:SqlBaseParser.TransformArgumentContext): + pass + + # Exit a parse tree produced by SqlBaseParser#transformArgument. + def exitTransformArgument(self, ctx:SqlBaseParser.TransformArgumentContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#expression. + def enterExpression(self, ctx:SqlBaseParser.ExpressionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#expression. + def exitExpression(self, ctx:SqlBaseParser.ExpressionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#logicalNot. + def enterLogicalNot(self, ctx:SqlBaseParser.LogicalNotContext): + pass + + # Exit a parse tree produced by SqlBaseParser#logicalNot. + def exitLogicalNot(self, ctx:SqlBaseParser.LogicalNotContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#predicated. + def enterPredicated(self, ctx:SqlBaseParser.PredicatedContext): + pass + + # Exit a parse tree produced by SqlBaseParser#predicated. + def exitPredicated(self, ctx:SqlBaseParser.PredicatedContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#exists. + def enterExists(self, ctx:SqlBaseParser.ExistsContext): + pass + + # Exit a parse tree produced by SqlBaseParser#exists. + def exitExists(self, ctx:SqlBaseParser.ExistsContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#logicalBinary. + def enterLogicalBinary(self, ctx:SqlBaseParser.LogicalBinaryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#logicalBinary. + def exitLogicalBinary(self, ctx:SqlBaseParser.LogicalBinaryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#predicate. + def enterPredicate(self, ctx:SqlBaseParser.PredicateContext): + pass + + # Exit a parse tree produced by SqlBaseParser#predicate. + def exitPredicate(self, ctx:SqlBaseParser.PredicateContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#valueExpressionDefault. + def enterValueExpressionDefault(self, ctx:SqlBaseParser.ValueExpressionDefaultContext): + pass + + # Exit a parse tree produced by SqlBaseParser#valueExpressionDefault. + def exitValueExpressionDefault(self, ctx:SqlBaseParser.ValueExpressionDefaultContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#comparison. + def enterComparison(self, ctx:SqlBaseParser.ComparisonContext): + pass + + # Exit a parse tree produced by SqlBaseParser#comparison. + def exitComparison(self, ctx:SqlBaseParser.ComparisonContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#arithmeticBinary. + def enterArithmeticBinary(self, ctx:SqlBaseParser.ArithmeticBinaryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#arithmeticBinary. + def exitArithmeticBinary(self, ctx:SqlBaseParser.ArithmeticBinaryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#arithmeticUnary. + def enterArithmeticUnary(self, ctx:SqlBaseParser.ArithmeticUnaryContext): + pass + + # Exit a parse tree produced by SqlBaseParser#arithmeticUnary. + def exitArithmeticUnary(self, ctx:SqlBaseParser.ArithmeticUnaryContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#struct. + def enterStruct(self, ctx:SqlBaseParser.StructContext): + pass + + # Exit a parse tree produced by SqlBaseParser#struct. + def exitStruct(self, ctx:SqlBaseParser.StructContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#dereference. + def enterDereference(self, ctx:SqlBaseParser.DereferenceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#dereference. + def exitDereference(self, ctx:SqlBaseParser.DereferenceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#simpleCase. + def enterSimpleCase(self, ctx:SqlBaseParser.SimpleCaseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#simpleCase. + def exitSimpleCase(self, ctx:SqlBaseParser.SimpleCaseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#columnReference. + def enterColumnReference(self, ctx:SqlBaseParser.ColumnReferenceContext): + pass + + # Exit a parse tree produced by SqlBaseParser#columnReference. + def exitColumnReference(self, ctx:SqlBaseParser.ColumnReferenceContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#rowConstructor. + def enterRowConstructor(self, ctx:SqlBaseParser.RowConstructorContext): + pass + + # Exit a parse tree produced by SqlBaseParser#rowConstructor. + def exitRowConstructor(self, ctx:SqlBaseParser.RowConstructorContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#last. + def enterLast(self, ctx:SqlBaseParser.LastContext): + pass + + # Exit a parse tree produced by SqlBaseParser#last. + def exitLast(self, ctx:SqlBaseParser.LastContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#star. + def enterStar(self, ctx:SqlBaseParser.StarContext): + pass + + # Exit a parse tree produced by SqlBaseParser#star. + def exitStar(self, ctx:SqlBaseParser.StarContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#overlay. + def enterOverlay(self, ctx:SqlBaseParser.OverlayContext): + pass + + # Exit a parse tree produced by SqlBaseParser#overlay. + def exitOverlay(self, ctx:SqlBaseParser.OverlayContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#subscript. + def enterSubscript(self, ctx:SqlBaseParser.SubscriptContext): + pass + + # Exit a parse tree produced by SqlBaseParser#subscript. + def exitSubscript(self, ctx:SqlBaseParser.SubscriptContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#subqueryExpression. + def enterSubqueryExpression(self, ctx:SqlBaseParser.SubqueryExpressionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#subqueryExpression. + def exitSubqueryExpression(self, ctx:SqlBaseParser.SubqueryExpressionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#substring. + def enterSubstring(self, ctx:SqlBaseParser.SubstringContext): + pass + + # Exit a parse tree produced by SqlBaseParser#substring. + def exitSubstring(self, ctx:SqlBaseParser.SubstringContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#currentDatetime. + def enterCurrentDatetime(self, ctx:SqlBaseParser.CurrentDatetimeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#currentDatetime. + def exitCurrentDatetime(self, ctx:SqlBaseParser.CurrentDatetimeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#cast. + def enterCast(self, ctx:SqlBaseParser.CastContext): + pass + + # Exit a parse tree produced by SqlBaseParser#cast. + def exitCast(self, ctx:SqlBaseParser.CastContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#constantDefault. + def enterConstantDefault(self, ctx:SqlBaseParser.ConstantDefaultContext): + pass + + # Exit a parse tree produced by SqlBaseParser#constantDefault. + def exitConstantDefault(self, ctx:SqlBaseParser.ConstantDefaultContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#lambda. + def enterLambda(self, ctx:SqlBaseParser.LambdaContext): + pass + + # Exit a parse tree produced by SqlBaseParser#lambda. + def exitLambda(self, ctx:SqlBaseParser.LambdaContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#parenthesizedExpression. + def enterParenthesizedExpression(self, ctx:SqlBaseParser.ParenthesizedExpressionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#parenthesizedExpression. + def exitParenthesizedExpression(self, ctx:SqlBaseParser.ParenthesizedExpressionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#extract. + def enterExtract(self, ctx:SqlBaseParser.ExtractContext): + pass + + # Exit a parse tree produced by SqlBaseParser#extract. + def exitExtract(self, ctx:SqlBaseParser.ExtractContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#trim. + def enterTrim(self, ctx:SqlBaseParser.TrimContext): + pass + + # Exit a parse tree produced by SqlBaseParser#trim. + def exitTrim(self, ctx:SqlBaseParser.TrimContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#functionCall. + def enterFunctionCall(self, ctx:SqlBaseParser.FunctionCallContext): + pass + + # Exit a parse tree produced by SqlBaseParser#functionCall. + def exitFunctionCall(self, ctx:SqlBaseParser.FunctionCallContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#searchedCase. + def enterSearchedCase(self, ctx:SqlBaseParser.SearchedCaseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#searchedCase. + def exitSearchedCase(self, ctx:SqlBaseParser.SearchedCaseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#position. + def enterPosition(self, ctx:SqlBaseParser.PositionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#position. + def exitPosition(self, ctx:SqlBaseParser.PositionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#first. + def enterFirst(self, ctx:SqlBaseParser.FirstContext): + pass + + # Exit a parse tree produced by SqlBaseParser#first. + def exitFirst(self, ctx:SqlBaseParser.FirstContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#nullLiteral. + def enterNullLiteral(self, ctx:SqlBaseParser.NullLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#nullLiteral. + def exitNullLiteral(self, ctx:SqlBaseParser.NullLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#intervalLiteral. + def enterIntervalLiteral(self, ctx:SqlBaseParser.IntervalLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#intervalLiteral. + def exitIntervalLiteral(self, ctx:SqlBaseParser.IntervalLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#typeConstructor. + def enterTypeConstructor(self, ctx:SqlBaseParser.TypeConstructorContext): + pass + + # Exit a parse tree produced by SqlBaseParser#typeConstructor. + def exitTypeConstructor(self, ctx:SqlBaseParser.TypeConstructorContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#numericLiteral. + def enterNumericLiteral(self, ctx:SqlBaseParser.NumericLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#numericLiteral. + def exitNumericLiteral(self, ctx:SqlBaseParser.NumericLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#booleanLiteral. + def enterBooleanLiteral(self, ctx:SqlBaseParser.BooleanLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#booleanLiteral. + def exitBooleanLiteral(self, ctx:SqlBaseParser.BooleanLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#stringLiteral. + def enterStringLiteral(self, ctx:SqlBaseParser.StringLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#stringLiteral. + def exitStringLiteral(self, ctx:SqlBaseParser.StringLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#comparisonOperator. + def enterComparisonOperator(self, ctx:SqlBaseParser.ComparisonOperatorContext): + pass + + # Exit a parse tree produced by SqlBaseParser#comparisonOperator. + def exitComparisonOperator(self, ctx:SqlBaseParser.ComparisonOperatorContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#arithmeticOperator. + def enterArithmeticOperator(self, ctx:SqlBaseParser.ArithmeticOperatorContext): + pass + + # Exit a parse tree produced by SqlBaseParser#arithmeticOperator. + def exitArithmeticOperator(self, ctx:SqlBaseParser.ArithmeticOperatorContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#predicateOperator. + def enterPredicateOperator(self, ctx:SqlBaseParser.PredicateOperatorContext): + pass + + # Exit a parse tree produced by SqlBaseParser#predicateOperator. + def exitPredicateOperator(self, ctx:SqlBaseParser.PredicateOperatorContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#booleanValue. + def enterBooleanValue(self, ctx:SqlBaseParser.BooleanValueContext): + pass + + # Exit a parse tree produced by SqlBaseParser#booleanValue. + def exitBooleanValue(self, ctx:SqlBaseParser.BooleanValueContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#interval. + def enterInterval(self, ctx:SqlBaseParser.IntervalContext): + pass + + # Exit a parse tree produced by SqlBaseParser#interval. + def exitInterval(self, ctx:SqlBaseParser.IntervalContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#errorCapturingMultiUnitsInterval. + def enterErrorCapturingMultiUnitsInterval(self, ctx:SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext): + pass + + # Exit a parse tree produced by SqlBaseParser#errorCapturingMultiUnitsInterval. + def exitErrorCapturingMultiUnitsInterval(self, ctx:SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#multiUnitsInterval. + def enterMultiUnitsInterval(self, ctx:SqlBaseParser.MultiUnitsIntervalContext): + pass + + # Exit a parse tree produced by SqlBaseParser#multiUnitsInterval. + def exitMultiUnitsInterval(self, ctx:SqlBaseParser.MultiUnitsIntervalContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#errorCapturingUnitToUnitInterval. + def enterErrorCapturingUnitToUnitInterval(self, ctx:SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext): + pass + + # Exit a parse tree produced by SqlBaseParser#errorCapturingUnitToUnitInterval. + def exitErrorCapturingUnitToUnitInterval(self, ctx:SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#unitToUnitInterval. + def enterUnitToUnitInterval(self, ctx:SqlBaseParser.UnitToUnitIntervalContext): + pass + + # Exit a parse tree produced by SqlBaseParser#unitToUnitInterval. + def exitUnitToUnitInterval(self, ctx:SqlBaseParser.UnitToUnitIntervalContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#intervalValue. + def enterIntervalValue(self, ctx:SqlBaseParser.IntervalValueContext): + pass + + # Exit a parse tree produced by SqlBaseParser#intervalValue. + def exitIntervalValue(self, ctx:SqlBaseParser.IntervalValueContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#intervalUnit. + def enterIntervalUnit(self, ctx:SqlBaseParser.IntervalUnitContext): + pass + + # Exit a parse tree produced by SqlBaseParser#intervalUnit. + def exitIntervalUnit(self, ctx:SqlBaseParser.IntervalUnitContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#colPosition. + def enterColPosition(self, ctx:SqlBaseParser.ColPositionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#colPosition. + def exitColPosition(self, ctx:SqlBaseParser.ColPositionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#complexDataType. + def enterComplexDataType(self, ctx:SqlBaseParser.ComplexDataTypeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#complexDataType. + def exitComplexDataType(self, ctx:SqlBaseParser.ComplexDataTypeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#primitiveDataType. + def enterPrimitiveDataType(self, ctx:SqlBaseParser.PrimitiveDataTypeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#primitiveDataType. + def exitPrimitiveDataType(self, ctx:SqlBaseParser.PrimitiveDataTypeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#qualifiedColTypeWithPositionList. + def enterQualifiedColTypeWithPositionList(self, ctx:SqlBaseParser.QualifiedColTypeWithPositionListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#qualifiedColTypeWithPositionList. + def exitQualifiedColTypeWithPositionList(self, ctx:SqlBaseParser.QualifiedColTypeWithPositionListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#qualifiedColTypeWithPosition. + def enterQualifiedColTypeWithPosition(self, ctx:SqlBaseParser.QualifiedColTypeWithPositionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#qualifiedColTypeWithPosition. + def exitQualifiedColTypeWithPosition(self, ctx:SqlBaseParser.QualifiedColTypeWithPositionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#colTypeList. + def enterColTypeList(self, ctx:SqlBaseParser.ColTypeListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#colTypeList. + def exitColTypeList(self, ctx:SqlBaseParser.ColTypeListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#colType. + def enterColType(self, ctx:SqlBaseParser.ColTypeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#colType. + def exitColType(self, ctx:SqlBaseParser.ColTypeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#complexColTypeList. + def enterComplexColTypeList(self, ctx:SqlBaseParser.ComplexColTypeListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#complexColTypeList. + def exitComplexColTypeList(self, ctx:SqlBaseParser.ComplexColTypeListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#complexColType. + def enterComplexColType(self, ctx:SqlBaseParser.ComplexColTypeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#complexColType. + def exitComplexColType(self, ctx:SqlBaseParser.ComplexColTypeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#whenClause. + def enterWhenClause(self, ctx:SqlBaseParser.WhenClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#whenClause. + def exitWhenClause(self, ctx:SqlBaseParser.WhenClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#windowClause. + def enterWindowClause(self, ctx:SqlBaseParser.WindowClauseContext): + pass + + # Exit a parse tree produced by SqlBaseParser#windowClause. + def exitWindowClause(self, ctx:SqlBaseParser.WindowClauseContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#namedWindow. + def enterNamedWindow(self, ctx:SqlBaseParser.NamedWindowContext): + pass + + # Exit a parse tree produced by SqlBaseParser#namedWindow. + def exitNamedWindow(self, ctx:SqlBaseParser.NamedWindowContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#windowRef. + def enterWindowRef(self, ctx:SqlBaseParser.WindowRefContext): + pass + + # Exit a parse tree produced by SqlBaseParser#windowRef. + def exitWindowRef(self, ctx:SqlBaseParser.WindowRefContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#windowDef. + def enterWindowDef(self, ctx:SqlBaseParser.WindowDefContext): + pass + + # Exit a parse tree produced by SqlBaseParser#windowDef. + def exitWindowDef(self, ctx:SqlBaseParser.WindowDefContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#windowFrame. + def enterWindowFrame(self, ctx:SqlBaseParser.WindowFrameContext): + pass + + # Exit a parse tree produced by SqlBaseParser#windowFrame. + def exitWindowFrame(self, ctx:SqlBaseParser.WindowFrameContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#frameBound. + def enterFrameBound(self, ctx:SqlBaseParser.FrameBoundContext): + pass + + # Exit a parse tree produced by SqlBaseParser#frameBound. + def exitFrameBound(self, ctx:SqlBaseParser.FrameBoundContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#qualifiedNameList. + def enterQualifiedNameList(self, ctx:SqlBaseParser.QualifiedNameListContext): + pass + + # Exit a parse tree produced by SqlBaseParser#qualifiedNameList. + def exitQualifiedNameList(self, ctx:SqlBaseParser.QualifiedNameListContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#functionName. + def enterFunctionName(self, ctx:SqlBaseParser.FunctionNameContext): + pass + + # Exit a parse tree produced by SqlBaseParser#functionName. + def exitFunctionName(self, ctx:SqlBaseParser.FunctionNameContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#qualifiedName. + def enterQualifiedName(self, ctx:SqlBaseParser.QualifiedNameContext): + pass + + # Exit a parse tree produced by SqlBaseParser#qualifiedName. + def exitQualifiedName(self, ctx:SqlBaseParser.QualifiedNameContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#errorCapturingIdentifier. + def enterErrorCapturingIdentifier(self, ctx:SqlBaseParser.ErrorCapturingIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#errorCapturingIdentifier. + def exitErrorCapturingIdentifier(self, ctx:SqlBaseParser.ErrorCapturingIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#errorIdent. + def enterErrorIdent(self, ctx:SqlBaseParser.ErrorIdentContext): + pass + + # Exit a parse tree produced by SqlBaseParser#errorIdent. + def exitErrorIdent(self, ctx:SqlBaseParser.ErrorIdentContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#realIdent. + def enterRealIdent(self, ctx:SqlBaseParser.RealIdentContext): + pass + + # Exit a parse tree produced by SqlBaseParser#realIdent. + def exitRealIdent(self, ctx:SqlBaseParser.RealIdentContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#identifier. + def enterIdentifier(self, ctx:SqlBaseParser.IdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#identifier. + def exitIdentifier(self, ctx:SqlBaseParser.IdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#unquotedIdentifier. + def enterUnquotedIdentifier(self, ctx:SqlBaseParser.UnquotedIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#unquotedIdentifier. + def exitUnquotedIdentifier(self, ctx:SqlBaseParser.UnquotedIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#quotedIdentifierAlternative. + def enterQuotedIdentifierAlternative(self, ctx:SqlBaseParser.QuotedIdentifierAlternativeContext): + pass + + # Exit a parse tree produced by SqlBaseParser#quotedIdentifierAlternative. + def exitQuotedIdentifierAlternative(self, ctx:SqlBaseParser.QuotedIdentifierAlternativeContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#quotedIdentifier. + def enterQuotedIdentifier(self, ctx:SqlBaseParser.QuotedIdentifierContext): + pass + + # Exit a parse tree produced by SqlBaseParser#quotedIdentifier. + def exitQuotedIdentifier(self, ctx:SqlBaseParser.QuotedIdentifierContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#exponentLiteral. + def enterExponentLiteral(self, ctx:SqlBaseParser.ExponentLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#exponentLiteral. + def exitExponentLiteral(self, ctx:SqlBaseParser.ExponentLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#decimalLiteral. + def enterDecimalLiteral(self, ctx:SqlBaseParser.DecimalLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#decimalLiteral. + def exitDecimalLiteral(self, ctx:SqlBaseParser.DecimalLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#legacyDecimalLiteral. + def enterLegacyDecimalLiteral(self, ctx:SqlBaseParser.LegacyDecimalLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#legacyDecimalLiteral. + def exitLegacyDecimalLiteral(self, ctx:SqlBaseParser.LegacyDecimalLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#integerLiteral. + def enterIntegerLiteral(self, ctx:SqlBaseParser.IntegerLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#integerLiteral. + def exitIntegerLiteral(self, ctx:SqlBaseParser.IntegerLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#bigIntLiteral. + def enterBigIntLiteral(self, ctx:SqlBaseParser.BigIntLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#bigIntLiteral. + def exitBigIntLiteral(self, ctx:SqlBaseParser.BigIntLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#smallIntLiteral. + def enterSmallIntLiteral(self, ctx:SqlBaseParser.SmallIntLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#smallIntLiteral. + def exitSmallIntLiteral(self, ctx:SqlBaseParser.SmallIntLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#tinyIntLiteral. + def enterTinyIntLiteral(self, ctx:SqlBaseParser.TinyIntLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#tinyIntLiteral. + def exitTinyIntLiteral(self, ctx:SqlBaseParser.TinyIntLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#doubleLiteral. + def enterDoubleLiteral(self, ctx:SqlBaseParser.DoubleLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#doubleLiteral. + def exitDoubleLiteral(self, ctx:SqlBaseParser.DoubleLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#bigDecimalLiteral. + def enterBigDecimalLiteral(self, ctx:SqlBaseParser.BigDecimalLiteralContext): + pass + + # Exit a parse tree produced by SqlBaseParser#bigDecimalLiteral. + def exitBigDecimalLiteral(self, ctx:SqlBaseParser.BigDecimalLiteralContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#alterColumnAction. + def enterAlterColumnAction(self, ctx:SqlBaseParser.AlterColumnActionContext): + pass + + # Exit a parse tree produced by SqlBaseParser#alterColumnAction. + def exitAlterColumnAction(self, ctx:SqlBaseParser.AlterColumnActionContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#ansiNonReserved. + def enterAnsiNonReserved(self, ctx:SqlBaseParser.AnsiNonReservedContext): + pass + + # Exit a parse tree produced by SqlBaseParser#ansiNonReserved. + def exitAnsiNonReserved(self, ctx:SqlBaseParser.AnsiNonReservedContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#strictNonReserved. + def enterStrictNonReserved(self, ctx:SqlBaseParser.StrictNonReservedContext): + pass + + # Exit a parse tree produced by SqlBaseParser#strictNonReserved. + def exitStrictNonReserved(self, ctx:SqlBaseParser.StrictNonReservedContext): + pass + + + # Enter a parse tree produced by SqlBaseParser#nonReserved. + def enterNonReserved(self, ctx:SqlBaseParser.NonReservedContext): + pass + + # Exit a parse tree produced by SqlBaseParser#nonReserved. + def exitNonReserved(self, ctx:SqlBaseParser.NonReservedContext): + pass + + diff --git a/pysparkling/sql/ast/generated/SqlBaseParser.java b/pysparkling/sql/ast/generated/SqlBaseParser.java deleted file mode 100644 index 9449fb1d4..000000000 --- a/pysparkling/sql/ast/generated/SqlBaseParser.java +++ /dev/null @@ -1,20067 +0,0 @@ -// Generated from /home/eguyomarch/prog/pysparkling/pysparkling/sql/ast/grammar/SqlBase.g4 by ANTLR 4.7.1 -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.misc.*; -import org.antlr.v4.runtime.tree.*; -import java.util.List; -import java.util.Iterator; -import java.util.ArrayList; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) -public class SqlBaseParser extends Parser { - static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, - T__9=10, T__10=11, ADD=12, AFTER=13, ALL=14, ALTER=15, ANALYZE=16, AND=17, - ANTI=18, ANY=19, ARCHIVE=20, ARRAY=21, AS=22, ASC=23, AT=24, AUTHORIZATION=25, - BETWEEN=26, BOTH=27, BUCKET=28, BUCKETS=29, BY=30, CACHE=31, CASCADE=32, - CASE=33, CAST=34, CHANGE=35, CHECK=36, CLEAR=37, CLUSTER=38, CLUSTERED=39, - CODEGEN=40, COLLATE=41, COLLECTION=42, COLUMN=43, COLUMNS=44, COMMENT=45, - COMMIT=46, COMPACT=47, COMPACTIONS=48, COMPUTE=49, CONCATENATE=50, CONSTRAINT=51, - COST=52, CREATE=53, CROSS=54, CUBE=55, CURRENT=56, CURRENT_DATE=57, CURRENT_TIME=58, - CURRENT_TIMESTAMP=59, CURRENT_USER=60, DATA=61, DATABASE=62, DATABASES=63, - DAY=64, DBPROPERTIES=65, DEFINED=66, DELETE=67, DELIMITED=68, DESC=69, - DESCRIBE=70, DFS=71, DIRECTORIES=72, DIRECTORY=73, DISTINCT=74, DISTRIBUTE=75, - DROP=76, ELSE=77, END=78, ESCAPE=79, ESCAPED=80, EXCEPT=81, EXCHANGE=82, - EXISTS=83, EXPLAIN=84, EXPORT=85, EXTENDED=86, EXTERNAL=87, EXTRACT=88, - FALSE=89, FETCH=90, FIELDS=91, FILTER=92, FILEFORMAT=93, FIRST=94, FOLLOWING=95, - FOR=96, FOREIGN=97, FORMAT=98, FORMATTED=99, FROM=100, FULL=101, FUNCTION=102, - FUNCTIONS=103, GLOBAL=104, GRANT=105, GROUP=106, GROUPING=107, HAVING=108, - HOUR=109, IF=110, IGNORE=111, IMPORT=112, IN=113, INDEX=114, INDEXES=115, - INNER=116, INPATH=117, INPUTFORMAT=118, INSERT=119, INTERSECT=120, INTERVAL=121, - INTO=122, IS=123, ITEMS=124, JOIN=125, KEYS=126, LAST=127, LATERAL=128, - LAZY=129, LEADING=130, LEFT=131, LIKE=132, LIMIT=133, LINES=134, LIST=135, - LOAD=136, LOCAL=137, LOCATION=138, LOCK=139, LOCKS=140, LOGICAL=141, MACRO=142, - MAP=143, MATCHED=144, MERGE=145, MINUTE=146, MONTH=147, MSCK=148, NAMESPACE=149, - NAMESPACES=150, NATURAL=151, NO=152, NOT=153, NULL=154, NULLS=155, OF=156, - ON=157, ONLY=158, OPTION=159, OPTIONS=160, OR=161, ORDER=162, OUT=163, - OUTER=164, OUTPUTFORMAT=165, OVER=166, OVERLAPS=167, OVERLAY=168, OVERWRITE=169, - PARTITION=170, PARTITIONED=171, PARTITIONS=172, PERCENTLIT=173, PIVOT=174, - PLACING=175, POSITION=176, PRECEDING=177, PRIMARY=178, PRINCIPALS=179, - PROPERTIES=180, PURGE=181, QUERY=182, RANGE=183, RECORDREADER=184, RECORDWRITER=185, - RECOVER=186, REDUCE=187, REFERENCES=188, REFRESH=189, RENAME=190, REPAIR=191, - REPLACE=192, RESET=193, RESTRICT=194, REVOKE=195, RIGHT=196, RLIKE=197, - ROLE=198, ROLES=199, ROLLBACK=200, ROLLUP=201, ROW=202, ROWS=203, SCHEMA=204, - SECOND=205, SELECT=206, SEMI=207, SEPARATED=208, SERDE=209, SERDEPROPERTIES=210, - SESSION_USER=211, SET=212, SETMINUS=213, SETS=214, SHOW=215, SKEWED=216, - SOME=217, SORT=218, SORTED=219, START=220, STATISTICS=221, STORED=222, - STRATIFY=223, STRUCT=224, SUBSTR=225, SUBSTRING=226, TABLE=227, TABLES=228, - TABLESAMPLE=229, TBLPROPERTIES=230, TEMPORARY=231, TERMINATED=232, THEN=233, - TO=234, TOUCH=235, TRAILING=236, TRANSACTION=237, TRANSACTIONS=238, TRANSFORM=239, - TRIM=240, TRUE=241, TRUNCATE=242, TYPE=243, UNARCHIVE=244, UNBOUNDED=245, - UNCACHE=246, UNION=247, UNIQUE=248, UNKNOWN=249, UNLOCK=250, UNSET=251, - UPDATE=252, USE=253, USER=254, USING=255, VALUES=256, VIEW=257, VIEWS=258, - WHEN=259, WHERE=260, WINDOW=261, WITH=262, YEAR=263, EQ=264, NSEQ=265, - NEQ=266, NEQJ=267, LT=268, LTE=269, GT=270, GTE=271, PLUS=272, MINUS=273, - ASTERISK=274, SLASH=275, PERCENT=276, DIV=277, TILDE=278, AMPERSAND=279, - PIPE=280, CONCAT_PIPE=281, HAT=282, STRING=283, BIGINT_LITERAL=284, SMALLINT_LITERAL=285, - TINYINT_LITERAL=286, INTEGER_VALUE=287, EXPONENT_VALUE=288, DECIMAL_VALUE=289, - DOUBLE_LITERAL=290, BIGDECIMAL_LITERAL=291, IDENTIFIER=292, BACKQUOTED_IDENTIFIER=293, - SIMPLE_COMMENT=294, BRACKETED_COMMENT=295, WS=296, UNRECOGNIZED=297; - public static final int - RULE_singleStatement = 0, RULE_singleExpression = 1, RULE_singleTableIdentifier = 2, - RULE_singleMultipartIdentifier = 3, RULE_singleFunctionIdentifier = 4, - RULE_singleDataType = 5, RULE_singleTableSchema = 6, RULE_statement = 7, - RULE_unsupportedHiveNativeCommands = 8, RULE_createTableHeader = 9, RULE_replaceTableHeader = 10, - RULE_bucketSpec = 11, RULE_skewSpec = 12, RULE_locationSpec = 13, RULE_commentSpec = 14, - RULE_query = 15, RULE_insertInto = 16, RULE_partitionSpecLocation = 17, - RULE_partitionSpec = 18, RULE_partitionVal = 19, RULE_namespace = 20, - RULE_describeFuncName = 21, RULE_describeColName = 22, RULE_ctes = 23, - RULE_namedQuery = 24, RULE_tableProvider = 25, RULE_createTableClauses = 26, - RULE_tablePropertyList = 27, RULE_tableProperty = 28, RULE_tablePropertyKey = 29, - RULE_tablePropertyValue = 30, RULE_constantList = 31, RULE_nestedConstantList = 32, - RULE_createFileFormat = 33, RULE_fileFormat = 34, RULE_storageHandler = 35, - RULE_resource = 36, RULE_dmlStatementNoWith = 37, RULE_queryOrganization = 38, - RULE_multiInsertQueryBody = 39, RULE_queryTerm = 40, RULE_queryPrimary = 41, - RULE_sortItem = 42, RULE_fromStatement = 43, RULE_fromStatementBody = 44, - RULE_querySpecification = 45, RULE_transformClause = 46, RULE_selectClause = 47, - RULE_setClause = 48, RULE_matchedClause = 49, RULE_notMatchedClause = 50, - RULE_matchedAction = 51, RULE_notMatchedAction = 52, RULE_assignmentList = 53, - RULE_assignment = 54, RULE_whereClause = 55, RULE_havingClause = 56, RULE_hint = 57, - RULE_hintStatement = 58, RULE_fromClause = 59, RULE_aggregationClause = 60, - RULE_groupingSet = 61, RULE_pivotClause = 62, RULE_pivotColumn = 63, RULE_pivotValue = 64, - RULE_lateralView = 65, RULE_setQuantifier = 66, RULE_relation = 67, RULE_joinRelation = 68, - RULE_joinType = 69, RULE_joinCriteria = 70, RULE_sample = 71, RULE_sampleMethod = 72, - RULE_identifierList = 73, RULE_identifierSeq = 74, RULE_orderedIdentifierList = 75, - RULE_orderedIdentifier = 76, RULE_identifierCommentList = 77, RULE_identifierComment = 78, - RULE_relationPrimary = 79, RULE_inlineTable = 80, RULE_functionTable = 81, - RULE_tableAlias = 82, RULE_rowFormat = 83, RULE_multipartIdentifierList = 84, - RULE_multipartIdentifier = 85, RULE_tableIdentifier = 86, RULE_functionIdentifier = 87, - RULE_namedExpression = 88, RULE_namedExpressionSeq = 89, RULE_transformList = 90, - RULE_transform = 91, RULE_transformArgument = 92, RULE_expression = 93, - RULE_booleanExpression = 94, RULE_predicate = 95, RULE_valueExpression = 96, - RULE_primaryExpression = 97, RULE_constant = 98, RULE_comparisonOperator = 99, - RULE_arithmeticOperator = 100, RULE_predicateOperator = 101, RULE_booleanValue = 102, - RULE_interval = 103, RULE_errorCapturingMultiUnitsInterval = 104, RULE_multiUnitsInterval = 105, - RULE_errorCapturingUnitToUnitInterval = 106, RULE_unitToUnitInterval = 107, - RULE_intervalValue = 108, RULE_intervalUnit = 109, RULE_colPosition = 110, - RULE_dataType = 111, RULE_qualifiedColTypeWithPositionList = 112, RULE_qualifiedColTypeWithPosition = 113, - RULE_colTypeList = 114, RULE_colType = 115, RULE_complexColTypeList = 116, - RULE_complexColType = 117, RULE_whenClause = 118, RULE_windowClause = 119, - RULE_namedWindow = 120, RULE_windowSpec = 121, RULE_windowFrame = 122, - RULE_frameBound = 123, RULE_qualifiedNameList = 124, RULE_functionName = 125, - RULE_qualifiedName = 126, RULE_errorCapturingIdentifier = 127, RULE_errorCapturingIdentifierExtra = 128, - RULE_identifier = 129, RULE_strictIdentifier = 130, RULE_quotedIdentifier = 131, - RULE_number = 132, RULE_alterColumnAction = 133, RULE_ansiNonReserved = 134, - RULE_strictNonReserved = 135, RULE_nonReserved = 136; - public static final String[] ruleNames = { - "singleStatement", "singleExpression", "singleTableIdentifier", "singleMultipartIdentifier", - "singleFunctionIdentifier", "singleDataType", "singleTableSchema", "statement", - "unsupportedHiveNativeCommands", "createTableHeader", "replaceTableHeader", - "bucketSpec", "skewSpec", "locationSpec", "commentSpec", "query", "insertInto", - "partitionSpecLocation", "partitionSpec", "partitionVal", "namespace", - "describeFuncName", "describeColName", "ctes", "namedQuery", "tableProvider", - "createTableClauses", "tablePropertyList", "tableProperty", "tablePropertyKey", - "tablePropertyValue", "constantList", "nestedConstantList", "createFileFormat", - "fileFormat", "storageHandler", "resource", "dmlStatementNoWith", "queryOrganization", - "multiInsertQueryBody", "queryTerm", "queryPrimary", "sortItem", "fromStatement", - "fromStatementBody", "querySpecification", "transformClause", "selectClause", - "setClause", "matchedClause", "notMatchedClause", "matchedAction", "notMatchedAction", - "assignmentList", "assignment", "whereClause", "havingClause", "hint", - "hintStatement", "fromClause", "aggregationClause", "groupingSet", "pivotClause", - "pivotColumn", "pivotValue", "lateralView", "setQuantifier", "relation", - "joinRelation", "joinType", "joinCriteria", "sample", "sampleMethod", - "identifierList", "identifierSeq", "orderedIdentifierList", "orderedIdentifier", - "identifierCommentList", "identifierComment", "relationPrimary", "inlineTable", - "functionTable", "tableAlias", "rowFormat", "multipartIdentifierList", - "multipartIdentifier", "tableIdentifier", "functionIdentifier", "namedExpression", - "namedExpressionSeq", "transformList", "transform", "transformArgument", - "expression", "booleanExpression", "predicate", "valueExpression", "primaryExpression", - "constant", "comparisonOperator", "arithmeticOperator", "predicateOperator", - "booleanValue", "interval", "errorCapturingMultiUnitsInterval", "multiUnitsInterval", - "errorCapturingUnitToUnitInterval", "unitToUnitInterval", "intervalValue", - "intervalUnit", "colPosition", "dataType", "qualifiedColTypeWithPositionList", - "qualifiedColTypeWithPosition", "colTypeList", "colType", "complexColTypeList", - "complexColType", "whenClause", "windowClause", "namedWindow", "windowSpec", - "windowFrame", "frameBound", "qualifiedNameList", "functionName", "qualifiedName", - "errorCapturingIdentifier", "errorCapturingIdentifierExtra", "identifier", - "strictIdentifier", "quotedIdentifier", "number", "alterColumnAction", - "ansiNonReserved", "strictNonReserved", "nonReserved" - }; - - private static final String[] _LITERAL_NAMES = { - null, "';'", "'('", "')'", "','", "'.'", "'/*+'", "'*/'", "'->'", "'['", - "']'", "':'", "'ADD'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", - "'ANTI'", "'ANY'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", - "'BETWEEN'", "'BOTH'", "'BUCKET'", "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", - "'CASE'", "'CAST'", "'CHANGE'", "'CHECK'", "'CLEAR'", "'CLUSTER'", "'CLUSTERED'", - "'CODEGEN'", "'COLLATE'", "'COLLECTION'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", - "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", "'COMPUTE'", "'CONCATENATE'", - "'CONSTRAINT'", "'COST'", "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", - "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", - "'DATA'", "'DATABASE'", null, "'DAY'", "'DBPROPERTIES'", "'DEFINED'", - "'DELETE'", "'DELIMITED'", "'DESC'", "'DESCRIBE'", "'DFS'", "'DIRECTORIES'", - "'DIRECTORY'", "'DISTINCT'", "'DISTRIBUTE'", "'DROP'", "'ELSE'", "'END'", - "'ESCAPE'", "'ESCAPED'", "'EXCEPT'", "'EXCHANGE'", "'EXISTS'", "'EXPLAIN'", - "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", "'FALSE'", "'FETCH'", - "'FIELDS'", "'FILTER'", "'FILEFORMAT'", "'FIRST'", "'FOLLOWING'", "'FOR'", - "'FOREIGN'", "'FORMAT'", "'FORMATTED'", "'FROM'", "'FULL'", "'FUNCTION'", - "'FUNCTIONS'", "'GLOBAL'", "'GRANT'", "'GROUP'", "'GROUPING'", "'HAVING'", - "'HOUR'", "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", "'INDEX'", "'INDEXES'", - "'INNER'", "'INPATH'", "'INPUTFORMAT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", - "'INTO'", "'IS'", "'ITEMS'", "'JOIN'", "'KEYS'", "'LAST'", "'LATERAL'", - "'LAZY'", "'LEADING'", "'LEFT'", "'LIKE'", "'LIMIT'", "'LINES'", "'LIST'", - "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCKS'", "'LOGICAL'", "'MACRO'", - "'MAP'", "'MATCHED'", "'MERGE'", "'MINUTE'", "'MONTH'", "'MSCK'", "'NAMESPACE'", - "'NAMESPACES'", "'NATURAL'", "'NO'", null, "'NULL'", "'NULLS'", "'OF'", - "'ON'", "'ONLY'", "'OPTION'", "'OPTIONS'", "'OR'", "'ORDER'", "'OUT'", - "'OUTER'", "'OUTPUTFORMAT'", "'OVER'", "'OVERLAPS'", "'OVERLAY'", "'OVERWRITE'", - "'PARTITION'", "'PARTITIONED'", "'PARTITIONS'", "'PERCENT'", "'PIVOT'", - "'PLACING'", "'POSITION'", "'PRECEDING'", "'PRIMARY'", "'PRINCIPALS'", - "'PROPERTIES'", "'PURGE'", "'QUERY'", "'RANGE'", "'RECORDREADER'", "'RECORDWRITER'", - "'RECOVER'", "'REDUCE'", "'REFERENCES'", "'REFRESH'", "'RENAME'", "'REPAIR'", - "'REPLACE'", "'RESET'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", null, "'ROLE'", - "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEMA'", "'SECOND'", - "'SELECT'", "'SEMI'", "'SEPARATED'", "'SERDE'", "'SERDEPROPERTIES'", "'SESSION_USER'", - "'SET'", "'MINUS'", "'SETS'", "'SHOW'", "'SKEWED'", "'SOME'", "'SORT'", - "'SORTED'", "'START'", "'STATISTICS'", "'STORED'", "'STRATIFY'", "'STRUCT'", - "'SUBSTR'", "'SUBSTRING'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'", - null, "'TERMINATED'", "'THEN'", "'TO'", "'TOUCH'", "'TRAILING'", "'TRANSACTION'", - "'TRANSACTIONS'", "'TRANSFORM'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", - "'UNARCHIVE'", "'UNBOUNDED'", "'UNCACHE'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", - "'UNLOCK'", "'UNSET'", "'UPDATE'", "'USE'", "'USER'", "'USING'", "'VALUES'", - "'VIEW'", "'VIEWS'", "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'YEAR'", - null, "'<=>'", "'<>'", "'!='", "'<'", null, "'>'", null, "'+'", "'-'", - "'*'", "'/'", "'%'", "'DIV'", "'~'", "'&'", "'|'", "'||'", "'^'" - }; - private static final String[] _SYMBOLIC_NAMES = { - null, null, null, null, null, null, null, null, null, null, null, null, - "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANTI", "ANY", "ARCHIVE", - "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", "BETWEEN", "BOTH", "BUCKET", - "BUCKETS", "BY", "CACHE", "CASCADE", "CASE", "CAST", "CHANGE", "CHECK", - "CLEAR", "CLUSTER", "CLUSTERED", "CODEGEN", "COLLATE", "COLLECTION", "COLUMN", - "COLUMNS", "COMMENT", "COMMIT", "COMPACT", "COMPACTIONS", "COMPUTE", "CONCATENATE", - "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", "CURRENT", "CURRENT_DATE", - "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", "DATABASE", - "DATABASES", "DAY", "DBPROPERTIES", "DEFINED", "DELETE", "DELIMITED", - "DESC", "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", "DISTINCT", "DISTRIBUTE", - "DROP", "ELSE", "END", "ESCAPE", "ESCAPED", "EXCEPT", "EXCHANGE", "EXISTS", - "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", - "FIELDS", "FILTER", "FILEFORMAT", "FIRST", "FOLLOWING", "FOR", "FOREIGN", - "FORMAT", "FORMATTED", "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GLOBAL", - "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", "IF", "IGNORE", "IMPORT", - "IN", "INDEX", "INDEXES", "INNER", "INPATH", "INPUTFORMAT", "INSERT", - "INTERSECT", "INTERVAL", "INTO", "IS", "ITEMS", "JOIN", "KEYS", "LAST", - "LATERAL", "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", "LIST", - "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", "LOGICAL", "MACRO", "MAP", - "MATCHED", "MERGE", "MINUTE", "MONTH", "MSCK", "NAMESPACE", "NAMESPACES", - "NATURAL", "NO", "NOT", "NULL", "NULLS", "OF", "ON", "ONLY", "OPTION", - "OPTIONS", "OR", "ORDER", "OUT", "OUTER", "OUTPUTFORMAT", "OVER", "OVERLAPS", - "OVERLAY", "OVERWRITE", "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", - "PIVOT", "PLACING", "POSITION", "PRECEDING", "PRIMARY", "PRINCIPALS", - "PROPERTIES", "PURGE", "QUERY", "RANGE", "RECORDREADER", "RECORDWRITER", - "RECOVER", "REDUCE", "REFERENCES", "REFRESH", "RENAME", "REPAIR", "REPLACE", - "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLES", "ROLLBACK", - "ROLLUP", "ROW", "ROWS", "SCHEMA", "SECOND", "SELECT", "SEMI", "SEPARATED", - "SERDE", "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", "SETS", - "SHOW", "SKEWED", "SOME", "SORT", "SORTED", "START", "STATISTICS", "STORED", - "STRATIFY", "STRUCT", "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", - "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", "TO", "TOUCH", "TRAILING", - "TRANSACTION", "TRANSACTIONS", "TRANSFORM", "TRIM", "TRUE", "TRUNCATE", - "TYPE", "UNARCHIVE", "UNBOUNDED", "UNCACHE", "UNION", "UNIQUE", "UNKNOWN", - "UNLOCK", "UNSET", "UPDATE", "USE", "USER", "USING", "VALUES", "VIEW", - "VIEWS", "WHEN", "WHERE", "WINDOW", "WITH", "YEAR", "EQ", "NSEQ", "NEQ", - "NEQJ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", - "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", "HAT", - "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", - "EXPONENT_VALUE", "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", - "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "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; - } - - @Override - public String getGrammarFileName() { return "SqlBase.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public ATN getATN() { return _ATN; } - - - """ - When false, INTERSECT is given the greater precedence over the other set - operations (UNION, EXCEPT and MINUS) as per the SQL standard. - """ - legacy_setops_precedence_enbled = False - - """ - When false, a literal with an exponent would be converted into - double type rather than decimal type. - """ - legacy_exponent_literal_as_decimal_enabled = False - - """ - When false, CREATE TABLE syntax without a provider will use - the value of spark.sql.sources.default as its provider. - """ - legacy_create_hive_table_by_default_enabled = False - - """ - When true, the behavior of keywords follows ANSI SQL standard. - """ - SQL_standard_keyword_behavior = False - - def isValidDecimal(self): - """ - Verify whether current token is a valid decimal token (which contains dot). - Returns true if the character that follows the token is not a digit or letter or underscore. - - For example: - For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. - For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. - For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. - For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed - by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' - which is not a digit or letter or underscore. - """ - nextChar = self._input.LA(1) - if 'A' <= nextChar <= 'Z' or '0' <= nextChar <= '9' or nextChar == '_': - return False - else: - return True - - def isHint(self): - """ - This method will be called when we see '/*' and try to match it as a bracketed comment. - If the next character is '+', it should be parsed as hint later, and we cannot match - it as a bracketed comment. - - Returns true if the next character is '+'. - """ - nextChar = self._input.LA(1) - if nextChar == '+': - return True - else: - return False - - public SqlBaseParser(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(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterSingleStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleStatement(this); - } - } - - public final SingleStatementContext singleStatement() throws RecognitionException { - SingleStatementContext _localctx = new SingleStatementContext(_ctx, getState()); - enterRule(_localctx, 0, RULE_singleStatement); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(274); - statement(); - setState(278); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__0) { - { - { - setState(275); - match(T__0); - } - } - setState(280); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(281); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SingleExpressionContext extends ParserRuleContext { - public NamedExpressionContext namedExpression() { - return getRuleContext(NamedExpressionContext.class,0); - } - public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } - public SingleExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleExpression; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleExpression(this); - } - } - - public final SingleExpressionContext singleExpression() throws RecognitionException { - SingleExpressionContext _localctx = new SingleExpressionContext(_ctx, getState()); - enterRule(_localctx, 2, RULE_singleExpression); - try { - enterOuterAlt(_localctx, 1); - { - setState(283); - namedExpression(); - setState(284); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SingleTableIdentifierContext extends ParserRuleContext { - public TableIdentifierContext tableIdentifier() { - return getRuleContext(TableIdentifierContext.class,0); - } - public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } - public SingleTableIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleTableIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleTableIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleTableIdentifier(this); - } - } - - public final SingleTableIdentifierContext singleTableIdentifier() throws RecognitionException { - SingleTableIdentifierContext _localctx = new SingleTableIdentifierContext(_ctx, getState()); - enterRule(_localctx, 4, RULE_singleTableIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(286); - tableIdentifier(); - setState(287); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SingleMultipartIdentifierContext extends ParserRuleContext { - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } - public SingleMultipartIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleMultipartIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleMultipartIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleMultipartIdentifier(this); - } - } - - public final SingleMultipartIdentifierContext singleMultipartIdentifier() throws RecognitionException { - SingleMultipartIdentifierContext _localctx = new SingleMultipartIdentifierContext(_ctx, getState()); - enterRule(_localctx, 6, RULE_singleMultipartIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(289); - multipartIdentifier(); - setState(290); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SingleFunctionIdentifierContext extends ParserRuleContext { - public FunctionIdentifierContext functionIdentifier() { - return getRuleContext(FunctionIdentifierContext.class,0); - } - public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } - public SingleFunctionIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleFunctionIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleFunctionIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleFunctionIdentifier(this); - } - } - - public final SingleFunctionIdentifierContext singleFunctionIdentifier() throws RecognitionException { - SingleFunctionIdentifierContext _localctx = new SingleFunctionIdentifierContext(_ctx, getState()); - enterRule(_localctx, 8, RULE_singleFunctionIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(292); - functionIdentifier(); - setState(293); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SingleDataTypeContext extends ParserRuleContext { - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } - public SingleDataTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleDataType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleDataType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleDataType(this); - } - } - - public final SingleDataTypeContext singleDataType() throws RecognitionException { - SingleDataTypeContext _localctx = new SingleDataTypeContext(_ctx, getState()); - enterRule(_localctx, 10, RULE_singleDataType); - try { - enterOuterAlt(_localctx, 1); - { - setState(295); - dataType(); - setState(296); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SingleTableSchemaContext extends ParserRuleContext { - public ColTypeListContext colTypeList() { - return getRuleContext(ColTypeListContext.class,0); - } - public TerminalNode EOF() { return getToken(SqlBaseParser.EOF, 0); } - public SingleTableSchemaContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleTableSchema; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleTableSchema(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleTableSchema(this); - } - } - - public final SingleTableSchemaContext singleTableSchema() throws RecognitionException { - SingleTableSchemaContext _localctx = new SingleTableSchemaContext(_ctx, getState()); - enterRule(_localctx, 12, RULE_singleTableSchema); - try { - enterOuterAlt(_localctx, 1); - { - setState(298); - colTypeList(); - setState(299); - 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(SqlBaseParser.EXPLAIN, 0); } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public TerminalNode LOGICAL() { return getToken(SqlBaseParser.LOGICAL, 0); } - public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } - public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } - public TerminalNode CODEGEN() { return getToken(SqlBaseParser.CODEGEN, 0); } - public TerminalNode COST() { return getToken(SqlBaseParser.COST, 0); } - public ExplainContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExplain(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExplain(this); - } - } - public static class ResetConfigurationContext extends StatementContext { - public TerminalNode RESET() { return getToken(SqlBaseParser.RESET, 0); } - public ResetConfigurationContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterResetConfiguration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitResetConfiguration(this); - } - } - public static class AlterViewQueryContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public AlterViewQueryContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAlterViewQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAlterViewQuery(this); - } - } - public static class UseContext extends StatementContext { - public TerminalNode USE() { return getToken(SqlBaseParser.USE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } - public UseContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUse(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUse(this); - } - } - public static class DropNamespaceContext extends StatementContext { - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public NamespaceContext namespace() { - return getRuleContext(NamespaceContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public TerminalNode RESTRICT() { return getToken(SqlBaseParser.RESTRICT, 0); } - public TerminalNode CASCADE() { return getToken(SqlBaseParser.CASCADE, 0); } - public DropNamespaceContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropNamespace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropNamespace(this); - } - } - public static class CreateTempViewUsingContext extends StatementContext { - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public TableIdentifierContext tableIdentifier() { - return getRuleContext(TableIdentifierContext.class,0); - } - public TableProviderContext tableProvider() { - return getRuleContext(TableProviderContext.class,0); - } - public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } - public ColTypeListContext colTypeList() { - return getRuleContext(ColTypeListContext.class,0); - } - public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public CreateTempViewUsingContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTempViewUsing(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTempViewUsing(this); - } - } - public static class RenameTableContext extends StatementContext { - public MultipartIdentifierContext from_; - public MultipartIdentifierContext to; - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } - public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public RenameTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRenameTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRenameTable(this); - } - } - public static class FailNativeCommandContext extends StatementContext { - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } - public UnsupportedHiveNativeCommandsContext unsupportedHiveNativeCommands() { - return getRuleContext(UnsupportedHiveNativeCommandsContext.class,0); - } - public FailNativeCommandContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFailNativeCommand(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFailNativeCommand(this); - } - } - public static class ClearCacheContext extends StatementContext { - public TerminalNode CLEAR() { return getToken(SqlBaseParser.CLEAR, 0); } - public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } - public ClearCacheContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterClearCache(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitClearCache(this); - } - } - public static class DropViewContext extends StatementContext { - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public DropViewContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropView(this); - } - } - public static class ShowTablesContext extends StatementContext { - public Token pattern; - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public ShowTablesContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowTables(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowTables(this); - } - } - public static class RecoverPartitionsContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode RECOVER() { return getToken(SqlBaseParser.RECOVER, 0); } - public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } - public RecoverPartitionsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRecoverPartitions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRecoverPartitions(this); - } - } - public static class ShowCurrentNamespaceContext extends StatementContext { - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } - public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } - public ShowCurrentNamespaceContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowCurrentNamespace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowCurrentNamespace(this); - } - } - public static class RenameTablePartitionContext extends StatementContext { - public PartitionSpecContext from_; - public PartitionSpecContext to; - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } - public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } - public List partitionSpec() { - return getRuleContexts(PartitionSpecContext.class); - } - public PartitionSpecContext partitionSpec(int i) { - return getRuleContext(PartitionSpecContext.class,i); - } - public RenameTablePartitionContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRenameTablePartition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRenameTablePartition(this); - } - } - public static class RepairTableContext extends StatementContext { - public TerminalNode MSCK() { return getToken(SqlBaseParser.MSCK, 0); } - public TerminalNode REPAIR() { return getToken(SqlBaseParser.REPAIR, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public RepairTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRepairTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRepairTable(this); - } - } - public static class RefreshResourceContext extends StatementContext { - public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public RefreshResourceContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRefreshResource(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRefreshResource(this); - } - } - public static class ShowCreateTableContext extends StatementContext { - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } - public ShowCreateTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowCreateTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowCreateTable(this); - } - } - public static class ShowNamespacesContext extends StatementContext { - public Token pattern; - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode DATABASES() { return getToken(SqlBaseParser.DATABASES, 0); } - public TerminalNode NAMESPACES() { return getToken(SqlBaseParser.NAMESPACES, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public ShowNamespacesContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowNamespaces(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowNamespaces(this); - } - } - public static class ShowColumnsContext extends StatementContext { - public MultipartIdentifierContext table; - public MultipartIdentifierContext ns; - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public List FROM() { return getTokens(SqlBaseParser.FROM); } - public TerminalNode FROM(int i) { - return getToken(SqlBaseParser.FROM, i); - } - public List IN() { return getTokens(SqlBaseParser.IN); } - public TerminalNode IN(int i) { - return getToken(SqlBaseParser.IN, i); - } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public ShowColumnsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowColumns(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowColumns(this); - } - } - public static class ReplaceTableContext extends StatementContext { - public ReplaceTableHeaderContext replaceTableHeader() { - return getRuleContext(ReplaceTableHeaderContext.class,0); - } - public TableProviderContext tableProvider() { - return getRuleContext(TableProviderContext.class,0); - } - public CreateTableClausesContext createTableClauses() { - return getRuleContext(CreateTableClausesContext.class,0); - } - public ColTypeListContext colTypeList() { - return getRuleContext(ColTypeListContext.class,0); - } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public ReplaceTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterReplaceTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitReplaceTable(this); - } - } - public static class AddTablePartitionContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public List partitionSpecLocation() { - return getRuleContexts(PartitionSpecLocationContext.class); - } - public PartitionSpecLocationContext partitionSpecLocation(int i) { - return getRuleContext(PartitionSpecLocationContext.class,i); - } - public AddTablePartitionContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAddTablePartition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAddTablePartition(this); - } - } - public static class SetNamespaceLocationContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public NamespaceContext namespace() { - return getRuleContext(NamespaceContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public LocationSpecContext locationSpec() { - return getRuleContext(LocationSpecContext.class,0); - } - public SetNamespaceLocationContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetNamespaceLocation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetNamespaceLocation(this); - } - } - public static class RefreshTableContext extends StatementContext { - public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public RefreshTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRefreshTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRefreshTable(this); - } - } - public static class SetNamespacePropertiesContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public NamespaceContext namespace() { - return getRuleContext(NamespaceContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public TerminalNode DBPROPERTIES() { return getToken(SqlBaseParser.DBPROPERTIES, 0); } - public TerminalNode PROPERTIES() { return getToken(SqlBaseParser.PROPERTIES, 0); } - public SetNamespacePropertiesContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetNamespaceProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetNamespaceProperties(this); - } - } - public static class ManageResourceContext extends StatementContext { - public Token op; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } - public TerminalNode LIST() { return getToken(SqlBaseParser.LIST, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public ManageResourceContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterManageResource(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitManageResource(this); - } - } - public static class AnalyzeContext extends StatementContext { - public TerminalNode ANALYZE() { return getToken(SqlBaseParser.ANALYZE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode COMPUTE() { return getToken(SqlBaseParser.COMPUTE, 0); } - public TerminalNode STATISTICS() { return getToken(SqlBaseParser.STATISTICS, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public IdentifierSeqContext identifierSeq() { - return getRuleContext(IdentifierSeqContext.class,0); - } - public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } - public AnalyzeContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAnalyze(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAnalyze(this); - } - } - public static class CreateHiveTableContext extends StatementContext { - public ColTypeListContext columns; - public ColTypeListContext partitionColumns; - public IdentifierListContext partitionColumnNames; - public TablePropertyListContext tableProps; - public CreateTableHeaderContext createTableHeader() { - return getRuleContext(CreateTableHeaderContext.class,0); - } - public List commentSpec() { - return getRuleContexts(CommentSpecContext.class); - } - public CommentSpecContext commentSpec(int i) { - return getRuleContext(CommentSpecContext.class,i); - } - public List bucketSpec() { - return getRuleContexts(BucketSpecContext.class); - } - public BucketSpecContext bucketSpec(int i) { - return getRuleContext(BucketSpecContext.class,i); - } - public List skewSpec() { - return getRuleContexts(SkewSpecContext.class); - } - public SkewSpecContext skewSpec(int i) { - return getRuleContext(SkewSpecContext.class,i); - } - public List rowFormat() { - return getRuleContexts(RowFormatContext.class); - } - public RowFormatContext rowFormat(int i) { - return getRuleContext(RowFormatContext.class,i); - } - public List createFileFormat() { - return getRuleContexts(CreateFileFormatContext.class); - } - public CreateFileFormatContext createFileFormat(int i) { - return getRuleContext(CreateFileFormatContext.class,i); - } - public List locationSpec() { - return getRuleContexts(LocationSpecContext.class); - } - public LocationSpecContext locationSpec(int i) { - return getRuleContext(LocationSpecContext.class,i); - } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public List colTypeList() { - return getRuleContexts(ColTypeListContext.class); - } - public ColTypeListContext colTypeList(int i) { - return getRuleContext(ColTypeListContext.class,i); - } - public List PARTITIONED() { return getTokens(SqlBaseParser.PARTITIONED); } - public TerminalNode PARTITIONED(int i) { - return getToken(SqlBaseParser.PARTITIONED, i); - } - public List BY() { return getTokens(SqlBaseParser.BY); } - public TerminalNode BY(int i) { - return getToken(SqlBaseParser.BY, i); - } - public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } - public TerminalNode TBLPROPERTIES(int i) { - return getToken(SqlBaseParser.TBLPROPERTIES, i); - } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public List tablePropertyList() { - return getRuleContexts(TablePropertyListContext.class); - } - public TablePropertyListContext tablePropertyList(int i) { - return getRuleContext(TablePropertyListContext.class,i); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public CreateHiveTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateHiveTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateHiveTable(this); - } - } - public static class CreateFunctionContext extends StatementContext { - public Token className; - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } - public List resource() { - return getRuleContexts(ResourceContext.class); - } - public ResourceContext resource(int i) { - return getRuleContext(ResourceContext.class,i); - } - public CreateFunctionContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateFunction(this); - } - } - public static class ShowTableContext extends StatementContext { - public MultipartIdentifierContext ns; - public Token pattern; - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowTable(this); - } - } - public static class HiveReplaceColumnsContext extends StatementContext { - public MultipartIdentifierContext table; - public QualifiedColTypeWithPositionListContext columns; - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public QualifiedColTypeWithPositionListContext qualifiedColTypeWithPositionList() { - return getRuleContext(QualifiedColTypeWithPositionListContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public HiveReplaceColumnsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHiveReplaceColumns(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHiveReplaceColumns(this); - } - } - public static class CommentNamespaceContext extends StatementContext { - public Token comment; - public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } - public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } - public NamespaceContext namespace() { - return getRuleContext(NamespaceContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public CommentNamespaceContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCommentNamespace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCommentNamespace(this); - } - } - public static class CreateTableContext extends StatementContext { - public CreateTableHeaderContext createTableHeader() { - return getRuleContext(CreateTableHeaderContext.class,0); - } - public CreateTableClausesContext createTableClauses() { - return getRuleContext(CreateTableClausesContext.class,0); - } - public ColTypeListContext colTypeList() { - return getRuleContext(ColTypeListContext.class,0); - } - public TableProviderContext tableProvider() { - return getRuleContext(TableProviderContext.class,0); - } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public CreateTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTable(this); - } - } - public static class DmlStatementContext extends StatementContext { - public DmlStatementNoWithContext dmlStatementNoWith() { - return getRuleContext(DmlStatementNoWithContext.class,0); - } - public CtesContext ctes() { - return getRuleContext(CtesContext.class,0); - } - public DmlStatementContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDmlStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDmlStatement(this); - } - } - public static class CreateTableLikeContext extends StatementContext { - public TableIdentifierContext target; - public TableIdentifierContext source; - public TablePropertyListContext tableProps; - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public List tableIdentifier() { - return getRuleContexts(TableIdentifierContext.class); - } - public TableIdentifierContext tableIdentifier(int i) { - return getRuleContext(TableIdentifierContext.class,i); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public List tableProvider() { - return getRuleContexts(TableProviderContext.class); - } - public TableProviderContext tableProvider(int i) { - return getRuleContext(TableProviderContext.class,i); - } - public List rowFormat() { - return getRuleContexts(RowFormatContext.class); - } - public RowFormatContext rowFormat(int i) { - return getRuleContext(RowFormatContext.class,i); - } - public List createFileFormat() { - return getRuleContexts(CreateFileFormatContext.class); - } - public CreateFileFormatContext createFileFormat(int i) { - return getRuleContext(CreateFileFormatContext.class,i); - } - public List locationSpec() { - return getRuleContexts(LocationSpecContext.class); - } - public LocationSpecContext locationSpec(int i) { - return getRuleContext(LocationSpecContext.class,i); - } - public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } - public TerminalNode TBLPROPERTIES(int i) { - return getToken(SqlBaseParser.TBLPROPERTIES, i); - } - public List tablePropertyList() { - return getRuleContexts(TablePropertyListContext.class); - } - public TablePropertyListContext tablePropertyList(int i) { - return getRuleContext(TablePropertyListContext.class,i); - } - public CreateTableLikeContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTableLike(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTableLike(this); - } - } - public static class UncacheTableContext extends StatementContext { - public TerminalNode UNCACHE() { return getToken(SqlBaseParser.UNCACHE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public UncacheTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUncacheTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUncacheTable(this); - } - } - public static class DropFunctionContext extends StatementContext { - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public DropFunctionContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropFunction(this); - } - } - public static class DescribeRelationContext extends StatementContext { - public Token option; - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public DescribeColNameContext describeColName() { - return getRuleContext(DescribeColNameContext.class,0); - } - public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } - public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } - public DescribeRelationContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeRelation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeRelation(this); - } - } - public static class LoadDataContext extends StatementContext { - public Token path; - public TerminalNode LOAD() { return getToken(SqlBaseParser.LOAD, 0); } - public TerminalNode DATA() { return getToken(SqlBaseParser.DATA, 0); } - public TerminalNode INPATH() { return getToken(SqlBaseParser.INPATH, 0); } - public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } - public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public LoadDataContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLoadData(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLoadData(this); - } - } - public static class ShowPartitionsContext extends StatementContext { - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public ShowPartitionsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowPartitions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowPartitions(this); - } - } - public static class DescribeFunctionContext extends StatementContext { - public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } - public DescribeFuncNameContext describeFuncName() { - return getRuleContext(DescribeFuncNameContext.class,0); - } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } - public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } - public DescribeFunctionContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeFunction(this); - } - } - public static class RenameTableColumnContext extends StatementContext { - public MultipartIdentifierContext table; - public MultipartIdentifierContext from_; - public ErrorCapturingIdentifierContext to; - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } - public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } - public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public RenameTableColumnContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRenameTableColumn(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRenameTableColumn(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 SqlBaseListener ) ((SqlBaseListener)listener).enterStatementDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStatementDefault(this); - } - } - public static class HiveChangeColumnContext extends StatementContext { - public MultipartIdentifierContext table; - public MultipartIdentifierContext colName; - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } - public ColTypeContext colType() { - return getRuleContext(ColTypeContext.class,0); - } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } - public ColPositionContext colPosition() { - return getRuleContext(ColPositionContext.class,0); - } - public HiveChangeColumnContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHiveChangeColumn(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHiveChangeColumn(this); - } - } - public static class DescribeQueryContext extends StatementContext { - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } - public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); } - public DescribeQueryContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeQuery(this); - } - } - public static class TruncateTableContext extends StatementContext { - public TerminalNode TRUNCATE() { return getToken(SqlBaseParser.TRUNCATE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TruncateTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTruncateTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTruncateTable(this); - } - } - public static class SetTableSerDeContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } - public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public SetTableSerDeContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetTableSerDe(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetTableSerDe(this); - } - } - public static class CreateViewContext extends StatementContext { - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public IdentifierCommentListContext identifierCommentList() { - return getRuleContext(IdentifierCommentListContext.class,0); - } - public List commentSpec() { - return getRuleContexts(CommentSpecContext.class); - } - public CommentSpecContext commentSpec(int i) { - return getRuleContext(CommentSpecContext.class,i); - } - public List PARTITIONED() { return getTokens(SqlBaseParser.PARTITIONED); } - public TerminalNode PARTITIONED(int i) { - return getToken(SqlBaseParser.PARTITIONED, i); - } - public List ON() { return getTokens(SqlBaseParser.ON); } - public TerminalNode ON(int i) { - return getToken(SqlBaseParser.ON, i); - } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } - public TerminalNode TBLPROPERTIES(int i) { - return getToken(SqlBaseParser.TBLPROPERTIES, i); - } - public List tablePropertyList() { - return getRuleContexts(TablePropertyListContext.class); - } - public TablePropertyListContext tablePropertyList(int i) { - return getRuleContext(TablePropertyListContext.class,i); - } - public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } - public CreateViewContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateView(this); - } - } - public static class DropTablePartitionsContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public List partitionSpec() { - return getRuleContexts(PartitionSpecContext.class); - } - public PartitionSpecContext partitionSpec(int i) { - return getRuleContext(PartitionSpecContext.class,i); - } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } - public DropTablePartitionsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropTablePartitions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropTablePartitions(this); - } - } - public static class SetConfigurationContext extends StatementContext { - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public SetConfigurationContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetConfiguration(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetConfiguration(this); - } - } - public static class DropTableContext extends StatementContext { - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } - public DropTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropTable(this); - } - } - public static class DescribeNamespaceContext extends StatementContext { - public NamespaceContext namespace() { - return getRuleContext(NamespaceContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } - public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } - public DescribeNamespaceContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeNamespace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeNamespace(this); - } - } - public static class AlterTableAlterColumnContext extends StatementContext { - public MultipartIdentifierContext table; - public MultipartIdentifierContext column; - public List ALTER() { return getTokens(SqlBaseParser.ALTER); } - public TerminalNode ALTER(int i) { - return getToken(SqlBaseParser.ALTER, i); - } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } - public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } - public AlterColumnActionContext alterColumnAction() { - return getRuleContext(AlterColumnActionContext.class,0); - } - public AlterTableAlterColumnContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAlterTableAlterColumn(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAlterTableAlterColumn(this); - } - } - public static class CommentTableContext extends StatementContext { - public Token comment; - public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } - public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public CommentTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCommentTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCommentTable(this); - } - } - public static class CreateNamespaceContext extends StatementContext { - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public NamespaceContext namespace() { - return getRuleContext(NamespaceContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public List commentSpec() { - return getRuleContexts(CommentSpecContext.class); - } - public CommentSpecContext commentSpec(int i) { - return getRuleContext(CommentSpecContext.class,i); - } - public List locationSpec() { - return getRuleContexts(LocationSpecContext.class); - } - public LocationSpecContext locationSpec(int i) { - return getRuleContext(LocationSpecContext.class,i); - } - public List WITH() { return getTokens(SqlBaseParser.WITH); } - public TerminalNode WITH(int i) { - return getToken(SqlBaseParser.WITH, i); - } - public List tablePropertyList() { - return getRuleContexts(TablePropertyListContext.class); - } - public TablePropertyListContext tablePropertyList(int i) { - return getRuleContext(TablePropertyListContext.class,i); - } - public List DBPROPERTIES() { return getTokens(SqlBaseParser.DBPROPERTIES); } - public TerminalNode DBPROPERTIES(int i) { - return getToken(SqlBaseParser.DBPROPERTIES, i); - } - public List PROPERTIES() { return getTokens(SqlBaseParser.PROPERTIES); } - public TerminalNode PROPERTIES(int i) { - return getToken(SqlBaseParser.PROPERTIES, i); - } - public CreateNamespaceContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateNamespace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateNamespace(this); - } - } - public static class ShowTblPropertiesContext extends StatementContext { - public MultipartIdentifierContext table; - public TablePropertyKeyContext key; - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TablePropertyKeyContext tablePropertyKey() { - return getRuleContext(TablePropertyKeyContext.class,0); - } - public ShowTblPropertiesContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowTblProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowTblProperties(this); - } - } - public static class UnsetTablePropertiesContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode UNSET() { return getToken(SqlBaseParser.UNSET, 0); } - public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public UnsetTablePropertiesContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnsetTableProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnsetTableProperties(this); - } - } - public static class SetTableLocationContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public LocationSpecContext locationSpec() { - return getRuleContext(LocationSpecContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public SetTableLocationContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetTableLocation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetTableLocation(this); - } - } - public static class DropTableColumnsContext extends StatementContext { - public MultipartIdentifierListContext columns; - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public MultipartIdentifierListContext multipartIdentifierList() { - return getRuleContext(MultipartIdentifierListContext.class,0); - } - public DropTableColumnsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDropTableColumns(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDropTableColumns(this); - } - } - public static class ShowViewsContext extends StatementContext { - public Token pattern; - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode VIEWS() { return getToken(SqlBaseParser.VIEWS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public ShowViewsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowViews(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowViews(this); - } - } - public static class ShowFunctionsContext extends StatementContext { - public Token pattern; - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode FUNCTIONS() { return getToken(SqlBaseParser.FUNCTIONS, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public ShowFunctionsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterShowFunctions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitShowFunctions(this); - } - } - public static class CacheTableContext extends StatementContext { - public TablePropertyListContext options; - public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode LAZY() { return getToken(SqlBaseParser.LAZY, 0); } - public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public CacheTableContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCacheTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCacheTable(this); - } - } - public static class AddTableColumnsContext extends StatementContext { - public QualifiedColTypeWithPositionListContext columns; - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } - public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public QualifiedColTypeWithPositionListContext qualifiedColTypeWithPositionList() { - return getRuleContext(QualifiedColTypeWithPositionListContext.class,0); - } - public AddTableColumnsContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAddTableColumns(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAddTableColumns(this); - } - } - public static class SetTablePropertiesContext extends StatementContext { - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public SetTablePropertiesContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetTableProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetTableProperties(this); - } - } - - public final StatementContext statement() throws RecognitionException { - StatementContext _localctx = new StatementContext(_ctx, getState()); - enterRule(_localctx, 14, RULE_statement); - int _la; - try { - int _alt; - setState(1025); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) { - case 1: - _localctx = new StatementDefaultContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(301); - query(); - } - break; - case 2: - _localctx = new DmlStatementContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(303); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(302); - ctes(); - } - } - - setState(305); - dmlStatementNoWith(); - } - break; - case 3: - _localctx = new UseContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(306); - match(USE); - setState(308); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { - case 1: - { - setState(307); - match(NAMESPACE); - } - break; - } - setState(310); - multipartIdentifier(); - } - break; - case 4: - _localctx = new CreateNamespaceContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(311); - match(CREATE); - setState(312); - namespace(); - setState(316); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { - case 1: - { - setState(313); - match(IF); - setState(314); - match(NOT); - setState(315); - match(EXISTS); - } - break; - } - setState(318); - multipartIdentifier(); - setState(326); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMENT || _la==LOCATION || _la==WITH) { - { - setState(324); - _errHandler.sync(this); - switch (_input.LA(1)) { - case COMMENT: - { - setState(319); - commentSpec(); - } - break; - case LOCATION: - { - setState(320); - locationSpec(); - } - break; - case WITH: - { - { - setState(321); - match(WITH); - setState(322); - _la = _input.LA(1); - if ( !(_la==DBPROPERTIES || _la==PROPERTIES) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(323); - tablePropertyList(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - setState(328); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 5: - _localctx = new SetNamespacePropertiesContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(329); - match(ALTER); - setState(330); - namespace(); - setState(331); - multipartIdentifier(); - setState(332); - match(SET); - setState(333); - _la = _input.LA(1); - if ( !(_la==DBPROPERTIES || _la==PROPERTIES) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(334); - tablePropertyList(); - } - break; - case 6: - _localctx = new SetNamespaceLocationContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(336); - match(ALTER); - setState(337); - namespace(); - setState(338); - multipartIdentifier(); - setState(339); - match(SET); - setState(340); - locationSpec(); - } - break; - case 7: - _localctx = new DropNamespaceContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(342); - match(DROP); - setState(343); - namespace(); - setState(346); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { - case 1: - { - setState(344); - match(IF); - setState(345); - match(EXISTS); - } - break; - } - setState(348); - multipartIdentifier(); - setState(350); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==CASCADE || _la==RESTRICT) { - { - setState(349); - _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 8: - _localctx = new ShowNamespacesContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(352); - match(SHOW); - setState(353); - _la = _input.LA(1); - if ( !(_la==DATABASES || _la==NAMESPACES) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(356); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(354); - _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(355); - multipartIdentifier(); - } - } - - setState(362); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==STRING) { - { - setState(359); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(358); - match(LIKE); - } - } - - setState(361); - ((ShowNamespacesContext)_localctx).pattern = match(STRING); - } - } - - } - break; - case 9: - _localctx = new CreateTableContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(364); - if (!(not self.legacy_create_hive_table_by_default_enabled)) throw new FailedPredicateException(this, "not self.legacy_create_hive_table_by_default_enabled"); - setState(365); - createTableHeader(); - setState(370); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { - case 1: - { - setState(366); - match(T__1); - setState(367); - colTypeList(); - setState(368); - match(T__2); - } - break; - } - setState(373); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==USING) { - { - setState(372); - tableProvider(); - } - } - - setState(375); - createTableClauses(); - setState(380); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { - { - setState(377); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(376); - match(AS); - } - } - - setState(379); - query(); - } - } - - } - break; - case 10: - _localctx = new CreateTableContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(382); - if (!(self.legacy_create_hive_table_by_default_enabled)) throw new FailedPredicateException(this, "self.legacy_create_hive_table_by_default_enabled"); - setState(383); - createTableHeader(); - setState(388); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1) { - { - setState(384); - match(T__1); - setState(385); - colTypeList(); - setState(386); - match(T__2); - } - } - - setState(390); - tableProvider(); - setState(391); - createTableClauses(); - setState(396); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { - { - setState(393); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(392); - match(AS); - } - } - - setState(395); - query(); - } - } - - } - break; - case 11: - _localctx = new CreateHiveTableContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(398); - createTableHeader(); - setState(403); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) { - case 1: - { - setState(399); - match(T__1); - setState(400); - ((CreateHiveTableContext)_localctx).columns = colTypeList(); - setState(401); - match(T__2); - } - break; - } - setState(426); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==CLUSTERED || _la==COMMENT || _la==LOCATION || _la==PARTITIONED || ((((_la - 202)) & ~0x3f) == 0 && ((1L << (_la - 202)) & ((1L << (ROW - 202)) | (1L << (SKEWED - 202)) | (1L << (STORED - 202)) | (1L << (TBLPROPERTIES - 202)))) != 0)) { - { - setState(424); - _errHandler.sync(this); - switch (_input.LA(1)) { - case COMMENT: - { - setState(405); - commentSpec(); - } - break; - case PARTITIONED: - { - setState(415); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { - case 1: - { - setState(406); - match(PARTITIONED); - setState(407); - match(BY); - setState(408); - match(T__1); - setState(409); - ((CreateHiveTableContext)_localctx).partitionColumns = colTypeList(); - setState(410); - match(T__2); - } - break; - case 2: - { - setState(412); - match(PARTITIONED); - setState(413); - match(BY); - setState(414); - ((CreateHiveTableContext)_localctx).partitionColumnNames = identifierList(); - } - break; - } - } - break; - case CLUSTERED: - { - setState(417); - bucketSpec(); - } - break; - case SKEWED: - { - setState(418); - skewSpec(); - } - break; - case ROW: - { - setState(419); - rowFormat(); - } - break; - case STORED: - { - setState(420); - createFileFormat(); - } - break; - case LOCATION: - { - setState(421); - locationSpec(); - } - break; - case TBLPROPERTIES: - { - { - setState(422); - match(TBLPROPERTIES); - setState(423); - ((CreateHiveTableContext)_localctx).tableProps = tablePropertyList(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - setState(428); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(433); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { - { - setState(430); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(429); - match(AS); - } - } - - setState(432); - query(); - } - } - - } - break; - case 12: - _localctx = new CreateTableLikeContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(435); - match(CREATE); - setState(436); - match(TABLE); - setState(440); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { - case 1: - { - setState(437); - match(IF); - setState(438); - match(NOT); - setState(439); - match(EXISTS); - } - break; - } - setState(442); - ((CreateTableLikeContext)_localctx).target = tableIdentifier(); - setState(443); - match(LIKE); - setState(444); - ((CreateTableLikeContext)_localctx).source = tableIdentifier(); - setState(453); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==LOCATION || ((((_la - 202)) & ~0x3f) == 0 && ((1L << (_la - 202)) & ((1L << (ROW - 202)) | (1L << (STORED - 202)) | (1L << (TBLPROPERTIES - 202)) | (1L << (USING - 202)))) != 0)) { - { - setState(451); - _errHandler.sync(this); - switch (_input.LA(1)) { - case USING: - { - setState(445); - tableProvider(); - } - break; - case ROW: - { - setState(446); - rowFormat(); - } - break; - case STORED: - { - setState(447); - createFileFormat(); - } - break; - case LOCATION: - { - setState(448); - locationSpec(); - } - break; - case TBLPROPERTIES: - { - { - setState(449); - match(TBLPROPERTIES); - setState(450); - ((CreateTableLikeContext)_localctx).tableProps = tablePropertyList(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - setState(455); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 13: - _localctx = new ReplaceTableContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(456); - replaceTableHeader(); - setState(461); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1) { - { - setState(457); - match(T__1); - setState(458); - colTypeList(); - setState(459); - match(T__2); - } - } - - setState(463); - tableProvider(); - setState(464); - createTableClauses(); - setState(469); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { - { - setState(466); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(465); - match(AS); - } - } - - setState(468); - query(); - } - } - - } - break; - case 14: - _localctx = new AnalyzeContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(471); - match(ANALYZE); - setState(472); - match(TABLE); - setState(473); - multipartIdentifier(); - setState(475); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(474); - partitionSpec(); - } - } - - setState(477); - match(COMPUTE); - setState(478); - match(STATISTICS); - setState(486); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { - case 1: - { - setState(479); - identifier(); - } - break; - case 2: - { - setState(480); - match(FOR); - setState(481); - match(COLUMNS); - setState(482); - identifierSeq(); - } - break; - case 3: - { - setState(483); - match(FOR); - setState(484); - match(ALL); - setState(485); - match(COLUMNS); - } - break; - } - } - break; - case 15: - _localctx = new AddTableColumnsContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(488); - match(ALTER); - setState(489); - match(TABLE); - setState(490); - multipartIdentifier(); - setState(491); - match(ADD); - setState(492); - _la = _input.LA(1); - if ( !(_la==COLUMN || _la==COLUMNS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(493); - ((AddTableColumnsContext)_localctx).columns = qualifiedColTypeWithPositionList(); - } - break; - case 16: - _localctx = new AddTableColumnsContext(_localctx); - enterOuterAlt(_localctx, 16); - { - setState(495); - match(ALTER); - setState(496); - match(TABLE); - setState(497); - multipartIdentifier(); - setState(498); - match(ADD); - setState(499); - _la = _input.LA(1); - if ( !(_la==COLUMN || _la==COLUMNS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(500); - match(T__1); - setState(501); - ((AddTableColumnsContext)_localctx).columns = qualifiedColTypeWithPositionList(); - setState(502); - match(T__2); - } - break; - case 17: - _localctx = new RenameTableColumnContext(_localctx); - enterOuterAlt(_localctx, 17); - { - setState(504); - match(ALTER); - setState(505); - match(TABLE); - setState(506); - ((RenameTableColumnContext)_localctx).table = multipartIdentifier(); - setState(507); - match(RENAME); - setState(508); - match(COLUMN); - setState(509); - ((RenameTableColumnContext)_localctx).from_ = multipartIdentifier(); - setState(510); - match(TO); - setState(511); - ((RenameTableColumnContext)_localctx).to = errorCapturingIdentifier(); - } - break; - case 18: - _localctx = new DropTableColumnsContext(_localctx); - enterOuterAlt(_localctx, 18); - { - setState(513); - match(ALTER); - setState(514); - match(TABLE); - setState(515); - multipartIdentifier(); - setState(516); - match(DROP); - setState(517); - _la = _input.LA(1); - if ( !(_la==COLUMN || _la==COLUMNS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(518); - match(T__1); - setState(519); - ((DropTableColumnsContext)_localctx).columns = multipartIdentifierList(); - setState(520); - match(T__2); - } - break; - case 19: - _localctx = new DropTableColumnsContext(_localctx); - enterOuterAlt(_localctx, 19); - { - setState(522); - match(ALTER); - setState(523); - match(TABLE); - setState(524); - multipartIdentifier(); - setState(525); - match(DROP); - setState(526); - _la = _input.LA(1); - if ( !(_la==COLUMN || _la==COLUMNS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(527); - ((DropTableColumnsContext)_localctx).columns = multipartIdentifierList(); - } - break; - case 20: - _localctx = new RenameTableContext(_localctx); - enterOuterAlt(_localctx, 20); - { - setState(529); - match(ALTER); - setState(530); - _la = _input.LA(1); - if ( !(_la==TABLE || _la==VIEW) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(531); - ((RenameTableContext)_localctx).from_ = multipartIdentifier(); - setState(532); - match(RENAME); - setState(533); - match(TO); - setState(534); - ((RenameTableContext)_localctx).to = multipartIdentifier(); - } - break; - case 21: - _localctx = new SetTablePropertiesContext(_localctx); - enterOuterAlt(_localctx, 21); - { - setState(536); - match(ALTER); - setState(537); - _la = _input.LA(1); - if ( !(_la==TABLE || _la==VIEW) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(538); - multipartIdentifier(); - setState(539); - match(SET); - setState(540); - match(TBLPROPERTIES); - setState(541); - tablePropertyList(); - } - break; - case 22: - _localctx = new UnsetTablePropertiesContext(_localctx); - enterOuterAlt(_localctx, 22); - { - setState(543); - match(ALTER); - setState(544); - _la = _input.LA(1); - if ( !(_la==TABLE || _la==VIEW) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(545); - multipartIdentifier(); - setState(546); - match(UNSET); - setState(547); - match(TBLPROPERTIES); - setState(550); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(548); - match(IF); - setState(549); - match(EXISTS); - } - } - - setState(552); - tablePropertyList(); - } - break; - case 23: - _localctx = new AlterTableAlterColumnContext(_localctx); - enterOuterAlt(_localctx, 23); - { - setState(554); - match(ALTER); - setState(555); - match(TABLE); - setState(556); - ((AlterTableAlterColumnContext)_localctx).table = multipartIdentifier(); - setState(557); - _la = _input.LA(1); - if ( !(_la==ALTER || _la==CHANGE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(559); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { - case 1: - { - setState(558); - match(COLUMN); - } - break; - } - setState(561); - ((AlterTableAlterColumnContext)_localctx).column = multipartIdentifier(); - setState(563); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AFTER || _la==COMMENT || _la==DROP || _la==FIRST || _la==SET || _la==TYPE) { - { - setState(562); - alterColumnAction(); - } - } - - } - break; - case 24: - _localctx = new HiveChangeColumnContext(_localctx); - enterOuterAlt(_localctx, 24); - { - setState(565); - match(ALTER); - setState(566); - match(TABLE); - setState(567); - ((HiveChangeColumnContext)_localctx).table = multipartIdentifier(); - setState(569); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(568); - partitionSpec(); - } - } - - setState(571); - match(CHANGE); - setState(573); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { - case 1: - { - setState(572); - match(COLUMN); - } - break; - } - setState(575); - ((HiveChangeColumnContext)_localctx).colName = multipartIdentifier(); - setState(576); - colType(); - setState(578); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AFTER || _la==FIRST) { - { - setState(577); - colPosition(); - } - } - - } - break; - case 25: - _localctx = new HiveReplaceColumnsContext(_localctx); - enterOuterAlt(_localctx, 25); - { - setState(580); - match(ALTER); - setState(581); - match(TABLE); - setState(582); - ((HiveReplaceColumnsContext)_localctx).table = multipartIdentifier(); - setState(584); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(583); - partitionSpec(); - } - } - - setState(586); - match(REPLACE); - setState(587); - match(COLUMNS); - setState(588); - match(T__1); - setState(589); - ((HiveReplaceColumnsContext)_localctx).columns = qualifiedColTypeWithPositionList(); - setState(590); - match(T__2); - } - break; - case 26: - _localctx = new SetTableSerDeContext(_localctx); - enterOuterAlt(_localctx, 26); - { - setState(592); - match(ALTER); - setState(593); - match(TABLE); - setState(594); - multipartIdentifier(); - setState(596); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(595); - partitionSpec(); - } - } - - setState(598); - match(SET); - setState(599); - match(SERDE); - setState(600); - match(STRING); - setState(604); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(601); - match(WITH); - setState(602); - match(SERDEPROPERTIES); - setState(603); - tablePropertyList(); - } - } - - } - break; - case 27: - _localctx = new SetTableSerDeContext(_localctx); - enterOuterAlt(_localctx, 27); - { - setState(606); - match(ALTER); - setState(607); - match(TABLE); - setState(608); - multipartIdentifier(); - setState(610); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(609); - partitionSpec(); - } - } - - setState(612); - match(SET); - setState(613); - match(SERDEPROPERTIES); - setState(614); - tablePropertyList(); - } - break; - case 28: - _localctx = new AddTablePartitionContext(_localctx); - enterOuterAlt(_localctx, 28); - { - setState(616); - match(ALTER); - setState(617); - _la = _input.LA(1); - if ( !(_la==TABLE || _la==VIEW) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(618); - multipartIdentifier(); - setState(619); - match(ADD); - setState(623); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(620); - match(IF); - setState(621); - match(NOT); - setState(622); - match(EXISTS); - } - } - - setState(626); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(625); - partitionSpecLocation(); - } - } - setState(628); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==PARTITION ); - } - break; - case 29: - _localctx = new RenameTablePartitionContext(_localctx); - enterOuterAlt(_localctx, 29); - { - setState(630); - match(ALTER); - setState(631); - match(TABLE); - setState(632); - multipartIdentifier(); - setState(633); - ((RenameTablePartitionContext)_localctx).from_ = partitionSpec(); - setState(634); - match(RENAME); - setState(635); - match(TO); - setState(636); - ((RenameTablePartitionContext)_localctx).to = partitionSpec(); - } - break; - case 30: - _localctx = new DropTablePartitionsContext(_localctx); - enterOuterAlt(_localctx, 30); - { - setState(638); - match(ALTER); - setState(639); - _la = _input.LA(1); - if ( !(_la==TABLE || _la==VIEW) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(640); - multipartIdentifier(); - setState(641); - match(DROP); - setState(644); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(642); - match(IF); - setState(643); - match(EXISTS); - } - } - - setState(646); - partitionSpec(); - setState(651); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(647); - match(T__3); - setState(648); - partitionSpec(); - } - } - setState(653); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(655); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PURGE) { - { - setState(654); - match(PURGE); - } - } - - } - break; - case 31: - _localctx = new SetTableLocationContext(_localctx); - enterOuterAlt(_localctx, 31); - { - setState(657); - match(ALTER); - setState(658); - match(TABLE); - setState(659); - multipartIdentifier(); - setState(661); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(660); - partitionSpec(); - } - } - - setState(663); - match(SET); - setState(664); - locationSpec(); - } - break; - case 32: - _localctx = new RecoverPartitionsContext(_localctx); - enterOuterAlt(_localctx, 32); - { - setState(666); - match(ALTER); - setState(667); - match(TABLE); - setState(668); - multipartIdentifier(); - setState(669); - match(RECOVER); - setState(670); - match(PARTITIONS); - } - break; - case 33: - _localctx = new DropTableContext(_localctx); - enterOuterAlt(_localctx, 33); - { - setState(672); - match(DROP); - setState(673); - match(TABLE); - setState(676); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) { - case 1: - { - setState(674); - match(IF); - setState(675); - match(EXISTS); - } - break; - } - setState(678); - multipartIdentifier(); - setState(680); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PURGE) { - { - setState(679); - match(PURGE); - } - } - - } - break; - case 34: - _localctx = new DropViewContext(_localctx); - enterOuterAlt(_localctx, 34); - { - setState(682); - match(DROP); - setState(683); - match(VIEW); - setState(686); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) { - case 1: - { - setState(684); - match(IF); - setState(685); - match(EXISTS); - } - break; - } - setState(688); - multipartIdentifier(); - } - break; - case 35: - _localctx = new CreateViewContext(_localctx); - enterOuterAlt(_localctx, 35); - { - setState(689); - match(CREATE); - setState(692); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OR) { - { - setState(690); - match(OR); - setState(691); - match(REPLACE); - } - } - - setState(698); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==TEMPORARY) { - { - setState(695); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL) { - { - setState(694); - match(GLOBAL); - } - } - - setState(697); - match(TEMPORARY); - } - } - - setState(700); - match(VIEW); - setState(704); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { - case 1: - { - setState(701); - match(IF); - setState(702); - match(NOT); - setState(703); - match(EXISTS); - } - break; - } - setState(706); - multipartIdentifier(); - setState(708); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1) { - { - setState(707); - identifierCommentList(); - } - } - - setState(718); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMENT || _la==PARTITIONED || _la==TBLPROPERTIES) { - { - setState(716); - _errHandler.sync(this); - switch (_input.LA(1)) { - case COMMENT: - { - setState(710); - commentSpec(); - } - break; - case PARTITIONED: - { - { - setState(711); - match(PARTITIONED); - setState(712); - match(ON); - setState(713); - identifierList(); - } - } - break; - case TBLPROPERTIES: - { - { - setState(714); - match(TBLPROPERTIES); - setState(715); - tablePropertyList(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - setState(720); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(721); - match(AS); - setState(722); - query(); - } - break; - case 36: - _localctx = new CreateTempViewUsingContext(_localctx); - enterOuterAlt(_localctx, 36); - { - setState(724); - match(CREATE); - setState(727); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OR) { - { - setState(725); - match(OR); - setState(726); - match(REPLACE); - } - } - - setState(730); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL) { - { - setState(729); - match(GLOBAL); - } - } - - setState(732); - match(TEMPORARY); - setState(733); - match(VIEW); - setState(734); - tableIdentifier(); - setState(739); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1) { - { - setState(735); - match(T__1); - setState(736); - colTypeList(); - setState(737); - match(T__2); - } - } - - setState(741); - tableProvider(); - setState(744); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OPTIONS) { - { - setState(742); - match(OPTIONS); - setState(743); - tablePropertyList(); - } - } - - } - break; - case 37: - _localctx = new AlterViewQueryContext(_localctx); - enterOuterAlt(_localctx, 37); - { - setState(746); - match(ALTER); - setState(747); - match(VIEW); - setState(748); - multipartIdentifier(); - setState(750); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(749); - match(AS); - } - } - - setState(752); - query(); - } - break; - case 38: - _localctx = new CreateFunctionContext(_localctx); - enterOuterAlt(_localctx, 38); - { - setState(754); - match(CREATE); - setState(757); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OR) { - { - setState(755); - match(OR); - setState(756); - match(REPLACE); - } - } - - setState(760); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(759); - match(TEMPORARY); - } - } - - setState(762); - match(FUNCTION); - setState(766); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { - case 1: - { - setState(763); - match(IF); - setState(764); - match(NOT); - setState(765); - match(EXISTS); - } - break; - } - setState(768); - multipartIdentifier(); - setState(769); - match(AS); - setState(770); - ((CreateFunctionContext)_localctx).className = match(STRING); - setState(780); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==USING) { - { - setState(771); - match(USING); - setState(772); - resource(); - setState(777); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(773); - match(T__3); - setState(774); - resource(); - } - } - setState(779); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - } - break; - case 39: - _localctx = new DropFunctionContext(_localctx); - enterOuterAlt(_localctx, 39); - { - setState(782); - match(DROP); - setState(784); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(783); - match(TEMPORARY); - } - } - - setState(786); - match(FUNCTION); - setState(789); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) { - case 1: - { - setState(787); - match(IF); - setState(788); - match(EXISTS); - } - break; - } - setState(791); - multipartIdentifier(); - } - break; - case 40: - _localctx = new ExplainContext(_localctx); - enterOuterAlt(_localctx, 40); - { - setState(792); - match(EXPLAIN); - setState(794); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) { - case 1: - { - setState(793); - _la = _input.LA(1); - if ( !(_la==CODEGEN || _la==COST || ((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (EXTENDED - 86)) | (1L << (FORMATTED - 86)) | (1L << (LOGICAL - 86)))) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - } - setState(796); - statement(); - } - break; - case 41: - _localctx = new ShowTablesContext(_localctx); - enterOuterAlt(_localctx, 41); - { - setState(797); - match(SHOW); - setState(798); - match(TABLES); - setState(801); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(799); - _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(800); - multipartIdentifier(); - } - } - - setState(807); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==STRING) { - { - setState(804); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(803); - match(LIKE); - } - } - - setState(806); - ((ShowTablesContext)_localctx).pattern = match(STRING); - } - } - - } - break; - case 42: - _localctx = new ShowTableContext(_localctx); - enterOuterAlt(_localctx, 42); - { - setState(809); - match(SHOW); - setState(810); - match(TABLE); - setState(811); - match(EXTENDED); - setState(814); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(812); - _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(813); - ((ShowTableContext)_localctx).ns = multipartIdentifier(); - } - } - - setState(816); - match(LIKE); - setState(817); - ((ShowTableContext)_localctx).pattern = match(STRING); - setState(819); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(818); - partitionSpec(); - } - } - - } - break; - case 43: - _localctx = new ShowTblPropertiesContext(_localctx); - enterOuterAlt(_localctx, 43); - { - setState(821); - match(SHOW); - setState(822); - match(TBLPROPERTIES); - setState(823); - ((ShowTblPropertiesContext)_localctx).table = multipartIdentifier(); - setState(828); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1) { - { - setState(824); - match(T__1); - setState(825); - ((ShowTblPropertiesContext)_localctx).key = tablePropertyKey(); - setState(826); - match(T__2); - } - } - - } - break; - case 44: - _localctx = new ShowColumnsContext(_localctx); - enterOuterAlt(_localctx, 44); - { - setState(830); - match(SHOW); - setState(831); - match(COLUMNS); - setState(832); - _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(833); - ((ShowColumnsContext)_localctx).table = multipartIdentifier(); - setState(836); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(834); - _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(835); - ((ShowColumnsContext)_localctx).ns = multipartIdentifier(); - } - } - - } - break; - case 45: - _localctx = new ShowViewsContext(_localctx); - enterOuterAlt(_localctx, 45); - { - setState(838); - match(SHOW); - setState(839); - match(VIEWS); - setState(842); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(840); - _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(841); - multipartIdentifier(); - } - } - - setState(848); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==STRING) { - { - setState(845); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(844); - match(LIKE); - } - } - - setState(847); - ((ShowViewsContext)_localctx).pattern = match(STRING); - } - } - - } - break; - case 46: - _localctx = new ShowPartitionsContext(_localctx); - enterOuterAlt(_localctx, 46); - { - setState(850); - match(SHOW); - setState(851); - match(PARTITIONS); - setState(852); - multipartIdentifier(); - setState(854); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(853); - partitionSpec(); - } - } - - } - break; - case 47: - _localctx = new ShowFunctionsContext(_localctx); - enterOuterAlt(_localctx, 47); - { - setState(856); - match(SHOW); - setState(858); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,82,_ctx) ) { - case 1: - { - setState(857); - identifier(); - } - break; - } - setState(860); - match(FUNCTIONS); - setState(868); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) { - case 1: - { - setState(862); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) { - case 1: - { - setState(861); - match(LIKE); - } - break; - } - setState(866); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) { - case 1: - { - setState(864); - multipartIdentifier(); - } - break; - case 2: - { - setState(865); - ((ShowFunctionsContext)_localctx).pattern = match(STRING); - } - break; - } - } - break; - } - } - break; - case 48: - _localctx = new ShowCreateTableContext(_localctx); - enterOuterAlt(_localctx, 48); - { - setState(870); - match(SHOW); - setState(871); - match(CREATE); - setState(872); - match(TABLE); - setState(873); - multipartIdentifier(); - setState(876); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(874); - match(AS); - setState(875); - match(SERDE); - } - } - - } - break; - case 49: - _localctx = new ShowCurrentNamespaceContext(_localctx); - enterOuterAlt(_localctx, 49); - { - setState(878); - match(SHOW); - setState(879); - match(CURRENT); - setState(880); - match(NAMESPACE); - } - break; - case 50: - _localctx = new DescribeFunctionContext(_localctx); - enterOuterAlt(_localctx, 50); - { - setState(881); - _la = _input.LA(1); - if ( !(_la==DESC || _la==DESCRIBE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(882); - match(FUNCTION); - setState(884); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { - case 1: - { - setState(883); - match(EXTENDED); - } - break; - } - setState(886); - describeFuncName(); - } - break; - case 51: - _localctx = new DescribeNamespaceContext(_localctx); - enterOuterAlt(_localctx, 51); - { - setState(887); - _la = _input.LA(1); - if ( !(_la==DESC || _la==DESCRIBE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(888); - namespace(); - setState(890); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) { - case 1: - { - setState(889); - match(EXTENDED); - } - break; - } - setState(892); - multipartIdentifier(); - } - break; - case 52: - _localctx = new DescribeRelationContext(_localctx); - enterOuterAlt(_localctx, 52); - { - setState(894); - _la = _input.LA(1); - if ( !(_la==DESC || _la==DESCRIBE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(896); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) { - case 1: - { - setState(895); - match(TABLE); - } - break; - } - setState(899); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) { - case 1: - { - setState(898); - ((DescribeRelationContext)_localctx).option = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==EXTENDED || _la==FORMATTED) ) { - ((DescribeRelationContext)_localctx).option = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - } - setState(901); - multipartIdentifier(); - setState(903); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) { - case 1: - { - setState(902); - partitionSpec(); - } - break; - } - setState(906); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) { - case 1: - { - setState(905); - describeColName(); - } - break; - } - } - break; - case 53: - _localctx = new DescribeQueryContext(_localctx); - enterOuterAlt(_localctx, 53); - { - setState(908); - _la = _input.LA(1); - if ( !(_la==DESC || _la==DESCRIBE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(910); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==QUERY) { - { - setState(909); - match(QUERY); - } - } - - setState(912); - query(); - } - break; - case 54: - _localctx = new CommentNamespaceContext(_localctx); - enterOuterAlt(_localctx, 54); - { - setState(913); - match(COMMENT); - setState(914); - match(ON); - setState(915); - namespace(); - setState(916); - multipartIdentifier(); - setState(917); - match(IS); - setState(918); - ((CommentNamespaceContext)_localctx).comment = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==NULL || _la==STRING) ) { - ((CommentNamespaceContext)_localctx).comment = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 55: - _localctx = new CommentTableContext(_localctx); - enterOuterAlt(_localctx, 55); - { - setState(920); - match(COMMENT); - setState(921); - match(ON); - setState(922); - match(TABLE); - setState(923); - multipartIdentifier(); - setState(924); - match(IS); - setState(925); - ((CommentTableContext)_localctx).comment = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==NULL || _la==STRING) ) { - ((CommentTableContext)_localctx).comment = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 56: - _localctx = new RefreshTableContext(_localctx); - enterOuterAlt(_localctx, 56); - { - setState(927); - match(REFRESH); - setState(928); - match(TABLE); - setState(929); - multipartIdentifier(); - } - break; - case 57: - _localctx = new RefreshResourceContext(_localctx); - enterOuterAlt(_localctx, 57); - { - setState(930); - match(REFRESH); - setState(938); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) { - case 1: - { - setState(931); - match(STRING); - } - break; - case 2: - { - setState(935); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,94,_ctx); - while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1+1 ) { - { - { - setState(932); - matchWildcard(); - } - } - } - setState(937); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,94,_ctx); - } - } - break; - } - } - break; - case 58: - _localctx = new CacheTableContext(_localctx); - enterOuterAlt(_localctx, 58); - { - setState(940); - match(CACHE); - setState(942); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LAZY) { - { - setState(941); - match(LAZY); - } - } - - setState(944); - match(TABLE); - setState(945); - multipartIdentifier(); - setState(948); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OPTIONS) { - { - setState(946); - match(OPTIONS); - setState(947); - ((CacheTableContext)_localctx).options = tablePropertyList(); - } - } - - setState(954); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__1 || _la==AS || _la==FROM || _la==MAP || ((((_la - 187)) & ~0x3f) == 0 && ((1L << (_la - 187)) & ((1L << (REDUCE - 187)) | (1L << (SELECT - 187)) | (1L << (TABLE - 187)))) != 0) || _la==VALUES || _la==WITH) { - { - setState(951); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(950); - match(AS); - } - } - - setState(953); - query(); - } - } - - } - break; - case 59: - _localctx = new UncacheTableContext(_localctx); - enterOuterAlt(_localctx, 59); - { - setState(956); - match(UNCACHE); - setState(957); - match(TABLE); - setState(960); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) { - case 1: - { - setState(958); - match(IF); - setState(959); - match(EXISTS); - } - break; - } - setState(962); - multipartIdentifier(); - } - break; - case 60: - _localctx = new ClearCacheContext(_localctx); - enterOuterAlt(_localctx, 60); - { - setState(963); - match(CLEAR); - setState(964); - match(CACHE); - } - break; - case 61: - _localctx = new LoadDataContext(_localctx); - enterOuterAlt(_localctx, 61); - { - setState(965); - match(LOAD); - setState(966); - match(DATA); - setState(968); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LOCAL) { - { - setState(967); - match(LOCAL); - } - } - - setState(970); - match(INPATH); - setState(971); - ((LoadDataContext)_localctx).path = match(STRING); - setState(973); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OVERWRITE) { - { - setState(972); - match(OVERWRITE); - } - } - - setState(975); - match(INTO); - setState(976); - match(TABLE); - setState(977); - multipartIdentifier(); - setState(979); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(978); - partitionSpec(); - } - } - - } - break; - case 62: - _localctx = new TruncateTableContext(_localctx); - enterOuterAlt(_localctx, 62); - { - setState(981); - match(TRUNCATE); - setState(982); - match(TABLE); - setState(983); - multipartIdentifier(); - setState(985); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(984); - partitionSpec(); - } - } - - } - break; - case 63: - _localctx = new RepairTableContext(_localctx); - enterOuterAlt(_localctx, 63); - { - setState(987); - match(MSCK); - setState(988); - match(REPAIR); - setState(989); - match(TABLE); - setState(990); - multipartIdentifier(); - } - break; - case 64: - _localctx = new ManageResourceContext(_localctx); - enterOuterAlt(_localctx, 64); - { - setState(991); - ((ManageResourceContext)_localctx).op = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==ADD || _la==LIST) ) { - ((ManageResourceContext)_localctx).op = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(992); - identifier(); - setState(1000); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) { - case 1: - { - setState(993); - match(STRING); - } - break; - case 2: - { - setState(997); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,105,_ctx); - while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1+1 ) { - { - { - setState(994); - matchWildcard(); - } - } - } - setState(999); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,105,_ctx); - } - } - break; - } - } - break; - case 65: - _localctx = new FailNativeCommandContext(_localctx); - enterOuterAlt(_localctx, 65); - { - setState(1002); - match(SET); - setState(1003); - match(ROLE); - setState(1007); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,107,_ctx); - while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1+1 ) { - { - { - setState(1004); - matchWildcard(); - } - } - } - setState(1009); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,107,_ctx); - } - } - break; - case 66: - _localctx = new SetConfigurationContext(_localctx); - enterOuterAlt(_localctx, 66); - { - setState(1010); - match(SET); - setState(1014); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,108,_ctx); - while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1+1 ) { - { - { - setState(1011); - matchWildcard(); - } - } - } - setState(1016); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,108,_ctx); - } - } - break; - case 67: - _localctx = new ResetConfigurationContext(_localctx); - enterOuterAlt(_localctx, 67); - { - setState(1017); - match(RESET); - } - break; - case 68: - _localctx = new FailNativeCommandContext(_localctx); - enterOuterAlt(_localctx, 68); - { - setState(1018); - unsupportedHiveNativeCommands(); - setState(1022); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,109,_ctx); - while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1+1 ) { - { - { - setState(1019); - matchWildcard(); - } - } - } - setState(1024); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,109,_ctx); - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class UnsupportedHiveNativeCommandsContext extends ParserRuleContext { - public Token kw1; - public Token kw2; - public Token kw3; - public Token kw4; - public Token kw5; - public Token kw6; - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public TerminalNode GRANT() { return getToken(SqlBaseParser.GRANT, 0); } - public TerminalNode REVOKE() { return getToken(SqlBaseParser.REVOKE, 0); } - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode PRINCIPALS() { return getToken(SqlBaseParser.PRINCIPALS, 0); } - public TerminalNode ROLES() { return getToken(SqlBaseParser.ROLES, 0); } - public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } - public TerminalNode EXPORT() { return getToken(SqlBaseParser.EXPORT, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode IMPORT() { return getToken(SqlBaseParser.IMPORT, 0); } - public TerminalNode COMPACTIONS() { return getToken(SqlBaseParser.COMPACTIONS, 0); } - public TerminalNode TRANSACTIONS() { return getToken(SqlBaseParser.TRANSACTIONS, 0); } - public TerminalNode INDEXES() { return getToken(SqlBaseParser.INDEXES, 0); } - public TerminalNode LOCKS() { return getToken(SqlBaseParser.LOCKS, 0); } - public TerminalNode INDEX() { return getToken(SqlBaseParser.INDEX, 0); } - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode LOCK() { return getToken(SqlBaseParser.LOCK, 0); } - public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } - public TerminalNode UNLOCK() { return getToken(SqlBaseParser.UNLOCK, 0); } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode MACRO() { return getToken(SqlBaseParser.MACRO, 0); } - public TableIdentifierContext tableIdentifier() { - return getRuleContext(TableIdentifierContext.class,0); - } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } - public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } - public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } - public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } - public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } - public TerminalNode EXCHANGE() { return getToken(SqlBaseParser.EXCHANGE, 0); } - public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } - public TerminalNode ARCHIVE() { return getToken(SqlBaseParser.ARCHIVE, 0); } - public TerminalNode UNARCHIVE() { return getToken(SqlBaseParser.UNARCHIVE, 0); } - public TerminalNode TOUCH() { return getToken(SqlBaseParser.TOUCH, 0); } - public TerminalNode COMPACT() { return getToken(SqlBaseParser.COMPACT, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode CONCATENATE() { return getToken(SqlBaseParser.CONCATENATE, 0); } - public TerminalNode FILEFORMAT() { return getToken(SqlBaseParser.FILEFORMAT, 0); } - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public TerminalNode START() { return getToken(SqlBaseParser.START, 0); } - public TerminalNode TRANSACTION() { return getToken(SqlBaseParser.TRANSACTION, 0); } - public TerminalNode COMMIT() { return getToken(SqlBaseParser.COMMIT, 0); } - public TerminalNode ROLLBACK() { return getToken(SqlBaseParser.ROLLBACK, 0); } - public TerminalNode DFS() { return getToken(SqlBaseParser.DFS, 0); } - public UnsupportedHiveNativeCommandsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedHiveNativeCommands; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnsupportedHiveNativeCommands(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnsupportedHiveNativeCommands(this); - } - } - - public final UnsupportedHiveNativeCommandsContext unsupportedHiveNativeCommands() throws RecognitionException { - UnsupportedHiveNativeCommandsContext _localctx = new UnsupportedHiveNativeCommandsContext(_ctx, getState()); - enterRule(_localctx, 16, RULE_unsupportedHiveNativeCommands); - int _la; - try { - setState(1195); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,118,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1027); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(CREATE); - setState(1028); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1029); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DROP); - setState(1030); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1031); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(GRANT); - setState(1033); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) { - case 1: - { - setState(1032); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); - } - break; - } - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(1035); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(REVOKE); - setState(1037); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) { - case 1: - { - setState(1036); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); - } - break; - } - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(1039); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1040); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(GRANT); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(1041); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1042); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLE); - setState(1044); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) { - case 1: - { - setState(1043); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(GRANT); - } - break; - } - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(1046); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1047); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(PRINCIPALS); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(1048); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1049); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(ROLES); - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(1050); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1051); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(CURRENT); - setState(1052); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(ROLES); - } - break; - case 10: - enterOuterAlt(_localctx, 10); - { - setState(1053); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(EXPORT); - setState(1054); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - } - break; - case 11: - enterOuterAlt(_localctx, 11); - { - setState(1055); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(IMPORT); - setState(1056); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - } - break; - case 12: - enterOuterAlt(_localctx, 12); - { - setState(1057); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1058); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(COMPACTIONS); - } - break; - case 13: - enterOuterAlt(_localctx, 13); - { - setState(1059); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1060); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(CREATE); - setState(1061); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(TABLE); - } - break; - case 14: - enterOuterAlt(_localctx, 14); - { - setState(1062); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1063); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TRANSACTIONS); - } - break; - case 15: - enterOuterAlt(_localctx, 15); - { - setState(1064); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1065); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEXES); - } - break; - case 16: - enterOuterAlt(_localctx, 16); - { - setState(1066); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(SHOW); - setState(1067); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(LOCKS); - } - break; - case 17: - enterOuterAlt(_localctx, 17); - { - setState(1068); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(CREATE); - setState(1069); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEX); - } - break; - case 18: - enterOuterAlt(_localctx, 18); - { - setState(1070); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DROP); - setState(1071); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEX); - } - break; - case 19: - enterOuterAlt(_localctx, 19); - { - setState(1072); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1073); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(INDEX); - } - break; - case 20: - enterOuterAlt(_localctx, 20); - { - setState(1074); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(LOCK); - setState(1075); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - } - break; - case 21: - enterOuterAlt(_localctx, 21); - { - setState(1076); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(LOCK); - setState(1077); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(DATABASE); - } - break; - case 22: - enterOuterAlt(_localctx, 22); - { - setState(1078); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(UNLOCK); - setState(1079); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - } - break; - case 23: - enterOuterAlt(_localctx, 23); - { - setState(1080); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(UNLOCK); - setState(1081); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(DATABASE); - } - break; - case 24: - enterOuterAlt(_localctx, 24); - { - setState(1082); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(CREATE); - setState(1083); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TEMPORARY); - setState(1084); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(MACRO); - } - break; - case 25: - enterOuterAlt(_localctx, 25); - { - setState(1085); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DROP); - setState(1086); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TEMPORARY); - setState(1087); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(MACRO); - } - break; - case 26: - enterOuterAlt(_localctx, 26); - { - setState(1088); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1089); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1090); - tableIdentifier(); - setState(1091); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); - setState(1092); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(CLUSTERED); - } - break; - case 27: - enterOuterAlt(_localctx, 27); - { - setState(1094); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1095); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1096); - tableIdentifier(); - setState(1097); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(CLUSTERED); - setState(1098); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(BY); - } - break; - case 28: - enterOuterAlt(_localctx, 28); - { - setState(1100); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1101); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1102); - tableIdentifier(); - setState(1103); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); - setState(1104); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(SORTED); - } - break; - case 29: - enterOuterAlt(_localctx, 29); - { - setState(1106); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1107); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1108); - tableIdentifier(); - setState(1109); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(SKEWED); - setState(1110); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(BY); - } - break; - case 30: - enterOuterAlt(_localctx, 30); - { - setState(1112); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1113); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1114); - tableIdentifier(); - setState(1115); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); - setState(1116); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(SKEWED); - } - break; - case 31: - enterOuterAlt(_localctx, 31); - { - setState(1118); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1119); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1120); - tableIdentifier(); - setState(1121); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(NOT); - setState(1122); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(STORED); - setState(1123); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw5 = match(AS); - setState(1124); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw6 = match(DIRECTORIES); - } - break; - case 32: - enterOuterAlt(_localctx, 32); - { - setState(1126); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1127); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1128); - tableIdentifier(); - setState(1129); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(SET); - setState(1130); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(SKEWED); - setState(1131); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw5 = match(LOCATION); - } - break; - case 33: - enterOuterAlt(_localctx, 33); - { - setState(1133); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1134); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1135); - tableIdentifier(); - setState(1136); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(EXCHANGE); - setState(1137); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(PARTITION); - } - break; - case 34: - enterOuterAlt(_localctx, 34); - { - setState(1139); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1140); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1141); - tableIdentifier(); - setState(1142); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(ARCHIVE); - setState(1143); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(PARTITION); - } - break; - case 35: - enterOuterAlt(_localctx, 35); - { - setState(1145); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1146); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1147); - tableIdentifier(); - setState(1148); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(UNARCHIVE); - setState(1149); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(PARTITION); - } - break; - case 36: - enterOuterAlt(_localctx, 36); - { - setState(1151); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1152); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1153); - tableIdentifier(); - setState(1154); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(TOUCH); - } - break; - case 37: - enterOuterAlt(_localctx, 37); - { - setState(1156); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1157); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1158); - tableIdentifier(); - setState(1160); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(1159); - partitionSpec(); - } - } - - setState(1162); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(COMPACT); - } - break; - case 38: - enterOuterAlt(_localctx, 38); - { - setState(1164); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1165); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1166); - tableIdentifier(); - setState(1168); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(1167); - partitionSpec(); - } - } - - setState(1170); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(CONCATENATE); - } - break; - case 39: - enterOuterAlt(_localctx, 39); - { - setState(1172); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1173); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1174); - tableIdentifier(); - setState(1176); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(1175); - partitionSpec(); - } - } - - setState(1178); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(SET); - setState(1179); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(FILEFORMAT); - } - break; - case 40: - enterOuterAlt(_localctx, 40); - { - setState(1181); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ALTER); - setState(1182); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TABLE); - setState(1183); - tableIdentifier(); - setState(1185); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(1184); - partitionSpec(); - } - } - - setState(1187); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw3 = match(REPLACE); - setState(1188); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw4 = match(COLUMNS); - } - break; - case 41: - enterOuterAlt(_localctx, 41); - { - setState(1190); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(START); - setState(1191); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw2 = match(TRANSACTION); - } - break; - case 42: - enterOuterAlt(_localctx, 42); - { - setState(1192); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(COMMIT); - } - break; - case 43: - enterOuterAlt(_localctx, 43); - { - setState(1193); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(ROLLBACK); - } - break; - case 44: - enterOuterAlt(_localctx, 44); - { - setState(1194); - ((UnsupportedHiveNativeCommandsContext)_localctx).kw1 = match(DFS); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class CreateTableHeaderContext extends ParserRuleContext { - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode EXTERNAL() { return getToken(SqlBaseParser.EXTERNAL, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public CreateTableHeaderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_createTableHeader; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTableHeader(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTableHeader(this); - } - } - - public final CreateTableHeaderContext createTableHeader() throws RecognitionException { - CreateTableHeaderContext _localctx = new CreateTableHeaderContext(_ctx, getState()); - enterRule(_localctx, 18, RULE_createTableHeader); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1197); - match(CREATE); - setState(1199); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(1198); - match(TEMPORARY); - } - } - - setState(1202); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EXTERNAL) { - { - setState(1201); - match(EXTERNAL); - } - } - - setState(1204); - match(TABLE); - setState(1208); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,121,_ctx) ) { - case 1: - { - setState(1205); - match(IF); - setState(1206); - match(NOT); - setState(1207); - match(EXISTS); - } - break; - } - setState(1210); - multipartIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ReplaceTableHeaderContext extends ParserRuleContext { - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } - public ReplaceTableHeaderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_replaceTableHeader; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterReplaceTableHeader(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitReplaceTableHeader(this); - } - } - - public final ReplaceTableHeaderContext replaceTableHeader() throws RecognitionException { - ReplaceTableHeaderContext _localctx = new ReplaceTableHeaderContext(_ctx, getState()); - enterRule(_localctx, 20, RULE_replaceTableHeader); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1214); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==CREATE) { - { - setState(1212); - match(CREATE); - setState(1213); - match(OR); - } - } - - setState(1216); - match(REPLACE); - setState(1217); - match(TABLE); - setState(1218); - multipartIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class BucketSpecContext extends ParserRuleContext { - public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } - public List BY() { return getTokens(SqlBaseParser.BY); } - public TerminalNode BY(int i) { - return getToken(SqlBaseParser.BY, i); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } - public TerminalNode BUCKETS() { return getToken(SqlBaseParser.BUCKETS, 0); } - public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } - public OrderedIdentifierListContext orderedIdentifierList() { - return getRuleContext(OrderedIdentifierListContext.class,0); - } - public BucketSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_bucketSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBucketSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBucketSpec(this); - } - } - - public final BucketSpecContext bucketSpec() throws RecognitionException { - BucketSpecContext _localctx = new BucketSpecContext(_ctx, getState()); - enterRule(_localctx, 22, RULE_bucketSpec); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1220); - match(CLUSTERED); - setState(1221); - match(BY); - setState(1222); - identifierList(); - setState(1226); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SORTED) { - { - setState(1223); - match(SORTED); - setState(1224); - match(BY); - setState(1225); - orderedIdentifierList(); - } - } - - setState(1228); - match(INTO); - setState(1229); - match(INTEGER_VALUE); - setState(1230); - match(BUCKETS); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SkewSpecContext extends ParserRuleContext { - public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } - public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } - public ConstantListContext constantList() { - return getRuleContext(ConstantListContext.class,0); - } - public NestedConstantListContext nestedConstantList() { - return getRuleContext(NestedConstantListContext.class,0); - } - public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } - public SkewSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_skewSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSkewSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSkewSpec(this); - } - } - - public final SkewSpecContext skewSpec() throws RecognitionException { - SkewSpecContext _localctx = new SkewSpecContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_skewSpec); - try { - enterOuterAlt(_localctx, 1); - { - setState(1232); - match(SKEWED); - setState(1233); - match(BY); - setState(1234); - identifierList(); - setState(1235); - match(ON); - setState(1238); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) { - case 1: - { - setState(1236); - constantList(); - } - break; - case 2: - { - setState(1237); - nestedConstantList(); - } - break; - } - setState(1243); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) { - case 1: - { - setState(1240); - match(STORED); - setState(1241); - match(AS); - setState(1242); - match(DIRECTORIES); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class LocationSpecContext extends ParserRuleContext { - public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public LocationSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_locationSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLocationSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLocationSpec(this); - } - } - - public final LocationSpecContext locationSpec() throws RecognitionException { - LocationSpecContext _localctx = new LocationSpecContext(_ctx, getState()); - enterRule(_localctx, 26, RULE_locationSpec); - try { - enterOuterAlt(_localctx, 1); - { - setState(1245); - match(LOCATION); - setState(1246); - match(STRING); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class CommentSpecContext extends ParserRuleContext { - public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public CommentSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_commentSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCommentSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCommentSpec(this); - } - } - - public final CommentSpecContext commentSpec() throws RecognitionException { - CommentSpecContext _localctx = new CommentSpecContext(_ctx, getState()); - enterRule(_localctx, 28, RULE_commentSpec); - try { - enterOuterAlt(_localctx, 1); - { - setState(1248); - match(COMMENT); - setState(1249); - match(STRING); - } - } - 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 QueryTermContext queryTerm() { - return getRuleContext(QueryTermContext.class,0); - } - public QueryOrganizationContext queryOrganization() { - return getRuleContext(QueryOrganizationContext.class,0); - } - public CtesContext ctes() { - return getRuleContext(CtesContext.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 SqlBaseListener ) ((SqlBaseListener)listener).enterQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQuery(this); - } - } - - public final QueryContext query() throws RecognitionException { - QueryContext _localctx = new QueryContext(_ctx, getState()); - enterRule(_localctx, 30, RULE_query); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1252); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(1251); - ctes(); - } - } - - setState(1254); - queryTerm(0); - setState(1255); - queryOrganization(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class InsertIntoContext extends ParserRuleContext { - public InsertIntoContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_insertInto; } - - public InsertIntoContext() { } - public void copyFrom(InsertIntoContext ctx) { - super.copyFrom(ctx); - } - } - public static class InsertOverwriteHiveDirContext extends InsertIntoContext { - public Token path; - public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } - public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } - public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } - public RowFormatContext rowFormat() { - return getRuleContext(RowFormatContext.class,0); - } - public CreateFileFormatContext createFileFormat() { - return getRuleContext(CreateFileFormatContext.class,0); - } - public InsertOverwriteHiveDirContext(InsertIntoContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertOverwriteHiveDir(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertOverwriteHiveDir(this); - } - } - public static class InsertOverwriteDirContext extends InsertIntoContext { - public Token path; - public TablePropertyListContext options; - public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } - public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } - public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } - public TableProviderContext tableProvider() { - return getRuleContext(TableProviderContext.class,0); - } - public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } - public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public InsertOverwriteDirContext(InsertIntoContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertOverwriteDir(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertOverwriteDir(this); - } - } - public static class InsertOverwriteTableContext extends InsertIntoContext { - public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } - public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public InsertOverwriteTableContext(InsertIntoContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertOverwriteTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertOverwriteTable(this); - } - } - public static class InsertIntoTableContext extends InsertIntoContext { - public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } - public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public InsertIntoTableContext(InsertIntoContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInsertIntoTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInsertIntoTable(this); - } - } - - public final InsertIntoContext insertInto() throws RecognitionException { - InsertIntoContext _localctx = new InsertIntoContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_insertInto); - int _la; - try { - setState(1312); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,139,_ctx) ) { - case 1: - _localctx = new InsertOverwriteTableContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1257); - match(INSERT); - setState(1258); - match(OVERWRITE); - setState(1260); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,127,_ctx) ) { - case 1: - { - setState(1259); - match(TABLE); - } - break; - } - setState(1262); - multipartIdentifier(); - setState(1269); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(1263); - partitionSpec(); - setState(1267); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1264); - match(IF); - setState(1265); - match(NOT); - setState(1266); - match(EXISTS); - } - } - - } - } - - } - break; - case 2: - _localctx = new InsertIntoTableContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1271); - match(INSERT); - setState(1272); - match(INTO); - setState(1274); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) { - case 1: - { - setState(1273); - match(TABLE); - } - break; - } - setState(1276); - multipartIdentifier(); - setState(1278); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(1277); - partitionSpec(); - } - } - - setState(1283); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1280); - match(IF); - setState(1281); - match(NOT); - setState(1282); - match(EXISTS); - } - } - - } - break; - case 3: - _localctx = new InsertOverwriteHiveDirContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1285); - match(INSERT); - setState(1286); - match(OVERWRITE); - setState(1288); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LOCAL) { - { - setState(1287); - match(LOCAL); - } - } - - setState(1290); - match(DIRECTORY); - setState(1291); - ((InsertOverwriteHiveDirContext)_localctx).path = match(STRING); - setState(1293); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ROW) { - { - setState(1292); - rowFormat(); - } - } - - setState(1296); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STORED) { - { - setState(1295); - createFileFormat(); - } - } - - } - break; - case 4: - _localctx = new InsertOverwriteDirContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1298); - match(INSERT); - setState(1299); - match(OVERWRITE); - setState(1301); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LOCAL) { - { - setState(1300); - match(LOCAL); - } - } - - setState(1303); - match(DIRECTORY); - setState(1305); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STRING) { - { - setState(1304); - ((InsertOverwriteDirContext)_localctx).path = match(STRING); - } - } - - setState(1307); - tableProvider(); - setState(1310); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OPTIONS) { - { - setState(1308); - match(OPTIONS); - setState(1309); - ((InsertOverwriteDirContext)_localctx).options = tablePropertyList(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class PartitionSpecLocationContext extends ParserRuleContext { - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public LocationSpecContext locationSpec() { - return getRuleContext(LocationSpecContext.class,0); - } - public PartitionSpecLocationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionSpecLocation; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPartitionSpecLocation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPartitionSpecLocation(this); - } - } - - public final PartitionSpecLocationContext partitionSpecLocation() throws RecognitionException { - PartitionSpecLocationContext _localctx = new PartitionSpecLocationContext(_ctx, getState()); - enterRule(_localctx, 34, RULE_partitionSpecLocation); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1314); - partitionSpec(); - setState(1316); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LOCATION) { - { - setState(1315); - locationSpec(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class PartitionSpecContext extends ParserRuleContext { - public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } - public List partitionVal() { - return getRuleContexts(PartitionValContext.class); - } - public PartitionValContext partitionVal(int i) { - return getRuleContext(PartitionValContext.class,i); - } - public PartitionSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPartitionSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPartitionSpec(this); - } - } - - public final PartitionSpecContext partitionSpec() throws RecognitionException { - PartitionSpecContext _localctx = new PartitionSpecContext(_ctx, getState()); - enterRule(_localctx, 36, RULE_partitionSpec); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1318); - match(PARTITION); - setState(1319); - match(T__1); - setState(1320); - partitionVal(); - setState(1325); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1321); - match(T__3); - setState(1322); - partitionVal(); - } - } - setState(1327); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1328); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class PartitionValContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode EQ() { return getToken(SqlBaseParser.EQ, 0); } - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public PartitionValContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionVal; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPartitionVal(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPartitionVal(this); - } - } - - public final PartitionValContext partitionVal() throws RecognitionException { - PartitionValContext _localctx = new PartitionValContext(_ctx, getState()); - enterRule(_localctx, 38, RULE_partitionVal); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1330); - identifier(); - setState(1333); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EQ) { - { - setState(1331); - match(EQ); - setState(1332); - constant(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NamespaceContext extends ParserRuleContext { - public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } - public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } - public TerminalNode SCHEMA() { return getToken(SqlBaseParser.SCHEMA, 0); } - public NamespaceContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_namespace; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamespace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamespace(this); - } - } - - public final NamespaceContext namespace() throws RecognitionException { - NamespaceContext _localctx = new NamespaceContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_namespace); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1335); - _la = _input.LA(1); - if ( !(_la==DATABASE || _la==NAMESPACE || _la==SCHEMA) ) { - _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 DescribeFuncNameContext extends ParserRuleContext { - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public ComparisonOperatorContext comparisonOperator() { - return getRuleContext(ComparisonOperatorContext.class,0); - } - public ArithmeticOperatorContext arithmeticOperator() { - return getRuleContext(ArithmeticOperatorContext.class,0); - } - public PredicateOperatorContext predicateOperator() { - return getRuleContext(PredicateOperatorContext.class,0); - } - public DescribeFuncNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_describeFuncName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeFuncName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeFuncName(this); - } - } - - public final DescribeFuncNameContext describeFuncName() throws RecognitionException { - DescribeFuncNameContext _localctx = new DescribeFuncNameContext(_ctx, getState()); - enterRule(_localctx, 42, RULE_describeFuncName); - try { - setState(1342); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,143,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1337); - qualifiedName(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1338); - match(STRING); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1339); - comparisonOperator(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(1340); - arithmeticOperator(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(1341); - predicateOperator(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class DescribeColNameContext extends ParserRuleContext { - public IdentifierContext identifier; - public List nameParts = new ArrayList(); - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public DescribeColNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_describeColName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDescribeColName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDescribeColName(this); - } - } - - public final DescribeColNameContext describeColName() throws RecognitionException { - DescribeColNameContext _localctx = new DescribeColNameContext(_ctx, getState()); - enterRule(_localctx, 44, RULE_describeColName); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1344); - ((DescribeColNameContext)_localctx).identifier = identifier(); - ((DescribeColNameContext)_localctx).nameParts.add(((DescribeColNameContext)_localctx).identifier); - setState(1349); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(1345); - match(T__4); - setState(1346); - ((DescribeColNameContext)_localctx).identifier = identifier(); - ((DescribeColNameContext)_localctx).nameParts.add(((DescribeColNameContext)_localctx).identifier); - } - } - setState(1351); - _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 CtesContext extends ParserRuleContext { - public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } - public List namedQuery() { - return getRuleContexts(NamedQueryContext.class); - } - public NamedQueryContext namedQuery(int i) { - return getRuleContext(NamedQueryContext.class,i); - } - public CtesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_ctes; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCtes(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCtes(this); - } - } - - public final CtesContext ctes() throws RecognitionException { - CtesContext _localctx = new CtesContext(_ctx, getState()); - enterRule(_localctx, 46, RULE_ctes); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1352); - match(WITH); - setState(1353); - namedQuery(); - setState(1358); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1354); - match(T__3); - setState(1355); - namedQuery(); - } - } - setState(1360); - _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 NamedQueryContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext name; - public IdentifierListContext columnAliases; - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.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 SqlBaseListener ) ((SqlBaseListener)listener).enterNamedQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedQuery(this); - } - } - - public final NamedQueryContext namedQuery() throws RecognitionException { - NamedQueryContext _localctx = new NamedQueryContext(_ctx, getState()); - enterRule(_localctx, 48, RULE_namedQuery); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1361); - ((NamedQueryContext)_localctx).name = errorCapturingIdentifier(); - setState(1363); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) { - case 1: - { - setState(1362); - ((NamedQueryContext)_localctx).columnAliases = identifierList(); - } - break; - } - setState(1366); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(1365); - match(AS); - } - } - - setState(1368); - match(T__1); - setState(1369); - query(); - setState(1370); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TableProviderContext extends ParserRuleContext { - public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TableProviderContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tableProvider; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableProvider(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableProvider(this); - } - } - - public final TableProviderContext tableProvider() throws RecognitionException { - TableProviderContext _localctx = new TableProviderContext(_ctx, getState()); - enterRule(_localctx, 50, RULE_tableProvider); - try { - enterOuterAlt(_localctx, 1); - { - setState(1372); - match(USING); - setState(1373); - multipartIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class CreateTableClausesContext extends ParserRuleContext { - public TablePropertyListContext options; - public TransformListContext partitioning; - public TablePropertyListContext tableProps; - public List bucketSpec() { - return getRuleContexts(BucketSpecContext.class); - } - public BucketSpecContext bucketSpec(int i) { - return getRuleContext(BucketSpecContext.class,i); - } - public List locationSpec() { - return getRuleContexts(LocationSpecContext.class); - } - public LocationSpecContext locationSpec(int i) { - return getRuleContext(LocationSpecContext.class,i); - } - public List commentSpec() { - return getRuleContexts(CommentSpecContext.class); - } - public CommentSpecContext commentSpec(int i) { - return getRuleContext(CommentSpecContext.class,i); - } - public List OPTIONS() { return getTokens(SqlBaseParser.OPTIONS); } - public TerminalNode OPTIONS(int i) { - return getToken(SqlBaseParser.OPTIONS, i); - } - public List PARTITIONED() { return getTokens(SqlBaseParser.PARTITIONED); } - public TerminalNode PARTITIONED(int i) { - return getToken(SqlBaseParser.PARTITIONED, i); - } - public List BY() { return getTokens(SqlBaseParser.BY); } - public TerminalNode BY(int i) { - return getToken(SqlBaseParser.BY, i); - } - public List TBLPROPERTIES() { return getTokens(SqlBaseParser.TBLPROPERTIES); } - public TerminalNode TBLPROPERTIES(int i) { - return getToken(SqlBaseParser.TBLPROPERTIES, i); - } - public List tablePropertyList() { - return getRuleContexts(TablePropertyListContext.class); - } - public TablePropertyListContext tablePropertyList(int i) { - return getRuleContext(TablePropertyListContext.class,i); - } - public List transformList() { - return getRuleContexts(TransformListContext.class); - } - public TransformListContext transformList(int i) { - return getRuleContext(TransformListContext.class,i); - } - public CreateTableClausesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_createTableClauses; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateTableClauses(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateTableClauses(this); - } - } - - public final CreateTableClausesContext createTableClauses() throws RecognitionException { - CreateTableClausesContext _localctx = new CreateTableClausesContext(_ctx, getState()); - enterRule(_localctx, 52, RULE_createTableClauses); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1387); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==CLUSTERED || _la==COMMENT || ((((_la - 138)) & ~0x3f) == 0 && ((1L << (_la - 138)) & ((1L << (LOCATION - 138)) | (1L << (OPTIONS - 138)) | (1L << (PARTITIONED - 138)))) != 0) || _la==TBLPROPERTIES) { - { - setState(1385); - _errHandler.sync(this); - switch (_input.LA(1)) { - case OPTIONS: - { - { - setState(1375); - match(OPTIONS); - setState(1376); - ((CreateTableClausesContext)_localctx).options = tablePropertyList(); - } - } - break; - case PARTITIONED: - { - { - setState(1377); - match(PARTITIONED); - setState(1378); - match(BY); - setState(1379); - ((CreateTableClausesContext)_localctx).partitioning = transformList(); - } - } - break; - case CLUSTERED: - { - setState(1380); - bucketSpec(); - } - break; - case LOCATION: - { - setState(1381); - locationSpec(); - } - break; - case COMMENT: - { - setState(1382); - commentSpec(); - } - break; - case TBLPROPERTIES: - { - { - setState(1383); - match(TBLPROPERTIES); - setState(1384); - ((CreateTableClausesContext)_localctx).tableProps = tablePropertyList(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - setState(1389); - _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 TablePropertyListContext extends ParserRuleContext { - public List tableProperty() { - return getRuleContexts(TablePropertyContext.class); - } - public TablePropertyContext tableProperty(int i) { - return getRuleContext(TablePropertyContext.class,i); - } - public TablePropertyListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tablePropertyList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTablePropertyList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTablePropertyList(this); - } - } - - public final TablePropertyListContext tablePropertyList() throws RecognitionException { - TablePropertyListContext _localctx = new TablePropertyListContext(_ctx, getState()); - enterRule(_localctx, 54, RULE_tablePropertyList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1390); - match(T__1); - setState(1391); - tableProperty(); - setState(1396); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1392); - match(T__3); - setState(1393); - tableProperty(); - } - } - setState(1398); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1399); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TablePropertyContext extends ParserRuleContext { - public TablePropertyKeyContext key; - public TablePropertyValueContext value; - public TablePropertyKeyContext tablePropertyKey() { - return getRuleContext(TablePropertyKeyContext.class,0); - } - public TablePropertyValueContext tablePropertyValue() { - return getRuleContext(TablePropertyValueContext.class,0); - } - public TerminalNode EQ() { return getToken(SqlBaseParser.EQ, 0); } - public TablePropertyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tableProperty; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableProperty(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableProperty(this); - } - } - - public final TablePropertyContext tableProperty() throws RecognitionException { - TablePropertyContext _localctx = new TablePropertyContext(_ctx, getState()); - enterRule(_localctx, 56, RULE_tableProperty); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1401); - ((TablePropertyContext)_localctx).key = tablePropertyKey(); - setState(1406); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FALSE || ((((_la - 241)) & ~0x3f) == 0 && ((1L << (_la - 241)) & ((1L << (TRUE - 241)) | (1L << (EQ - 241)) | (1L << (STRING - 241)) | (1L << (INTEGER_VALUE - 241)) | (1L << (DECIMAL_VALUE - 241)))) != 0)) { - { - setState(1403); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EQ) { - { - setState(1402); - match(EQ); - } - } - - setState(1405); - ((TablePropertyContext)_localctx).value = tablePropertyValue(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TablePropertyKeyContext extends ParserRuleContext { - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TablePropertyKeyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tablePropertyKey; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTablePropertyKey(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTablePropertyKey(this); - } - } - - public final TablePropertyKeyContext tablePropertyKey() throws RecognitionException { - TablePropertyKeyContext _localctx = new TablePropertyKeyContext(_ctx, getState()); - enterRule(_localctx, 58, RULE_tablePropertyKey); - int _la; - try { - setState(1417); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,154,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1408); - identifier(); - setState(1413); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(1409); - match(T__4); - setState(1410); - identifier(); - } - } - setState(1415); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1416); - match(STRING); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TablePropertyValueContext extends ParserRuleContext { - public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } - public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } - public BooleanValueContext booleanValue() { - return getRuleContext(BooleanValueContext.class,0); - } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TablePropertyValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tablePropertyValue; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTablePropertyValue(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTablePropertyValue(this); - } - } - - public final TablePropertyValueContext tablePropertyValue() throws RecognitionException { - TablePropertyValueContext _localctx = new TablePropertyValueContext(_ctx, getState()); - enterRule(_localctx, 60, RULE_tablePropertyValue); - try { - setState(1423); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INTEGER_VALUE: - enterOuterAlt(_localctx, 1); - { - setState(1419); - match(INTEGER_VALUE); - } - break; - case DECIMAL_VALUE: - enterOuterAlt(_localctx, 2); - { - setState(1420); - match(DECIMAL_VALUE); - } - break; - case FALSE: - case TRUE: - enterOuterAlt(_localctx, 3); - { - setState(1421); - booleanValue(); - } - break; - case STRING: - enterOuterAlt(_localctx, 4); - { - setState(1422); - match(STRING); - } - 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 ConstantListContext extends ParserRuleContext { - public List constant() { - return getRuleContexts(ConstantContext.class); - } - public ConstantContext constant(int i) { - return getRuleContext(ConstantContext.class,i); - } - public ConstantListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constantList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterConstantList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitConstantList(this); - } - } - - public final ConstantListContext constantList() throws RecognitionException { - ConstantListContext _localctx = new ConstantListContext(_ctx, getState()); - enterRule(_localctx, 62, RULE_constantList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1425); - match(T__1); - setState(1426); - constant(); - setState(1431); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1427); - match(T__3); - setState(1428); - constant(); - } - } - setState(1433); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1434); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NestedConstantListContext extends ParserRuleContext { - public List constantList() { - return getRuleContexts(ConstantListContext.class); - } - public ConstantListContext constantList(int i) { - return getRuleContext(ConstantListContext.class,i); - } - public NestedConstantListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_nestedConstantList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNestedConstantList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNestedConstantList(this); - } - } - - public final NestedConstantListContext nestedConstantList() throws RecognitionException { - NestedConstantListContext _localctx = new NestedConstantListContext(_ctx, getState()); - enterRule(_localctx, 64, RULE_nestedConstantList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1436); - match(T__1); - setState(1437); - constantList(); - setState(1442); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1438); - match(T__3); - setState(1439); - constantList(); - } - } - setState(1444); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1445); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class CreateFileFormatContext extends ParserRuleContext { - public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public FileFormatContext fileFormat() { - return getRuleContext(FileFormatContext.class,0); - } - public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } - public StorageHandlerContext storageHandler() { - return getRuleContext(StorageHandlerContext.class,0); - } - public CreateFileFormatContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_createFileFormat; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCreateFileFormat(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCreateFileFormat(this); - } - } - - public final CreateFileFormatContext createFileFormat() throws RecognitionException { - CreateFileFormatContext _localctx = new CreateFileFormatContext(_ctx, getState()); - enterRule(_localctx, 66, RULE_createFileFormat); - try { - setState(1453); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1447); - match(STORED); - setState(1448); - match(AS); - setState(1449); - fileFormat(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1450); - match(STORED); - setState(1451); - match(BY); - setState(1452); - storageHandler(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class FileFormatContext extends ParserRuleContext { - public FileFormatContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fileFormat; } - - public FileFormatContext() { } - public void copyFrom(FileFormatContext ctx) { - super.copyFrom(ctx); - } - } - public static class TableFileFormatContext extends FileFormatContext { - public Token inFmt; - public Token outFmt; - public TerminalNode INPUTFORMAT() { return getToken(SqlBaseParser.INPUTFORMAT, 0); } - public TerminalNode OUTPUTFORMAT() { return getToken(SqlBaseParser.OUTPUTFORMAT, 0); } - public List STRING() { return getTokens(SqlBaseParser.STRING); } - public TerminalNode STRING(int i) { - return getToken(SqlBaseParser.STRING, i); - } - public TableFileFormatContext(FileFormatContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableFileFormat(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableFileFormat(this); - } - } - public static class GenericFileFormatContext extends FileFormatContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public GenericFileFormatContext(FileFormatContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterGenericFileFormat(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitGenericFileFormat(this); - } - } - - public final FileFormatContext fileFormat() throws RecognitionException { - FileFormatContext _localctx = new FileFormatContext(_ctx, getState()); - enterRule(_localctx, 68, RULE_fileFormat); - try { - setState(1460); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,159,_ctx) ) { - case 1: - _localctx = new TableFileFormatContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1455); - match(INPUTFORMAT); - setState(1456); - ((TableFileFormatContext)_localctx).inFmt = match(STRING); - setState(1457); - match(OUTPUTFORMAT); - setState(1458); - ((TableFileFormatContext)_localctx).outFmt = match(STRING); - } - break; - case 2: - _localctx = new GenericFileFormatContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1459); - identifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class StorageHandlerContext extends ParserRuleContext { - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } - public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public StorageHandlerContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_storageHandler; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStorageHandler(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStorageHandler(this); - } - } - - public final StorageHandlerContext storageHandler() throws RecognitionException { - StorageHandlerContext _localctx = new StorageHandlerContext(_ctx, getState()); - enterRule(_localctx, 70, RULE_storageHandler); - try { - enterOuterAlt(_localctx, 1); - { - setState(1462); - match(STRING); - setState(1466); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,160,_ctx) ) { - case 1: - { - setState(1463); - match(WITH); - setState(1464); - match(SERDEPROPERTIES); - setState(1465); - tablePropertyList(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ResourceContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public ResourceContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_resource; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterResource(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitResource(this); - } - } - - public final ResourceContext resource() throws RecognitionException { - ResourceContext _localctx = new ResourceContext(_ctx, getState()); - enterRule(_localctx, 72, RULE_resource); - try { - enterOuterAlt(_localctx, 1); - { - setState(1468); - identifier(); - setState(1469); - match(STRING); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class DmlStatementNoWithContext extends ParserRuleContext { - public DmlStatementNoWithContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dmlStatementNoWith; } - - public DmlStatementNoWithContext() { } - public void copyFrom(DmlStatementNoWithContext ctx) { - super.copyFrom(ctx); - } - } - public static class DeleteFromTableContext extends DmlStatementNoWithContext { - public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public DeleteFromTableContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDeleteFromTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDeleteFromTable(this); - } - } - public static class SingleInsertQueryContext extends DmlStatementNoWithContext { - public InsertIntoContext insertInto() { - return getRuleContext(InsertIntoContext.class,0); - } - public QueryTermContext queryTerm() { - return getRuleContext(QueryTermContext.class,0); - } - public QueryOrganizationContext queryOrganization() { - return getRuleContext(QueryOrganizationContext.class,0); - } - public SingleInsertQueryContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSingleInsertQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSingleInsertQuery(this); - } - } - public static class MultiInsertQueryContext extends DmlStatementNoWithContext { - public FromClauseContext fromClause() { - return getRuleContext(FromClauseContext.class,0); - } - public List multiInsertQueryBody() { - return getRuleContexts(MultiInsertQueryBodyContext.class); - } - public MultiInsertQueryBodyContext multiInsertQueryBody(int i) { - return getRuleContext(MultiInsertQueryBodyContext.class,i); - } - public MultiInsertQueryContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultiInsertQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultiInsertQuery(this); - } - } - public static class UpdateTableContext extends DmlStatementNoWithContext { - public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public SetClauseContext setClause() { - return getRuleContext(SetClauseContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public UpdateTableContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUpdateTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUpdateTable(this); - } - } - public static class MergeIntoTableContext extends DmlStatementNoWithContext { - public MultipartIdentifierContext target; - public TableAliasContext targetAlias; - public MultipartIdentifierContext source; - public QueryContext sourceQuery; - public TableAliasContext sourceAlias; - public BooleanExpressionContext mergeCondition; - public TerminalNode MERGE() { return getToken(SqlBaseParser.MERGE, 0); } - public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } - public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } - public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public List tableAlias() { - return getRuleContexts(TableAliasContext.class); - } - public TableAliasContext tableAlias(int i) { - return getRuleContext(TableAliasContext.class,i); - } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public List matchedClause() { - return getRuleContexts(MatchedClauseContext.class); - } - public MatchedClauseContext matchedClause(int i) { - return getRuleContext(MatchedClauseContext.class,i); - } - public List notMatchedClause() { - return getRuleContexts(NotMatchedClauseContext.class); - } - public NotMatchedClauseContext notMatchedClause(int i) { - return getRuleContext(NotMatchedClauseContext.class,i); - } - public MergeIntoTableContext(DmlStatementNoWithContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMergeIntoTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMergeIntoTable(this); - } - } - - public final DmlStatementNoWithContext dmlStatementNoWith() throws RecognitionException { - DmlStatementNoWithContext _localctx = new DmlStatementNoWithContext(_ctx, getState()); - enterRule(_localctx, 74, RULE_dmlStatementNoWith); - int _la; - try { - int _alt; - setState(1522); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INSERT: - _localctx = new SingleInsertQueryContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1471); - insertInto(); - setState(1472); - queryTerm(0); - setState(1473); - queryOrganization(); - } - break; - case FROM: - _localctx = new MultiInsertQueryContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1475); - fromClause(); - setState(1477); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(1476); - multiInsertQueryBody(); - } - } - setState(1479); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==INSERT ); - } - break; - case DELETE: - _localctx = new DeleteFromTableContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1481); - match(DELETE); - setState(1482); - match(FROM); - setState(1483); - multipartIdentifier(); - setState(1484); - tableAlias(); - setState(1486); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(1485); - whereClause(); - } - } - - } - break; - case UPDATE: - _localctx = new UpdateTableContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1488); - match(UPDATE); - setState(1489); - multipartIdentifier(); - setState(1490); - tableAlias(); - setState(1491); - setClause(); - setState(1493); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(1492); - whereClause(); - } - } - - } - break; - case MERGE: - _localctx = new MergeIntoTableContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(1495); - match(MERGE); - setState(1496); - match(INTO); - setState(1497); - ((MergeIntoTableContext)_localctx).target = multipartIdentifier(); - setState(1498); - ((MergeIntoTableContext)_localctx).targetAlias = tableAlias(); - setState(1499); - match(USING); - setState(1505); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) { - case 1: - { - setState(1500); - ((MergeIntoTableContext)_localctx).source = multipartIdentifier(); - } - break; - case 2: - { - setState(1501); - match(T__1); - setState(1502); - ((MergeIntoTableContext)_localctx).sourceQuery = query(); - setState(1503); - match(T__2); - } - break; - } - setState(1507); - ((MergeIntoTableContext)_localctx).sourceAlias = tableAlias(); - setState(1508); - match(ON); - setState(1509); - ((MergeIntoTableContext)_localctx).mergeCondition = booleanExpression(0); - setState(1513); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,165,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1510); - matchedClause(); - } - } - } - setState(1515); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,165,_ctx); - } - setState(1519); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==WHEN) { - { - { - setState(1516); - notMatchedClause(); - } - } - setState(1521); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class QueryOrganizationContext extends ParserRuleContext { - public SortItemContext sortItem; - public List order = new ArrayList(); - public ExpressionContext expression; - public List clusterBy = new ArrayList(); - public List distributeBy = new ArrayList(); - public List sort = new ArrayList(); - public ExpressionContext limit; - public TerminalNode ORDER() { return getToken(SqlBaseParser.ORDER, 0); } - public List BY() { return getTokens(SqlBaseParser.BY); } - public TerminalNode BY(int i) { - return getToken(SqlBaseParser.BY, i); - } - public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } - public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } - public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } - public WindowClauseContext windowClause() { - return getRuleContext(WindowClauseContext.class,0); - } - public TerminalNode LIMIT() { return getToken(SqlBaseParser.LIMIT, 0); } - public List sortItem() { - return getRuleContexts(SortItemContext.class); - } - public SortItemContext sortItem(int i) { - return getRuleContext(SortItemContext.class,i); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } - public QueryOrganizationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_queryOrganization; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQueryOrganization(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQueryOrganization(this); - } - } - - public final QueryOrganizationContext queryOrganization() throws RecognitionException { - QueryOrganizationContext _localctx = new QueryOrganizationContext(_ctx, getState()); - enterRule(_localctx, 76, RULE_queryOrganization); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1534); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) { - case 1: - { - setState(1524); - match(ORDER); - setState(1525); - match(BY); - setState(1526); - ((QueryOrganizationContext)_localctx).sortItem = sortItem(); - ((QueryOrganizationContext)_localctx).order.add(((QueryOrganizationContext)_localctx).sortItem); - setState(1531); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,168,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1527); - match(T__3); - setState(1528); - ((QueryOrganizationContext)_localctx).sortItem = sortItem(); - ((QueryOrganizationContext)_localctx).order.add(((QueryOrganizationContext)_localctx).sortItem); - } - } - } - setState(1533); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,168,_ctx); - } - } - break; - } - setState(1546); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) { - case 1: - { - setState(1536); - match(CLUSTER); - setState(1537); - match(BY); - setState(1538); - ((QueryOrganizationContext)_localctx).expression = expression(); - ((QueryOrganizationContext)_localctx).clusterBy.add(((QueryOrganizationContext)_localctx).expression); - setState(1543); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,170,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1539); - match(T__3); - setState(1540); - ((QueryOrganizationContext)_localctx).expression = expression(); - ((QueryOrganizationContext)_localctx).clusterBy.add(((QueryOrganizationContext)_localctx).expression); - } - } - } - setState(1545); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,170,_ctx); - } - } - break; - } - setState(1558); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,173,_ctx) ) { - case 1: - { - setState(1548); - match(DISTRIBUTE); - setState(1549); - match(BY); - setState(1550); - ((QueryOrganizationContext)_localctx).expression = expression(); - ((QueryOrganizationContext)_localctx).distributeBy.add(((QueryOrganizationContext)_localctx).expression); - setState(1555); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,172,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1551); - match(T__3); - setState(1552); - ((QueryOrganizationContext)_localctx).expression = expression(); - ((QueryOrganizationContext)_localctx).distributeBy.add(((QueryOrganizationContext)_localctx).expression); - } - } - } - setState(1557); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,172,_ctx); - } - } - break; - } - setState(1570); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,175,_ctx) ) { - case 1: - { - setState(1560); - match(SORT); - setState(1561); - match(BY); - setState(1562); - ((QueryOrganizationContext)_localctx).sortItem = sortItem(); - ((QueryOrganizationContext)_localctx).sort.add(((QueryOrganizationContext)_localctx).sortItem); - setState(1567); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,174,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1563); - match(T__3); - setState(1564); - ((QueryOrganizationContext)_localctx).sortItem = sortItem(); - ((QueryOrganizationContext)_localctx).sort.add(((QueryOrganizationContext)_localctx).sortItem); - } - } - } - setState(1569); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,174,_ctx); - } - } - break; - } - setState(1573); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) { - case 1: - { - setState(1572); - windowClause(); - } - break; - } - setState(1580); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) { - case 1: - { - setState(1575); - match(LIMIT); - setState(1578); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,177,_ctx) ) { - case 1: - { - setState(1576); - match(ALL); - } - break; - case 2: - { - setState(1577); - ((QueryOrganizationContext)_localctx).limit = expression(); - } - break; - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class MultiInsertQueryBodyContext extends ParserRuleContext { - public InsertIntoContext insertInto() { - return getRuleContext(InsertIntoContext.class,0); - } - public FromStatementBodyContext fromStatementBody() { - return getRuleContext(FromStatementBodyContext.class,0); - } - public MultiInsertQueryBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_multiInsertQueryBody; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultiInsertQueryBody(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultiInsertQueryBody(this); - } - } - - public final MultiInsertQueryBodyContext multiInsertQueryBody() throws RecognitionException { - MultiInsertQueryBodyContext _localctx = new MultiInsertQueryBodyContext(_ctx, getState()); - enterRule(_localctx, 78, RULE_multiInsertQueryBody); - try { - enterOuterAlt(_localctx, 1); - { - setState(1582); - insertInto(); - setState(1583); - fromStatementBody(); - } - } - 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 SqlBaseListener ) ((SqlBaseListener)listener).enterQueryTermDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQueryTermDefault(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(SqlBaseParser.INTERSECT, 0); } - public TerminalNode UNION() { return getToken(SqlBaseParser.UNION, 0); } - public TerminalNode EXCEPT() { return getToken(SqlBaseParser.EXCEPT, 0); } - public TerminalNode SETMINUS() { return getToken(SqlBaseParser.SETMINUS, 0); } - public SetQuantifierContext setQuantifier() { - return getRuleContext(SetQuantifierContext.class,0); - } - public SetOperationContext(QueryTermContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetOperation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetOperation(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 = 80; - enterRecursionRule(_localctx, 80, RULE_queryTerm, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - { - _localctx = new QueryTermDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(1586); - queryPrimary(); - } - _ctx.stop = _input.LT(-1); - setState(1611); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,183,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(1609); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,182,_ctx) ) { - case 1: - { - _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); - ((SetOperationContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); - setState(1588); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(1589); - if (!(self.legacy_setops_precedence_enbled)) throw new FailedPredicateException(this, "self.legacy_setops_precedence_enbled"); - setState(1590); - ((SetOperationContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==EXCEPT || _la==INTERSECT || _la==SETMINUS || _la==UNION) ) { - ((SetOperationContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1592); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==DISTINCT) { - { - setState(1591); - setQuantifier(); - } - } - - setState(1594); - ((SetOperationContext)_localctx).right = queryTerm(4); - } - break; - case 2: - { - _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); - ((SetOperationContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); - setState(1595); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(1596); - if (!(not self.legacy_setops_precedence_enbled)) throw new FailedPredicateException(this, "not self.legacy_setops_precedence_enbled"); - setState(1597); - ((SetOperationContext)_localctx).operator = match(INTERSECT); - setState(1599); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==DISTINCT) { - { - setState(1598); - setQuantifier(); - } - } - - setState(1601); - ((SetOperationContext)_localctx).right = queryTerm(3); - } - break; - case 3: - { - _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); - ((SetOperationContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); - setState(1602); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(1603); - if (!(not self.legacy_setops_precedence_enbled)) throw new FailedPredicateException(this, "not self.legacy_setops_precedence_enbled"); - setState(1604); - ((SetOperationContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==EXCEPT || _la==SETMINUS || _la==UNION) ) { - ((SetOperationContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1606); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==DISTINCT) { - { - setState(1605); - setQuantifier(); - } - } - - setState(1608); - ((SetOperationContext)_localctx).right = queryTerm(2); - } - break; - } - } - } - setState(1613); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,183,_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 QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public SubqueryContext(QueryPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSubquery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubquery(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 SqlBaseListener ) ((SqlBaseListener)listener).enterQueryPrimaryDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQueryPrimaryDefault(this); - } - } - public static class InlineTableDefault1Context extends QueryPrimaryContext { - public InlineTableContext inlineTable() { - return getRuleContext(InlineTableContext.class,0); - } - public InlineTableDefault1Context(QueryPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInlineTableDefault1(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInlineTableDefault1(this); - } - } - public static class FromStmtContext extends QueryPrimaryContext { - public FromStatementContext fromStatement() { - return getRuleContext(FromStatementContext.class,0); - } - public FromStmtContext(QueryPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromStmt(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromStmt(this); - } - } - public static class TableContext extends QueryPrimaryContext { - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TableContext(QueryPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTable(this); - } - } - - public final QueryPrimaryContext queryPrimary() throws RecognitionException { - QueryPrimaryContext _localctx = new QueryPrimaryContext(_ctx, getState()); - enterRule(_localctx, 82, RULE_queryPrimary); - try { - setState(1623); - _errHandler.sync(this); - switch (_input.LA(1)) { - case MAP: - case REDUCE: - case SELECT: - _localctx = new QueryPrimaryDefaultContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1614); - querySpecification(); - } - break; - case FROM: - _localctx = new FromStmtContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1615); - fromStatement(); - } - break; - case TABLE: - _localctx = new TableContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1616); - match(TABLE); - setState(1617); - multipartIdentifier(); - } - break; - case VALUES: - _localctx = new InlineTableDefault1Context(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1618); - inlineTable(); - } - break; - case T__1: - _localctx = new SubqueryContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(1619); - match(T__1); - setState(1620); - query(); - setState(1621); - 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 nullOrder; - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } - public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } - public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterSortItem(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSortItem(this); - } - } - - public final SortItemContext sortItem() throws RecognitionException { - SortItemContext _localctx = new SortItemContext(_ctx, getState()); - enterRule(_localctx, 84, RULE_sortItem); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1625); - expression(); - setState(1627); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) { - case 1: - { - setState(1626); - ((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(); - } - } - break; - } - setState(1631); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,186,_ctx) ) { - case 1: - { - setState(1629); - match(NULLS); - setState(1630); - ((SortItemContext)_localctx).nullOrder = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FIRST || _la==LAST) ) { - ((SortItemContext)_localctx).nullOrder = (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 FromStatementContext extends ParserRuleContext { - public FromClauseContext fromClause() { - return getRuleContext(FromClauseContext.class,0); - } - public List fromStatementBody() { - return getRuleContexts(FromStatementBodyContext.class); - } - public FromStatementBodyContext fromStatementBody(int i) { - return getRuleContext(FromStatementBodyContext.class,i); - } - public FromStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fromStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromStatement(this); - } - } - - public final FromStatementContext fromStatement() throws RecognitionException { - FromStatementContext _localctx = new FromStatementContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_fromStatement); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1633); - fromClause(); - setState(1635); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(1634); - fromStatementBody(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(1637); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,187,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class FromStatementBodyContext extends ParserRuleContext { - public TransformClauseContext transformClause() { - return getRuleContext(TransformClauseContext.class,0); - } - public QueryOrganizationContext queryOrganization() { - return getRuleContext(QueryOrganizationContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public SelectClauseContext selectClause() { - return getRuleContext(SelectClauseContext.class,0); - } - public List lateralView() { - return getRuleContexts(LateralViewContext.class); - } - public LateralViewContext lateralView(int i) { - return getRuleContext(LateralViewContext.class,i); - } - public AggregationClauseContext aggregationClause() { - return getRuleContext(AggregationClauseContext.class,0); - } - public HavingClauseContext havingClause() { - return getRuleContext(HavingClauseContext.class,0); - } - public WindowClauseContext windowClause() { - return getRuleContext(WindowClauseContext.class,0); - } - public FromStatementBodyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fromStatementBody; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromStatementBody(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromStatementBody(this); - } - } - - public final FromStatementBodyContext fromStatementBody() throws RecognitionException { - FromStatementBodyContext _localctx = new FromStatementBodyContext(_ctx, getState()); - enterRule(_localctx, 88, RULE_fromStatementBody); - try { - int _alt; - setState(1666); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1639); - transformClause(); - setState(1641); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,188,_ctx) ) { - case 1: - { - setState(1640); - whereClause(); - } - break; - } - setState(1643); - queryOrganization(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1645); - selectClause(); - setState(1649); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,189,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1646); - lateralView(); - } - } - } - setState(1651); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,189,_ctx); - } - setState(1653); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,190,_ctx) ) { - case 1: - { - setState(1652); - whereClause(); - } - break; - } - setState(1656); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) { - case 1: - { - setState(1655); - aggregationClause(); - } - break; - } - setState(1659); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,192,_ctx) ) { - case 1: - { - setState(1658); - havingClause(); - } - break; - } - setState(1662); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,193,_ctx) ) { - case 1: - { - setState(1661); - windowClause(); - } - break; - } - setState(1664); - queryOrganization(); - } - break; - } - } - 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 QuerySpecificationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_querySpecification; } - - public QuerySpecificationContext() { } - public void copyFrom(QuerySpecificationContext ctx) { - super.copyFrom(ctx); - } - } - public static class RegularQuerySpecificationContext extends QuerySpecificationContext { - public SelectClauseContext selectClause() { - return getRuleContext(SelectClauseContext.class,0); - } - public FromClauseContext fromClause() { - return getRuleContext(FromClauseContext.class,0); - } - public List lateralView() { - return getRuleContexts(LateralViewContext.class); - } - public LateralViewContext lateralView(int i) { - return getRuleContext(LateralViewContext.class,i); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public AggregationClauseContext aggregationClause() { - return getRuleContext(AggregationClauseContext.class,0); - } - public HavingClauseContext havingClause() { - return getRuleContext(HavingClauseContext.class,0); - } - public WindowClauseContext windowClause() { - return getRuleContext(WindowClauseContext.class,0); - } - public RegularQuerySpecificationContext(QuerySpecificationContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRegularQuerySpecification(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRegularQuerySpecification(this); - } - } - public static class TransformQuerySpecificationContext extends QuerySpecificationContext { - public TransformClauseContext transformClause() { - return getRuleContext(TransformClauseContext.class,0); - } - public FromClauseContext fromClause() { - return getRuleContext(FromClauseContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public TransformQuerySpecificationContext(QuerySpecificationContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformQuerySpecification(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformQuerySpecification(this); - } - } - - public final QuerySpecificationContext querySpecification() throws RecognitionException { - QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState()); - enterRule(_localctx, 90, RULE_querySpecification); - try { - int _alt; - setState(1697); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,203,_ctx) ) { - case 1: - _localctx = new TransformQuerySpecificationContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1668); - transformClause(); - setState(1670); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) { - case 1: - { - setState(1669); - fromClause(); - } - break; - } - setState(1673); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) { - case 1: - { - setState(1672); - whereClause(); - } - break; - } - } - break; - case 2: - _localctx = new RegularQuerySpecificationContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1675); - selectClause(); - setState(1677); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) { - case 1: - { - setState(1676); - fromClause(); - } - break; - } - setState(1682); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,198,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1679); - lateralView(); - } - } - } - setState(1684); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,198,_ctx); - } - setState(1686); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) { - case 1: - { - setState(1685); - whereClause(); - } - break; - } - setState(1689); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) { - case 1: - { - setState(1688); - aggregationClause(); - } - break; - } - setState(1692); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) { - case 1: - { - setState(1691); - havingClause(); - } - break; - } - setState(1695); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) { - case 1: - { - setState(1694); - windowClause(); - } - break; - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TransformClauseContext extends ParserRuleContext { - public Token kind; - public RowFormatContext inRowFormat; - public Token recordWriter; - public Token script; - public RowFormatContext outRowFormat; - public Token recordReader; - public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } - public List STRING() { return getTokens(SqlBaseParser.STRING); } - public TerminalNode STRING(int i) { - return getToken(SqlBaseParser.STRING, i); - } - public TerminalNode SELECT() { return getToken(SqlBaseParser.SELECT, 0); } - public NamedExpressionSeqContext namedExpressionSeq() { - return getRuleContext(NamedExpressionSeqContext.class,0); - } - public TerminalNode TRANSFORM() { return getToken(SqlBaseParser.TRANSFORM, 0); } - public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } - public TerminalNode REDUCE() { return getToken(SqlBaseParser.REDUCE, 0); } - public TerminalNode RECORDWRITER() { return getToken(SqlBaseParser.RECORDWRITER, 0); } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public TerminalNode RECORDREADER() { return getToken(SqlBaseParser.RECORDREADER, 0); } - public List rowFormat() { - return getRuleContexts(RowFormatContext.class); - } - public RowFormatContext rowFormat(int i) { - return getRuleContext(RowFormatContext.class,i); - } - public IdentifierSeqContext identifierSeq() { - return getRuleContext(IdentifierSeqContext.class,0); - } - public ColTypeListContext colTypeList() { - return getRuleContext(ColTypeListContext.class,0); - } - public TransformClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_transformClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformClause(this); - } - } - - public final TransformClauseContext transformClause() throws RecognitionException { - TransformClauseContext _localctx = new TransformClauseContext(_ctx, getState()); - enterRule(_localctx, 92, RULE_transformClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1709); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SELECT: - { - setState(1699); - match(SELECT); - setState(1700); - ((TransformClauseContext)_localctx).kind = match(TRANSFORM); - setState(1701); - match(T__1); - setState(1702); - namedExpressionSeq(); - setState(1703); - match(T__2); - } - break; - case MAP: - { - setState(1705); - ((TransformClauseContext)_localctx).kind = match(MAP); - setState(1706); - namedExpressionSeq(); - } - break; - case REDUCE: - { - setState(1707); - ((TransformClauseContext)_localctx).kind = match(REDUCE); - setState(1708); - namedExpressionSeq(); - } - break; - default: - throw new NoViableAltException(this); - } - setState(1712); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ROW) { - { - setState(1711); - ((TransformClauseContext)_localctx).inRowFormat = rowFormat(); - } - } - - setState(1716); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==RECORDWRITER) { - { - setState(1714); - match(RECORDWRITER); - setState(1715); - ((TransformClauseContext)_localctx).recordWriter = match(STRING); - } - } - - setState(1718); - match(USING); - setState(1719); - ((TransformClauseContext)_localctx).script = match(STRING); - setState(1732); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,209,_ctx) ) { - case 1: - { - setState(1720); - match(AS); - setState(1730); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) { - case 1: - { - setState(1721); - identifierSeq(); - } - break; - case 2: - { - setState(1722); - colTypeList(); - } - break; - case 3: - { - { - setState(1723); - match(T__1); - setState(1726); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) { - case 1: - { - setState(1724); - identifierSeq(); - } - break; - case 2: - { - setState(1725); - colTypeList(); - } - break; - } - setState(1728); - match(T__2); - } - } - break; - } - } - break; - } - setState(1735); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,210,_ctx) ) { - case 1: - { - setState(1734); - ((TransformClauseContext)_localctx).outRowFormat = rowFormat(); - } - break; - } - setState(1739); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,211,_ctx) ) { - case 1: - { - setState(1737); - match(RECORDREADER); - setState(1738); - ((TransformClauseContext)_localctx).recordReader = match(STRING); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SelectClauseContext extends ParserRuleContext { - public HintContext hint; - public List hints = new ArrayList(); - public TerminalNode SELECT() { return getToken(SqlBaseParser.SELECT, 0); } - public NamedExpressionSeqContext namedExpressionSeq() { - return getRuleContext(NamedExpressionSeqContext.class,0); - } - public SetQuantifierContext setQuantifier() { - return getRuleContext(SetQuantifierContext.class,0); - } - public List hint() { - return getRuleContexts(HintContext.class); - } - public HintContext hint(int i) { - return getRuleContext(HintContext.class,i); - } - public SelectClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_selectClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSelectClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSelectClause(this); - } - } - - public final SelectClauseContext selectClause() throws RecognitionException { - SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState()); - enterRule(_localctx, 94, RULE_selectClause); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1741); - match(SELECT); - setState(1745); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,212,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1742); - ((SelectClauseContext)_localctx).hint = hint(); - ((SelectClauseContext)_localctx).hints.add(((SelectClauseContext)_localctx).hint); - } - } - } - setState(1747); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,212,_ctx); - } - setState(1749); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,213,_ctx) ) { - case 1: - { - setState(1748); - setQuantifier(); - } - break; - } - setState(1751); - namedExpressionSeq(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SetClauseContext extends ParserRuleContext { - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public AssignmentListContext assignmentList() { - return getRuleContext(AssignmentListContext.class,0); - } - public SetClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_setClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSetClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetClause(this); - } - } - - public final SetClauseContext setClause() throws RecognitionException { - SetClauseContext _localctx = new SetClauseContext(_ctx, getState()); - enterRule(_localctx, 96, RULE_setClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(1753); - match(SET); - setState(1754); - assignmentList(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class MatchedClauseContext extends ParserRuleContext { - public BooleanExpressionContext matchedCond; - public TerminalNode WHEN() { return getToken(SqlBaseParser.WHEN, 0); } - public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } - public TerminalNode THEN() { return getToken(SqlBaseParser.THEN, 0); } - public MatchedActionContext matchedAction() { - return getRuleContext(MatchedActionContext.class,0); - } - public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public MatchedClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_matchedClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMatchedClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMatchedClause(this); - } - } - - public final MatchedClauseContext matchedClause() throws RecognitionException { - MatchedClauseContext _localctx = new MatchedClauseContext(_ctx, getState()); - enterRule(_localctx, 98, RULE_matchedClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1756); - match(WHEN); - setState(1757); - match(MATCHED); - setState(1760); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AND) { - { - setState(1758); - match(AND); - setState(1759); - ((MatchedClauseContext)_localctx).matchedCond = booleanExpression(0); - } - } - - setState(1762); - match(THEN); - setState(1763); - matchedAction(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NotMatchedClauseContext extends ParserRuleContext { - public BooleanExpressionContext notMatchedCond; - public TerminalNode WHEN() { return getToken(SqlBaseParser.WHEN, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } - public TerminalNode THEN() { return getToken(SqlBaseParser.THEN, 0); } - public NotMatchedActionContext notMatchedAction() { - return getRuleContext(NotMatchedActionContext.class,0); - } - public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public NotMatchedClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_notMatchedClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNotMatchedClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNotMatchedClause(this); - } - } - - public final NotMatchedClauseContext notMatchedClause() throws RecognitionException { - NotMatchedClauseContext _localctx = new NotMatchedClauseContext(_ctx, getState()); - enterRule(_localctx, 100, RULE_notMatchedClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1765); - match(WHEN); - setState(1766); - match(NOT); - setState(1767); - match(MATCHED); - setState(1770); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AND) { - { - setState(1768); - match(AND); - setState(1769); - ((NotMatchedClauseContext)_localctx).notMatchedCond = booleanExpression(0); - } - } - - setState(1772); - match(THEN); - setState(1773); - notMatchedAction(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class MatchedActionContext extends ParserRuleContext { - public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } - public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } - public AssignmentListContext assignmentList() { - return getRuleContext(AssignmentListContext.class,0); - } - public MatchedActionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_matchedAction; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMatchedAction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMatchedAction(this); - } - } - - public final MatchedActionContext matchedAction() throws RecognitionException { - MatchedActionContext _localctx = new MatchedActionContext(_ctx, getState()); - enterRule(_localctx, 102, RULE_matchedAction); - try { - setState(1782); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1775); - match(DELETE); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1776); - match(UPDATE); - setState(1777); - match(SET); - setState(1778); - match(ASTERISK); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(1779); - match(UPDATE); - setState(1780); - match(SET); - setState(1781); - assignmentList(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NotMatchedActionContext extends ParserRuleContext { - public MultipartIdentifierListContext columns; - public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } - public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } - public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public MultipartIdentifierListContext multipartIdentifierList() { - return getRuleContext(MultipartIdentifierListContext.class,0); - } - public NotMatchedActionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_notMatchedAction; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNotMatchedAction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNotMatchedAction(this); - } - } - - public final NotMatchedActionContext notMatchedAction() throws RecognitionException { - NotMatchedActionContext _localctx = new NotMatchedActionContext(_ctx, getState()); - enterRule(_localctx, 104, RULE_notMatchedAction); - int _la; - try { - setState(1802); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,218,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1784); - match(INSERT); - setState(1785); - match(ASTERISK); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1786); - match(INSERT); - setState(1787); - match(T__1); - setState(1788); - ((NotMatchedActionContext)_localctx).columns = multipartIdentifierList(); - setState(1789); - match(T__2); - setState(1790); - match(VALUES); - setState(1791); - match(T__1); - setState(1792); - expression(); - setState(1797); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1793); - match(T__3); - setState(1794); - expression(); - } - } - setState(1799); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1800); - 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 AssignmentListContext extends ParserRuleContext { - public List assignment() { - return getRuleContexts(AssignmentContext.class); - } - public AssignmentContext assignment(int i) { - return getRuleContext(AssignmentContext.class,i); - } - public AssignmentListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_assignmentList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAssignmentList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAssignmentList(this); - } - } - - public final AssignmentListContext assignmentList() throws RecognitionException { - AssignmentListContext _localctx = new AssignmentListContext(_ctx, getState()); - enterRule(_localctx, 106, RULE_assignmentList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1804); - assignment(); - setState(1809); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1805); - match(T__3); - setState(1806); - assignment(); - } - } - setState(1811); - _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 AssignmentContext extends ParserRuleContext { - public MultipartIdentifierContext key; - public ExpressionContext value; - public TerminalNode EQ() { return getToken(SqlBaseParser.EQ, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public AssignmentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_assignment; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAssignment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAssignment(this); - } - } - - public final AssignmentContext assignment() throws RecognitionException { - AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); - enterRule(_localctx, 108, RULE_assignment); - try { - enterOuterAlt(_localctx, 1); - { - setState(1812); - ((AssignmentContext)_localctx).key = multipartIdentifier(); - setState(1813); - match(EQ); - setState(1814); - ((AssignmentContext)_localctx).value = expression(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class WhereClauseContext extends ParserRuleContext { - public TerminalNode WHERE() { return getToken(SqlBaseParser.WHERE, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public WhereClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_whereClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWhereClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWhereClause(this); - } - } - - public final WhereClauseContext whereClause() throws RecognitionException { - WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState()); - enterRule(_localctx, 110, RULE_whereClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(1816); - match(WHERE); - setState(1817); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class HavingClauseContext extends ParserRuleContext { - public TerminalNode HAVING() { return getToken(SqlBaseParser.HAVING, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public HavingClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_havingClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHavingClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHavingClause(this); - } - } - - public final HavingClauseContext havingClause() throws RecognitionException { - HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState()); - enterRule(_localctx, 112, RULE_havingClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(1819); - match(HAVING); - setState(1820); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class HintContext extends ParserRuleContext { - public HintStatementContext hintStatement; - public List hintStatements = new ArrayList(); - public List hintStatement() { - return getRuleContexts(HintStatementContext.class); - } - public HintStatementContext hintStatement(int i) { - return getRuleContext(HintStatementContext.class,i); - } - public HintContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_hint; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHint(this); - } - } - - public final HintContext hint() throws RecognitionException { - HintContext _localctx = new HintContext(_ctx, getState()); - enterRule(_localctx, 114, RULE_hint); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1822); - match(T__5); - setState(1823); - ((HintContext)_localctx).hintStatement = hintStatement(); - ((HintContext)_localctx).hintStatements.add(((HintContext)_localctx).hintStatement); - setState(1830); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,221,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1825); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,220,_ctx) ) { - case 1: - { - setState(1824); - match(T__3); - } - break; - } - setState(1827); - ((HintContext)_localctx).hintStatement = hintStatement(); - ((HintContext)_localctx).hintStatements.add(((HintContext)_localctx).hintStatement); - } - } - } - setState(1832); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,221,_ctx); - } - setState(1833); - match(T__6); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class HintStatementContext extends ParserRuleContext { - public IdentifierContext hintName; - public PrimaryExpressionContext primaryExpression; - public List parameters = new ArrayList(); - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List primaryExpression() { - return getRuleContexts(PrimaryExpressionContext.class); - } - public PrimaryExpressionContext primaryExpression(int i) { - return getRuleContext(PrimaryExpressionContext.class,i); - } - public HintStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_hintStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterHintStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitHintStatement(this); - } - } - - public final HintStatementContext hintStatement() throws RecognitionException { - HintStatementContext _localctx = new HintStatementContext(_ctx, getState()); - enterRule(_localctx, 116, RULE_hintStatement); - int _la; - try { - setState(1848); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1835); - ((HintStatementContext)_localctx).hintName = identifier(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1836); - ((HintStatementContext)_localctx).hintName = identifier(); - setState(1837); - match(T__1); - setState(1838); - ((HintStatementContext)_localctx).primaryExpression = primaryExpression(0); - ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).primaryExpression); - setState(1843); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1839); - match(T__3); - setState(1840); - ((HintStatementContext)_localctx).primaryExpression = primaryExpression(0); - ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).primaryExpression); - } - } - setState(1845); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1846); - 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 FromClauseContext extends ParserRuleContext { - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public List relation() { - return getRuleContexts(RelationContext.class); - } - public RelationContext relation(int i) { - return getRuleContext(RelationContext.class,i); - } - public List lateralView() { - return getRuleContexts(LateralViewContext.class); - } - public LateralViewContext lateralView(int i) { - return getRuleContext(LateralViewContext.class,i); - } - public PivotClauseContext pivotClause() { - return getRuleContext(PivotClauseContext.class,0); - } - public FromClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fromClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFromClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFromClause(this); - } - } - - public final FromClauseContext fromClause() throws RecognitionException { - FromClauseContext _localctx = new FromClauseContext(_ctx, getState()); - enterRule(_localctx, 118, RULE_fromClause); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1850); - match(FROM); - setState(1851); - relation(); - setState(1856); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,224,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1852); - match(T__3); - setState(1853); - relation(); - } - } - } - setState(1858); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,224,_ctx); - } - setState(1862); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,225,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1859); - lateralView(); - } - } - } - setState(1864); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,225,_ctx); - } - setState(1866); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,226,_ctx) ) { - case 1: - { - setState(1865); - pivotClause(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class AggregationClauseContext extends ParserRuleContext { - public ExpressionContext expression; - public List groupingExpressions = new ArrayList(); - public Token kind; - public TerminalNode GROUP() { return getToken(SqlBaseParser.GROUP, 0); } - public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } - public TerminalNode SETS() { return getToken(SqlBaseParser.SETS, 0); } - public List groupingSet() { - return getRuleContexts(GroupingSetContext.class); - } - public GroupingSetContext groupingSet(int i) { - return getRuleContext(GroupingSetContext.class,i); - } - public TerminalNode ROLLUP() { return getToken(SqlBaseParser.ROLLUP, 0); } - public TerminalNode CUBE() { return getToken(SqlBaseParser.CUBE, 0); } - public TerminalNode GROUPING() { return getToken(SqlBaseParser.GROUPING, 0); } - public AggregationClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_aggregationClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAggregationClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAggregationClause(this); - } - } - - public final AggregationClauseContext aggregationClause() throws RecognitionException { - AggregationClauseContext _localctx = new AggregationClauseContext(_ctx, getState()); - enterRule(_localctx, 120, RULE_aggregationClause); - int _la; - try { - int _alt; - setState(1912); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,231,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1868); - match(GROUP); - setState(1869); - match(BY); - setState(1870); - ((AggregationClauseContext)_localctx).expression = expression(); - ((AggregationClauseContext)_localctx).groupingExpressions.add(((AggregationClauseContext)_localctx).expression); - setState(1875); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,227,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1871); - match(T__3); - setState(1872); - ((AggregationClauseContext)_localctx).expression = expression(); - ((AggregationClauseContext)_localctx).groupingExpressions.add(((AggregationClauseContext)_localctx).expression); - } - } - } - setState(1877); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,227,_ctx); - } - setState(1895); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,229,_ctx) ) { - case 1: - { - setState(1878); - match(WITH); - setState(1879); - ((AggregationClauseContext)_localctx).kind = match(ROLLUP); - } - break; - case 2: - { - setState(1880); - match(WITH); - setState(1881); - ((AggregationClauseContext)_localctx).kind = match(CUBE); - } - break; - case 3: - { - setState(1882); - ((AggregationClauseContext)_localctx).kind = match(GROUPING); - setState(1883); - match(SETS); - setState(1884); - match(T__1); - setState(1885); - groupingSet(); - setState(1890); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1886); - match(T__3); - setState(1887); - groupingSet(); - } - } - setState(1892); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1893); - match(T__2); - } - break; - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1897); - match(GROUP); - setState(1898); - match(BY); - setState(1899); - ((AggregationClauseContext)_localctx).kind = match(GROUPING); - setState(1900); - match(SETS); - setState(1901); - match(T__1); - setState(1902); - groupingSet(); - setState(1907); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1903); - match(T__3); - setState(1904); - groupingSet(); - } - } - setState(1909); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1910); - 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 SqlBaseListener ) ((SqlBaseListener)listener).enterGroupingSet(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitGroupingSet(this); - } - } - - public final GroupingSetContext groupingSet() throws RecognitionException { - GroupingSetContext _localctx = new GroupingSetContext(_ctx, getState()); - enterRule(_localctx, 122, RULE_groupingSet); - int _la; - try { - setState(1927); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1914); - match(T__1); - setState(1923); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) { - case 1: - { - setState(1915); - expression(); - setState(1920); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1916); - match(T__3); - setState(1917); - expression(); - } - } - setState(1922); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - } - setState(1925); - match(T__2); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1926); - expression(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class PivotClauseContext extends ParserRuleContext { - public NamedExpressionSeqContext aggregates; - public PivotValueContext pivotValue; - public List pivotValues = new ArrayList(); - public TerminalNode PIVOT() { return getToken(SqlBaseParser.PIVOT, 0); } - public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } - public PivotColumnContext pivotColumn() { - return getRuleContext(PivotColumnContext.class,0); - } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public NamedExpressionSeqContext namedExpressionSeq() { - return getRuleContext(NamedExpressionSeqContext.class,0); - } - public List pivotValue() { - return getRuleContexts(PivotValueContext.class); - } - public PivotValueContext pivotValue(int i) { - return getRuleContext(PivotValueContext.class,i); - } - public PivotClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_pivotClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPivotClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPivotClause(this); - } - } - - public final PivotClauseContext pivotClause() throws RecognitionException { - PivotClauseContext _localctx = new PivotClauseContext(_ctx, getState()); - enterRule(_localctx, 124, RULE_pivotClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(1929); - match(PIVOT); - setState(1930); - match(T__1); - setState(1931); - ((PivotClauseContext)_localctx).aggregates = namedExpressionSeq(); - setState(1932); - match(FOR); - setState(1933); - pivotColumn(); - setState(1934); - match(IN); - setState(1935); - match(T__1); - setState(1936); - ((PivotClauseContext)_localctx).pivotValue = pivotValue(); - ((PivotClauseContext)_localctx).pivotValues.add(((PivotClauseContext)_localctx).pivotValue); - setState(1941); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1937); - match(T__3); - setState(1938); - ((PivotClauseContext)_localctx).pivotValue = pivotValue(); - ((PivotClauseContext)_localctx).pivotValues.add(((PivotClauseContext)_localctx).pivotValue); - } - } - setState(1943); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1944); - match(T__2); - setState(1945); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class PivotColumnContext extends ParserRuleContext { - public IdentifierContext identifier; - public List identifiers = new ArrayList(); - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public PivotColumnContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_pivotColumn; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPivotColumn(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPivotColumn(this); - } - } - - public final PivotColumnContext pivotColumn() throws RecognitionException { - PivotColumnContext _localctx = new PivotColumnContext(_ctx, getState()); - enterRule(_localctx, 126, RULE_pivotColumn); - int _la; - try { - setState(1959); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,237,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(1947); - ((PivotColumnContext)_localctx).identifier = identifier(); - ((PivotColumnContext)_localctx).identifiers.add(((PivotColumnContext)_localctx).identifier); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(1948); - match(T__1); - setState(1949); - ((PivotColumnContext)_localctx).identifier = identifier(); - ((PivotColumnContext)_localctx).identifiers.add(((PivotColumnContext)_localctx).identifier); - setState(1954); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1950); - match(T__3); - setState(1951); - ((PivotColumnContext)_localctx).identifier = identifier(); - ((PivotColumnContext)_localctx).identifiers.add(((PivotColumnContext)_localctx).identifier); - } - } - setState(1956); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1957); - 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 PivotValueContext extends ParserRuleContext { - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public PivotValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_pivotValue; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPivotValue(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPivotValue(this); - } - } - - public final PivotValueContext pivotValue() throws RecognitionException { - PivotValueContext _localctx = new PivotValueContext(_ctx, getState()); - enterRule(_localctx, 128, RULE_pivotValue); - try { - enterOuterAlt(_localctx, 1); - { - setState(1961); - expression(); - setState(1966); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) { - case 1: - { - setState(1963); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,238,_ctx) ) { - case 1: - { - setState(1962); - match(AS); - } - break; - } - setState(1965); - identifier(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class LateralViewContext extends ParserRuleContext { - public IdentifierContext tblName; - public IdentifierContext identifier; - public List colName = new ArrayList(); - public TerminalNode LATERAL() { return getToken(SqlBaseParser.LATERAL, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 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 TerminalNode OUTER() { return getToken(SqlBaseParser.OUTER, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public LateralViewContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lateralView; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLateralView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLateralView(this); - } - } - - public final LateralViewContext lateralView() throws RecognitionException { - LateralViewContext _localctx = new LateralViewContext(_ctx, getState()); - enterRule(_localctx, 130, RULE_lateralView); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(1968); - match(LATERAL); - setState(1969); - match(VIEW); - setState(1971); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,240,_ctx) ) { - case 1: - { - setState(1970); - match(OUTER); - } - break; - } - setState(1973); - qualifiedName(); - setState(1974); - match(T__1); - setState(1983); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,242,_ctx) ) { - case 1: - { - setState(1975); - expression(); - setState(1980); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(1976); - match(T__3); - setState(1977); - expression(); - } - } - setState(1982); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - } - setState(1985); - match(T__2); - setState(1986); - ((LateralViewContext)_localctx).tblName = identifier(); - setState(1998); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,245,_ctx) ) { - case 1: - { - setState(1988); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,243,_ctx) ) { - case 1: - { - setState(1987); - match(AS); - } - break; - } - setState(1990); - ((LateralViewContext)_localctx).identifier = identifier(); - ((LateralViewContext)_localctx).colName.add(((LateralViewContext)_localctx).identifier); - setState(1995); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,244,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(1991); - match(T__3); - setState(1992); - ((LateralViewContext)_localctx).identifier = identifier(); - ((LateralViewContext)_localctx).colName.add(((LateralViewContext)_localctx).identifier); - } - } - } - setState(1997); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,244,_ctx); - } - } - break; - } - } - } - 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(SqlBaseParser.DISTINCT, 0); } - public TerminalNode ALL() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterSetQuantifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSetQuantifier(this); - } - } - - public final SetQuantifierContext setQuantifier() throws RecognitionException { - SetQuantifierContext _localctx = new SetQuantifierContext(_ctx, getState()); - enterRule(_localctx, 132, RULE_setQuantifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2000); - _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 RelationContext extends ParserRuleContext { - public RelationPrimaryContext relationPrimary() { - return getRuleContext(RelationPrimaryContext.class,0); - } - public List joinRelation() { - return getRuleContexts(JoinRelationContext.class); - } - public JoinRelationContext joinRelation(int i) { - return getRuleContext(JoinRelationContext.class,i); - } - public RelationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_relation; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRelation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRelation(this); - } - } - - public final RelationContext relation() throws RecognitionException { - RelationContext _localctx = new RelationContext(_ctx, getState()); - enterRule(_localctx, 134, RULE_relation); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2002); - relationPrimary(); - setState(2006); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,246,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2003); - joinRelation(); - } - } - } - setState(2008); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,246,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class JoinRelationContext extends ParserRuleContext { - public RelationPrimaryContext right; - public TerminalNode JOIN() { return getToken(SqlBaseParser.JOIN, 0); } - public RelationPrimaryContext relationPrimary() { - return getRuleContext(RelationPrimaryContext.class,0); - } - public JoinTypeContext joinType() { - return getRuleContext(JoinTypeContext.class,0); - } - public JoinCriteriaContext joinCriteria() { - return getRuleContext(JoinCriteriaContext.class,0); - } - public TerminalNode NATURAL() { return getToken(SqlBaseParser.NATURAL, 0); } - public JoinRelationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_joinRelation; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterJoinRelation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitJoinRelation(this); - } - } - - public final JoinRelationContext joinRelation() throws RecognitionException { - JoinRelationContext _localctx = new JoinRelationContext(_ctx, getState()); - enterRule(_localctx, 136, RULE_joinRelation); - try { - setState(2020); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ANTI: - case CROSS: - case FULL: - case INNER: - case JOIN: - case LEFT: - case RIGHT: - case SEMI: - enterOuterAlt(_localctx, 1); - { - { - setState(2009); - joinType(); - } - setState(2010); - match(JOIN); - setState(2011); - ((JoinRelationContext)_localctx).right = relationPrimary(); - setState(2013); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) { - case 1: - { - setState(2012); - joinCriteria(); - } - break; - } - } - break; - case NATURAL: - enterOuterAlt(_localctx, 2); - { - setState(2015); - match(NATURAL); - setState(2016); - joinType(); - setState(2017); - match(JOIN); - setState(2018); - ((JoinRelationContext)_localctx).right = relationPrimary(); - } - 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 JoinTypeContext extends ParserRuleContext { - public TerminalNode INNER() { return getToken(SqlBaseParser.INNER, 0); } - public TerminalNode CROSS() { return getToken(SqlBaseParser.CROSS, 0); } - public TerminalNode LEFT() { return getToken(SqlBaseParser.LEFT, 0); } - public TerminalNode OUTER() { return getToken(SqlBaseParser.OUTER, 0); } - public TerminalNode SEMI() { return getToken(SqlBaseParser.SEMI, 0); } - public TerminalNode RIGHT() { return getToken(SqlBaseParser.RIGHT, 0); } - public TerminalNode FULL() { return getToken(SqlBaseParser.FULL, 0); } - public TerminalNode ANTI() { return getToken(SqlBaseParser.ANTI, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterJoinType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitJoinType(this); - } - } - - public final JoinTypeContext joinType() throws RecognitionException { - JoinTypeContext _localctx = new JoinTypeContext(_ctx, getState()); - enterRule(_localctx, 138, RULE_joinType); - int _la; - try { - setState(2046); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,255,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2023); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INNER) { - { - setState(2022); - match(INNER); - } - } - - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2025); - match(CROSS); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(2026); - match(LEFT); - setState(2028); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OUTER) { - { - setState(2027); - match(OUTER); - } - } - - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(2031); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT) { - { - setState(2030); - match(LEFT); - } - } - - setState(2033); - match(SEMI); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(2034); - match(RIGHT); - setState(2036); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OUTER) { - { - setState(2035); - match(OUTER); - } - } - - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(2038); - match(FULL); - setState(2040); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OUTER) { - { - setState(2039); - match(OUTER); - } - } - - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(2043); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT) { - { - setState(2042); - match(LEFT); - } - } - - setState(2045); - match(ANTI); - } - break; - } - } - 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(SqlBaseParser.ON, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - 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 SqlBaseListener ) ((SqlBaseListener)listener).enterJoinCriteria(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitJoinCriteria(this); - } - } - - public final JoinCriteriaContext joinCriteria() throws RecognitionException { - JoinCriteriaContext _localctx = new JoinCriteriaContext(_ctx, getState()); - enterRule(_localctx, 140, RULE_joinCriteria); - try { - setState(2052); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ON: - enterOuterAlt(_localctx, 1); - { - setState(2048); - match(ON); - setState(2049); - booleanExpression(0); - } - break; - case USING: - enterOuterAlt(_localctx, 2); - { - setState(2050); - match(USING); - setState(2051); - identifierList(); - } - 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 SampleContext extends ParserRuleContext { - public TerminalNode TABLESAMPLE() { return getToken(SqlBaseParser.TABLESAMPLE, 0); } - public SampleMethodContext sampleMethod() { - return getRuleContext(SampleMethodContext.class,0); - } - public SampleContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sample; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSample(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSample(this); - } - } - - public final SampleContext sample() throws RecognitionException { - SampleContext _localctx = new SampleContext(_ctx, getState()); - enterRule(_localctx, 142, RULE_sample); - try { - enterOuterAlt(_localctx, 1); - { - setState(2054); - match(TABLESAMPLE); - setState(2055); - match(T__1); - setState(2057); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,257,_ctx) ) { - case 1: - { - setState(2056); - sampleMethod(); - } - break; - } - setState(2059); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class SampleMethodContext extends ParserRuleContext { - public SampleMethodContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sampleMethod; } - - public SampleMethodContext() { } - public void copyFrom(SampleMethodContext ctx) { - super.copyFrom(ctx); - } - } - public static class SampleByRowsContext extends SampleMethodContext { - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } - public SampleByRowsContext(SampleMethodContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByRows(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByRows(this); - } - } - public static class SampleByPercentileContext extends SampleMethodContext { - public Token negativeSign; - public Token percentage; - public TerminalNode PERCENTLIT() { return getToken(SqlBaseParser.PERCENTLIT, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } - public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public SampleByPercentileContext(SampleMethodContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByPercentile(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByPercentile(this); - } - } - public static class SampleByBucketContext extends SampleMethodContext { - public Token sampleType; - public Token numerator; - public Token denominator; - public TerminalNode OUT() { return getToken(SqlBaseParser.OUT, 0); } - public TerminalNode OF() { return getToken(SqlBaseParser.OF, 0); } - public TerminalNode BUCKET() { return getToken(SqlBaseParser.BUCKET, 0); } - public List INTEGER_VALUE() { return getTokens(SqlBaseParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(SqlBaseParser.INTEGER_VALUE, i); - } - public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public SampleByBucketContext(SampleMethodContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByBucket(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByBucket(this); - } - } - public static class SampleByBytesContext extends SampleMethodContext { - public ExpressionContext bytes; - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public SampleByBytesContext(SampleMethodContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSampleByBytes(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSampleByBytes(this); - } - } - - public final SampleMethodContext sampleMethod() throws RecognitionException { - SampleMethodContext _localctx = new SampleMethodContext(_ctx, getState()); - enterRule(_localctx, 144, RULE_sampleMethod); - int _la; - try { - setState(2085); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,261,_ctx) ) { - case 1: - _localctx = new SampleByPercentileContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2062); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2061); - ((SampleByPercentileContext)_localctx).negativeSign = match(MINUS); - } - } - - setState(2064); - ((SampleByPercentileContext)_localctx).percentage = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==INTEGER_VALUE || _la==DECIMAL_VALUE) ) { - ((SampleByPercentileContext)_localctx).percentage = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2065); - match(PERCENTLIT); - } - break; - case 2: - _localctx = new SampleByRowsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2066); - expression(); - setState(2067); - match(ROWS); - } - break; - case 3: - _localctx = new SampleByBucketContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2069); - ((SampleByBucketContext)_localctx).sampleType = match(BUCKET); - setState(2070); - ((SampleByBucketContext)_localctx).numerator = match(INTEGER_VALUE); - setState(2071); - match(OUT); - setState(2072); - match(OF); - setState(2073); - ((SampleByBucketContext)_localctx).denominator = match(INTEGER_VALUE); - setState(2082); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(2074); - match(ON); - setState(2080); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,259,_ctx) ) { - case 1: - { - setState(2075); - identifier(); - } - break; - case 2: - { - setState(2076); - qualifiedName(); - setState(2077); - match(T__1); - setState(2078); - match(T__2); - } - break; - } - } - } - - } - break; - case 4: - _localctx = new SampleByBytesContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2084); - ((SampleByBytesContext)_localctx).bytes = expression(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class IdentifierListContext extends ParserRuleContext { - public IdentifierSeqContext identifierSeq() { - return getRuleContext(IdentifierSeqContext.class,0); - } - public IdentifierListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierList(this); - } - } - - public final IdentifierListContext identifierList() throws RecognitionException { - IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState()); - enterRule(_localctx, 146, RULE_identifierList); - try { - enterOuterAlt(_localctx, 1); - { - setState(2087); - match(T__1); - setState(2088); - identifierSeq(); - setState(2089); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class IdentifierSeqContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext errorCapturingIdentifier; - public List ident = new ArrayList(); - public List errorCapturingIdentifier() { - return getRuleContexts(ErrorCapturingIdentifierContext.class); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { - return getRuleContext(ErrorCapturingIdentifierContext.class,i); - } - public IdentifierSeqContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierSeq; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierSeq(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierSeq(this); - } - } - - public final IdentifierSeqContext identifierSeq() throws RecognitionException { - IdentifierSeqContext _localctx = new IdentifierSeqContext(_ctx, getState()); - enterRule(_localctx, 148, RULE_identifierSeq); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2091); - ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); - setState(2096); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,262,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2092); - match(T__3); - setState(2093); - ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); - } - } - } - setState(2098); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,262,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class OrderedIdentifierListContext extends ParserRuleContext { - public List orderedIdentifier() { - return getRuleContexts(OrderedIdentifierContext.class); - } - public OrderedIdentifierContext orderedIdentifier(int i) { - return getRuleContext(OrderedIdentifierContext.class,i); - } - public OrderedIdentifierListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_orderedIdentifierList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterOrderedIdentifierList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitOrderedIdentifierList(this); - } - } - - public final OrderedIdentifierListContext orderedIdentifierList() throws RecognitionException { - OrderedIdentifierListContext _localctx = new OrderedIdentifierListContext(_ctx, getState()); - enterRule(_localctx, 150, RULE_orderedIdentifierList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2099); - match(T__1); - setState(2100); - orderedIdentifier(); - setState(2105); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2101); - match(T__3); - setState(2102); - orderedIdentifier(); - } - } - setState(2107); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2108); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class OrderedIdentifierContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext ident; - public Token ordering; - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public OrderedIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_orderedIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterOrderedIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitOrderedIdentifier(this); - } - } - - public final OrderedIdentifierContext orderedIdentifier() throws RecognitionException { - OrderedIdentifierContext _localctx = new OrderedIdentifierContext(_ctx, getState()); - enterRule(_localctx, 152, RULE_orderedIdentifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2110); - ((OrderedIdentifierContext)_localctx).ident = errorCapturingIdentifier(); - setState(2112); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ASC || _la==DESC) { - { - setState(2111); - ((OrderedIdentifierContext)_localctx).ordering = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==ASC || _la==DESC) ) { - ((OrderedIdentifierContext)_localctx).ordering = (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 IdentifierCommentListContext extends ParserRuleContext { - public List identifierComment() { - return getRuleContexts(IdentifierCommentContext.class); - } - public IdentifierCommentContext identifierComment(int i) { - return getRuleContext(IdentifierCommentContext.class,i); - } - public IdentifierCommentListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierCommentList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierCommentList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierCommentList(this); - } - } - - public final IdentifierCommentListContext identifierCommentList() throws RecognitionException { - IdentifierCommentListContext _localctx = new IdentifierCommentListContext(_ctx, getState()); - enterRule(_localctx, 154, RULE_identifierCommentList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2114); - match(T__1); - setState(2115); - identifierComment(); - setState(2120); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2116); - match(T__3); - setState(2117); - identifierComment(); - } - } - setState(2122); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2123); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class IdentifierCommentContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public IdentifierCommentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierComment; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifierComment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifierComment(this); - } - } - - public final IdentifierCommentContext identifierComment() throws RecognitionException { - IdentifierCommentContext _localctx = new IdentifierCommentContext(_ctx, getState()); - enterRule(_localctx, 156, RULE_identifierComment); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2125); - identifier(); - setState(2127); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(2126); - commentSpec(); - } - } - - } - } - 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 TableValuedFunctionContext extends RelationPrimaryContext { - public FunctionTableContext functionTable() { - return getRuleContext(FunctionTableContext.class,0); - } - public TableValuedFunctionContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableValuedFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableValuedFunction(this); - } - } - public static class InlineTableDefault2Context extends RelationPrimaryContext { - public InlineTableContext inlineTable() { - return getRuleContext(InlineTableContext.class,0); - } - public InlineTableDefault2Context(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInlineTableDefault2(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInlineTableDefault2(this); - } - } - public static class AliasedRelationContext extends RelationPrimaryContext { - public RelationContext relation() { - return getRuleContext(RelationContext.class,0); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public SampleContext sample() { - return getRuleContext(SampleContext.class,0); - } - public AliasedRelationContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAliasedRelation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAliasedRelation(this); - } - } - public static class AliasedQueryContext extends RelationPrimaryContext { - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public SampleContext sample() { - return getRuleContext(SampleContext.class,0); - } - public AliasedQueryContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAliasedQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAliasedQuery(this); - } - } - public static class TableNameContext extends RelationPrimaryContext { - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public SampleContext sample() { - return getRuleContext(SampleContext.class,0); - } - public TableNameContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableName(this); - } - } - - public final RelationPrimaryContext relationPrimary() throws RecognitionException { - RelationPrimaryContext _localctx = new RelationPrimaryContext(_ctx, getState()); - enterRule(_localctx, 158, RULE_relationPrimary); - try { - setState(2153); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,270,_ctx) ) { - case 1: - _localctx = new TableNameContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2129); - multipartIdentifier(); - setState(2131); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,267,_ctx) ) { - case 1: - { - setState(2130); - sample(); - } - break; - } - setState(2133); - tableAlias(); - } - break; - case 2: - _localctx = new AliasedQueryContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2135); - match(T__1); - setState(2136); - query(); - setState(2137); - match(T__2); - setState(2139); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,268,_ctx) ) { - case 1: - { - setState(2138); - sample(); - } - break; - } - setState(2141); - tableAlias(); - } - break; - case 3: - _localctx = new AliasedRelationContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2143); - match(T__1); - setState(2144); - relation(); - setState(2145); - match(T__2); - setState(2147); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,269,_ctx) ) { - case 1: - { - setState(2146); - sample(); - } - break; - } - setState(2149); - tableAlias(); - } - break; - case 4: - _localctx = new InlineTableDefault2Context(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2151); - inlineTable(); - } - break; - case 5: - _localctx = new TableValuedFunctionContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2152); - functionTable(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class InlineTableContext extends ParserRuleContext { - public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public InlineTableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_inlineTable; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterInlineTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInlineTable(this); - } - } - - public final InlineTableContext inlineTable() throws RecognitionException { - InlineTableContext _localctx = new InlineTableContext(_ctx, getState()); - enterRule(_localctx, 160, RULE_inlineTable); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2155); - match(VALUES); - setState(2156); - expression(); - setState(2161); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,271,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2157); - match(T__3); - setState(2158); - expression(); - } - } - } - setState(2163); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,271,_ctx); - } - setState(2164); - tableAlias(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class FunctionTableContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext funcName; - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public FunctionTableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionTable; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionTable(this); - } - } - - public final FunctionTableContext functionTable() throws RecognitionException { - FunctionTableContext _localctx = new FunctionTableContext(_ctx, getState()); - enterRule(_localctx, 162, RULE_functionTable); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2166); - ((FunctionTableContext)_localctx).funcName = errorCapturingIdentifier(); - setState(2167); - match(T__1); - setState(2176); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,273,_ctx) ) { - case 1: - { - setState(2168); - expression(); - setState(2173); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2169); - match(T__3); - setState(2170); - expression(); - } - } - setState(2175); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - } - setState(2178); - match(T__2); - setState(2179); - tableAlias(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TableAliasContext extends ParserRuleContext { - public StrictIdentifierContext strictIdentifier() { - return getRuleContext(StrictIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TableAliasContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tableAlias; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableAlias(this); - } - } - - public final TableAliasContext tableAlias() throws RecognitionException { - TableAliasContext _localctx = new TableAliasContext(_ctx, getState()); - enterRule(_localctx, 164, RULE_tableAlias); - try { - enterOuterAlt(_localctx, 1); - { - setState(2188); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) { - case 1: - { - setState(2182); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,274,_ctx) ) { - case 1: - { - setState(2181); - match(AS); - } - break; - } - setState(2184); - strictIdentifier(); - setState(2186); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,275,_ctx) ) { - case 1: - { - setState(2185); - identifierList(); - } - break; - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class RowFormatContext extends ParserRuleContext { - public RowFormatContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_rowFormat; } - - public RowFormatContext() { } - public void copyFrom(RowFormatContext ctx) { - super.copyFrom(ctx); - } - } - public static class RowFormatSerdeContext extends RowFormatContext { - public Token name; - public TablePropertyListContext props; - public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } - public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } - public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } - public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } - public TablePropertyListContext tablePropertyList() { - return getRuleContext(TablePropertyListContext.class,0); - } - public RowFormatSerdeContext(RowFormatContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRowFormatSerde(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRowFormatSerde(this); - } - } - public static class RowFormatDelimitedContext extends RowFormatContext { - public Token fieldsTerminatedBy; - public Token escapedBy; - public Token collectionItemsTerminatedBy; - public Token keysTerminatedBy; - public Token linesSeparatedBy; - public Token nullDefinedAs; - public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } - public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } - public TerminalNode DELIMITED() { return getToken(SqlBaseParser.DELIMITED, 0); } - public TerminalNode FIELDS() { return getToken(SqlBaseParser.FIELDS, 0); } - public List TERMINATED() { return getTokens(SqlBaseParser.TERMINATED); } - public TerminalNode TERMINATED(int i) { - return getToken(SqlBaseParser.TERMINATED, i); - } - public List BY() { return getTokens(SqlBaseParser.BY); } - public TerminalNode BY(int i) { - return getToken(SqlBaseParser.BY, i); - } - public TerminalNode COLLECTION() { return getToken(SqlBaseParser.COLLECTION, 0); } - public TerminalNode ITEMS() { return getToken(SqlBaseParser.ITEMS, 0); } - public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } - public TerminalNode KEYS() { return getToken(SqlBaseParser.KEYS, 0); } - public TerminalNode LINES() { return getToken(SqlBaseParser.LINES, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public TerminalNode DEFINED() { return getToken(SqlBaseParser.DEFINED, 0); } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public List STRING() { return getTokens(SqlBaseParser.STRING); } - public TerminalNode STRING(int i) { - return getToken(SqlBaseParser.STRING, i); - } - public TerminalNode ESCAPED() { return getToken(SqlBaseParser.ESCAPED, 0); } - public RowFormatDelimitedContext(RowFormatContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRowFormatDelimited(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRowFormatDelimited(this); - } - } - - public final RowFormatContext rowFormat() throws RecognitionException { - RowFormatContext _localctx = new RowFormatContext(_ctx, getState()); - enterRule(_localctx, 166, RULE_rowFormat); - try { - setState(2239); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,284,_ctx) ) { - case 1: - _localctx = new RowFormatSerdeContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2190); - match(ROW); - setState(2191); - match(FORMAT); - setState(2192); - match(SERDE); - setState(2193); - ((RowFormatSerdeContext)_localctx).name = match(STRING); - setState(2197); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,277,_ctx) ) { - case 1: - { - setState(2194); - match(WITH); - setState(2195); - match(SERDEPROPERTIES); - setState(2196); - ((RowFormatSerdeContext)_localctx).props = tablePropertyList(); - } - break; - } - } - break; - case 2: - _localctx = new RowFormatDelimitedContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2199); - match(ROW); - setState(2200); - match(FORMAT); - setState(2201); - match(DELIMITED); - setState(2211); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,279,_ctx) ) { - case 1: - { - setState(2202); - match(FIELDS); - setState(2203); - match(TERMINATED); - setState(2204); - match(BY); - setState(2205); - ((RowFormatDelimitedContext)_localctx).fieldsTerminatedBy = match(STRING); - setState(2209); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,278,_ctx) ) { - case 1: - { - setState(2206); - match(ESCAPED); - setState(2207); - match(BY); - setState(2208); - ((RowFormatDelimitedContext)_localctx).escapedBy = match(STRING); - } - break; - } - } - break; - } - setState(2218); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,280,_ctx) ) { - case 1: - { - setState(2213); - match(COLLECTION); - setState(2214); - match(ITEMS); - setState(2215); - match(TERMINATED); - setState(2216); - match(BY); - setState(2217); - ((RowFormatDelimitedContext)_localctx).collectionItemsTerminatedBy = match(STRING); - } - break; - } - setState(2225); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,281,_ctx) ) { - case 1: - { - setState(2220); - match(MAP); - setState(2221); - match(KEYS); - setState(2222); - match(TERMINATED); - setState(2223); - match(BY); - setState(2224); - ((RowFormatDelimitedContext)_localctx).keysTerminatedBy = match(STRING); - } - break; - } - setState(2231); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,282,_ctx) ) { - case 1: - { - setState(2227); - match(LINES); - setState(2228); - match(TERMINATED); - setState(2229); - match(BY); - setState(2230); - ((RowFormatDelimitedContext)_localctx).linesSeparatedBy = match(STRING); - } - break; - } - setState(2237); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,283,_ctx) ) { - case 1: - { - setState(2233); - match(NULL); - setState(2234); - match(DEFINED); - setState(2235); - match(AS); - setState(2236); - ((RowFormatDelimitedContext)_localctx).nullDefinedAs = match(STRING); - } - break; - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class MultipartIdentifierListContext extends ParserRuleContext { - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public MultipartIdentifierListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_multipartIdentifierList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultipartIdentifierList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultipartIdentifierList(this); - } - } - - public final MultipartIdentifierListContext multipartIdentifierList() throws RecognitionException { - MultipartIdentifierListContext _localctx = new MultipartIdentifierListContext(_ctx, getState()); - enterRule(_localctx, 168, RULE_multipartIdentifierList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2241); - multipartIdentifier(); - setState(2246); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2242); - match(T__3); - setState(2243); - multipartIdentifier(); - } - } - setState(2248); - _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 MultipartIdentifierContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext errorCapturingIdentifier; - public List parts = new ArrayList(); - public List errorCapturingIdentifier() { - return getRuleContexts(ErrorCapturingIdentifierContext.class); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { - return getRuleContext(ErrorCapturingIdentifierContext.class,i); - } - public MultipartIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_multipartIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultipartIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultipartIdentifier(this); - } - } - - public final MultipartIdentifierContext multipartIdentifier() throws RecognitionException { - MultipartIdentifierContext _localctx = new MultipartIdentifierContext(_ctx, getState()); - enterRule(_localctx, 170, RULE_multipartIdentifier); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2249); - ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); - setState(2254); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,286,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2250); - match(T__4); - setState(2251); - ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); - } - } - } - setState(2256); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,286,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TableIdentifierContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext db; - public ErrorCapturingIdentifierContext table; - public List errorCapturingIdentifier() { - return getRuleContexts(ErrorCapturingIdentifierContext.class); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { - return getRuleContext(ErrorCapturingIdentifierContext.class,i); - } - public TableIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tableIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTableIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTableIdentifier(this); - } - } - - public final TableIdentifierContext tableIdentifier() throws RecognitionException { - TableIdentifierContext _localctx = new TableIdentifierContext(_ctx, getState()); - enterRule(_localctx, 172, RULE_tableIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(2260); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,287,_ctx) ) { - case 1: - { - setState(2257); - ((TableIdentifierContext)_localctx).db = errorCapturingIdentifier(); - setState(2258); - match(T__4); - } - break; - } - setState(2262); - ((TableIdentifierContext)_localctx).table = errorCapturingIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class FunctionIdentifierContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext db; - public ErrorCapturingIdentifierContext function; - public List errorCapturingIdentifier() { - return getRuleContexts(ErrorCapturingIdentifierContext.class); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { - return getRuleContext(ErrorCapturingIdentifierContext.class,i); - } - public FunctionIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionIdentifier(this); - } - } - - public final FunctionIdentifierContext functionIdentifier() throws RecognitionException { - FunctionIdentifierContext _localctx = new FunctionIdentifierContext(_ctx, getState()); - enterRule(_localctx, 174, RULE_functionIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(2267); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,288,_ctx) ) { - case 1: - { - setState(2264); - ((FunctionIdentifierContext)_localctx).db = errorCapturingIdentifier(); - setState(2265); - match(T__4); - } - break; - } - setState(2269); - ((FunctionIdentifierContext)_localctx).function = errorCapturingIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NamedExpressionContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext name; - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public NamedExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_namedExpression; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamedExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedExpression(this); - } - } - - public final NamedExpressionContext namedExpression() throws RecognitionException { - NamedExpressionContext _localctx = new NamedExpressionContext(_ctx, getState()); - enterRule(_localctx, 176, RULE_namedExpression); - try { - enterOuterAlt(_localctx, 1); - { - setState(2271); - expression(); - setState(2279); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,291,_ctx) ) { - case 1: - { - setState(2273); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,289,_ctx) ) { - case 1: - { - setState(2272); - match(AS); - } - break; - } - setState(2277); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,290,_ctx) ) { - case 1: - { - setState(2275); - ((NamedExpressionContext)_localctx).name = errorCapturingIdentifier(); - } - break; - case 2: - { - setState(2276); - identifierList(); - } - break; - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NamedExpressionSeqContext extends ParserRuleContext { - public List namedExpression() { - return getRuleContexts(NamedExpressionContext.class); - } - public NamedExpressionContext namedExpression(int i) { - return getRuleContext(NamedExpressionContext.class,i); - } - public NamedExpressionSeqContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_namedExpressionSeq; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamedExpressionSeq(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedExpressionSeq(this); - } - } - - public final NamedExpressionSeqContext namedExpressionSeq() throws RecognitionException { - NamedExpressionSeqContext _localctx = new NamedExpressionSeqContext(_ctx, getState()); - enterRule(_localctx, 178, RULE_namedExpressionSeq); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2281); - namedExpression(); - setState(2286); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,292,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2282); - match(T__3); - setState(2283); - namedExpression(); - } - } - } - setState(2288); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,292,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TransformListContext extends ParserRuleContext { - public TransformContext transform; - public List transforms = new ArrayList(); - public List transform() { - return getRuleContexts(TransformContext.class); - } - public TransformContext transform(int i) { - return getRuleContext(TransformContext.class,i); - } - public TransformListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_transformList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformList(this); - } - } - - public final TransformListContext transformList() throws RecognitionException { - TransformListContext _localctx = new TransformListContext(_ctx, getState()); - enterRule(_localctx, 180, RULE_transformList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2289); - match(T__1); - setState(2290); - ((TransformListContext)_localctx).transform = transform(); - ((TransformListContext)_localctx).transforms.add(((TransformListContext)_localctx).transform); - setState(2295); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2291); - match(T__3); - setState(2292); - ((TransformListContext)_localctx).transform = transform(); - ((TransformListContext)_localctx).transforms.add(((TransformListContext)_localctx).transform); - } - } - setState(2297); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2298); - match(T__2); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class TransformContext extends ParserRuleContext { - public TransformContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_transform; } - - public TransformContext() { } - public void copyFrom(TransformContext ctx) { - super.copyFrom(ctx); - } - } - public static class IdentityTransformContext extends TransformContext { - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public IdentityTransformContext(TransformContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentityTransform(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentityTransform(this); - } - } - public static class ApplyTransformContext extends TransformContext { - public IdentifierContext transformName; - public TransformArgumentContext transformArgument; - public List argument = new ArrayList(); - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List transformArgument() { - return getRuleContexts(TransformArgumentContext.class); - } - public TransformArgumentContext transformArgument(int i) { - return getRuleContext(TransformArgumentContext.class,i); - } - public ApplyTransformContext(TransformContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterApplyTransform(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitApplyTransform(this); - } - } - - public final TransformContext transform() throws RecognitionException { - TransformContext _localctx = new TransformContext(_ctx, getState()); - enterRule(_localctx, 182, RULE_transform); - int _la; - try { - setState(2313); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) { - case 1: - _localctx = new IdentityTransformContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2300); - qualifiedName(); - } - break; - case 2: - _localctx = new ApplyTransformContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2301); - ((ApplyTransformContext)_localctx).transformName = identifier(); - setState(2302); - match(T__1); - setState(2303); - ((ApplyTransformContext)_localctx).transformArgument = transformArgument(); - ((ApplyTransformContext)_localctx).argument.add(((ApplyTransformContext)_localctx).transformArgument); - setState(2308); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2304); - match(T__3); - setState(2305); - ((ApplyTransformContext)_localctx).transformArgument = transformArgument(); - ((ApplyTransformContext)_localctx).argument.add(((ApplyTransformContext)_localctx).transformArgument); - } - } - setState(2310); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2311); - 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 TransformArgumentContext extends ParserRuleContext { - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public TransformArgumentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_transformArgument; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTransformArgument(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTransformArgument(this); - } - } - - public final TransformArgumentContext transformArgument() throws RecognitionException { - TransformArgumentContext _localctx = new TransformArgumentContext(_ctx, getState()); - enterRule(_localctx, 184, RULE_transformArgument); - try { - setState(2317); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,296,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2315); - qualifiedName(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2316); - constant(); - } - 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 SqlBaseListener ) ((SqlBaseListener)listener).enterExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExpression(this); - } - } - - public final ExpressionContext expression() throws RecognitionException { - ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); - enterRule(_localctx, 186, RULE_expression); - try { - enterOuterAlt(_localctx, 1); - { - setState(2319); - 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(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterLogicalNot(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLogicalNot(this); - } - } - public static class PredicatedContext extends BooleanExpressionContext { - 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 SqlBaseListener ) ((SqlBaseListener)listener).enterPredicated(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPredicated(this); - } - } - public static class ExistsContext extends BooleanExpressionContext { - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public ExistsContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExists(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExists(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(SqlBaseParser.AND, 0); } - public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } - public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLogicalBinary(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLogicalBinary(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 = 188; - enterRecursionRule(_localctx, 188, RULE_booleanExpression, _p); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2333); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) { - case 1: - { - _localctx = new LogicalNotContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(2322); - match(NOT); - setState(2323); - booleanExpression(5); - } - break; - case 2: - { - _localctx = new ExistsContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2324); - match(EXISTS); - setState(2325); - match(T__1); - setState(2326); - query(); - setState(2327); - match(T__2); - } - break; - case 3: - { - _localctx = new PredicatedContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2329); - valueExpression(0); - setState(2331); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,297,_ctx) ) { - case 1: - { - setState(2330); - predicate(); - } - break; - } - } - break; - } - _ctx.stop = _input.LT(-1); - setState(2343); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,300,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(2341); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,299,_ctx) ) { - case 1: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - ((LogicalBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); - setState(2335); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(2336); - ((LogicalBinaryContext)_localctx).operator = match(AND); - setState(2337); - ((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(2338); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2339); - ((LogicalBinaryContext)_localctx).operator = match(OR); - setState(2340); - ((LogicalBinaryContext)_localctx).right = booleanExpression(2); - } - break; - } - } - } - setState(2345); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,300,_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 Token kind; - public ValueExpressionContext lower; - public ValueExpressionContext upper; - public ValueExpressionContext pattern; - public Token quantifier; - public Token escapeChar; - public ValueExpressionContext right; - public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } - public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public TerminalNode ANY() { return getToken(SqlBaseParser.ANY, 0); } - public TerminalNode SOME() { return getToken(SqlBaseParser.SOME, 0); } - public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } - public TerminalNode ESCAPE() { return getToken(SqlBaseParser.ESCAPE, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } - public TerminalNode FALSE() { return getToken(SqlBaseParser.FALSE, 0); } - public TerminalNode UNKNOWN() { return getToken(SqlBaseParser.UNKNOWN, 0); } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public TerminalNode DISTINCT() { return getToken(SqlBaseParser.DISTINCT, 0); } - public PredicateContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_predicate; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPredicate(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPredicate(this); - } - } - - public final PredicateContext predicate() throws RecognitionException { - PredicateContext _localctx = new PredicateContext(_ctx, getState()); - enterRule(_localctx, 190, RULE_predicate); - int _la; - try { - setState(2428); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,314,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2347); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2346); - match(NOT); - } - } - - setState(2349); - ((PredicateContext)_localctx).kind = match(BETWEEN); - setState(2350); - ((PredicateContext)_localctx).lower = valueExpression(0); - setState(2351); - match(AND); - setState(2352); - ((PredicateContext)_localctx).upper = valueExpression(0); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2355); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2354); - match(NOT); - } - } - - setState(2357); - ((PredicateContext)_localctx).kind = match(IN); - setState(2358); - match(T__1); - setState(2359); - expression(); - setState(2364); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2360); - match(T__3); - setState(2361); - expression(); - } - } - setState(2366); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2367); - match(T__2); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(2370); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2369); - match(NOT); - } - } - - setState(2372); - ((PredicateContext)_localctx).kind = match(IN); - setState(2373); - match(T__1); - setState(2374); - query(); - setState(2375); - match(T__2); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(2378); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2377); - match(NOT); - } - } - - setState(2380); - ((PredicateContext)_localctx).kind = match(RLIKE); - setState(2381); - ((PredicateContext)_localctx).pattern = valueExpression(0); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(2383); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2382); - match(NOT); - } - } - - setState(2385); - ((PredicateContext)_localctx).kind = match(LIKE); - setState(2386); - ((PredicateContext)_localctx).quantifier = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==ALL || _la==ANY || _la==SOME) ) { - ((PredicateContext)_localctx).quantifier = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2400); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,308,_ctx) ) { - case 1: - { - setState(2387); - match(T__1); - setState(2388); - match(T__2); - } - break; - case 2: - { - setState(2389); - match(T__1); - setState(2390); - expression(); - setState(2395); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2391); - match(T__3); - setState(2392); - expression(); - } - } - setState(2397); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2398); - match(T__2); - } - break; - } - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(2403); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2402); - match(NOT); - } - } - - setState(2405); - ((PredicateContext)_localctx).kind = match(LIKE); - setState(2406); - ((PredicateContext)_localctx).pattern = valueExpression(0); - setState(2409); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) { - case 1: - { - setState(2407); - match(ESCAPE); - setState(2408); - ((PredicateContext)_localctx).escapeChar = match(STRING); - } - break; - } - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(2411); - match(IS); - setState(2413); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2412); - match(NOT); - } - } - - setState(2415); - ((PredicateContext)_localctx).kind = match(NULL); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(2416); - match(IS); - setState(2418); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2417); - match(NOT); - } - } - - setState(2420); - ((PredicateContext)_localctx).kind = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FALSE || _la==TRUE || _la==UNKNOWN) ) { - ((PredicateContext)_localctx).kind = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(2421); - match(IS); - setState(2423); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2422); - match(NOT); - } - } - - setState(2425); - ((PredicateContext)_localctx).kind = match(DISTINCT); - setState(2426); - match(FROM); - setState(2427); - ((PredicateContext)_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 SqlBaseListener ) ((SqlBaseListener)listener).enterValueExpressionDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitValueExpressionDefault(this); - } - } - public static class ComparisonContext extends ValueExpressionContext { - public ValueExpressionContext left; - public ValueExpressionContext right; - public ComparisonOperatorContext comparisonOperator() { - return getRuleContext(ComparisonOperatorContext.class,0); - } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public ComparisonContext(ValueExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComparison(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComparison(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(SqlBaseParser.ASTERISK, 0); } - public TerminalNode SLASH() { return getToken(SqlBaseParser.SLASH, 0); } - public TerminalNode PERCENT() { return getToken(SqlBaseParser.PERCENT, 0); } - public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } - public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public TerminalNode CONCAT_PIPE() { return getToken(SqlBaseParser.CONCAT_PIPE, 0); } - public TerminalNode AMPERSAND() { return getToken(SqlBaseParser.AMPERSAND, 0); } - public TerminalNode HAT() { return getToken(SqlBaseParser.HAT, 0); } - public TerminalNode PIPE() { return getToken(SqlBaseParser.PIPE, 0); } - public ArithmeticBinaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterArithmeticBinary(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitArithmeticBinary(this); - } - } - public static class ArithmeticUnaryContext extends ValueExpressionContext { - public Token operator; - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } - public TerminalNode TILDE() { return getToken(SqlBaseParser.TILDE, 0); } - public ArithmeticUnaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterArithmeticUnary(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitArithmeticUnary(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 = 192; - enterRecursionRule(_localctx, 192, RULE_valueExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2434); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,315,_ctx) ) { - case 1: - { - _localctx = new ValueExpressionDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(2431); - primaryExpression(0); - } - break; - case 2: - { - _localctx = new ArithmeticUnaryContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2432); - ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(((((_la - 272)) & ~0x3f) == 0 && ((1L << (_la - 272)) & ((1L << (PLUS - 272)) | (1L << (MINUS - 272)) | (1L << (TILDE - 272)))) != 0)) ) { - ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2433); - valueExpression(7); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(2457); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,317,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(2455); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,316,_ctx) ) { - case 1: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(2436); - if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(2437); - ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(((((_la - 274)) & ~0x3f) == 0 && ((1L << (_la - 274)) & ((1L << (ASTERISK - 274)) | (1L << (SLASH - 274)) | (1L << (PERCENT - 274)) | (1L << (DIV - 274)))) != 0)) ) { - ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2438); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(7); - } - break; - case 2: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(2439); - if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(2440); - ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(((((_la - 272)) & ~0x3f) == 0 && ((1L << (_la - 272)) & ((1L << (PLUS - 272)) | (1L << (MINUS - 272)) | (1L << (CONCAT_PIPE - 272)))) != 0)) ) { - ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2441); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(6); - } - break; - case 3: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(2442); - if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(2443); - ((ArithmeticBinaryContext)_localctx).operator = match(AMPERSAND); - setState(2444); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(5); - } - break; - case 4: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(2445); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(2446); - ((ArithmeticBinaryContext)_localctx).operator = match(HAT); - setState(2447); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(4); - } - break; - case 5: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(2448); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(2449); - ((ArithmeticBinaryContext)_localctx).operator = match(PIPE); - setState(2450); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(3); - } - break; - case 6: - { - _localctx = new ComparisonContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ComparisonContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(2451); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2452); - comparisonOperator(); - setState(2453); - ((ComparisonContext)_localctx).right = valueExpression(2); - } - break; - } - } - } - setState(2459); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,317,_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 StructContext extends PrimaryExpressionContext { - public NamedExpressionContext namedExpression; - public List argument = new ArrayList(); - public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } - public List namedExpression() { - return getRuleContexts(NamedExpressionContext.class); - } - public NamedExpressionContext namedExpression(int i) { - return getRuleContext(NamedExpressionContext.class,i); - } - public StructContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStruct(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStruct(this); - } - } - 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 SqlBaseListener ) ((SqlBaseListener)listener).enterDereference(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDereference(this); - } - } - public static class SimpleCaseContext extends PrimaryExpressionContext { - public ExpressionContext value; - public ExpressionContext elseExpression; - public TerminalNode CASE() { return getToken(SqlBaseParser.CASE, 0); } - public TerminalNode END() { return getToken(SqlBaseParser.END, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List whenClause() { - return getRuleContexts(WhenClauseContext.class); - } - public WhenClauseContext whenClause(int i) { - return getRuleContext(WhenClauseContext.class,i); - } - public TerminalNode ELSE() { return getToken(SqlBaseParser.ELSE, 0); } - public SimpleCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSimpleCase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSimpleCase(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 SqlBaseListener ) ((SqlBaseListener)listener).enterColumnReference(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColumnReference(this); - } - } - public static class RowConstructorContext extends PrimaryExpressionContext { - public List namedExpression() { - return getRuleContexts(NamedExpressionContext.class); - } - public NamedExpressionContext namedExpression(int i) { - return getRuleContext(NamedExpressionContext.class,i); - } - public RowConstructorContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRowConstructor(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRowConstructor(this); - } - } - public static class LastContext extends PrimaryExpressionContext { - public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } - public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } - public LastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLast(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLast(this); - } - } - public static class StarContext extends PrimaryExpressionContext { - public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public StarContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStar(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStar(this); - } - } - public static class OverlayContext extends PrimaryExpressionContext { - public ValueExpressionContext input; - public ValueExpressionContext replace; - public ValueExpressionContext position; - public ValueExpressionContext length; - public TerminalNode OVERLAY() { return getToken(SqlBaseParser.OVERLAY, 0); } - public TerminalNode PLACING() { return getToken(SqlBaseParser.PLACING, 0); } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } - public OverlayContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterOverlay(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitOverlay(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 SqlBaseListener ) ((SqlBaseListener)listener).enterSubscript(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubscript(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 SqlBaseListener ) ((SqlBaseListener)listener).enterSubqueryExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubqueryExpression(this); - } - } - public static class SubstringContext extends PrimaryExpressionContext { - public ValueExpressionContext str; - public ValueExpressionContext pos; - public ValueExpressionContext len; - public TerminalNode SUBSTR() { return getToken(SqlBaseParser.SUBSTR, 0); } - public TerminalNode SUBSTRING() { return getToken(SqlBaseParser.SUBSTRING, 0); } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } - public SubstringContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSubstring(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSubstring(this); - } - } - public static class CurrentDatetimeContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode CURRENT_DATE() { return getToken(SqlBaseParser.CURRENT_DATE, 0); } - public TerminalNode CURRENT_TIMESTAMP() { return getToken(SqlBaseParser.CURRENT_TIMESTAMP, 0); } - public CurrentDatetimeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCurrentDatetime(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCurrentDatetime(this); - } - } - public static class CastContext extends PrimaryExpressionContext { - public TerminalNode CAST() { return getToken(SqlBaseParser.CAST, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public CastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterCast(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitCast(this); - } - } - public static class ConstantDefaultContext extends PrimaryExpressionContext { - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterConstantDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitConstantDefault(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 SqlBaseListener ) ((SqlBaseListener)listener).enterLambda(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLambda(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 SqlBaseListener ) ((SqlBaseListener)listener).enterParenthesizedExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitParenthesizedExpression(this); - } - } - public static class ExtractContext extends PrimaryExpressionContext { - public IdentifierContext field; - public ValueExpressionContext source; - public TerminalNode EXTRACT() { return getToken(SqlBaseParser.EXTRACT, 0); } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public ExtractContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExtract(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExtract(this); - } - } - public static class TrimContext extends PrimaryExpressionContext { - public Token trimOption; - public ValueExpressionContext trimStr; - public ValueExpressionContext srcStr; - public TerminalNode TRIM() { return getToken(SqlBaseParser.TRIM, 0); } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public TerminalNode BOTH() { return getToken(SqlBaseParser.BOTH, 0); } - public TerminalNode LEADING() { return getToken(SqlBaseParser.LEADING, 0); } - public TerminalNode TRAILING() { return getToken(SqlBaseParser.TRAILING, 0); } - public TrimContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTrim(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTrim(this); - } - } - public static class FunctionCallContext extends PrimaryExpressionContext { - public ExpressionContext expression; - public List argument = new ArrayList(); - public BooleanExpressionContext where; - public FunctionNameContext functionName() { - return getRuleContext(FunctionNameContext.class,0); - } - public TerminalNode FILTER() { return getToken(SqlBaseParser.FILTER, 0); } - public TerminalNode WHERE() { return getToken(SqlBaseParser.WHERE, 0); } - public TerminalNode OVER() { return getToken(SqlBaseParser.OVER, 0); } - public WindowSpecContext windowSpec() { - return getRuleContext(WindowSpecContext.class,0); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public SetQuantifierContext setQuantifier() { - return getRuleContext(SetQuantifierContext.class,0); - } - public FunctionCallContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionCall(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionCall(this); - } - } - public static class SearchedCaseContext extends PrimaryExpressionContext { - public ExpressionContext elseExpression; - public TerminalNode CASE() { return getToken(SqlBaseParser.CASE, 0); } - public TerminalNode END() { return getToken(SqlBaseParser.END, 0); } - public List whenClause() { - return getRuleContexts(WhenClauseContext.class); - } - public WhenClauseContext whenClause(int i) { - return getRuleContext(WhenClauseContext.class,i); - } - public TerminalNode ELSE() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterSearchedCase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSearchedCase(this); - } - } - public static class PositionContext extends PrimaryExpressionContext { - public ValueExpressionContext substr; - public ValueExpressionContext str; - public TerminalNode POSITION() { return getToken(SqlBaseParser.POSITION, 0); } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public PositionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPosition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPosition(this); - } - } - public static class FirstContext extends PrimaryExpressionContext { - public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } - public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } - public FirstContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFirst(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFirst(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 = 194; - enterRecursionRule(_localctx, 194, RULE_primaryExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2644); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,337,_ctx) ) { - case 1: - { - _localctx = new CurrentDatetimeContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(2461); - ((CurrentDatetimeContext)_localctx).name = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==CURRENT_DATE || _la==CURRENT_TIMESTAMP) ) { - ((CurrentDatetimeContext)_localctx).name = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 2: - { - _localctx = new SearchedCaseContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2462); - match(CASE); - setState(2464); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(2463); - whenClause(); - } - } - setState(2466); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==WHEN ); - setState(2470); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ELSE) { - { - setState(2468); - match(ELSE); - setState(2469); - ((SearchedCaseContext)_localctx).elseExpression = expression(); - } - } - - setState(2472); - match(END); - } - break; - case 3: - { - _localctx = new SimpleCaseContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2474); - match(CASE); - setState(2475); - ((SimpleCaseContext)_localctx).value = expression(); - setState(2477); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(2476); - whenClause(); - } - } - setState(2479); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==WHEN ); - setState(2483); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ELSE) { - { - setState(2481); - match(ELSE); - setState(2482); - ((SimpleCaseContext)_localctx).elseExpression = expression(); - } - } - - setState(2485); - match(END); - } - break; - case 4: - { - _localctx = new CastContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2487); - match(CAST); - setState(2488); - match(T__1); - setState(2489); - expression(); - setState(2490); - match(AS); - setState(2491); - dataType(); - setState(2492); - match(T__2); - } - break; - case 5: - { - _localctx = new StructContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2494); - match(STRUCT); - setState(2495); - match(T__1); - setState(2504); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,323,_ctx) ) { - case 1: - { - setState(2496); - ((StructContext)_localctx).namedExpression = namedExpression(); - ((StructContext)_localctx).argument.add(((StructContext)_localctx).namedExpression); - setState(2501); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2497); - match(T__3); - setState(2498); - ((StructContext)_localctx).namedExpression = namedExpression(); - ((StructContext)_localctx).argument.add(((StructContext)_localctx).namedExpression); - } - } - setState(2503); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - } - setState(2506); - match(T__2); - } - break; - case 6: - { - _localctx = new FirstContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2507); - match(FIRST); - setState(2508); - match(T__1); - setState(2509); - expression(); - setState(2512); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IGNORE) { - { - setState(2510); - match(IGNORE); - setState(2511); - match(NULLS); - } - } - - setState(2514); - match(T__2); - } - break; - case 7: - { - _localctx = new LastContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2516); - match(LAST); - setState(2517); - match(T__1); - setState(2518); - expression(); - setState(2521); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IGNORE) { - { - setState(2519); - match(IGNORE); - setState(2520); - match(NULLS); - } - } - - setState(2523); - match(T__2); - } - break; - case 8: - { - _localctx = new PositionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2525); - match(POSITION); - setState(2526); - match(T__1); - setState(2527); - ((PositionContext)_localctx).substr = valueExpression(0); - setState(2528); - match(IN); - setState(2529); - ((PositionContext)_localctx).str = valueExpression(0); - setState(2530); - match(T__2); - } - break; - case 9: - { - _localctx = new ConstantDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2532); - constant(); - } - break; - case 10: - { - _localctx = new StarContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2533); - match(ASTERISK); - } - break; - case 11: - { - _localctx = new StarContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2534); - qualifiedName(); - setState(2535); - match(T__4); - setState(2536); - match(ASTERISK); - } - break; - case 12: - { - _localctx = new RowConstructorContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2538); - match(T__1); - setState(2539); - namedExpression(); - setState(2542); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(2540); - match(T__3); - setState(2541); - namedExpression(); - } - } - setState(2544); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==T__3 ); - setState(2546); - match(T__2); - } - break; - case 13: - { - _localctx = new SubqueryExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2548); - match(T__1); - setState(2549); - query(); - setState(2550); - match(T__2); - } - break; - case 14: - { - _localctx = new FunctionCallContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2552); - functionName(); - setState(2553); - match(T__1); - setState(2565); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,329,_ctx) ) { - case 1: - { - setState(2555); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) { - case 1: - { - setState(2554); - setQuantifier(); - } - break; - } - setState(2557); - ((FunctionCallContext)_localctx).expression = expression(); - ((FunctionCallContext)_localctx).argument.add(((FunctionCallContext)_localctx).expression); - setState(2562); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2558); - match(T__3); - setState(2559); - ((FunctionCallContext)_localctx).expression = expression(); - ((FunctionCallContext)_localctx).argument.add(((FunctionCallContext)_localctx).expression); - } - } - setState(2564); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - } - setState(2567); - match(T__2); - setState(2574); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,330,_ctx) ) { - case 1: - { - setState(2568); - match(FILTER); - setState(2569); - match(T__1); - setState(2570); - match(WHERE); - setState(2571); - ((FunctionCallContext)_localctx).where = booleanExpression(0); - setState(2572); - match(T__2); - } - break; - } - setState(2578); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,331,_ctx) ) { - case 1: - { - setState(2576); - match(OVER); - setState(2577); - windowSpec(); - } - break; - } - } - break; - case 15: - { - _localctx = new LambdaContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2580); - identifier(); - setState(2581); - match(T__7); - setState(2582); - expression(); - } - break; - case 16: - { - _localctx = new LambdaContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2584); - match(T__1); - setState(2585); - identifier(); - setState(2588); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(2586); - match(T__3); - setState(2587); - identifier(); - } - } - setState(2590); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==T__3 ); - setState(2592); - match(T__2); - setState(2593); - match(T__7); - setState(2594); - expression(); - } - break; - case 17: - { - _localctx = new ColumnReferenceContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2596); - identifier(); - } - break; - case 18: - { - _localctx = new ParenthesizedExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2597); - match(T__1); - setState(2598); - expression(); - setState(2599); - match(T__2); - } - break; - case 19: - { - _localctx = new ExtractContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2601); - match(EXTRACT); - setState(2602); - match(T__1); - setState(2603); - ((ExtractContext)_localctx).field = identifier(); - setState(2604); - match(FROM); - setState(2605); - ((ExtractContext)_localctx).source = valueExpression(0); - setState(2606); - match(T__2); - } - break; - case 20: - { - _localctx = new SubstringContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2608); - _la = _input.LA(1); - if ( !(_la==SUBSTR || _la==SUBSTRING) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2609); - match(T__1); - setState(2610); - ((SubstringContext)_localctx).str = valueExpression(0); - setState(2611); - _la = _input.LA(1); - if ( !(_la==T__3 || _la==FROM) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2612); - ((SubstringContext)_localctx).pos = valueExpression(0); - setState(2615); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__3 || _la==FOR) { - { - setState(2613); - _la = _input.LA(1); - if ( !(_la==T__3 || _la==FOR) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2614); - ((SubstringContext)_localctx).len = valueExpression(0); - } - } - - setState(2617); - match(T__2); - } - break; - case 21: - { - _localctx = new TrimContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2619); - match(TRIM); - setState(2620); - match(T__1); - setState(2622); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,334,_ctx) ) { - case 1: - { - setState(2621); - ((TrimContext)_localctx).trimOption = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==BOTH || _la==LEADING || _la==TRAILING) ) { - ((TrimContext)_localctx).trimOption = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - } - setState(2625); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,335,_ctx) ) { - case 1: - { - setState(2624); - ((TrimContext)_localctx).trimStr = valueExpression(0); - } - break; - } - setState(2627); - match(FROM); - setState(2628); - ((TrimContext)_localctx).srcStr = valueExpression(0); - setState(2629); - match(T__2); - } - break; - case 22: - { - _localctx = new OverlayContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(2631); - match(OVERLAY); - setState(2632); - match(T__1); - setState(2633); - ((OverlayContext)_localctx).input = valueExpression(0); - setState(2634); - match(PLACING); - setState(2635); - ((OverlayContext)_localctx).replace = valueExpression(0); - setState(2636); - match(FROM); - setState(2637); - ((OverlayContext)_localctx).position = valueExpression(0); - setState(2640); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(2638); - match(FOR); - setState(2639); - ((OverlayContext)_localctx).length = valueExpression(0); - } - } - - setState(2642); - match(T__2); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(2656); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,339,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(2654); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,338,_ctx) ) { - case 1: - { - _localctx = new SubscriptContext(new PrimaryExpressionContext(_parentctx, _parentState)); - ((SubscriptContext)_localctx).value = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); - setState(2646); - if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); - setState(2647); - match(T__8); - setState(2648); - ((SubscriptContext)_localctx).index = valueExpression(0); - setState(2649); - match(T__9); - } - break; - case 2: - { - _localctx = new DereferenceContext(new PrimaryExpressionContext(_parentctx, _parentState)); - ((DereferenceContext)_localctx).base = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); - setState(2651); - if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(2652); - match(T__4); - setState(2653); - ((DereferenceContext)_localctx).fieldName = identifier(); - } - break; - } - } - } - setState(2658); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,339,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public static class ConstantContext extends ParserRuleContext { - public ConstantContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constant; } - - public ConstantContext() { } - public void copyFrom(ConstantContext ctx) { - super.copyFrom(ctx); - } - } - public static class NullLiteralContext extends ConstantContext { - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNullLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNullLiteral(this); - } - } - public static class StringLiteralContext extends ConstantContext { - public List STRING() { return getTokens(SqlBaseParser.STRING); } - public TerminalNode STRING(int i) { - return getToken(SqlBaseParser.STRING, i); - } - public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStringLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStringLiteral(this); - } - } - public static class TypeConstructorContext extends ConstantContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public TypeConstructorContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTypeConstructor(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTypeConstructor(this); - } - } - public static class IntervalLiteralContext extends ConstantContext { - public IntervalContext interval() { - return getRuleContext(IntervalContext.class,0); - } - public IntervalLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntervalLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntervalLiteral(this); - } - } - public static class NumericLiteralContext extends ConstantContext { - public NumberContext number() { - return getRuleContext(NumberContext.class,0); - } - public NumericLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNumericLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNumericLiteral(this); - } - } - public static class BooleanLiteralContext extends ConstantContext { - public BooleanValueContext booleanValue() { - return getRuleContext(BooleanValueContext.class,0); - } - public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBooleanLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBooleanLiteral(this); - } - } - - public final ConstantContext constant() throws RecognitionException { - ConstantContext _localctx = new ConstantContext(_ctx, getState()); - enterRule(_localctx, 196, RULE_constant); - try { - int _alt; - setState(2671); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,341,_ctx) ) { - case 1: - _localctx = new NullLiteralContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2659); - match(NULL); - } - break; - case 2: - _localctx = new IntervalLiteralContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2660); - interval(); - } - break; - case 3: - _localctx = new TypeConstructorContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2661); - identifier(); - setState(2662); - match(STRING); - } - break; - case 4: - _localctx = new NumericLiteralContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2664); - number(); - } - break; - case 5: - _localctx = new BooleanLiteralContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2665); - booleanValue(); - } - break; - case 6: - _localctx = new StringLiteralContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(2667); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(2666); - match(STRING); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(2669); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,340,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - 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(SqlBaseParser.EQ, 0); } - public TerminalNode NEQ() { return getToken(SqlBaseParser.NEQ, 0); } - public TerminalNode NEQJ() { return getToken(SqlBaseParser.NEQJ, 0); } - public TerminalNode LT() { return getToken(SqlBaseParser.LT, 0); } - public TerminalNode LTE() { return getToken(SqlBaseParser.LTE, 0); } - public TerminalNode GT() { return getToken(SqlBaseParser.GT, 0); } - public TerminalNode GTE() { return getToken(SqlBaseParser.GTE, 0); } - public TerminalNode NSEQ() { return getToken(SqlBaseParser.NSEQ, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterComparisonOperator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComparisonOperator(this); - } - } - - public final ComparisonOperatorContext comparisonOperator() throws RecognitionException { - ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState()); - enterRule(_localctx, 198, RULE_comparisonOperator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2673); - _la = _input.LA(1); - if ( !(((((_la - 264)) & ~0x3f) == 0 && ((1L << (_la - 264)) & ((1L << (EQ - 264)) | (1L << (NSEQ - 264)) | (1L << (NEQ - 264)) | (1L << (NEQJ - 264)) | (1L << (LT - 264)) | (1L << (LTE - 264)) | (1L << (GT - 264)) | (1L << (GTE - 264)))) != 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 ArithmeticOperatorContext extends ParserRuleContext { - public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public TerminalNode ASTERISK() { return getToken(SqlBaseParser.ASTERISK, 0); } - public TerminalNode SLASH() { return getToken(SqlBaseParser.SLASH, 0); } - public TerminalNode PERCENT() { return getToken(SqlBaseParser.PERCENT, 0); } - public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } - public TerminalNode TILDE() { return getToken(SqlBaseParser.TILDE, 0); } - public TerminalNode AMPERSAND() { return getToken(SqlBaseParser.AMPERSAND, 0); } - public TerminalNode PIPE() { return getToken(SqlBaseParser.PIPE, 0); } - public TerminalNode CONCAT_PIPE() { return getToken(SqlBaseParser.CONCAT_PIPE, 0); } - public TerminalNode HAT() { return getToken(SqlBaseParser.HAT, 0); } - public ArithmeticOperatorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_arithmeticOperator; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterArithmeticOperator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitArithmeticOperator(this); - } - } - - public final ArithmeticOperatorContext arithmeticOperator() throws RecognitionException { - ArithmeticOperatorContext _localctx = new ArithmeticOperatorContext(_ctx, getState()); - enterRule(_localctx, 200, RULE_arithmeticOperator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2675); - _la = _input.LA(1); - if ( !(((((_la - 272)) & ~0x3f) == 0 && ((1L << (_la - 272)) & ((1L << (PLUS - 272)) | (1L << (MINUS - 272)) | (1L << (ASTERISK - 272)) | (1L << (SLASH - 272)) | (1L << (PERCENT - 272)) | (1L << (DIV - 272)) | (1L << (TILDE - 272)) | (1L << (AMPERSAND - 272)) | (1L << (PIPE - 272)) | (1L << (CONCAT_PIPE - 272)) | (1L << (HAT - 272)))) != 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 PredicateOperatorContext extends ParserRuleContext { - public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } - public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public PredicateOperatorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_predicateOperator; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPredicateOperator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPredicateOperator(this); - } - } - - public final PredicateOperatorContext predicateOperator() throws RecognitionException { - PredicateOperatorContext _localctx = new PredicateOperatorContext(_ctx, getState()); - enterRule(_localctx, 202, RULE_predicateOperator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2677); - _la = _input.LA(1); - if ( !(_la==AND || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (IN - 113)) | (1L << (NOT - 113)) | (1L << (OR - 113)))) != 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 BooleanValueContext extends ParserRuleContext { - public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } - public TerminalNode FALSE() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterBooleanValue(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBooleanValue(this); - } - } - - public final BooleanValueContext booleanValue() throws RecognitionException { - BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState()); - enterRule(_localctx, 204, RULE_booleanValue); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2679); - _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 TerminalNode INTERVAL() { return getToken(SqlBaseParser.INTERVAL, 0); } - public ErrorCapturingMultiUnitsIntervalContext errorCapturingMultiUnitsInterval() { - return getRuleContext(ErrorCapturingMultiUnitsIntervalContext.class,0); - } - public ErrorCapturingUnitToUnitIntervalContext errorCapturingUnitToUnitInterval() { - return getRuleContext(ErrorCapturingUnitToUnitIntervalContext.class,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 SqlBaseListener ) ((SqlBaseListener)listener).enterInterval(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitInterval(this); - } - } - - public final IntervalContext interval() throws RecognitionException { - IntervalContext _localctx = new IntervalContext(_ctx, getState()); - enterRule(_localctx, 206, RULE_interval); - try { - enterOuterAlt(_localctx, 1); - { - setState(2681); - match(INTERVAL); - setState(2684); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,342,_ctx) ) { - case 1: - { - setState(2682); - errorCapturingMultiUnitsInterval(); - } - break; - case 2: - { - setState(2683); - errorCapturingUnitToUnitInterval(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ErrorCapturingMultiUnitsIntervalContext extends ParserRuleContext { - public MultiUnitsIntervalContext multiUnitsInterval() { - return getRuleContext(MultiUnitsIntervalContext.class,0); - } - public UnitToUnitIntervalContext unitToUnitInterval() { - return getRuleContext(UnitToUnitIntervalContext.class,0); - } - public ErrorCapturingMultiUnitsIntervalContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_errorCapturingMultiUnitsInterval; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorCapturingMultiUnitsInterval(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorCapturingMultiUnitsInterval(this); - } - } - - public final ErrorCapturingMultiUnitsIntervalContext errorCapturingMultiUnitsInterval() throws RecognitionException { - ErrorCapturingMultiUnitsIntervalContext _localctx = new ErrorCapturingMultiUnitsIntervalContext(_ctx, getState()); - enterRule(_localctx, 208, RULE_errorCapturingMultiUnitsInterval); - try { - enterOuterAlt(_localctx, 1); - { - setState(2686); - multiUnitsInterval(); - setState(2688); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,343,_ctx) ) { - case 1: - { - setState(2687); - unitToUnitInterval(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class MultiUnitsIntervalContext extends ParserRuleContext { - public List intervalValue() { - return getRuleContexts(IntervalValueContext.class); - } - public IntervalValueContext intervalValue(int i) { - return getRuleContext(IntervalValueContext.class,i); - } - public List intervalUnit() { - return getRuleContexts(IntervalUnitContext.class); - } - public IntervalUnitContext intervalUnit(int i) { - return getRuleContext(IntervalUnitContext.class,i); - } - public MultiUnitsIntervalContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_multiUnitsInterval; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterMultiUnitsInterval(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitMultiUnitsInterval(this); - } - } - - public final MultiUnitsIntervalContext multiUnitsInterval() throws RecognitionException { - MultiUnitsIntervalContext _localctx = new MultiUnitsIntervalContext(_ctx, getState()); - enterRule(_localctx, 210, RULE_multiUnitsInterval); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2693); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(2690); - intervalValue(); - setState(2691); - intervalUnit(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(2695); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,344,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ErrorCapturingUnitToUnitIntervalContext extends ParserRuleContext { - public UnitToUnitIntervalContext body; - public MultiUnitsIntervalContext error1; - public UnitToUnitIntervalContext error2; - public List unitToUnitInterval() { - return getRuleContexts(UnitToUnitIntervalContext.class); - } - public UnitToUnitIntervalContext unitToUnitInterval(int i) { - return getRuleContext(UnitToUnitIntervalContext.class,i); - } - public MultiUnitsIntervalContext multiUnitsInterval() { - return getRuleContext(MultiUnitsIntervalContext.class,0); - } - public ErrorCapturingUnitToUnitIntervalContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_errorCapturingUnitToUnitInterval; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorCapturingUnitToUnitInterval(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorCapturingUnitToUnitInterval(this); - } - } - - public final ErrorCapturingUnitToUnitIntervalContext errorCapturingUnitToUnitInterval() throws RecognitionException { - ErrorCapturingUnitToUnitIntervalContext _localctx = new ErrorCapturingUnitToUnitIntervalContext(_ctx, getState()); - enterRule(_localctx, 212, RULE_errorCapturingUnitToUnitInterval); - try { - enterOuterAlt(_localctx, 1); - { - setState(2697); - ((ErrorCapturingUnitToUnitIntervalContext)_localctx).body = unitToUnitInterval(); - setState(2700); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,345,_ctx) ) { - case 1: - { - setState(2698); - ((ErrorCapturingUnitToUnitIntervalContext)_localctx).error1 = multiUnitsInterval(); - } - break; - case 2: - { - setState(2699); - ((ErrorCapturingUnitToUnitIntervalContext)_localctx).error2 = unitToUnitInterval(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class UnitToUnitIntervalContext extends ParserRuleContext { - public IntervalValueContext value; - public IntervalUnitContext from_; - public IntervalUnitContext to; - public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } - public IntervalValueContext intervalValue() { - return getRuleContext(IntervalValueContext.class,0); - } - public List intervalUnit() { - return getRuleContexts(IntervalUnitContext.class); - } - public IntervalUnitContext intervalUnit(int i) { - return getRuleContext(IntervalUnitContext.class,i); - } - public UnitToUnitIntervalContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unitToUnitInterval; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnitToUnitInterval(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnitToUnitInterval(this); - } - } - - public final UnitToUnitIntervalContext unitToUnitInterval() throws RecognitionException { - UnitToUnitIntervalContext _localctx = new UnitToUnitIntervalContext(_ctx, getState()); - enterRule(_localctx, 214, RULE_unitToUnitInterval); - try { - enterOuterAlt(_localctx, 1); - { - setState(2702); - ((UnitToUnitIntervalContext)_localctx).value = intervalValue(); - setState(2703); - ((UnitToUnitIntervalContext)_localctx).from_ = intervalUnit(); - setState(2704); - match(TO); - setState(2705); - ((UnitToUnitIntervalContext)_localctx).to = intervalUnit(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class IntervalValueContext extends ParserRuleContext { - public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } - public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } - public TerminalNode PLUS() { return getToken(SqlBaseParser.PLUS, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public TerminalNode STRING() { return getToken(SqlBaseParser.STRING, 0); } - public IntervalValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_intervalValue; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntervalValue(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntervalValue(this); - } - } - - public final IntervalValueContext intervalValue() throws RecognitionException { - IntervalValueContext _localctx = new IntervalValueContext(_ctx, getState()); - enterRule(_localctx, 216, RULE_intervalValue); - int _la; - try { - setState(2712); - _errHandler.sync(this); - switch (_input.LA(1)) { - case PLUS: - case MINUS: - case INTEGER_VALUE: - case DECIMAL_VALUE: - enterOuterAlt(_localctx, 1); - { - setState(2708); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PLUS || _la==MINUS) { - { - setState(2707); - _la = _input.LA(1); - if ( !(_la==PLUS || _la==MINUS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(2710); - _la = _input.LA(1); - if ( !(_la==INTEGER_VALUE || _la==DECIMAL_VALUE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case STRING: - enterOuterAlt(_localctx, 2); - { - setState(2711); - match(STRING); - } - 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 IntervalUnitContext extends ParserRuleContext { - public TerminalNode DAY() { return getToken(SqlBaseParser.DAY, 0); } - public TerminalNode HOUR() { return getToken(SqlBaseParser.HOUR, 0); } - public TerminalNode MINUTE() { return getToken(SqlBaseParser.MINUTE, 0); } - public TerminalNode MONTH() { return getToken(SqlBaseParser.MONTH, 0); } - public TerminalNode SECOND() { return getToken(SqlBaseParser.SECOND, 0); } - public TerminalNode YEAR() { return getToken(SqlBaseParser.YEAR, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public IntervalUnitContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_intervalUnit; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntervalUnit(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntervalUnit(this); - } - } - - public final IntervalUnitContext intervalUnit() throws RecognitionException { - IntervalUnitContext _localctx = new IntervalUnitContext(_ctx, getState()); - enterRule(_localctx, 218, RULE_intervalUnit); - try { - setState(2721); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,348,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2714); - match(DAY); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2715); - match(HOUR); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(2716); - match(MINUTE); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(2717); - match(MONTH); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(2718); - match(SECOND); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(2719); - match(YEAR); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(2720); - identifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ColPositionContext extends ParserRuleContext { - public Token position; - public ErrorCapturingIdentifierContext afterCol; - public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } - public TerminalNode AFTER() { return getToken(SqlBaseParser.AFTER, 0); } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public ColPositionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_colPosition; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterColPosition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColPosition(this); - } - } - - public final ColPositionContext colPosition() throws RecognitionException { - ColPositionContext _localctx = new ColPositionContext(_ctx, getState()); - enterRule(_localctx, 220, RULE_colPosition); - try { - setState(2726); - _errHandler.sync(this); - switch (_input.LA(1)) { - case FIRST: - enterOuterAlt(_localctx, 1); - { - setState(2723); - ((ColPositionContext)_localctx).position = match(FIRST); - } - break; - case AFTER: - enterOuterAlt(_localctx, 2); - { - setState(2724); - ((ColPositionContext)_localctx).position = match(AFTER); - setState(2725); - ((ColPositionContext)_localctx).afterCol = errorCapturingIdentifier(); - } - 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 DataTypeContext extends ParserRuleContext { - public DataTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dataType; } - - public DataTypeContext() { } - public void copyFrom(DataTypeContext ctx) { - super.copyFrom(ctx); - } - } - public static class ComplexDataTypeContext extends DataTypeContext { - public Token complex; - public List dataType() { - return getRuleContexts(DataTypeContext.class); - } - public DataTypeContext dataType(int i) { - return getRuleContext(DataTypeContext.class,i); - } - public TerminalNode ARRAY() { return getToken(SqlBaseParser.ARRAY, 0); } - public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } - public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } - public TerminalNode NEQ() { return getToken(SqlBaseParser.NEQ, 0); } - public ComplexColTypeListContext complexColTypeList() { - return getRuleContext(ComplexColTypeListContext.class,0); - } - public ComplexDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComplexDataType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComplexDataType(this); - } - } - public static class PrimitiveDataTypeContext extends DataTypeContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List INTEGER_VALUE() { return getTokens(SqlBaseParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(SqlBaseParser.INTEGER_VALUE, i); - } - public PrimitiveDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterPrimitiveDataType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitPrimitiveDataType(this); - } - } - - public final DataTypeContext dataType() throws RecognitionException { - DataTypeContext _localctx = new DataTypeContext(_ctx, getState()); - enterRule(_localctx, 222, RULE_dataType); - int _la; - try { - setState(2762); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,354,_ctx) ) { - case 1: - _localctx = new ComplexDataTypeContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2728); - ((ComplexDataTypeContext)_localctx).complex = match(ARRAY); - setState(2729); - match(LT); - setState(2730); - dataType(); - setState(2731); - match(GT); - } - break; - case 2: - _localctx = new ComplexDataTypeContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2733); - ((ComplexDataTypeContext)_localctx).complex = match(MAP); - setState(2734); - match(LT); - setState(2735); - dataType(); - setState(2736); - match(T__3); - setState(2737); - dataType(); - setState(2738); - match(GT); - } - break; - case 3: - _localctx = new ComplexDataTypeContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2740); - ((ComplexDataTypeContext)_localctx).complex = match(STRUCT); - setState(2747); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LT: - { - setState(2741); - match(LT); - setState(2743); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,350,_ctx) ) { - case 1: - { - setState(2742); - complexColTypeList(); - } - break; - } - setState(2745); - match(GT); - } - break; - case NEQ: - { - setState(2746); - match(NEQ); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 4: - _localctx = new PrimitiveDataTypeContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2749); - identifier(); - setState(2760); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,353,_ctx) ) { - case 1: - { - setState(2750); - match(T__1); - setState(2751); - match(INTEGER_VALUE); - setState(2756); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2752); - match(T__3); - setState(2753); - match(INTEGER_VALUE); - } - } - setState(2758); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2759); - match(T__2); - } - break; - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class QualifiedColTypeWithPositionListContext extends ParserRuleContext { - public List qualifiedColTypeWithPosition() { - return getRuleContexts(QualifiedColTypeWithPositionContext.class); - } - public QualifiedColTypeWithPositionContext qualifiedColTypeWithPosition(int i) { - return getRuleContext(QualifiedColTypeWithPositionContext.class,i); - } - public QualifiedColTypeWithPositionListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedColTypeWithPositionList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedColTypeWithPositionList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedColTypeWithPositionList(this); - } - } - - public final QualifiedColTypeWithPositionListContext qualifiedColTypeWithPositionList() throws RecognitionException { - QualifiedColTypeWithPositionListContext _localctx = new QualifiedColTypeWithPositionListContext(_ctx, getState()); - enterRule(_localctx, 224, RULE_qualifiedColTypeWithPositionList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2764); - qualifiedColTypeWithPosition(); - setState(2769); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2765); - match(T__3); - setState(2766); - qualifiedColTypeWithPosition(); - } - } - setState(2771); - _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 QualifiedColTypeWithPositionContext extends ParserRuleContext { - public MultipartIdentifierContext name; - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public ColPositionContext colPosition() { - return getRuleContext(ColPositionContext.class,0); - } - public QualifiedColTypeWithPositionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedColTypeWithPosition; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedColTypeWithPosition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedColTypeWithPosition(this); - } - } - - public final QualifiedColTypeWithPositionContext qualifiedColTypeWithPosition() throws RecognitionException { - QualifiedColTypeWithPositionContext _localctx = new QualifiedColTypeWithPositionContext(_ctx, getState()); - enterRule(_localctx, 226, RULE_qualifiedColTypeWithPosition); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2772); - ((QualifiedColTypeWithPositionContext)_localctx).name = multipartIdentifier(); - setState(2773); - dataType(); - setState(2776); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2774); - match(NOT); - setState(2775); - match(NULL); - } - } - - setState(2779); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(2778); - commentSpec(); - } - } - - setState(2782); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AFTER || _la==FIRST) { - { - setState(2781); - colPosition(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ColTypeListContext extends ParserRuleContext { - public List colType() { - return getRuleContexts(ColTypeContext.class); - } - public ColTypeContext colType(int i) { - return getRuleContext(ColTypeContext.class,i); - } - public ColTypeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_colTypeList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterColTypeList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColTypeList(this); - } - } - - public final ColTypeListContext colTypeList() throws RecognitionException { - ColTypeListContext _localctx = new ColTypeListContext(_ctx, getState()); - enterRule(_localctx, 228, RULE_colTypeList); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2784); - colType(); - setState(2789); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,359,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2785); - match(T__3); - setState(2786); - colType(); - } - } - } - setState(2791); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,359,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ColTypeContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext colName; - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public ColTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_colType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterColType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitColType(this); - } - } - - public final ColTypeContext colType() throws RecognitionException { - ColTypeContext _localctx = new ColTypeContext(_ctx, getState()); - enterRule(_localctx, 230, RULE_colType); - try { - enterOuterAlt(_localctx, 1); - { - setState(2792); - ((ColTypeContext)_localctx).colName = errorCapturingIdentifier(); - setState(2793); - dataType(); - setState(2796); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,360,_ctx) ) { - case 1: - { - setState(2794); - match(NOT); - setState(2795); - match(NULL); - } - break; - } - setState(2799); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,361,_ctx) ) { - case 1: - { - setState(2798); - commentSpec(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ComplexColTypeListContext extends ParserRuleContext { - public List complexColType() { - return getRuleContexts(ComplexColTypeContext.class); - } - public ComplexColTypeContext complexColType(int i) { - return getRuleContext(ComplexColTypeContext.class,i); - } - public ComplexColTypeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_complexColTypeList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComplexColTypeList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComplexColTypeList(this); - } - } - - public final ComplexColTypeListContext complexColTypeList() throws RecognitionException { - ComplexColTypeListContext _localctx = new ComplexColTypeListContext(_ctx, getState()); - enterRule(_localctx, 232, RULE_complexColTypeList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2801); - complexColType(); - setState(2806); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2802); - match(T__3); - setState(2803); - complexColType(); - } - } - setState(2808); - _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 ComplexColTypeContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public ComplexColTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_complexColType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterComplexColType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitComplexColType(this); - } - } - - public final ComplexColTypeContext complexColType() throws RecognitionException { - ComplexColTypeContext _localctx = new ComplexColTypeContext(_ctx, getState()); - enterRule(_localctx, 234, RULE_complexColType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2809); - identifier(); - setState(2810); - match(T__10); - setState(2811); - dataType(); - setState(2814); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(2812); - match(NOT); - setState(2813); - match(NULL); - } - } - - setState(2817); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(2816); - commentSpec(); - } - } - - } - } - 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(SqlBaseParser.WHEN, 0); } - public TerminalNode THEN() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterWhenClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWhenClause(this); - } - } - - public final WhenClauseContext whenClause() throws RecognitionException { - WhenClauseContext _localctx = new WhenClauseContext(_ctx, getState()); - enterRule(_localctx, 236, RULE_whenClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(2819); - match(WHEN); - setState(2820); - ((WhenClauseContext)_localctx).condition = expression(); - setState(2821); - match(THEN); - setState(2822); - ((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 WindowClauseContext extends ParserRuleContext { - public TerminalNode WINDOW() { return getToken(SqlBaseParser.WINDOW, 0); } - public List namedWindow() { - return getRuleContexts(NamedWindowContext.class); - } - public NamedWindowContext namedWindow(int i) { - return getRuleContext(NamedWindowContext.class,i); - } - public WindowClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_windowClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWindowClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowClause(this); - } - } - - public final WindowClauseContext windowClause() throws RecognitionException { - WindowClauseContext _localctx = new WindowClauseContext(_ctx, getState()); - enterRule(_localctx, 238, RULE_windowClause); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2824); - match(WINDOW); - setState(2825); - namedWindow(); - setState(2830); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,365,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2826); - match(T__3); - setState(2827); - namedWindow(); - } - } - } - setState(2832); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,365,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class NamedWindowContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext name; - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public WindowSpecContext windowSpec() { - return getRuleContext(WindowSpecContext.class,0); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public NamedWindowContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_namedWindow; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterNamedWindow(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNamedWindow(this); - } - } - - public final NamedWindowContext namedWindow() throws RecognitionException { - NamedWindowContext _localctx = new NamedWindowContext(_ctx, getState()); - enterRule(_localctx, 240, RULE_namedWindow); - try { - enterOuterAlt(_localctx, 1); - { - setState(2833); - ((NamedWindowContext)_localctx).name = errorCapturingIdentifier(); - setState(2834); - match(AS); - setState(2835); - windowSpec(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class WindowSpecContext extends ParserRuleContext { - public WindowSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_windowSpec; } - - public WindowSpecContext() { } - public void copyFrom(WindowSpecContext ctx) { - super.copyFrom(ctx); - } - } - public static class WindowRefContext extends WindowSpecContext { - public ErrorCapturingIdentifierContext name; - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public WindowRefContext(WindowSpecContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWindowRef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowRef(this); - } - } - public static class WindowDefContext extends WindowSpecContext { - public ExpressionContext expression; - public List partition = new ArrayList(); - public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } - public List BY() { return getTokens(SqlBaseParser.BY); } - public TerminalNode BY(int i) { - return getToken(SqlBaseParser.BY, i); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public WindowFrameContext windowFrame() { - return getRuleContext(WindowFrameContext.class,0); - } - public List sortItem() { - return getRuleContexts(SortItemContext.class); - } - public SortItemContext sortItem(int i) { - return getRuleContext(SortItemContext.class,i); - } - public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } - public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } - public TerminalNode ORDER() { return getToken(SqlBaseParser.ORDER, 0); } - public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } - public WindowDefContext(WindowSpecContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterWindowDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowDef(this); - } - } - - public final WindowSpecContext windowSpec() throws RecognitionException { - WindowSpecContext _localctx = new WindowSpecContext(_ctx, getState()); - enterRule(_localctx, 242, RULE_windowSpec); - int _la; - try { - setState(2883); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,373,_ctx) ) { - case 1: - _localctx = new WindowRefContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2837); - ((WindowRefContext)_localctx).name = errorCapturingIdentifier(); - } - break; - case 2: - _localctx = new WindowRefContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2838); - match(T__1); - setState(2839); - ((WindowRefContext)_localctx).name = errorCapturingIdentifier(); - setState(2840); - match(T__2); - } - break; - case 3: - _localctx = new WindowDefContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2842); - match(T__1); - setState(2877); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CLUSTER: - { - setState(2843); - match(CLUSTER); - setState(2844); - match(BY); - setState(2845); - ((WindowDefContext)_localctx).expression = expression(); - ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); - setState(2850); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2846); - match(T__3); - setState(2847); - ((WindowDefContext)_localctx).expression = expression(); - ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); - } - } - setState(2852); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case T__2: - case DISTRIBUTE: - case ORDER: - case PARTITION: - case RANGE: - case ROWS: - case SORT: - { - setState(2863); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DISTRIBUTE || _la==PARTITION) { - { - setState(2853); - _la = _input.LA(1); - if ( !(_la==DISTRIBUTE || _la==PARTITION) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2854); - match(BY); - setState(2855); - ((WindowDefContext)_localctx).expression = expression(); - ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); - setState(2860); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2856); - match(T__3); - setState(2857); - ((WindowDefContext)_localctx).expression = expression(); - ((WindowDefContext)_localctx).partition.add(((WindowDefContext)_localctx).expression); - } - } - setState(2862); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(2875); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER || _la==SORT) { - { - setState(2865); - _la = _input.LA(1); - if ( !(_la==ORDER || _la==SORT) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2866); - match(BY); - setState(2867); - sortItem(); - setState(2872); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2868); - match(T__3); - setState(2869); - sortItem(); - } - } - setState(2874); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - setState(2880); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==RANGE || _la==ROWS) { - { - setState(2879); - windowFrame(); - } - } - - setState(2882); - 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 WindowFrameContext extends ParserRuleContext { - public Token frameType; - public FrameBoundContext start; - public FrameBoundContext end; - public TerminalNode RANGE() { return getToken(SqlBaseParser.RANGE, 0); } - public List frameBound() { - return getRuleContexts(FrameBoundContext.class); - } - public FrameBoundContext frameBound(int i) { - return getRuleContext(FrameBoundContext.class,i); - } - public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } - public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } - public TerminalNode AND() { return getToken(SqlBaseParser.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 SqlBaseListener ) ((SqlBaseListener)listener).enterWindowFrame(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitWindowFrame(this); - } - } - - public final WindowFrameContext windowFrame() throws RecognitionException { - WindowFrameContext _localctx = new WindowFrameContext(_ctx, getState()); - enterRule(_localctx, 244, RULE_windowFrame); - try { - setState(2901); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,374,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2885); - ((WindowFrameContext)_localctx).frameType = match(RANGE); - setState(2886); - ((WindowFrameContext)_localctx).start = frameBound(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2887); - ((WindowFrameContext)_localctx).frameType = match(ROWS); - setState(2888); - ((WindowFrameContext)_localctx).start = frameBound(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(2889); - ((WindowFrameContext)_localctx).frameType = match(RANGE); - setState(2890); - match(BETWEEN); - setState(2891); - ((WindowFrameContext)_localctx).start = frameBound(); - setState(2892); - match(AND); - setState(2893); - ((WindowFrameContext)_localctx).end = frameBound(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(2895); - ((WindowFrameContext)_localctx).frameType = match(ROWS); - setState(2896); - match(BETWEEN); - setState(2897); - ((WindowFrameContext)_localctx).start = frameBound(); - setState(2898); - match(AND); - setState(2899); - ((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 Token boundType; - public TerminalNode UNBOUNDED() { return getToken(SqlBaseParser.UNBOUNDED, 0); } - public TerminalNode PRECEDING() { return getToken(SqlBaseParser.PRECEDING, 0); } - public TerminalNode FOLLOWING() { return getToken(SqlBaseParser.FOLLOWING, 0); } - public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } - public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public FrameBoundContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_frameBound; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFrameBound(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFrameBound(this); - } - } - - public final FrameBoundContext frameBound() throws RecognitionException { - FrameBoundContext _localctx = new FrameBoundContext(_ctx, getState()); - enterRule(_localctx, 246, RULE_frameBound); - int _la; - try { - setState(2910); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,375,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2903); - match(UNBOUNDED); - setState(2904); - ((FrameBoundContext)_localctx).boundType = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FOLLOWING || _la==PRECEDING) ) { - ((FrameBoundContext)_localctx).boundType = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2905); - ((FrameBoundContext)_localctx).boundType = match(CURRENT); - setState(2906); - match(ROW); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(2907); - expression(); - setState(2908); - ((FrameBoundContext)_localctx).boundType = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FOLLOWING || _la==PRECEDING) ) { - ((FrameBoundContext)_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 QualifiedNameListContext extends ParserRuleContext { - public List qualifiedName() { - return getRuleContexts(QualifiedNameContext.class); - } - public QualifiedNameContext qualifiedName(int i) { - return getRuleContext(QualifiedNameContext.class,i); - } - public QualifiedNameListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedNameList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedNameList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedNameList(this); - } - } - - public final QualifiedNameListContext qualifiedNameList() throws RecognitionException { - QualifiedNameListContext _localctx = new QualifiedNameListContext(_ctx, getState()); - enterRule(_localctx, 248, RULE_qualifiedNameList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2912); - qualifiedName(); - setState(2917); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__3) { - { - { - setState(2913); - match(T__3); - setState(2914); - qualifiedName(); - } - } - setState(2919); - _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 FunctionNameContext extends ParserRuleContext { - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public TerminalNode FILTER() { return getToken(SqlBaseParser.FILTER, 0); } - public TerminalNode LEFT() { return getToken(SqlBaseParser.LEFT, 0); } - public TerminalNode RIGHT() { return getToken(SqlBaseParser.RIGHT, 0); } - public FunctionNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterFunctionName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitFunctionName(this); - } - } - - public final FunctionNameContext functionName() throws RecognitionException { - FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState()); - enterRule(_localctx, 250, RULE_functionName); - try { - setState(2924); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,377,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2920); - qualifiedName(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2921); - match(FILTER); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(2922); - match(LEFT); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(2923); - match(RIGHT); - } - break; - } - } - 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 SqlBaseListener ) ((SqlBaseListener)listener).enterQualifiedName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQualifiedName(this); - } - } - - public final QualifiedNameContext qualifiedName() throws RecognitionException { - QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState()); - enterRule(_localctx, 252, RULE_qualifiedName); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(2926); - identifier(); - setState(2931); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,378,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(2927); - match(T__4); - setState(2928); - identifier(); - } - } - } - setState(2933); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,378,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ErrorCapturingIdentifierContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() { - return getRuleContext(ErrorCapturingIdentifierExtraContext.class,0); - } - public ErrorCapturingIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_errorCapturingIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorCapturingIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorCapturingIdentifier(this); - } - } - - public final ErrorCapturingIdentifierContext errorCapturingIdentifier() throws RecognitionException { - ErrorCapturingIdentifierContext _localctx = new ErrorCapturingIdentifierContext(_ctx, getState()); - enterRule(_localctx, 254, RULE_errorCapturingIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(2934); - identifier(); - setState(2935); - errorCapturingIdentifierExtra(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class ErrorCapturingIdentifierExtraContext extends ParserRuleContext { - public ErrorCapturingIdentifierExtraContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_errorCapturingIdentifierExtra; } - - public ErrorCapturingIdentifierExtraContext() { } - public void copyFrom(ErrorCapturingIdentifierExtraContext ctx) { - super.copyFrom(ctx); - } - } - public static class ErrorIdentContext extends ErrorCapturingIdentifierExtraContext { - public List MINUS() { return getTokens(SqlBaseParser.MINUS); } - public TerminalNode MINUS(int i) { - return getToken(SqlBaseParser.MINUS, i); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public ErrorIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterErrorIdent(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitErrorIdent(this); - } - } - public static class RealIdentContext extends ErrorCapturingIdentifierExtraContext { - public RealIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterRealIdent(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitRealIdent(this); - } - } - - public final ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() throws RecognitionException { - ErrorCapturingIdentifierExtraContext _localctx = new ErrorCapturingIdentifierExtraContext(_ctx, getState()); - enterRule(_localctx, 256, RULE_errorCapturingIdentifierExtra); - try { - int _alt; - setState(2944); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,380,_ctx) ) { - case 1: - _localctx = new ErrorIdentContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2939); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(2937); - match(MINUS); - setState(2938); - identifier(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(2941); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,379,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - break; - case 2: - _localctx = new RealIdentContext(_localctx); - enterOuterAlt(_localctx, 2); - { - } - break; - } - } - 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 StrictIdentifierContext strictIdentifier() { - return getRuleContext(StrictIdentifierContext.class,0); - } - public StrictNonReservedContext strictNonReserved() { - return getRuleContext(StrictNonReservedContext.class,0); - } - public IdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIdentifier(this); - } - } - - public final IdentifierContext identifier() throws RecognitionException { - IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); - enterRule(_localctx, 258, RULE_identifier); - try { - setState(2949); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,381,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(2946); - strictIdentifier(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(2947); - if (!(not self.SQL_standard_keyword_behavior)) throw new FailedPredicateException(this, "not self.SQL_standard_keyword_behavior"); - setState(2948); - strictNonReserved(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class StrictIdentifierContext extends ParserRuleContext { - public StrictIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_strictIdentifier; } - - public StrictIdentifierContext() { } - public void copyFrom(StrictIdentifierContext ctx) { - super.copyFrom(ctx); - } - } - public static class QuotedIdentifierAlternativeContext extends StrictIdentifierContext { - public QuotedIdentifierContext quotedIdentifier() { - return getRuleContext(QuotedIdentifierContext.class,0); - } - public QuotedIdentifierAlternativeContext(StrictIdentifierContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQuotedIdentifierAlternative(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQuotedIdentifierAlternative(this); - } - } - public static class UnquotedIdentifierContext extends StrictIdentifierContext { - public TerminalNode IDENTIFIER() { return getToken(SqlBaseParser.IDENTIFIER, 0); } - public AnsiNonReservedContext ansiNonReserved() { - return getRuleContext(AnsiNonReservedContext.class,0); - } - public NonReservedContext nonReserved() { - return getRuleContext(NonReservedContext.class,0); - } - public UnquotedIdentifierContext(StrictIdentifierContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterUnquotedIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitUnquotedIdentifier(this); - } - } - - public final StrictIdentifierContext strictIdentifier() throws RecognitionException { - StrictIdentifierContext _localctx = new StrictIdentifierContext(_ctx, getState()); - enterRule(_localctx, 260, RULE_strictIdentifier); - try { - setState(2957); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,382,_ctx) ) { - case 1: - _localctx = new UnquotedIdentifierContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2951); - match(IDENTIFIER); - } - break; - case 2: - _localctx = new QuotedIdentifierAlternativeContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2952); - quotedIdentifier(); - } - break; - case 3: - _localctx = new UnquotedIdentifierContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2953); - if (!(self.SQL_standard_keyword_behavior)) throw new FailedPredicateException(this, "self.SQL_standard_keyword_behavior"); - setState(2954); - ansiNonReserved(); - } - break; - case 4: - _localctx = new UnquotedIdentifierContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2955); - if (!(not self.SQL_standard_keyword_behavior)) throw new FailedPredicateException(this, "not self.SQL_standard_keyword_behavior"); - setState(2956); - nonReserved(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class QuotedIdentifierContext extends ParserRuleContext { - public TerminalNode BACKQUOTED_IDENTIFIER() { return getToken(SqlBaseParser.BACKQUOTED_IDENTIFIER, 0); } - public QuotedIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_quotedIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterQuotedIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitQuotedIdentifier(this); - } - } - - public final QuotedIdentifierContext quotedIdentifier() throws RecognitionException { - QuotedIdentifierContext _localctx = new QuotedIdentifierContext(_ctx, getState()); - enterRule(_localctx, 262, RULE_quotedIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(2959); - match(BACKQUOTED_IDENTIFIER); - } - } - 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(SqlBaseParser.DECIMAL_VALUE, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public DecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDecimalLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDecimalLiteral(this); - } - } - public static class BigIntLiteralContext extends NumberContext { - public TerminalNode BIGINT_LITERAL() { return getToken(SqlBaseParser.BIGINT_LITERAL, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public BigIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBigIntLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBigIntLiteral(this); - } - } - public static class TinyIntLiteralContext extends NumberContext { - public TerminalNode TINYINT_LITERAL() { return getToken(SqlBaseParser.TINYINT_LITERAL, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public TinyIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterTinyIntLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitTinyIntLiteral(this); - } - } - public static class LegacyDecimalLiteralContext extends NumberContext { - public TerminalNode EXPONENT_VALUE() { return getToken(SqlBaseParser.EXPONENT_VALUE, 0); } - public TerminalNode DECIMAL_VALUE() { return getToken(SqlBaseParser.DECIMAL_VALUE, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public LegacyDecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterLegacyDecimalLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitLegacyDecimalLiteral(this); - } - } - public static class BigDecimalLiteralContext extends NumberContext { - public TerminalNode BIGDECIMAL_LITERAL() { return getToken(SqlBaseParser.BIGDECIMAL_LITERAL, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public BigDecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterBigDecimalLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitBigDecimalLiteral(this); - } - } - public static class ExponentLiteralContext extends NumberContext { - public TerminalNode EXPONENT_VALUE() { return getToken(SqlBaseParser.EXPONENT_VALUE, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public ExponentLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterExponentLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitExponentLiteral(this); - } - } - public static class DoubleLiteralContext extends NumberContext { - public TerminalNode DOUBLE_LITERAL() { return getToken(SqlBaseParser.DOUBLE_LITERAL, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public DoubleLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterDoubleLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitDoubleLiteral(this); - } - } - public static class IntegerLiteralContext extends NumberContext { - public TerminalNode INTEGER_VALUE() { return getToken(SqlBaseParser.INTEGER_VALUE, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public IntegerLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterIntegerLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitIntegerLiteral(this); - } - } - public static class SmallIntLiteralContext extends NumberContext { - public TerminalNode SMALLINT_LITERAL() { return getToken(SqlBaseParser.SMALLINT_LITERAL, 0); } - public TerminalNode MINUS() { return getToken(SqlBaseParser.MINUS, 0); } - public SmallIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterSmallIntLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitSmallIntLiteral(this); - } - } - - public final NumberContext number() throws RecognitionException { - NumberContext _localctx = new NumberContext(_ctx, getState()); - enterRule(_localctx, 264, RULE_number); - int _la; - try { - setState(3000); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,392,_ctx) ) { - case 1: - _localctx = new ExponentLiteralContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2961); - if (!(not self.legacy_exponent_literal_as_decimal_enabled)) throw new FailedPredicateException(this, "not self.legacy_exponent_literal_as_decimal_enabled"); - setState(2963); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2962); - match(MINUS); - } - } - - setState(2965); - match(EXPONENT_VALUE); - } - break; - case 2: - _localctx = new DecimalLiteralContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2966); - if (!(not self.legacy_exponent_literal_as_decimal_enabled)) throw new FailedPredicateException(this, "not self.legacy_exponent_literal_as_decimal_enabled"); - setState(2968); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2967); - match(MINUS); - } - } - - setState(2970); - match(DECIMAL_VALUE); - } - break; - case 3: - _localctx = new LegacyDecimalLiteralContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2971); - if (!(self.legacy_exponent_literal_as_decimal_enabled)) throw new FailedPredicateException(this, "self.legacy_exponent_literal_as_decimal_enabled"); - setState(2973); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2972); - match(MINUS); - } - } - - setState(2975); - _la = _input.LA(1); - if ( !(_la==EXPONENT_VALUE || _la==DECIMAL_VALUE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 4: - _localctx = new IntegerLiteralContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2977); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2976); - match(MINUS); - } - } - - setState(2979); - match(INTEGER_VALUE); - } - break; - case 5: - _localctx = new BigIntLiteralContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2981); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2980); - match(MINUS); - } - } - - setState(2983); - match(BIGINT_LITERAL); - } - break; - case 6: - _localctx = new SmallIntLiteralContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(2985); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2984); - match(MINUS); - } - } - - setState(2987); - match(SMALLINT_LITERAL); - } - break; - case 7: - _localctx = new TinyIntLiteralContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(2989); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2988); - match(MINUS); - } - } - - setState(2991); - match(TINYINT_LITERAL); - } - break; - case 8: - _localctx = new DoubleLiteralContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(2993); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2992); - match(MINUS); - } - } - - setState(2995); - match(DOUBLE_LITERAL); - } - break; - case 9: - _localctx = new BigDecimalLiteralContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(2997); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MINUS) { - { - setState(2996); - match(MINUS); - } - } - - setState(2999); - match(BIGDECIMAL_LITERAL); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static class AlterColumnActionContext extends ParserRuleContext { - public Token setOrDrop; - public TerminalNode TYPE() { return getToken(SqlBaseParser.TYPE, 0); } - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public ColPositionContext colPosition() { - return getRuleContext(ColPositionContext.class,0); - } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public AlterColumnActionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_alterColumnAction; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAlterColumnAction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAlterColumnAction(this); - } - } - - public final AlterColumnActionContext alterColumnAction() throws RecognitionException { - AlterColumnActionContext _localctx = new AlterColumnActionContext(_ctx, getState()); - enterRule(_localctx, 266, RULE_alterColumnAction); - int _la; - try { - setState(3009); - _errHandler.sync(this); - switch (_input.LA(1)) { - case TYPE: - enterOuterAlt(_localctx, 1); - { - setState(3002); - match(TYPE); - setState(3003); - dataType(); - } - break; - case COMMENT: - enterOuterAlt(_localctx, 2); - { - setState(3004); - commentSpec(); - } - break; - case AFTER: - case FIRST: - enterOuterAlt(_localctx, 3); - { - setState(3005); - colPosition(); - } - break; - case DROP: - case SET: - enterOuterAlt(_localctx, 4); - { - setState(3006); - ((AlterColumnActionContext)_localctx).setOrDrop = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==DROP || _la==SET) ) { - ((AlterColumnActionContext)_localctx).setOrDrop = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(3007); - match(NOT); - setState(3008); - match(NULL); - } - 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 AnsiNonReservedContext extends ParserRuleContext { - public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } - public TerminalNode AFTER() { return getToken(SqlBaseParser.AFTER, 0); } - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode ANALYZE() { return getToken(SqlBaseParser.ANALYZE, 0); } - public TerminalNode ARCHIVE() { return getToken(SqlBaseParser.ARCHIVE, 0); } - public TerminalNode ARRAY() { return getToken(SqlBaseParser.ARRAY, 0); } - public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } - public TerminalNode AT() { return getToken(SqlBaseParser.AT, 0); } - public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } - public TerminalNode BUCKET() { return getToken(SqlBaseParser.BUCKET, 0); } - public TerminalNode BUCKETS() { return getToken(SqlBaseParser.BUCKETS, 0); } - public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } - public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } - public TerminalNode CASCADE() { return getToken(SqlBaseParser.CASCADE, 0); } - public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } - public TerminalNode CLEAR() { return getToken(SqlBaseParser.CLEAR, 0); } - public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } - public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } - public TerminalNode CODEGEN() { return getToken(SqlBaseParser.CODEGEN, 0); } - public TerminalNode COLLECTION() { return getToken(SqlBaseParser.COLLECTION, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } - public TerminalNode COMMIT() { return getToken(SqlBaseParser.COMMIT, 0); } - public TerminalNode COMPACT() { return getToken(SqlBaseParser.COMPACT, 0); } - public TerminalNode COMPACTIONS() { return getToken(SqlBaseParser.COMPACTIONS, 0); } - public TerminalNode COMPUTE() { return getToken(SqlBaseParser.COMPUTE, 0); } - public TerminalNode CONCATENATE() { return getToken(SqlBaseParser.CONCATENATE, 0); } - public TerminalNode COST() { return getToken(SqlBaseParser.COST, 0); } - public TerminalNode CUBE() { return getToken(SqlBaseParser.CUBE, 0); } - public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } - public TerminalNode DATA() { return getToken(SqlBaseParser.DATA, 0); } - public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } - public TerminalNode DATABASES() { return getToken(SqlBaseParser.DATABASES, 0); } - public TerminalNode DBPROPERTIES() { return getToken(SqlBaseParser.DBPROPERTIES, 0); } - public TerminalNode DEFINED() { return getToken(SqlBaseParser.DEFINED, 0); } - public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } - public TerminalNode DELIMITED() { return getToken(SqlBaseParser.DELIMITED, 0); } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } - public TerminalNode DFS() { return getToken(SqlBaseParser.DFS, 0); } - public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } - public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } - public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } - public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public TerminalNode ESCAPED() { return getToken(SqlBaseParser.ESCAPED, 0); } - public TerminalNode EXCHANGE() { return getToken(SqlBaseParser.EXCHANGE, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public TerminalNode EXPLAIN() { return getToken(SqlBaseParser.EXPLAIN, 0); } - public TerminalNode EXPORT() { return getToken(SqlBaseParser.EXPORT, 0); } - public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } - public TerminalNode EXTERNAL() { return getToken(SqlBaseParser.EXTERNAL, 0); } - public TerminalNode EXTRACT() { return getToken(SqlBaseParser.EXTRACT, 0); } - public TerminalNode FIELDS() { return getToken(SqlBaseParser.FIELDS, 0); } - public TerminalNode FILEFORMAT() { return getToken(SqlBaseParser.FILEFORMAT, 0); } - public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } - public TerminalNode FOLLOWING() { return getToken(SqlBaseParser.FOLLOWING, 0); } - public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } - public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } - public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } - public TerminalNode FUNCTIONS() { return getToken(SqlBaseParser.FUNCTIONS, 0); } - public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } - public TerminalNode GROUPING() { return getToken(SqlBaseParser.GROUPING, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } - public TerminalNode IMPORT() { return getToken(SqlBaseParser.IMPORT, 0); } - public TerminalNode INDEX() { return getToken(SqlBaseParser.INDEX, 0); } - public TerminalNode INDEXES() { return getToken(SqlBaseParser.INDEXES, 0); } - public TerminalNode INPATH() { return getToken(SqlBaseParser.INPATH, 0); } - public TerminalNode INPUTFORMAT() { return getToken(SqlBaseParser.INPUTFORMAT, 0); } - public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } - public TerminalNode INTERVAL() { return getToken(SqlBaseParser.INTERVAL, 0); } - public TerminalNode ITEMS() { return getToken(SqlBaseParser.ITEMS, 0); } - public TerminalNode KEYS() { return getToken(SqlBaseParser.KEYS, 0); } - public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } - public TerminalNode LATERAL() { return getToken(SqlBaseParser.LATERAL, 0); } - public TerminalNode LAZY() { return getToken(SqlBaseParser.LAZY, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public TerminalNode LIMIT() { return getToken(SqlBaseParser.LIMIT, 0); } - public TerminalNode LINES() { return getToken(SqlBaseParser.LINES, 0); } - public TerminalNode LIST() { return getToken(SqlBaseParser.LIST, 0); } - public TerminalNode LOAD() { return getToken(SqlBaseParser.LOAD, 0); } - public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } - public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } - public TerminalNode LOCK() { return getToken(SqlBaseParser.LOCK, 0); } - public TerminalNode LOCKS() { return getToken(SqlBaseParser.LOCKS, 0); } - public TerminalNode LOGICAL() { return getToken(SqlBaseParser.LOGICAL, 0); } - public TerminalNode MACRO() { return getToken(SqlBaseParser.MACRO, 0); } - public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } - public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } - public TerminalNode MERGE() { return getToken(SqlBaseParser.MERGE, 0); } - public TerminalNode MSCK() { return getToken(SqlBaseParser.MSCK, 0); } - public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } - public TerminalNode NAMESPACES() { return getToken(SqlBaseParser.NAMESPACES, 0); } - public TerminalNode NO() { return getToken(SqlBaseParser.NO, 0); } - public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } - public TerminalNode OF() { return getToken(SqlBaseParser.OF, 0); } - public TerminalNode OPTION() { return getToken(SqlBaseParser.OPTION, 0); } - public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } - public TerminalNode OUT() { return getToken(SqlBaseParser.OUT, 0); } - public TerminalNode OUTPUTFORMAT() { return getToken(SqlBaseParser.OUTPUTFORMAT, 0); } - public TerminalNode OVER() { return getToken(SqlBaseParser.OVER, 0); } - public TerminalNode OVERLAY() { return getToken(SqlBaseParser.OVERLAY, 0); } - public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } - public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } - public TerminalNode PARTITIONED() { return getToken(SqlBaseParser.PARTITIONED, 0); } - public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } - public TerminalNode PERCENTLIT() { return getToken(SqlBaseParser.PERCENTLIT, 0); } - public TerminalNode PIVOT() { return getToken(SqlBaseParser.PIVOT, 0); } - public TerminalNode PLACING() { return getToken(SqlBaseParser.PLACING, 0); } - public TerminalNode POSITION() { return getToken(SqlBaseParser.POSITION, 0); } - public TerminalNode PRECEDING() { return getToken(SqlBaseParser.PRECEDING, 0); } - public TerminalNode PRINCIPALS() { return getToken(SqlBaseParser.PRINCIPALS, 0); } - public TerminalNode PROPERTIES() { return getToken(SqlBaseParser.PROPERTIES, 0); } - public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } - public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); } - public TerminalNode RANGE() { return getToken(SqlBaseParser.RANGE, 0); } - public TerminalNode RECORDREADER() { return getToken(SqlBaseParser.RECORDREADER, 0); } - public TerminalNode RECORDWRITER() { return getToken(SqlBaseParser.RECORDWRITER, 0); } - public TerminalNode RECOVER() { return getToken(SqlBaseParser.RECOVER, 0); } - public TerminalNode REDUCE() { return getToken(SqlBaseParser.REDUCE, 0); } - public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } - public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } - public TerminalNode REPAIR() { return getToken(SqlBaseParser.REPAIR, 0); } - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode RESET() { return getToken(SqlBaseParser.RESET, 0); } - public TerminalNode RESTRICT() { return getToken(SqlBaseParser.RESTRICT, 0); } - public TerminalNode REVOKE() { return getToken(SqlBaseParser.REVOKE, 0); } - public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); } - public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } - public TerminalNode ROLES() { return getToken(SqlBaseParser.ROLES, 0); } - public TerminalNode ROLLBACK() { return getToken(SqlBaseParser.ROLLBACK, 0); } - public TerminalNode ROLLUP() { return getToken(SqlBaseParser.ROLLUP, 0); } - public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } - public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } - public TerminalNode SCHEMA() { return getToken(SqlBaseParser.SCHEMA, 0); } - public TerminalNode SEPARATED() { return getToken(SqlBaseParser.SEPARATED, 0); } - public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } - public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode SETS() { return getToken(SqlBaseParser.SETS, 0); } - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } - public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } - public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } - public TerminalNode START() { return getToken(SqlBaseParser.START, 0); } - public TerminalNode STATISTICS() { return getToken(SqlBaseParser.STATISTICS, 0); } - public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } - public TerminalNode STRATIFY() { return getToken(SqlBaseParser.STRATIFY, 0); } - public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } - public TerminalNode SUBSTR() { return getToken(SqlBaseParser.SUBSTR, 0); } - public TerminalNode SUBSTRING() { return getToken(SqlBaseParser.SUBSTRING, 0); } - public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); } - public TerminalNode TABLESAMPLE() { return getToken(SqlBaseParser.TABLESAMPLE, 0); } - public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode TERMINATED() { return getToken(SqlBaseParser.TERMINATED, 0); } - public TerminalNode TOUCH() { return getToken(SqlBaseParser.TOUCH, 0); } - public TerminalNode TRANSACTION() { return getToken(SqlBaseParser.TRANSACTION, 0); } - public TerminalNode TRANSACTIONS() { return getToken(SqlBaseParser.TRANSACTIONS, 0); } - public TerminalNode TRANSFORM() { return getToken(SqlBaseParser.TRANSFORM, 0); } - public TerminalNode TRIM() { return getToken(SqlBaseParser.TRIM, 0); } - public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } - public TerminalNode TRUNCATE() { return getToken(SqlBaseParser.TRUNCATE, 0); } - public TerminalNode UNARCHIVE() { return getToken(SqlBaseParser.UNARCHIVE, 0); } - public TerminalNode UNBOUNDED() { return getToken(SqlBaseParser.UNBOUNDED, 0); } - public TerminalNode UNCACHE() { return getToken(SqlBaseParser.UNCACHE, 0); } - public TerminalNode UNLOCK() { return getToken(SqlBaseParser.UNLOCK, 0); } - public TerminalNode UNSET() { return getToken(SqlBaseParser.UNSET, 0); } - public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } - public TerminalNode USE() { return getToken(SqlBaseParser.USE, 0); } - public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public TerminalNode VIEWS() { return getToken(SqlBaseParser.VIEWS, 0); } - public TerminalNode WINDOW() { return getToken(SqlBaseParser.WINDOW, 0); } - public AnsiNonReservedContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_ansiNonReserved; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterAnsiNonReserved(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitAnsiNonReserved(this); - } - } - - public final AnsiNonReservedContext ansiNonReserved() throws RecognitionException { - AnsiNonReservedContext _localctx = new AnsiNonReservedContext(_ctx, getState()); - enterRule(_localctx, 268, RULE_ansiNonReserved); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3011); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << AFTER) | (1L << ALTER) | (1L << ANALYZE) | (1L << ARCHIVE) | (1L << ARRAY) | (1L << ASC) | (1L << AT) | (1L << BETWEEN) | (1L << BUCKET) | (1L << BUCKETS) | (1L << BY) | (1L << CACHE) | (1L << CASCADE) | (1L << CHANGE) | (1L << CLEAR) | (1L << CLUSTER) | (1L << CLUSTERED) | (1L << CODEGEN) | (1L << COLLECTION) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMPACT) | (1L << COMPACTIONS) | (1L << COMPUTE) | (1L << CONCATENATE) | (1L << COST) | (1L << CUBE) | (1L << CURRENT) | (1L << DATA) | (1L << DATABASE) | (1L << DATABASES))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (DBPROPERTIES - 65)) | (1L << (DEFINED - 65)) | (1L << (DELETE - 65)) | (1L << (DELIMITED - 65)) | (1L << (DESC - 65)) | (1L << (DESCRIBE - 65)) | (1L << (DFS - 65)) | (1L << (DIRECTORIES - 65)) | (1L << (DIRECTORY - 65)) | (1L << (DISTRIBUTE - 65)) | (1L << (DROP - 65)) | (1L << (ESCAPED - 65)) | (1L << (EXCHANGE - 65)) | (1L << (EXISTS - 65)) | (1L << (EXPLAIN - 65)) | (1L << (EXPORT - 65)) | (1L << (EXTENDED - 65)) | (1L << (EXTERNAL - 65)) | (1L << (EXTRACT - 65)) | (1L << (FIELDS - 65)) | (1L << (FILEFORMAT - 65)) | (1L << (FIRST - 65)) | (1L << (FOLLOWING - 65)) | (1L << (FORMAT - 65)) | (1L << (FORMATTED - 65)) | (1L << (FUNCTION - 65)) | (1L << (FUNCTIONS - 65)) | (1L << (GLOBAL - 65)) | (1L << (GROUPING - 65)) | (1L << (IF - 65)) | (1L << (IGNORE - 65)) | (1L << (IMPORT - 65)) | (1L << (INDEX - 65)) | (1L << (INDEXES - 65)) | (1L << (INPATH - 65)) | (1L << (INPUTFORMAT - 65)) | (1L << (INSERT - 65)) | (1L << (INTERVAL - 65)) | (1L << (ITEMS - 65)) | (1L << (KEYS - 65)) | (1L << (LAST - 65)) | (1L << (LATERAL - 65)))) != 0) || ((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (LAZY - 129)) | (1L << (LIKE - 129)) | (1L << (LIMIT - 129)) | (1L << (LINES - 129)) | (1L << (LIST - 129)) | (1L << (LOAD - 129)) | (1L << (LOCAL - 129)) | (1L << (LOCATION - 129)) | (1L << (LOCK - 129)) | (1L << (LOCKS - 129)) | (1L << (LOGICAL - 129)) | (1L << (MACRO - 129)) | (1L << (MAP - 129)) | (1L << (MATCHED - 129)) | (1L << (MERGE - 129)) | (1L << (MSCK - 129)) | (1L << (NAMESPACE - 129)) | (1L << (NAMESPACES - 129)) | (1L << (NO - 129)) | (1L << (NULLS - 129)) | (1L << (OF - 129)) | (1L << (OPTION - 129)) | (1L << (OPTIONS - 129)) | (1L << (OUT - 129)) | (1L << (OUTPUTFORMAT - 129)) | (1L << (OVER - 129)) | (1L << (OVERLAY - 129)) | (1L << (OVERWRITE - 129)) | (1L << (PARTITION - 129)) | (1L << (PARTITIONED - 129)) | (1L << (PARTITIONS - 129)) | (1L << (PERCENTLIT - 129)) | (1L << (PIVOT - 129)) | (1L << (PLACING - 129)) | (1L << (POSITION - 129)) | (1L << (PRECEDING - 129)) | (1L << (PRINCIPALS - 129)) | (1L << (PROPERTIES - 129)) | (1L << (PURGE - 129)) | (1L << (QUERY - 129)) | (1L << (RANGE - 129)) | (1L << (RECORDREADER - 129)) | (1L << (RECORDWRITER - 129)) | (1L << (RECOVER - 129)) | (1L << (REDUCE - 129)) | (1L << (REFRESH - 129)) | (1L << (RENAME - 129)) | (1L << (REPAIR - 129)) | (1L << (REPLACE - 129)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (RESET - 193)) | (1L << (RESTRICT - 193)) | (1L << (REVOKE - 193)) | (1L << (RLIKE - 193)) | (1L << (ROLE - 193)) | (1L << (ROLES - 193)) | (1L << (ROLLBACK - 193)) | (1L << (ROLLUP - 193)) | (1L << (ROW - 193)) | (1L << (ROWS - 193)) | (1L << (SCHEMA - 193)) | (1L << (SEPARATED - 193)) | (1L << (SERDE - 193)) | (1L << (SERDEPROPERTIES - 193)) | (1L << (SET - 193)) | (1L << (SETS - 193)) | (1L << (SHOW - 193)) | (1L << (SKEWED - 193)) | (1L << (SORT - 193)) | (1L << (SORTED - 193)) | (1L << (START - 193)) | (1L << (STATISTICS - 193)) | (1L << (STORED - 193)) | (1L << (STRATIFY - 193)) | (1L << (STRUCT - 193)) | (1L << (SUBSTR - 193)) | (1L << (SUBSTRING - 193)) | (1L << (TABLES - 193)) | (1L << (TABLESAMPLE - 193)) | (1L << (TBLPROPERTIES - 193)) | (1L << (TEMPORARY - 193)) | (1L << (TERMINATED - 193)) | (1L << (TOUCH - 193)) | (1L << (TRANSACTION - 193)) | (1L << (TRANSACTIONS - 193)) | (1L << (TRANSFORM - 193)) | (1L << (TRIM - 193)) | (1L << (TRUE - 193)) | (1L << (TRUNCATE - 193)) | (1L << (UNARCHIVE - 193)) | (1L << (UNBOUNDED - 193)) | (1L << (UNCACHE - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNSET - 193)) | (1L << (UPDATE - 193)) | (1L << (USE - 193)) | (1L << (VALUES - 193)))) != 0) || ((((_la - 257)) & ~0x3f) == 0 && ((1L << (_la - 257)) & ((1L << (VIEW - 257)) | (1L << (VIEWS - 257)) | (1L << (WINDOW - 257)) | (1L << (DIV - 257)))) != 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 StrictNonReservedContext extends ParserRuleContext { - public TerminalNode ANTI() { return getToken(SqlBaseParser.ANTI, 0); } - public TerminalNode CROSS() { return getToken(SqlBaseParser.CROSS, 0); } - public TerminalNode EXCEPT() { return getToken(SqlBaseParser.EXCEPT, 0); } - public TerminalNode FULL() { return getToken(SqlBaseParser.FULL, 0); } - public TerminalNode INNER() { return getToken(SqlBaseParser.INNER, 0); } - public TerminalNode INTERSECT() { return getToken(SqlBaseParser.INTERSECT, 0); } - public TerminalNode JOIN() { return getToken(SqlBaseParser.JOIN, 0); } - public TerminalNode LEFT() { return getToken(SqlBaseParser.LEFT, 0); } - public TerminalNode NATURAL() { return getToken(SqlBaseParser.NATURAL, 0); } - public TerminalNode ON() { return getToken(SqlBaseParser.ON, 0); } - public TerminalNode RIGHT() { return getToken(SqlBaseParser.RIGHT, 0); } - public TerminalNode SEMI() { return getToken(SqlBaseParser.SEMI, 0); } - public TerminalNode SETMINUS() { return getToken(SqlBaseParser.SETMINUS, 0); } - public TerminalNode UNION() { return getToken(SqlBaseParser.UNION, 0); } - public TerminalNode USING() { return getToken(SqlBaseParser.USING, 0); } - public StrictNonReservedContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_strictNonReserved; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).enterStrictNonReserved(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitStrictNonReserved(this); - } - } - - public final StrictNonReservedContext strictNonReserved() throws RecognitionException { - StrictNonReservedContext _localctx = new StrictNonReservedContext(_ctx, getState()); - enterRule(_localctx, 270, RULE_strictNonReserved); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3013); - _la = _input.LA(1); - if ( !(((((_la - 18)) & ~0x3f) == 0 && ((1L << (_la - 18)) & ((1L << (ANTI - 18)) | (1L << (CROSS - 18)) | (1L << (EXCEPT - 18)))) != 0) || ((((_la - 101)) & ~0x3f) == 0 && ((1L << (_la - 101)) & ((1L << (FULL - 101)) | (1L << (INNER - 101)) | (1L << (INTERSECT - 101)) | (1L << (JOIN - 101)) | (1L << (LEFT - 101)) | (1L << (NATURAL - 101)) | (1L << (ON - 101)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (RIGHT - 196)) | (1L << (SEMI - 196)) | (1L << (SETMINUS - 196)) | (1L << (UNION - 196)) | (1L << (USING - 196)))) != 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 NonReservedContext extends ParserRuleContext { - public TerminalNode ADD() { return getToken(SqlBaseParser.ADD, 0); } - public TerminalNode AFTER() { return getToken(SqlBaseParser.AFTER, 0); } - public TerminalNode ALL() { return getToken(SqlBaseParser.ALL, 0); } - public TerminalNode ALTER() { return getToken(SqlBaseParser.ALTER, 0); } - public TerminalNode ANALYZE() { return getToken(SqlBaseParser.ANALYZE, 0); } - public TerminalNode AND() { return getToken(SqlBaseParser.AND, 0); } - public TerminalNode ANY() { return getToken(SqlBaseParser.ANY, 0); } - public TerminalNode ARCHIVE() { return getToken(SqlBaseParser.ARCHIVE, 0); } - public TerminalNode ARRAY() { return getToken(SqlBaseParser.ARRAY, 0); } - public TerminalNode AS() { return getToken(SqlBaseParser.AS, 0); } - public TerminalNode ASC() { return getToken(SqlBaseParser.ASC, 0); } - public TerminalNode AT() { return getToken(SqlBaseParser.AT, 0); } - public TerminalNode AUTHORIZATION() { return getToken(SqlBaseParser.AUTHORIZATION, 0); } - public TerminalNode BETWEEN() { return getToken(SqlBaseParser.BETWEEN, 0); } - public TerminalNode BOTH() { return getToken(SqlBaseParser.BOTH, 0); } - public TerminalNode BUCKET() { return getToken(SqlBaseParser.BUCKET, 0); } - public TerminalNode BUCKETS() { return getToken(SqlBaseParser.BUCKETS, 0); } - public TerminalNode BY() { return getToken(SqlBaseParser.BY, 0); } - public TerminalNode CACHE() { return getToken(SqlBaseParser.CACHE, 0); } - public TerminalNode CASCADE() { return getToken(SqlBaseParser.CASCADE, 0); } - public TerminalNode CASE() { return getToken(SqlBaseParser.CASE, 0); } - public TerminalNode CAST() { return getToken(SqlBaseParser.CAST, 0); } - public TerminalNode CHANGE() { return getToken(SqlBaseParser.CHANGE, 0); } - public TerminalNode CHECK() { return getToken(SqlBaseParser.CHECK, 0); } - public TerminalNode CLEAR() { return getToken(SqlBaseParser.CLEAR, 0); } - public TerminalNode CLUSTER() { return getToken(SqlBaseParser.CLUSTER, 0); } - public TerminalNode CLUSTERED() { return getToken(SqlBaseParser.CLUSTERED, 0); } - public TerminalNode CODEGEN() { return getToken(SqlBaseParser.CODEGEN, 0); } - public TerminalNode COLLATE() { return getToken(SqlBaseParser.COLLATE, 0); } - public TerminalNode COLLECTION() { return getToken(SqlBaseParser.COLLECTION, 0); } - public TerminalNode COLUMN() { return getToken(SqlBaseParser.COLUMN, 0); } - public TerminalNode COLUMNS() { return getToken(SqlBaseParser.COLUMNS, 0); } - public TerminalNode COMMENT() { return getToken(SqlBaseParser.COMMENT, 0); } - public TerminalNode COMMIT() { return getToken(SqlBaseParser.COMMIT, 0); } - public TerminalNode COMPACT() { return getToken(SqlBaseParser.COMPACT, 0); } - public TerminalNode COMPACTIONS() { return getToken(SqlBaseParser.COMPACTIONS, 0); } - public TerminalNode COMPUTE() { return getToken(SqlBaseParser.COMPUTE, 0); } - public TerminalNode CONCATENATE() { return getToken(SqlBaseParser.CONCATENATE, 0); } - public TerminalNode CONSTRAINT() { return getToken(SqlBaseParser.CONSTRAINT, 0); } - public TerminalNode COST() { return getToken(SqlBaseParser.COST, 0); } - public TerminalNode CREATE() { return getToken(SqlBaseParser.CREATE, 0); } - public TerminalNode CUBE() { return getToken(SqlBaseParser.CUBE, 0); } - public TerminalNode CURRENT() { return getToken(SqlBaseParser.CURRENT, 0); } - public TerminalNode CURRENT_DATE() { return getToken(SqlBaseParser.CURRENT_DATE, 0); } - public TerminalNode CURRENT_TIME() { return getToken(SqlBaseParser.CURRENT_TIME, 0); } - public TerminalNode CURRENT_TIMESTAMP() { return getToken(SqlBaseParser.CURRENT_TIMESTAMP, 0); } - public TerminalNode CURRENT_USER() { return getToken(SqlBaseParser.CURRENT_USER, 0); } - public TerminalNode DATA() { return getToken(SqlBaseParser.DATA, 0); } - public TerminalNode DATABASE() { return getToken(SqlBaseParser.DATABASE, 0); } - public TerminalNode DATABASES() { return getToken(SqlBaseParser.DATABASES, 0); } - public TerminalNode DAY() { return getToken(SqlBaseParser.DAY, 0); } - public TerminalNode DBPROPERTIES() { return getToken(SqlBaseParser.DBPROPERTIES, 0); } - public TerminalNode DEFINED() { return getToken(SqlBaseParser.DEFINED, 0); } - public TerminalNode DELETE() { return getToken(SqlBaseParser.DELETE, 0); } - public TerminalNode DELIMITED() { return getToken(SqlBaseParser.DELIMITED, 0); } - public TerminalNode DESC() { return getToken(SqlBaseParser.DESC, 0); } - public TerminalNode DESCRIBE() { return getToken(SqlBaseParser.DESCRIBE, 0); } - public TerminalNode DFS() { return getToken(SqlBaseParser.DFS, 0); } - public TerminalNode DIRECTORIES() { return getToken(SqlBaseParser.DIRECTORIES, 0); } - public TerminalNode DIRECTORY() { return getToken(SqlBaseParser.DIRECTORY, 0); } - public TerminalNode DISTINCT() { return getToken(SqlBaseParser.DISTINCT, 0); } - public TerminalNode DISTRIBUTE() { return getToken(SqlBaseParser.DISTRIBUTE, 0); } - public TerminalNode DIV() { return getToken(SqlBaseParser.DIV, 0); } - public TerminalNode DROP() { return getToken(SqlBaseParser.DROP, 0); } - public TerminalNode ELSE() { return getToken(SqlBaseParser.ELSE, 0); } - public TerminalNode END() { return getToken(SqlBaseParser.END, 0); } - public TerminalNode ESCAPE() { return getToken(SqlBaseParser.ESCAPE, 0); } - public TerminalNode ESCAPED() { return getToken(SqlBaseParser.ESCAPED, 0); } - public TerminalNode EXCHANGE() { return getToken(SqlBaseParser.EXCHANGE, 0); } - public TerminalNode EXISTS() { return getToken(SqlBaseParser.EXISTS, 0); } - public TerminalNode EXPLAIN() { return getToken(SqlBaseParser.EXPLAIN, 0); } - public TerminalNode EXPORT() { return getToken(SqlBaseParser.EXPORT, 0); } - public TerminalNode EXTENDED() { return getToken(SqlBaseParser.EXTENDED, 0); } - public TerminalNode EXTERNAL() { return getToken(SqlBaseParser.EXTERNAL, 0); } - public TerminalNode EXTRACT() { return getToken(SqlBaseParser.EXTRACT, 0); } - public TerminalNode FALSE() { return getToken(SqlBaseParser.FALSE, 0); } - public TerminalNode FETCH() { return getToken(SqlBaseParser.FETCH, 0); } - public TerminalNode FILTER() { return getToken(SqlBaseParser.FILTER, 0); } - public TerminalNode FIELDS() { return getToken(SqlBaseParser.FIELDS, 0); } - public TerminalNode FILEFORMAT() { return getToken(SqlBaseParser.FILEFORMAT, 0); } - public TerminalNode FIRST() { return getToken(SqlBaseParser.FIRST, 0); } - public TerminalNode FOLLOWING() { return getToken(SqlBaseParser.FOLLOWING, 0); } - public TerminalNode FOR() { return getToken(SqlBaseParser.FOR, 0); } - public TerminalNode FOREIGN() { return getToken(SqlBaseParser.FOREIGN, 0); } - public TerminalNode FORMAT() { return getToken(SqlBaseParser.FORMAT, 0); } - public TerminalNode FORMATTED() { return getToken(SqlBaseParser.FORMATTED, 0); } - public TerminalNode FROM() { return getToken(SqlBaseParser.FROM, 0); } - public TerminalNode FUNCTION() { return getToken(SqlBaseParser.FUNCTION, 0); } - public TerminalNode FUNCTIONS() { return getToken(SqlBaseParser.FUNCTIONS, 0); } - public TerminalNode GLOBAL() { return getToken(SqlBaseParser.GLOBAL, 0); } - public TerminalNode GRANT() { return getToken(SqlBaseParser.GRANT, 0); } - public TerminalNode GROUP() { return getToken(SqlBaseParser.GROUP, 0); } - public TerminalNode GROUPING() { return getToken(SqlBaseParser.GROUPING, 0); } - public TerminalNode HAVING() { return getToken(SqlBaseParser.HAVING, 0); } - public TerminalNode HOUR() { return getToken(SqlBaseParser.HOUR, 0); } - public TerminalNode IF() { return getToken(SqlBaseParser.IF, 0); } - public TerminalNode IGNORE() { return getToken(SqlBaseParser.IGNORE, 0); } - public TerminalNode IMPORT() { return getToken(SqlBaseParser.IMPORT, 0); } - public TerminalNode IN() { return getToken(SqlBaseParser.IN, 0); } - public TerminalNode INDEX() { return getToken(SqlBaseParser.INDEX, 0); } - public TerminalNode INDEXES() { return getToken(SqlBaseParser.INDEXES, 0); } - public TerminalNode INPATH() { return getToken(SqlBaseParser.INPATH, 0); } - public TerminalNode INPUTFORMAT() { return getToken(SqlBaseParser.INPUTFORMAT, 0); } - public TerminalNode INSERT() { return getToken(SqlBaseParser.INSERT, 0); } - public TerminalNode INTERVAL() { return getToken(SqlBaseParser.INTERVAL, 0); } - public TerminalNode INTO() { return getToken(SqlBaseParser.INTO, 0); } - public TerminalNode IS() { return getToken(SqlBaseParser.IS, 0); } - public TerminalNode ITEMS() { return getToken(SqlBaseParser.ITEMS, 0); } - public TerminalNode KEYS() { return getToken(SqlBaseParser.KEYS, 0); } - public TerminalNode LAST() { return getToken(SqlBaseParser.LAST, 0); } - public TerminalNode LATERAL() { return getToken(SqlBaseParser.LATERAL, 0); } - public TerminalNode LAZY() { return getToken(SqlBaseParser.LAZY, 0); } - public TerminalNode LEADING() { return getToken(SqlBaseParser.LEADING, 0); } - public TerminalNode LIKE() { return getToken(SqlBaseParser.LIKE, 0); } - public TerminalNode LIMIT() { return getToken(SqlBaseParser.LIMIT, 0); } - public TerminalNode LINES() { return getToken(SqlBaseParser.LINES, 0); } - public TerminalNode LIST() { return getToken(SqlBaseParser.LIST, 0); } - public TerminalNode LOAD() { return getToken(SqlBaseParser.LOAD, 0); } - public TerminalNode LOCAL() { return getToken(SqlBaseParser.LOCAL, 0); } - public TerminalNode LOCATION() { return getToken(SqlBaseParser.LOCATION, 0); } - public TerminalNode LOCK() { return getToken(SqlBaseParser.LOCK, 0); } - public TerminalNode LOCKS() { return getToken(SqlBaseParser.LOCKS, 0); } - public TerminalNode LOGICAL() { return getToken(SqlBaseParser.LOGICAL, 0); } - public TerminalNode MACRO() { return getToken(SqlBaseParser.MACRO, 0); } - public TerminalNode MAP() { return getToken(SqlBaseParser.MAP, 0); } - public TerminalNode MATCHED() { return getToken(SqlBaseParser.MATCHED, 0); } - public TerminalNode MERGE() { return getToken(SqlBaseParser.MERGE, 0); } - public TerminalNode MINUTE() { return getToken(SqlBaseParser.MINUTE, 0); } - public TerminalNode MONTH() { return getToken(SqlBaseParser.MONTH, 0); } - public TerminalNode MSCK() { return getToken(SqlBaseParser.MSCK, 0); } - public TerminalNode NAMESPACE() { return getToken(SqlBaseParser.NAMESPACE, 0); } - public TerminalNode NAMESPACES() { return getToken(SqlBaseParser.NAMESPACES, 0); } - public TerminalNode NO() { return getToken(SqlBaseParser.NO, 0); } - public TerminalNode NOT() { return getToken(SqlBaseParser.NOT, 0); } - public TerminalNode NULL() { return getToken(SqlBaseParser.NULL, 0); } - public TerminalNode NULLS() { return getToken(SqlBaseParser.NULLS, 0); } - public TerminalNode OF() { return getToken(SqlBaseParser.OF, 0); } - public TerminalNode ONLY() { return getToken(SqlBaseParser.ONLY, 0); } - public TerminalNode OPTION() { return getToken(SqlBaseParser.OPTION, 0); } - public TerminalNode OPTIONS() { return getToken(SqlBaseParser.OPTIONS, 0); } - public TerminalNode OR() { return getToken(SqlBaseParser.OR, 0); } - public TerminalNode ORDER() { return getToken(SqlBaseParser.ORDER, 0); } - public TerminalNode OUT() { return getToken(SqlBaseParser.OUT, 0); } - public TerminalNode OUTER() { return getToken(SqlBaseParser.OUTER, 0); } - public TerminalNode OUTPUTFORMAT() { return getToken(SqlBaseParser.OUTPUTFORMAT, 0); } - public TerminalNode OVER() { return getToken(SqlBaseParser.OVER, 0); } - public TerminalNode OVERLAPS() { return getToken(SqlBaseParser.OVERLAPS, 0); } - public TerminalNode OVERLAY() { return getToken(SqlBaseParser.OVERLAY, 0); } - public TerminalNode OVERWRITE() { return getToken(SqlBaseParser.OVERWRITE, 0); } - public TerminalNode PARTITION() { return getToken(SqlBaseParser.PARTITION, 0); } - public TerminalNode PARTITIONED() { return getToken(SqlBaseParser.PARTITIONED, 0); } - public TerminalNode PARTITIONS() { return getToken(SqlBaseParser.PARTITIONS, 0); } - public TerminalNode PERCENTLIT() { return getToken(SqlBaseParser.PERCENTLIT, 0); } - public TerminalNode PIVOT() { return getToken(SqlBaseParser.PIVOT, 0); } - public TerminalNode PLACING() { return getToken(SqlBaseParser.PLACING, 0); } - public TerminalNode POSITION() { return getToken(SqlBaseParser.POSITION, 0); } - public TerminalNode PRECEDING() { return getToken(SqlBaseParser.PRECEDING, 0); } - public TerminalNode PRIMARY() { return getToken(SqlBaseParser.PRIMARY, 0); } - public TerminalNode PRINCIPALS() { return getToken(SqlBaseParser.PRINCIPALS, 0); } - public TerminalNode PROPERTIES() { return getToken(SqlBaseParser.PROPERTIES, 0); } - public TerminalNode PURGE() { return getToken(SqlBaseParser.PURGE, 0); } - public TerminalNode QUERY() { return getToken(SqlBaseParser.QUERY, 0); } - public TerminalNode RANGE() { return getToken(SqlBaseParser.RANGE, 0); } - public TerminalNode RECORDREADER() { return getToken(SqlBaseParser.RECORDREADER, 0); } - public TerminalNode RECORDWRITER() { return getToken(SqlBaseParser.RECORDWRITER, 0); } - public TerminalNode RECOVER() { return getToken(SqlBaseParser.RECOVER, 0); } - public TerminalNode REDUCE() { return getToken(SqlBaseParser.REDUCE, 0); } - public TerminalNode REFERENCES() { return getToken(SqlBaseParser.REFERENCES, 0); } - public TerminalNode REFRESH() { return getToken(SqlBaseParser.REFRESH, 0); } - public TerminalNode RENAME() { return getToken(SqlBaseParser.RENAME, 0); } - public TerminalNode REPAIR() { return getToken(SqlBaseParser.REPAIR, 0); } - public TerminalNode REPLACE() { return getToken(SqlBaseParser.REPLACE, 0); } - public TerminalNode RESET() { return getToken(SqlBaseParser.RESET, 0); } - public TerminalNode RESTRICT() { return getToken(SqlBaseParser.RESTRICT, 0); } - public TerminalNode REVOKE() { return getToken(SqlBaseParser.REVOKE, 0); } - public TerminalNode RLIKE() { return getToken(SqlBaseParser.RLIKE, 0); } - public TerminalNode ROLE() { return getToken(SqlBaseParser.ROLE, 0); } - public TerminalNode ROLES() { return getToken(SqlBaseParser.ROLES, 0); } - public TerminalNode ROLLBACK() { return getToken(SqlBaseParser.ROLLBACK, 0); } - public TerminalNode ROLLUP() { return getToken(SqlBaseParser.ROLLUP, 0); } - public TerminalNode ROW() { return getToken(SqlBaseParser.ROW, 0); } - public TerminalNode ROWS() { return getToken(SqlBaseParser.ROWS, 0); } - public TerminalNode SCHEMA() { return getToken(SqlBaseParser.SCHEMA, 0); } - public TerminalNode SECOND() { return getToken(SqlBaseParser.SECOND, 0); } - public TerminalNode SELECT() { return getToken(SqlBaseParser.SELECT, 0); } - public TerminalNode SEPARATED() { return getToken(SqlBaseParser.SEPARATED, 0); } - public TerminalNode SERDE() { return getToken(SqlBaseParser.SERDE, 0); } - public TerminalNode SERDEPROPERTIES() { return getToken(SqlBaseParser.SERDEPROPERTIES, 0); } - public TerminalNode SESSION_USER() { return getToken(SqlBaseParser.SESSION_USER, 0); } - public TerminalNode SET() { return getToken(SqlBaseParser.SET, 0); } - public TerminalNode SETS() { return getToken(SqlBaseParser.SETS, 0); } - public TerminalNode SHOW() { return getToken(SqlBaseParser.SHOW, 0); } - public TerminalNode SKEWED() { return getToken(SqlBaseParser.SKEWED, 0); } - public TerminalNode SOME() { return getToken(SqlBaseParser.SOME, 0); } - public TerminalNode SORT() { return getToken(SqlBaseParser.SORT, 0); } - public TerminalNode SORTED() { return getToken(SqlBaseParser.SORTED, 0); } - public TerminalNode START() { return getToken(SqlBaseParser.START, 0); } - public TerminalNode STATISTICS() { return getToken(SqlBaseParser.STATISTICS, 0); } - public TerminalNode STORED() { return getToken(SqlBaseParser.STORED, 0); } - public TerminalNode STRATIFY() { return getToken(SqlBaseParser.STRATIFY, 0); } - public TerminalNode STRUCT() { return getToken(SqlBaseParser.STRUCT, 0); } - public TerminalNode SUBSTR() { return getToken(SqlBaseParser.SUBSTR, 0); } - public TerminalNode SUBSTRING() { return getToken(SqlBaseParser.SUBSTRING, 0); } - public TerminalNode TABLE() { return getToken(SqlBaseParser.TABLE, 0); } - public TerminalNode TABLES() { return getToken(SqlBaseParser.TABLES, 0); } - public TerminalNode TABLESAMPLE() { return getToken(SqlBaseParser.TABLESAMPLE, 0); } - public TerminalNode TBLPROPERTIES() { return getToken(SqlBaseParser.TBLPROPERTIES, 0); } - public TerminalNode TEMPORARY() { return getToken(SqlBaseParser.TEMPORARY, 0); } - public TerminalNode TERMINATED() { return getToken(SqlBaseParser.TERMINATED, 0); } - public TerminalNode THEN() { return getToken(SqlBaseParser.THEN, 0); } - public TerminalNode TO() { return getToken(SqlBaseParser.TO, 0); } - public TerminalNode TOUCH() { return getToken(SqlBaseParser.TOUCH, 0); } - public TerminalNode TRAILING() { return getToken(SqlBaseParser.TRAILING, 0); } - public TerminalNode TRANSACTION() { return getToken(SqlBaseParser.TRANSACTION, 0); } - public TerminalNode TRANSACTIONS() { return getToken(SqlBaseParser.TRANSACTIONS, 0); } - public TerminalNode TRANSFORM() { return getToken(SqlBaseParser.TRANSFORM, 0); } - public TerminalNode TRIM() { return getToken(SqlBaseParser.TRIM, 0); } - public TerminalNode TRUE() { return getToken(SqlBaseParser.TRUE, 0); } - public TerminalNode TRUNCATE() { return getToken(SqlBaseParser.TRUNCATE, 0); } - public TerminalNode TYPE() { return getToken(SqlBaseParser.TYPE, 0); } - public TerminalNode UNARCHIVE() { return getToken(SqlBaseParser.UNARCHIVE, 0); } - public TerminalNode UNBOUNDED() { return getToken(SqlBaseParser.UNBOUNDED, 0); } - public TerminalNode UNCACHE() { return getToken(SqlBaseParser.UNCACHE, 0); } - public TerminalNode UNIQUE() { return getToken(SqlBaseParser.UNIQUE, 0); } - public TerminalNode UNKNOWN() { return getToken(SqlBaseParser.UNKNOWN, 0); } - public TerminalNode UNLOCK() { return getToken(SqlBaseParser.UNLOCK, 0); } - public TerminalNode UNSET() { return getToken(SqlBaseParser.UNSET, 0); } - public TerminalNode UPDATE() { return getToken(SqlBaseParser.UPDATE, 0); } - public TerminalNode USE() { return getToken(SqlBaseParser.USE, 0); } - public TerminalNode USER() { return getToken(SqlBaseParser.USER, 0); } - public TerminalNode VALUES() { return getToken(SqlBaseParser.VALUES, 0); } - public TerminalNode VIEW() { return getToken(SqlBaseParser.VIEW, 0); } - public TerminalNode VIEWS() { return getToken(SqlBaseParser.VIEWS, 0); } - public TerminalNode WHEN() { return getToken(SqlBaseParser.WHEN, 0); } - public TerminalNode WHERE() { return getToken(SqlBaseParser.WHERE, 0); } - public TerminalNode WINDOW() { return getToken(SqlBaseParser.WINDOW, 0); } - public TerminalNode WITH() { return getToken(SqlBaseParser.WITH, 0); } - public TerminalNode YEAR() { return getToken(SqlBaseParser.YEAR, 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 SqlBaseListener ) ((SqlBaseListener)listener).enterNonReserved(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof SqlBaseListener ) ((SqlBaseListener)listener).exitNonReserved(this); - } - } - - public final NonReservedContext nonReserved() throws RecognitionException { - NonReservedContext _localctx = new NonReservedContext(_ctx, getState()); - enterRule(_localctx, 272, RULE_nonReserved); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3015); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ADD) | (1L << AFTER) | (1L << ALL) | (1L << ALTER) | (1L << ANALYZE) | (1L << AND) | (1L << ANY) | (1L << ARCHIVE) | (1L << ARRAY) | (1L << AS) | (1L << ASC) | (1L << AT) | (1L << AUTHORIZATION) | (1L << BETWEEN) | (1L << BOTH) | (1L << BUCKET) | (1L << BUCKETS) | (1L << BY) | (1L << CACHE) | (1L << CASCADE) | (1L << CASE) | (1L << CAST) | (1L << CHANGE) | (1L << CHECK) | (1L << CLEAR) | (1L << CLUSTER) | (1L << CLUSTERED) | (1L << CODEGEN) | (1L << COLLATE) | (1L << COLLECTION) | (1L << COLUMN) | (1L << COLUMNS) | (1L << COMMENT) | (1L << COMMIT) | (1L << COMPACT) | (1L << COMPACTIONS) | (1L << COMPUTE) | (1L << CONCATENATE) | (1L << CONSTRAINT) | (1L << COST) | (1L << CREATE) | (1L << CUBE) | (1L << CURRENT) | (1L << CURRENT_DATE) | (1L << CURRENT_TIME) | (1L << CURRENT_TIMESTAMP) | (1L << CURRENT_USER) | (1L << DATA) | (1L << DATABASE) | (1L << DATABASES))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (DAY - 64)) | (1L << (DBPROPERTIES - 64)) | (1L << (DEFINED - 64)) | (1L << (DELETE - 64)) | (1L << (DELIMITED - 64)) | (1L << (DESC - 64)) | (1L << (DESCRIBE - 64)) | (1L << (DFS - 64)) | (1L << (DIRECTORIES - 64)) | (1L << (DIRECTORY - 64)) | (1L << (DISTINCT - 64)) | (1L << (DISTRIBUTE - 64)) | (1L << (DROP - 64)) | (1L << (ELSE - 64)) | (1L << (END - 64)) | (1L << (ESCAPE - 64)) | (1L << (ESCAPED - 64)) | (1L << (EXCHANGE - 64)) | (1L << (EXISTS - 64)) | (1L << (EXPLAIN - 64)) | (1L << (EXPORT - 64)) | (1L << (EXTENDED - 64)) | (1L << (EXTERNAL - 64)) | (1L << (EXTRACT - 64)) | (1L << (FALSE - 64)) | (1L << (FETCH - 64)) | (1L << (FIELDS - 64)) | (1L << (FILTER - 64)) | (1L << (FILEFORMAT - 64)) | (1L << (FIRST - 64)) | (1L << (FOLLOWING - 64)) | (1L << (FOR - 64)) | (1L << (FOREIGN - 64)) | (1L << (FORMAT - 64)) | (1L << (FORMATTED - 64)) | (1L << (FROM - 64)) | (1L << (FUNCTION - 64)) | (1L << (FUNCTIONS - 64)) | (1L << (GLOBAL - 64)) | (1L << (GRANT - 64)) | (1L << (GROUP - 64)) | (1L << (GROUPING - 64)) | (1L << (HAVING - 64)) | (1L << (HOUR - 64)) | (1L << (IF - 64)) | (1L << (IGNORE - 64)) | (1L << (IMPORT - 64)) | (1L << (IN - 64)) | (1L << (INDEX - 64)) | (1L << (INDEXES - 64)) | (1L << (INPATH - 64)) | (1L << (INPUTFORMAT - 64)) | (1L << (INSERT - 64)) | (1L << (INTERVAL - 64)) | (1L << (INTO - 64)) | (1L << (IS - 64)) | (1L << (ITEMS - 64)) | (1L << (KEYS - 64)) | (1L << (LAST - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LATERAL - 128)) | (1L << (LAZY - 128)) | (1L << (LEADING - 128)) | (1L << (LIKE - 128)) | (1L << (LIMIT - 128)) | (1L << (LINES - 128)) | (1L << (LIST - 128)) | (1L << (LOAD - 128)) | (1L << (LOCAL - 128)) | (1L << (LOCATION - 128)) | (1L << (LOCK - 128)) | (1L << (LOCKS - 128)) | (1L << (LOGICAL - 128)) | (1L << (MACRO - 128)) | (1L << (MAP - 128)) | (1L << (MATCHED - 128)) | (1L << (MERGE - 128)) | (1L << (MINUTE - 128)) | (1L << (MONTH - 128)) | (1L << (MSCK - 128)) | (1L << (NAMESPACE - 128)) | (1L << (NAMESPACES - 128)) | (1L << (NO - 128)) | (1L << (NOT - 128)) | (1L << (NULL - 128)) | (1L << (NULLS - 128)) | (1L << (OF - 128)) | (1L << (ONLY - 128)) | (1L << (OPTION - 128)) | (1L << (OPTIONS - 128)) | (1L << (OR - 128)) | (1L << (ORDER - 128)) | (1L << (OUT - 128)) | (1L << (OUTER - 128)) | (1L << (OUTPUTFORMAT - 128)) | (1L << (OVER - 128)) | (1L << (OVERLAPS - 128)) | (1L << (OVERLAY - 128)) | (1L << (OVERWRITE - 128)) | (1L << (PARTITION - 128)) | (1L << (PARTITIONED - 128)) | (1L << (PARTITIONS - 128)) | (1L << (PERCENTLIT - 128)) | (1L << (PIVOT - 128)) | (1L << (PLACING - 128)) | (1L << (POSITION - 128)) | (1L << (PRECEDING - 128)) | (1L << (PRIMARY - 128)) | (1L << (PRINCIPALS - 128)) | (1L << (PROPERTIES - 128)) | (1L << (PURGE - 128)) | (1L << (QUERY - 128)) | (1L << (RANGE - 128)) | (1L << (RECORDREADER - 128)) | (1L << (RECORDWRITER - 128)) | (1L << (RECOVER - 128)) | (1L << (REDUCE - 128)) | (1L << (REFERENCES - 128)) | (1L << (REFRESH - 128)) | (1L << (RENAME - 128)) | (1L << (REPAIR - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (REPLACE - 192)) | (1L << (RESET - 192)) | (1L << (RESTRICT - 192)) | (1L << (REVOKE - 192)) | (1L << (RLIKE - 192)) | (1L << (ROLE - 192)) | (1L << (ROLES - 192)) | (1L << (ROLLBACK - 192)) | (1L << (ROLLUP - 192)) | (1L << (ROW - 192)) | (1L << (ROWS - 192)) | (1L << (SCHEMA - 192)) | (1L << (SECOND - 192)) | (1L << (SELECT - 192)) | (1L << (SEPARATED - 192)) | (1L << (SERDE - 192)) | (1L << (SERDEPROPERTIES - 192)) | (1L << (SESSION_USER - 192)) | (1L << (SET - 192)) | (1L << (SETS - 192)) | (1L << (SHOW - 192)) | (1L << (SKEWED - 192)) | (1L << (SOME - 192)) | (1L << (SORT - 192)) | (1L << (SORTED - 192)) | (1L << (START - 192)) | (1L << (STATISTICS - 192)) | (1L << (STORED - 192)) | (1L << (STRATIFY - 192)) | (1L << (STRUCT - 192)) | (1L << (SUBSTR - 192)) | (1L << (SUBSTRING - 192)) | (1L << (TABLE - 192)) | (1L << (TABLES - 192)) | (1L << (TABLESAMPLE - 192)) | (1L << (TBLPROPERTIES - 192)) | (1L << (TEMPORARY - 192)) | (1L << (TERMINATED - 192)) | (1L << (THEN - 192)) | (1L << (TO - 192)) | (1L << (TOUCH - 192)) | (1L << (TRAILING - 192)) | (1L << (TRANSACTION - 192)) | (1L << (TRANSACTIONS - 192)) | (1L << (TRANSFORM - 192)) | (1L << (TRIM - 192)) | (1L << (TRUE - 192)) | (1L << (TRUNCATE - 192)) | (1L << (TYPE - 192)) | (1L << (UNARCHIVE - 192)) | (1L << (UNBOUNDED - 192)) | (1L << (UNCACHE - 192)) | (1L << (UNIQUE - 192)) | (1L << (UNKNOWN - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNSET - 192)) | (1L << (UPDATE - 192)) | (1L << (USE - 192)) | (1L << (USER - 192)))) != 0) || ((((_la - 256)) & ~0x3f) == 0 && ((1L << (_la - 256)) & ((1L << (VALUES - 256)) | (1L << (VIEW - 256)) | (1L << (VIEWS - 256)) | (1L << (WHEN - 256)) | (1L << (WHERE - 256)) | (1L << (WINDOW - 256)) | (1L << (WITH - 256)) | (1L << (YEAR - 256)) | (1L << (DIV - 256)))) != 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 7: - return statement_sempred((StatementContext)_localctx, predIndex); - case 40: - return queryTerm_sempred((QueryTermContext)_localctx, predIndex); - case 94: - return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex); - case 96: - return valueExpression_sempred((ValueExpressionContext)_localctx, predIndex); - case 97: - return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex); - case 129: - return identifier_sempred((IdentifierContext)_localctx, predIndex); - case 130: - return strictIdentifier_sempred((StrictIdentifierContext)_localctx, predIndex); - case 132: - return number_sempred((NumberContext)_localctx, predIndex); - } - return true; - } - private boolean statement_sempred(StatementContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return not self.legacy_create_hive_table_by_default_enabled; - case 1: - return self.legacy_create_hive_table_by_default_enabled; - } - return true; - } - private boolean queryTerm_sempred(QueryTermContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return precpred(_ctx, 3); - case 3: - return self.legacy_setops_precedence_enbled; - case 4: - return precpred(_ctx, 2); - case 5: - return not self.legacy_setops_precedence_enbled; - case 6: - return precpred(_ctx, 1); - case 7: - return not self.legacy_setops_precedence_enbled; - } - return true; - } - private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 8: - return precpred(_ctx, 2); - case 9: - return precpred(_ctx, 1); - } - return true; - } - private boolean valueExpression_sempred(ValueExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 10: - return precpred(_ctx, 6); - case 11: - return precpred(_ctx, 5); - case 12: - return precpred(_ctx, 4); - case 13: - return precpred(_ctx, 3); - case 14: - return precpred(_ctx, 2); - case 15: - return precpred(_ctx, 1); - } - return true; - } - private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 16: - return precpred(_ctx, 8); - case 17: - return precpred(_ctx, 6); - } - return true; - } - private boolean identifier_sempred(IdentifierContext _localctx, int predIndex) { - switch (predIndex) { - case 18: - return not self.SQL_standard_keyword_behavior; - } - return true; - } - private boolean strictIdentifier_sempred(StrictIdentifierContext _localctx, int predIndex) { - switch (predIndex) { - case 19: - return self.SQL_standard_keyword_behavior; - case 20: - return not self.SQL_standard_keyword_behavior; - } - return true; - } - private boolean number_sempred(NumberContext _localctx, int predIndex) { - switch (predIndex) { - case 21: - return not self.legacy_exponent_literal_as_decimal_enabled; - case 22: - return not self.legacy_exponent_literal_as_decimal_enabled; - case 23: - return self.legacy_exponent_literal_as_decimal_enabled; - } - return true; - } - - private static final int _serializedATNSegments = 2; - private static final String _serializedATNSegment0 = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u012b\u0bcc\4\2\t"+ - "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ - "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ - "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ - "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ - "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ - ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ - "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ - "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ - "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ - "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ - "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+ - "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+ - "w\tw\4x\tx\4y\ty\4z\tz\4{\t{\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\3\2\3\2\7\2\u0117\n\2\f\2\16\2\u011a\13\2\3\2\3\2\3\3"+ - "\3\3\3\3\3\4\3\4\3\4\3\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\b\3\b\3\b\3"+ - "\t\3\t\5\t\u0132\n\t\3\t\3\t\3\t\5\t\u0137\n\t\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\5\t\u013f\n\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u0147\n\t\f\t\16\t\u014a\13"+ - "\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\5\t\u015d\n\t\3\t\3\t\5\t\u0161\n\t\3\t\3\t\3\t\3\t\5\t\u0167\n\t\3\t"+ - "\5\t\u016a\n\t\3\t\5\t\u016d\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0175\n\t"+ - "\3\t\5\t\u0178\n\t\3\t\3\t\5\t\u017c\n\t\3\t\5\t\u017f\n\t\3\t\3\t\3\t"+ - "\3\t\3\t\3\t\5\t\u0187\n\t\3\t\3\t\3\t\5\t\u018c\n\t\3\t\5\t\u018f\n\t"+ - "\3\t\3\t\3\t\3\t\3\t\5\t\u0196\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\3\t\5\t\u01a2\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u01ab\n\t\f\t\16\t"+ - "\u01ae\13\t\3\t\5\t\u01b1\n\t\3\t\5\t\u01b4\n\t\3\t\3\t\3\t\3\t\3\t\5"+ - "\t\u01bb\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u01c6\n\t\f\t\16"+ - "\t\u01c9\13\t\3\t\3\t\3\t\3\t\3\t\5\t\u01d0\n\t\3\t\3\t\3\t\5\t\u01d5"+ - "\n\t\3\t\5\t\u01d8\n\t\3\t\3\t\3\t\3\t\5\t\u01de\n\t\3\t\3\t\3\t\3\t\3"+ - "\t\3\t\3\t\3\t\3\t\5\t\u01e9\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+ - "\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+ - "\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\5\t\u0229\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0232\n\t\3\t\3\t\5\t\u0236"+ - "\n\t\3\t\3\t\3\t\3\t\5\t\u023c\n\t\3\t\3\t\5\t\u0240\n\t\3\t\3\t\3\t\5"+ - "\t\u0245\n\t\3\t\3\t\3\t\3\t\5\t\u024b\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\3\t\3\t\3\t\5\t\u0257\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u025f\n\t\3\t\3"+ - "\t\3\t\3\t\5\t\u0265\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5"+ - "\t\u0272\n\t\3\t\6\t\u0275\n\t\r\t\16\t\u0276\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0287\n\t\3\t\3\t\3\t\7\t\u028c\n"+ - "\t\f\t\16\t\u028f\13\t\3\t\5\t\u0292\n\t\3\t\3\t\3\t\3\t\5\t\u0298\n\t"+ - "\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02a7\n\t\3\t"+ - "\3\t\5\t\u02ab\n\t\3\t\3\t\3\t\3\t\5\t\u02b1\n\t\3\t\3\t\3\t\3\t\5\t\u02b7"+ - "\n\t\3\t\5\t\u02ba\n\t\3\t\5\t\u02bd\n\t\3\t\3\t\3\t\3\t\5\t\u02c3\n\t"+ - "\3\t\3\t\5\t\u02c7\n\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u02cf\n\t\f\t\16\t"+ - "\u02d2\13\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02da\n\t\3\t\5\t\u02dd\n\t\3"+ - "\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02e6\n\t\3\t\3\t\3\t\5\t\u02eb\n\t\3\t"+ - "\3\t\3\t\3\t\5\t\u02f1\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u02f8\n\t\3\t\5\t\u02fb"+ - "\n\t\3\t\3\t\3\t\3\t\5\t\u0301\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u030a"+ - "\n\t\f\t\16\t\u030d\13\t\5\t\u030f\n\t\3\t\3\t\5\t\u0313\n\t\3\t\3\t\3"+ - "\t\5\t\u0318\n\t\3\t\3\t\3\t\5\t\u031d\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u0324"+ - "\n\t\3\t\5\t\u0327\n\t\3\t\5\t\u032a\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u0331"+ - "\n\t\3\t\3\t\3\t\5\t\u0336\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u033f\n"+ - "\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0347\n\t\3\t\3\t\3\t\3\t\5\t\u034d\n\t"+ - "\3\t\5\t\u0350\n\t\3\t\5\t\u0353\n\t\3\t\3\t\3\t\3\t\5\t\u0359\n\t\3\t"+ - "\3\t\5\t\u035d\n\t\3\t\3\t\5\t\u0361\n\t\3\t\3\t\5\t\u0365\n\t\5\t\u0367"+ - "\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u036f\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t"+ - "\u0377\n\t\3\t\3\t\3\t\3\t\5\t\u037d\n\t\3\t\3\t\3\t\3\t\5\t\u0383\n\t"+ - "\3\t\5\t\u0386\n\t\3\t\3\t\5\t\u038a\n\t\3\t\5\t\u038d\n\t\3\t\3\t\5\t"+ - "\u0391\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+ - "\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u03a8\n\t\f\t\16\t\u03ab\13\t\5\t\u03ad\n"+ - "\t\3\t\3\t\5\t\u03b1\n\t\3\t\3\t\3\t\3\t\5\t\u03b7\n\t\3\t\5\t\u03ba\n"+ - "\t\3\t\5\t\u03bd\n\t\3\t\3\t\3\t\3\t\5\t\u03c3\n\t\3\t\3\t\3\t\3\t\3\t"+ - "\3\t\5\t\u03cb\n\t\3\t\3\t\3\t\5\t\u03d0\n\t\3\t\3\t\3\t\3\t\5\t\u03d6"+ - "\n\t\3\t\3\t\3\t\3\t\5\t\u03dc\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t"+ - "\u03e6\n\t\f\t\16\t\u03e9\13\t\5\t\u03eb\n\t\3\t\3\t\3\t\7\t\u03f0\n\t"+ - "\f\t\16\t\u03f3\13\t\3\t\3\t\7\t\u03f7\n\t\f\t\16\t\u03fa\13\t\3\t\3\t"+ - "\3\t\7\t\u03ff\n\t\f\t\16\t\u0402\13\t\5\t\u0404\n\t\3\n\3\n\3\n\3\n\3"+ - "\n\3\n\5\n\u040c\n\n\3\n\3\n\5\n\u0410\n\n\3\n\3\n\3\n\3\n\3\n\5\n\u0417"+ - "\n\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+ - "\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+ - "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+ - "\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+ - "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+ - "\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+ - "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u048b\n\n\3\n\3\n\3\n\3\n"+ - "\3\n\3\n\5\n\u0493\n\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u049b\n\n\3\n\3\n\3"+ - "\n\3\n\3\n\3\n\3\n\5\n\u04a4\n\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u04ae"+ - "\n\n\3\13\3\13\5\13\u04b2\n\13\3\13\5\13\u04b5\n\13\3\13\3\13\3\13\3\13"+ - "\5\13\u04bb\n\13\3\13\3\13\3\f\3\f\5\f\u04c1\n\f\3\f\3\f\3\f\3\f\3\r\3"+ - "\r\3\r\3\r\3\r\3\r\5\r\u04cd\n\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3"+ - "\16\3\16\5\16\u04d9\n\16\3\16\3\16\3\16\5\16\u04de\n\16\3\17\3\17\3\17"+ - "\3\20\3\20\3\20\3\21\5\21\u04e7\n\21\3\21\3\21\3\21\3\22\3\22\3\22\5\22"+ - "\u04ef\n\22\3\22\3\22\3\22\3\22\3\22\5\22\u04f6\n\22\5\22\u04f8\n\22\3"+ - "\22\3\22\3\22\5\22\u04fd\n\22\3\22\3\22\5\22\u0501\n\22\3\22\3\22\3\22"+ - "\5\22\u0506\n\22\3\22\3\22\3\22\5\22\u050b\n\22\3\22\3\22\3\22\5\22\u0510"+ - "\n\22\3\22\5\22\u0513\n\22\3\22\3\22\3\22\5\22\u0518\n\22\3\22\3\22\5"+ - "\22\u051c\n\22\3\22\3\22\3\22\5\22\u0521\n\22\5\22\u0523\n\22\3\23\3\23"+ - "\5\23\u0527\n\23\3\24\3\24\3\24\3\24\3\24\7\24\u052e\n\24\f\24\16\24\u0531"+ - "\13\24\3\24\3\24\3\25\3\25\3\25\5\25\u0538\n\25\3\26\3\26\3\27\3\27\3"+ - "\27\3\27\3\27\5\27\u0541\n\27\3\30\3\30\3\30\7\30\u0546\n\30\f\30\16\30"+ - "\u0549\13\30\3\31\3\31\3\31\3\31\7\31\u054f\n\31\f\31\16\31\u0552\13\31"+ - "\3\32\3\32\5\32\u0556\n\32\3\32\5\32\u0559\n\32\3\32\3\32\3\32\3\32\3"+ - "\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\7\34\u056c"+ - "\n\34\f\34\16\34\u056f\13\34\3\35\3\35\3\35\3\35\7\35\u0575\n\35\f\35"+ - "\16\35\u0578\13\35\3\35\3\35\3\36\3\36\5\36\u057e\n\36\3\36\5\36\u0581"+ - "\n\36\3\37\3\37\3\37\7\37\u0586\n\37\f\37\16\37\u0589\13\37\3\37\5\37"+ - "\u058c\n\37\3 \3 \3 \3 \5 \u0592\n \3!\3!\3!\3!\7!\u0598\n!\f!\16!\u059b"+ - "\13!\3!\3!\3\"\3\"\3\"\3\"\7\"\u05a3\n\"\f\"\16\"\u05a6\13\"\3\"\3\"\3"+ - "#\3#\3#\3#\3#\3#\5#\u05b0\n#\3$\3$\3$\3$\3$\5$\u05b7\n$\3%\3%\3%\3%\5"+ - "%\u05bd\n%\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\6\'\u05c8\n\'\r\'\16\'\u05c9"+ - "\3\'\3\'\3\'\3\'\3\'\5\'\u05d1\n\'\3\'\3\'\3\'\3\'\3\'\5\'\u05d8\n\'\3"+ - "\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\5\'\u05e4\n\'\3\'\3\'\3\'\3\'\7"+ - "\'\u05ea\n\'\f\'\16\'\u05ed\13\'\3\'\7\'\u05f0\n\'\f\'\16\'\u05f3\13\'"+ - "\5\'\u05f5\n\'\3(\3(\3(\3(\3(\7(\u05fc\n(\f(\16(\u05ff\13(\5(\u0601\n"+ - "(\3(\3(\3(\3(\3(\7(\u0608\n(\f(\16(\u060b\13(\5(\u060d\n(\3(\3(\3(\3("+ - "\3(\7(\u0614\n(\f(\16(\u0617\13(\5(\u0619\n(\3(\3(\3(\3(\3(\7(\u0620\n"+ - "(\f(\16(\u0623\13(\5(\u0625\n(\3(\5(\u0628\n(\3(\3(\3(\5(\u062d\n(\5("+ - "\u062f\n(\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\5*\u063b\n*\3*\3*\3*\3*\3*\5*"+ - "\u0642\n*\3*\3*\3*\3*\3*\5*\u0649\n*\3*\7*\u064c\n*\f*\16*\u064f\13*\3"+ - "+\3+\3+\3+\3+\3+\3+\3+\3+\5+\u065a\n+\3,\3,\5,\u065e\n,\3,\3,\5,\u0662"+ - "\n,\3-\3-\6-\u0666\n-\r-\16-\u0667\3.\3.\5.\u066c\n.\3.\3.\3.\3.\7.\u0672"+ - "\n.\f.\16.\u0675\13.\3.\5.\u0678\n.\3.\5.\u067b\n.\3.\5.\u067e\n.\3.\5"+ - ".\u0681\n.\3.\3.\5.\u0685\n.\3/\3/\5/\u0689\n/\3/\5/\u068c\n/\3/\3/\5"+ - "/\u0690\n/\3/\7/\u0693\n/\f/\16/\u0696\13/\3/\5/\u0699\n/\3/\5/\u069c"+ - "\n/\3/\5/\u069f\n/\3/\5/\u06a2\n/\5/\u06a4\n/\3\60\3\60\3\60\3\60\3\60"+ - "\3\60\3\60\3\60\3\60\3\60\5\60\u06b0\n\60\3\60\5\60\u06b3\n\60\3\60\3"+ - "\60\5\60\u06b7\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u06c1"+ - "\n\60\3\60\3\60\5\60\u06c5\n\60\5\60\u06c7\n\60\3\60\5\60\u06ca\n\60\3"+ - "\60\3\60\5\60\u06ce\n\60\3\61\3\61\7\61\u06d2\n\61\f\61\16\61\u06d5\13"+ - "\61\3\61\5\61\u06d8\n\61\3\61\3\61\3\62\3\62\3\62\3\63\3\63\3\63\3\63"+ - "\5\63\u06e3\n\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\5\64\u06ed\n"+ - "\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\5\65\u06f9\n\65"+ - "\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\7\66\u0706\n\66"+ - "\f\66\16\66\u0709\13\66\3\66\3\66\5\66\u070d\n\66\3\67\3\67\3\67\7\67"+ - "\u0712\n\67\f\67\16\67\u0715\13\67\38\38\38\38\39\39\39\3:\3:\3:\3;\3"+ - ";\3;\5;\u0724\n;\3;\7;\u0727\n;\f;\16;\u072a\13;\3;\3;\3<\3<\3<\3<\3<"+ - "\3<\7<\u0734\n<\f<\16<\u0737\13<\3<\3<\5<\u073b\n<\3=\3=\3=\3=\7=\u0741"+ - "\n=\f=\16=\u0744\13=\3=\7=\u0747\n=\f=\16=\u074a\13=\3=\5=\u074d\n=\3"+ - ">\3>\3>\3>\3>\7>\u0754\n>\f>\16>\u0757\13>\3>\3>\3>\3>\3>\3>\3>\3>\3>"+ - "\3>\7>\u0763\n>\f>\16>\u0766\13>\3>\3>\5>\u076a\n>\3>\3>\3>\3>\3>\3>\3"+ - ">\3>\7>\u0774\n>\f>\16>\u0777\13>\3>\3>\5>\u077b\n>\3?\3?\3?\3?\7?\u0781"+ - "\n?\f?\16?\u0784\13?\5?\u0786\n?\3?\3?\5?\u078a\n?\3@\3@\3@\3@\3@\3@\3"+ - "@\3@\3@\3@\7@\u0796\n@\f@\16@\u0799\13@\3@\3@\3@\3A\3A\3A\3A\3A\7A\u07a3"+ - "\nA\fA\16A\u07a6\13A\3A\3A\5A\u07aa\nA\3B\3B\5B\u07ae\nB\3B\5B\u07b1\n"+ - "B\3C\3C\3C\5C\u07b6\nC\3C\3C\3C\3C\3C\7C\u07bd\nC\fC\16C\u07c0\13C\5C"+ - "\u07c2\nC\3C\3C\3C\5C\u07c7\nC\3C\3C\3C\7C\u07cc\nC\fC\16C\u07cf\13C\5"+ - "C\u07d1\nC\3D\3D\3E\3E\7E\u07d7\nE\fE\16E\u07da\13E\3F\3F\3F\3F\5F\u07e0"+ - "\nF\3F\3F\3F\3F\3F\5F\u07e7\nF\3G\5G\u07ea\nG\3G\3G\3G\5G\u07ef\nG\3G"+ - "\5G\u07f2\nG\3G\3G\3G\5G\u07f7\nG\3G\3G\5G\u07fb\nG\3G\5G\u07fe\nG\3G"+ - "\5G\u0801\nG\3H\3H\3H\3H\5H\u0807\nH\3I\3I\3I\5I\u080c\nI\3I\3I\3J\5J"+ - "\u0811\nJ\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\5J\u0823\nJ"+ - "\5J\u0825\nJ\3J\5J\u0828\nJ\3K\3K\3K\3K\3L\3L\3L\7L\u0831\nL\fL\16L\u0834"+ - "\13L\3M\3M\3M\3M\7M\u083a\nM\fM\16M\u083d\13M\3M\3M\3N\3N\5N\u0843\nN"+ - "\3O\3O\3O\3O\7O\u0849\nO\fO\16O\u084c\13O\3O\3O\3P\3P\5P\u0852\nP\3Q\3"+ - "Q\5Q\u0856\nQ\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u085e\nQ\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u0866"+ - "\nQ\3Q\3Q\3Q\3Q\5Q\u086c\nQ\3R\3R\3R\3R\7R\u0872\nR\fR\16R\u0875\13R\3"+ - "R\3R\3S\3S\3S\3S\3S\7S\u087e\nS\fS\16S\u0881\13S\5S\u0883\nS\3S\3S\3S"+ - "\3T\5T\u0889\nT\3T\3T\5T\u088d\nT\5T\u088f\nT\3U\3U\3U\3U\3U\3U\3U\5U"+ - "\u0898\nU\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\5U\u08a4\nU\5U\u08a6\nU\3U\3U"+ - "\3U\3U\3U\5U\u08ad\nU\3U\3U\3U\3U\3U\5U\u08b4\nU\3U\3U\3U\3U\5U\u08ba"+ - "\nU\3U\3U\3U\3U\5U\u08c0\nU\5U\u08c2\nU\3V\3V\3V\7V\u08c7\nV\fV\16V\u08ca"+ - "\13V\3W\3W\3W\7W\u08cf\nW\fW\16W\u08d2\13W\3X\3X\3X\5X\u08d7\nX\3X\3X"+ - "\3Y\3Y\3Y\5Y\u08de\nY\3Y\3Y\3Z\3Z\5Z\u08e4\nZ\3Z\3Z\5Z\u08e8\nZ\5Z\u08ea"+ - "\nZ\3[\3[\3[\7[\u08ef\n[\f[\16[\u08f2\13[\3\\\3\\\3\\\3\\\7\\\u08f8\n"+ - "\\\f\\\16\\\u08fb\13\\\3\\\3\\\3]\3]\3]\3]\3]\3]\7]\u0905\n]\f]\16]\u0908"+ - "\13]\3]\3]\5]\u090c\n]\3^\3^\5^\u0910\n^\3_\3_\3`\3`\3`\3`\3`\3`\3`\3"+ - "`\3`\3`\5`\u091e\n`\5`\u0920\n`\3`\3`\3`\3`\3`\3`\7`\u0928\n`\f`\16`\u092b"+ - "\13`\3a\5a\u092e\na\3a\3a\3a\3a\3a\3a\5a\u0936\na\3a\3a\3a\3a\3a\7a\u093d"+ - "\na\fa\16a\u0940\13a\3a\3a\3a\5a\u0945\na\3a\3a\3a\3a\3a\3a\5a\u094d\n"+ - "a\3a\3a\3a\5a\u0952\na\3a\3a\3a\3a\3a\3a\3a\3a\7a\u095c\na\fa\16a\u095f"+ - "\13a\3a\3a\5a\u0963\na\3a\5a\u0966\na\3a\3a\3a\3a\5a\u096c\na\3a\3a\5"+ - "a\u0970\na\3a\3a\3a\5a\u0975\na\3a\3a\3a\5a\u097a\na\3a\3a\3a\5a\u097f"+ - "\na\3b\3b\3b\3b\5b\u0985\nb\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b"+ - "\3b\3b\3b\3b\3b\7b\u099a\nb\fb\16b\u099d\13b\3c\3c\3c\3c\6c\u09a3\nc\r"+ - "c\16c\u09a4\3c\3c\5c\u09a9\nc\3c\3c\3c\3c\3c\6c\u09b0\nc\rc\16c\u09b1"+ - "\3c\3c\5c\u09b6\nc\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\7c\u09c6"+ - "\nc\fc\16c\u09c9\13c\5c\u09cb\nc\3c\3c\3c\3c\3c\3c\5c\u09d3\nc\3c\3c\3"+ - "c\3c\3c\3c\3c\5c\u09dc\nc\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3"+ - "c\3c\3c\3c\3c\6c\u09f1\nc\rc\16c\u09f2\3c\3c\3c\3c\3c\3c\3c\3c\3c\5c\u09fe"+ - "\nc\3c\3c\3c\7c\u0a03\nc\fc\16c\u0a06\13c\5c\u0a08\nc\3c\3c\3c\3c\3c\3"+ - "c\3c\5c\u0a11\nc\3c\3c\5c\u0a15\nc\3c\3c\3c\3c\3c\3c\3c\3c\6c\u0a1f\n"+ - "c\rc\16c\u0a20\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3"+ - "c\3c\3c\3c\3c\5c\u0a3a\nc\3c\3c\3c\3c\3c\5c\u0a41\nc\3c\5c\u0a44\nc\3"+ - "c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\5c\u0a53\nc\3c\3c\5c\u0a57\nc\3"+ - "c\3c\3c\3c\3c\3c\3c\3c\7c\u0a61\nc\fc\16c\u0a64\13c\3d\3d\3d\3d\3d\3d"+ - "\3d\3d\6d\u0a6e\nd\rd\16d\u0a6f\5d\u0a72\nd\3e\3e\3f\3f\3g\3g\3h\3h\3"+ - "i\3i\3i\5i\u0a7f\ni\3j\3j\5j\u0a83\nj\3k\3k\3k\6k\u0a88\nk\rk\16k\u0a89"+ - "\3l\3l\3l\5l\u0a8f\nl\3m\3m\3m\3m\3m\3n\5n\u0a97\nn\3n\3n\5n\u0a9b\nn"+ - "\3o\3o\3o\3o\3o\3o\3o\5o\u0aa4\no\3p\3p\3p\5p\u0aa9\np\3q\3q\3q\3q\3q"+ - "\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\5q\u0aba\nq\3q\3q\5q\u0abe\nq\3q\3q\3q"+ - "\3q\3q\7q\u0ac5\nq\fq\16q\u0ac8\13q\3q\5q\u0acb\nq\5q\u0acd\nq\3r\3r\3"+ - "r\7r\u0ad2\nr\fr\16r\u0ad5\13r\3s\3s\3s\3s\5s\u0adb\ns\3s\5s\u0ade\ns"+ - "\3s\5s\u0ae1\ns\3t\3t\3t\7t\u0ae6\nt\ft\16t\u0ae9\13t\3u\3u\3u\3u\5u\u0aef"+ - "\nu\3u\5u\u0af2\nu\3v\3v\3v\7v\u0af7\nv\fv\16v\u0afa\13v\3w\3w\3w\3w\3"+ - "w\5w\u0b01\nw\3w\5w\u0b04\nw\3x\3x\3x\3x\3x\3y\3y\3y\3y\7y\u0b0f\ny\f"+ - "y\16y\u0b12\13y\3z\3z\3z\3z\3{\3{\3{\3{\3{\3{\3{\3{\3{\3{\3{\7{\u0b23"+ - "\n{\f{\16{\u0b26\13{\3{\3{\3{\3{\3{\7{\u0b2d\n{\f{\16{\u0b30\13{\5{\u0b32"+ - "\n{\3{\3{\3{\3{\3{\7{\u0b39\n{\f{\16{\u0b3c\13{\5{\u0b3e\n{\5{\u0b40\n"+ - "{\3{\5{\u0b43\n{\3{\5{\u0b46\n{\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3"+ - "|\3|\3|\3|\5|\u0b58\n|\3}\3}\3}\3}\3}\3}\3}\5}\u0b61\n}\3~\3~\3~\7~\u0b66"+ - "\n~\f~\16~\u0b69\13~\3\177\3\177\3\177\3\177\5\177\u0b6f\n\177\3\u0080"+ - "\3\u0080\3\u0080\7\u0080\u0b74\n\u0080\f\u0080\16\u0080\u0b77\13\u0080"+ - "\3\u0081\3\u0081\3\u0081\3\u0082\3\u0082\6\u0082\u0b7e\n\u0082\r\u0082"+ - "\16\u0082\u0b7f\3\u0082\5\u0082\u0b83\n\u0082\3\u0083\3\u0083\3\u0083"+ - "\5\u0083\u0b88\n\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084"+ - "\5\u0084\u0b90\n\u0084\3\u0085\3\u0085\3\u0086\3\u0086\5\u0086\u0b96\n"+ - "\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u0b9b\n\u0086\3\u0086\3\u0086\3"+ - "\u0086\5\u0086\u0ba0\n\u0086\3\u0086\3\u0086\5\u0086\u0ba4\n\u0086\3\u0086"+ - "\3\u0086\5\u0086\u0ba8\n\u0086\3\u0086\3\u0086\5\u0086\u0bac\n\u0086\3"+ - "\u0086\3\u0086\5\u0086\u0bb0\n\u0086\3\u0086\3\u0086\5\u0086\u0bb4\n\u0086"+ - "\3\u0086\3\u0086\5\u0086\u0bb8\n\u0086\3\u0086\5\u0086\u0bbb\n\u0086\3"+ - "\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0bc4\n"+ - "\u0087\3\u0088\3\u0088\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\7\u03a9"+ - "\u03e7\u03f1\u03f8\u0400\6R\u00be\u00c2\u00c4\u008b\2\4\6\b\n\f\16\20"+ - "\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhj"+ - "lnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092"+ - "\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa"+ - "\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2"+ - "\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da"+ - "\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2"+ - "\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a"+ - "\u010c\u010e\u0110\u0112\2,\4\2CC\u00b6\u00b6\4\2\"\"\u00c4\u00c4\4\2"+ - "AA\u0098\u0098\4\2ffss\3\2-.\4\2\u00e5\u00e5\u0103\u0103\4\2\21\21%%\7"+ - "\2**\66\66XXee\u008f\u008f\3\2GH\4\2XXee\4\2\u009c\u009c\u011d\u011d\4"+ - "\2\16\16\u0089\u0089\5\2@@\u0097\u0097\u00ce\u00ce\6\2SSzz\u00d7\u00d7"+ - "\u00f9\u00f9\5\2SS\u00d7\u00d7\u00f9\u00f9\4\2\31\31GG\4\2``\u0081\u0081"+ - "\4\2\20\20LL\4\2\u0121\u0121\u0123\u0123\5\2\20\20\25\25\u00db\u00db\5"+ - "\2[[\u00f3\u00f3\u00fb\u00fb\4\2\u0112\u0113\u0118\u0118\3\2\u0114\u0117"+ - "\4\2\u0112\u0113\u011b\u011b\4\2;;==\3\2\u00e3\u00e4\4\2\6\6ff\4\2\6\6"+ - "bb\5\2\35\35\u0084\u0084\u00ee\u00ee\3\2\u010a\u0111\3\2\u0112\u011c\6"+ - "\2\23\23ss\u009b\u009b\u00a3\u00a3\4\2[[\u00f3\u00f3\3\2\u0112\u0113\4"+ - "\2MM\u00ac\u00ac\4\2\u00a4\u00a4\u00dc\u00dc\4\2aa\u00b3\u00b3\3\2\u0122"+ - "\u0123\4\2NN\u00d6\u00d6\65\2\16\17\21\22\26\27\31\32\34\34\36\"%%\'*"+ - ",,.\64\66\669:?ACKMNRRTZ]]_adehjmmprtuwy{{~~\u0080\u0083\u0086\u0093\u0096"+ - "\u0098\u009a\u009a\u009d\u009e\u00a1\u00a2\u00a5\u00a5\u00a7\u00a8\u00aa"+ - "\u00b3\u00b5\u00bd\u00bf\u00c5\u00c7\u00ce\u00d2\u00d4\u00d6\u00d6\u00d8"+ - "\u00da\u00dc\u00e4\u00e6\u00ea\u00ed\u00ed\u00ef\u00f4\u00f6\u00f8\u00fc"+ - "\u00ff\u0102\u0104\u0107\u0107\u0117\u0117\21\2\24\2488SSggvvzz\177\177"+ - "\u0085\u0085\u0099\u0099\u009f\u009f\u00c6\u00c6\u00d1\u00d1\u00d7\u00d7"+ - "\u00f9\u00f9\u0101\u0101\23\2\16\23\25\679RTfhuwy{~\u0080\u0084\u0086"+ - "\u0098\u009a\u009e\u00a0\u00c5\u00c7\u00d0\u00d2\u00d6\u00d8\u00f8\u00fa"+ - "\u0100\u0102\u0109\u0117\u0117\2\u0da4\2\u0114\3\2\2\2\4\u011d\3\2\2\2"+ - "\6\u0120\3\2\2\2\b\u0123\3\2\2\2\n\u0126\3\2\2\2\f\u0129\3\2\2\2\16\u012c"+ - "\3\2\2\2\20\u0403\3\2\2\2\22\u04ad\3\2\2\2\24\u04af\3\2\2\2\26\u04c0\3"+ - "\2\2\2\30\u04c6\3\2\2\2\32\u04d2\3\2\2\2\34\u04df\3\2\2\2\36\u04e2\3\2"+ - "\2\2 \u04e6\3\2\2\2\"\u0522\3\2\2\2$\u0524\3\2\2\2&\u0528\3\2\2\2(\u0534"+ - "\3\2\2\2*\u0539\3\2\2\2,\u0540\3\2\2\2.\u0542\3\2\2\2\60\u054a\3\2\2\2"+ - "\62\u0553\3\2\2\2\64\u055e\3\2\2\2\66\u056d\3\2\2\28\u0570\3\2\2\2:\u057b"+ - "\3\2\2\2<\u058b\3\2\2\2>\u0591\3\2\2\2@\u0593\3\2\2\2B\u059e\3\2\2\2D"+ - "\u05af\3\2\2\2F\u05b6\3\2\2\2H\u05b8\3\2\2\2J\u05be\3\2\2\2L\u05f4\3\2"+ - "\2\2N\u0600\3\2\2\2P\u0630\3\2\2\2R\u0633\3\2\2\2T\u0659\3\2\2\2V\u065b"+ - "\3\2\2\2X\u0663\3\2\2\2Z\u0684\3\2\2\2\\\u06a3\3\2\2\2^\u06af\3\2\2\2"+ - "`\u06cf\3\2\2\2b\u06db\3\2\2\2d\u06de\3\2\2\2f\u06e7\3\2\2\2h\u06f8\3"+ - "\2\2\2j\u070c\3\2\2\2l\u070e\3\2\2\2n\u0716\3\2\2\2p\u071a\3\2\2\2r\u071d"+ - "\3\2\2\2t\u0720\3\2\2\2v\u073a\3\2\2\2x\u073c\3\2\2\2z\u077a\3\2\2\2|"+ - "\u0789\3\2\2\2~\u078b\3\2\2\2\u0080\u07a9\3\2\2\2\u0082\u07ab\3\2\2\2"+ - "\u0084\u07b2\3\2\2\2\u0086\u07d2\3\2\2\2\u0088\u07d4\3\2\2\2\u008a\u07e6"+ - "\3\2\2\2\u008c\u0800\3\2\2\2\u008e\u0806\3\2\2\2\u0090\u0808\3\2\2\2\u0092"+ - "\u0827\3\2\2\2\u0094\u0829\3\2\2\2\u0096\u082d\3\2\2\2\u0098\u0835\3\2"+ - "\2\2\u009a\u0840\3\2\2\2\u009c\u0844\3\2\2\2\u009e\u084f\3\2\2\2\u00a0"+ - "\u086b\3\2\2\2\u00a2\u086d\3\2\2\2\u00a4\u0878\3\2\2\2\u00a6\u088e\3\2"+ - "\2\2\u00a8\u08c1\3\2\2\2\u00aa\u08c3\3\2\2\2\u00ac\u08cb\3\2\2\2\u00ae"+ - "\u08d6\3\2\2\2\u00b0\u08dd\3\2\2\2\u00b2\u08e1\3\2\2\2\u00b4\u08eb\3\2"+ - "\2\2\u00b6\u08f3\3\2\2\2\u00b8\u090b\3\2\2\2\u00ba\u090f\3\2\2\2\u00bc"+ - "\u0911\3\2\2\2\u00be\u091f\3\2\2\2\u00c0\u097e\3\2\2\2\u00c2\u0984\3\2"+ - "\2\2\u00c4\u0a56\3\2\2\2\u00c6\u0a71\3\2\2\2\u00c8\u0a73\3\2\2\2\u00ca"+ - "\u0a75\3\2\2\2\u00cc\u0a77\3\2\2\2\u00ce\u0a79\3\2\2\2\u00d0\u0a7b\3\2"+ - "\2\2\u00d2\u0a80\3\2\2\2\u00d4\u0a87\3\2\2\2\u00d6\u0a8b\3\2\2\2\u00d8"+ - "\u0a90\3\2\2\2\u00da\u0a9a\3\2\2\2\u00dc\u0aa3\3\2\2\2\u00de\u0aa8\3\2"+ - "\2\2\u00e0\u0acc\3\2\2\2\u00e2\u0ace\3\2\2\2\u00e4\u0ad6\3\2\2\2\u00e6"+ - "\u0ae2\3\2\2\2\u00e8\u0aea\3\2\2\2\u00ea\u0af3\3\2\2\2\u00ec\u0afb\3\2"+ - "\2\2\u00ee\u0b05\3\2\2\2\u00f0\u0b0a\3\2\2\2\u00f2\u0b13\3\2\2\2\u00f4"+ - "\u0b45\3\2\2\2\u00f6\u0b57\3\2\2\2\u00f8\u0b60\3\2\2\2\u00fa\u0b62\3\2"+ - "\2\2\u00fc\u0b6e\3\2\2\2\u00fe\u0b70\3\2\2\2\u0100\u0b78\3\2\2\2\u0102"+ - "\u0b82\3\2\2\2\u0104\u0b87\3\2\2\2\u0106\u0b8f\3\2\2\2\u0108\u0b91\3\2"+ - "\2\2\u010a\u0bba\3\2\2\2\u010c\u0bc3\3\2\2\2\u010e\u0bc5\3\2\2\2\u0110"+ - "\u0bc7\3\2\2\2\u0112\u0bc9\3\2\2\2\u0114\u0118\5\20\t\2\u0115\u0117\7"+ - "\3\2\2\u0116\u0115\3\2\2\2\u0117\u011a\3\2\2\2\u0118\u0116\3\2\2\2\u0118"+ - "\u0119\3\2\2\2\u0119\u011b\3\2\2\2\u011a\u0118\3\2\2\2\u011b\u011c\7\2"+ - "\2\3\u011c\3\3\2\2\2\u011d\u011e\5\u00b2Z\2\u011e\u011f\7\2\2\3\u011f"+ - "\5\3\2\2\2\u0120\u0121\5\u00aeX\2\u0121\u0122\7\2\2\3\u0122\7\3\2\2\2"+ - "\u0123\u0124\5\u00acW\2\u0124\u0125\7\2\2\3\u0125\t\3\2\2\2\u0126\u0127"+ - "\5\u00b0Y\2\u0127\u0128\7\2\2\3\u0128\13\3\2\2\2\u0129\u012a\5\u00e0q"+ - "\2\u012a\u012b\7\2\2\3\u012b\r\3\2\2\2\u012c\u012d\5\u00e6t\2\u012d\u012e"+ - "\7\2\2\3\u012e\17\3\2\2\2\u012f\u0404\5 \21\2\u0130\u0132\5\60\31\2\u0131"+ - "\u0130\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0404\5L"+ - "\'\2\u0134\u0136\7\u00ff\2\2\u0135\u0137\7\u0097\2\2\u0136\u0135\3\2\2"+ - "\2\u0136\u0137\3\2\2\2\u0137\u0138\3\2\2\2\u0138\u0404\5\u00acW\2\u0139"+ - "\u013a\7\67\2\2\u013a\u013e\5*\26\2\u013b\u013c\7p\2\2\u013c\u013d\7\u009b"+ - "\2\2\u013d\u013f\7U\2\2\u013e\u013b\3\2\2\2\u013e\u013f\3\2\2\2\u013f"+ - "\u0140\3\2\2\2\u0140\u0148\5\u00acW\2\u0141\u0147\5\36\20\2\u0142\u0147"+ - "\5\34\17\2\u0143\u0144\7\u0108\2\2\u0144\u0145\t\2\2\2\u0145\u0147\58"+ - "\35\2\u0146\u0141\3\2\2\2\u0146\u0142\3\2\2\2\u0146\u0143\3\2\2\2\u0147"+ - "\u014a\3\2\2\2\u0148\u0146\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u0404\3\2"+ - "\2\2\u014a\u0148\3\2\2\2\u014b\u014c\7\21\2\2\u014c\u014d\5*\26\2\u014d"+ - "\u014e\5\u00acW\2\u014e\u014f\7\u00d6\2\2\u014f\u0150\t\2\2\2\u0150\u0151"+ - "\58\35\2\u0151\u0404\3\2\2\2\u0152\u0153\7\21\2\2\u0153\u0154\5*\26\2"+ - "\u0154\u0155\5\u00acW\2\u0155\u0156\7\u00d6\2\2\u0156\u0157\5\34\17\2"+ - "\u0157\u0404\3\2\2\2\u0158\u0159\7N\2\2\u0159\u015c\5*\26\2\u015a\u015b"+ - "\7p\2\2\u015b\u015d\7U\2\2\u015c\u015a\3\2\2\2\u015c\u015d\3\2\2\2\u015d"+ - "\u015e\3\2\2\2\u015e\u0160\5\u00acW\2\u015f\u0161\t\3\2\2\u0160\u015f"+ - "\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0404\3\2\2\2\u0162\u0163\7\u00d9\2"+ - "\2\u0163\u0166\t\4\2\2\u0164\u0165\t\5\2\2\u0165\u0167\5\u00acW\2\u0166"+ - "\u0164\3\2\2\2\u0166\u0167\3\2\2\2\u0167\u016c\3\2\2\2\u0168\u016a\7\u0086"+ - "\2\2\u0169\u0168\3\2\2\2\u0169\u016a\3\2\2\2\u016a\u016b\3\2\2\2\u016b"+ - "\u016d\7\u011d\2\2\u016c\u0169\3\2\2\2\u016c\u016d\3\2\2\2\u016d\u0404"+ - "\3\2\2\2\u016e\u016f\6\t\2\2\u016f\u0174\5\24\13\2\u0170\u0171\7\4\2\2"+ - "\u0171\u0172\5\u00e6t\2\u0172\u0173\7\5\2\2\u0173\u0175\3\2\2\2\u0174"+ - "\u0170\3\2\2\2\u0174\u0175\3\2\2\2\u0175\u0177\3\2\2\2\u0176\u0178\5\64"+ - "\33\2\u0177\u0176\3\2\2\2\u0177\u0178\3\2\2\2\u0178\u0179\3\2\2\2\u0179"+ - "\u017e\5\66\34\2\u017a\u017c\7\30\2\2\u017b\u017a\3\2\2\2\u017b\u017c"+ - "\3\2\2\2\u017c\u017d\3\2\2\2\u017d\u017f\5 \21\2\u017e\u017b\3\2\2\2\u017e"+ - "\u017f\3\2\2\2\u017f\u0404\3\2\2\2\u0180\u0181\6\t\3\2\u0181\u0186\5\24"+ - "\13\2\u0182\u0183\7\4\2\2\u0183\u0184\5\u00e6t\2\u0184\u0185\7\5\2\2\u0185"+ - "\u0187\3\2\2\2\u0186\u0182\3\2\2\2\u0186\u0187\3\2\2\2\u0187\u0188\3\2"+ - "\2\2\u0188\u0189\5\64\33\2\u0189\u018e\5\66\34\2\u018a\u018c\7\30\2\2"+ - "\u018b\u018a\3\2\2\2\u018b\u018c\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018f"+ - "\5 \21\2\u018e\u018b\3\2\2\2\u018e\u018f\3\2\2\2\u018f\u0404\3\2\2\2\u0190"+ - "\u0195\5\24\13\2\u0191\u0192\7\4\2\2\u0192\u0193\5\u00e6t\2\u0193\u0194"+ - "\7\5\2\2\u0194\u0196\3\2\2\2\u0195\u0191\3\2\2\2\u0195\u0196\3\2\2\2\u0196"+ - "\u01ac\3\2\2\2\u0197\u01ab\5\36\20\2\u0198\u0199\7\u00ad\2\2\u0199\u019a"+ - "\7 \2\2\u019a\u019b\7\4\2\2\u019b\u019c\5\u00e6t\2\u019c\u019d\7\5\2\2"+ - "\u019d\u01a2\3\2\2\2\u019e\u019f\7\u00ad\2\2\u019f\u01a0\7 \2\2\u01a0"+ - "\u01a2\5\u0094K\2\u01a1\u0198\3\2\2\2\u01a1\u019e\3\2\2\2\u01a2\u01ab"+ - "\3\2\2\2\u01a3\u01ab\5\30\r\2\u01a4\u01ab\5\32\16\2\u01a5\u01ab\5\u00a8"+ - "U\2\u01a6\u01ab\5D#\2\u01a7\u01ab\5\34\17\2\u01a8\u01a9\7\u00e8\2\2\u01a9"+ - "\u01ab\58\35\2\u01aa\u0197\3\2\2\2\u01aa\u01a1\3\2\2\2\u01aa\u01a3\3\2"+ - "\2\2\u01aa\u01a4\3\2\2\2\u01aa\u01a5\3\2\2\2\u01aa\u01a6\3\2\2\2\u01aa"+ - "\u01a7\3\2\2\2\u01aa\u01a8\3\2\2\2\u01ab\u01ae\3\2\2\2\u01ac\u01aa\3\2"+ - "\2\2\u01ac\u01ad\3\2\2\2\u01ad\u01b3\3\2\2\2\u01ae\u01ac\3\2\2\2\u01af"+ - "\u01b1\7\30\2\2\u01b0\u01af\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\u01b2\3"+ - "\2\2\2\u01b2\u01b4\5 \21\2\u01b3\u01b0\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4"+ - "\u0404\3\2\2\2\u01b5\u01b6\7\67\2\2\u01b6\u01ba\7\u00e5\2\2\u01b7\u01b8"+ - "\7p\2\2\u01b8\u01b9\7\u009b\2\2\u01b9\u01bb\7U\2\2\u01ba\u01b7\3\2\2\2"+ - "\u01ba\u01bb\3\2\2\2\u01bb\u01bc\3\2\2\2\u01bc\u01bd\5\u00aeX\2\u01bd"+ - "\u01be\7\u0086\2\2\u01be\u01c7\5\u00aeX\2\u01bf\u01c6\5\64\33\2\u01c0"+ - "\u01c6\5\u00a8U\2\u01c1\u01c6\5D#\2\u01c2\u01c6\5\34\17\2\u01c3\u01c4"+ - "\7\u00e8\2\2\u01c4\u01c6\58\35\2\u01c5\u01bf\3\2\2\2\u01c5\u01c0\3\2\2"+ - "\2\u01c5\u01c1\3\2\2\2\u01c5\u01c2\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c6\u01c9"+ - "\3\2\2\2\u01c7\u01c5\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8\u0404\3\2\2\2\u01c9"+ - "\u01c7\3\2\2\2\u01ca\u01cf\5\26\f\2\u01cb\u01cc\7\4\2\2\u01cc\u01cd\5"+ - "\u00e6t\2\u01cd\u01ce\7\5\2\2\u01ce\u01d0\3\2\2\2\u01cf\u01cb\3\2\2\2"+ - "\u01cf\u01d0\3\2\2\2\u01d0\u01d1\3\2\2\2\u01d1\u01d2\5\64\33\2\u01d2\u01d7"+ - "\5\66\34\2\u01d3\u01d5\7\30\2\2\u01d4\u01d3\3\2\2\2\u01d4\u01d5\3\2\2"+ - "\2\u01d5\u01d6\3\2\2\2\u01d6\u01d8\5 \21\2\u01d7\u01d4\3\2\2\2\u01d7\u01d8"+ - "\3\2\2\2\u01d8\u0404\3\2\2\2\u01d9\u01da\7\22\2\2\u01da\u01db\7\u00e5"+ - "\2\2\u01db\u01dd\5\u00acW\2\u01dc\u01de\5&\24\2\u01dd\u01dc\3\2\2\2\u01dd"+ - "\u01de\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01e0\7\63\2\2\u01e0\u01e8\7"+ - "\u00df\2\2\u01e1\u01e9\5\u0104\u0083\2\u01e2\u01e3\7b\2\2\u01e3\u01e4"+ - "\7.\2\2\u01e4\u01e9\5\u0096L\2\u01e5\u01e6\7b\2\2\u01e6\u01e7\7\20\2\2"+ - "\u01e7\u01e9\7.\2\2\u01e8\u01e1\3\2\2\2\u01e8\u01e2\3\2\2\2\u01e8\u01e5"+ - "\3\2\2\2\u01e8\u01e9\3\2\2\2\u01e9\u0404\3\2\2\2\u01ea\u01eb\7\21\2\2"+ - "\u01eb\u01ec\7\u00e5\2\2\u01ec\u01ed\5\u00acW\2\u01ed\u01ee\7\16\2\2\u01ee"+ - "\u01ef\t\6\2\2\u01ef\u01f0\5\u00e2r\2\u01f0\u0404\3\2\2\2\u01f1\u01f2"+ - "\7\21\2\2\u01f2\u01f3\7\u00e5\2\2\u01f3\u01f4\5\u00acW\2\u01f4\u01f5\7"+ - "\16\2\2\u01f5\u01f6\t\6\2\2\u01f6\u01f7\7\4\2\2\u01f7\u01f8\5\u00e2r\2"+ - "\u01f8\u01f9\7\5\2\2\u01f9\u0404\3\2\2\2\u01fa\u01fb\7\21\2\2\u01fb\u01fc"+ - "\7\u00e5\2\2\u01fc\u01fd\5\u00acW\2\u01fd\u01fe\7\u00c0\2\2\u01fe\u01ff"+ - "\7-\2\2\u01ff\u0200\5\u00acW\2\u0200\u0201\7\u00ec\2\2\u0201\u0202\5\u0100"+ - "\u0081\2\u0202\u0404\3\2\2\2\u0203\u0204\7\21\2\2\u0204\u0205\7\u00e5"+ - "\2\2\u0205\u0206\5\u00acW\2\u0206\u0207\7N\2\2\u0207\u0208\t\6\2\2\u0208"+ - "\u0209\7\4\2\2\u0209\u020a\5\u00aaV\2\u020a\u020b\7\5\2\2\u020b\u0404"+ - "\3\2\2\2\u020c\u020d\7\21\2\2\u020d\u020e\7\u00e5\2\2\u020e\u020f\5\u00ac"+ - "W\2\u020f\u0210\7N\2\2\u0210\u0211\t\6\2\2\u0211\u0212\5\u00aaV\2\u0212"+ - "\u0404\3\2\2\2\u0213\u0214\7\21\2\2\u0214\u0215\t\7\2\2\u0215\u0216\5"+ - "\u00acW\2\u0216\u0217\7\u00c0\2\2\u0217\u0218\7\u00ec\2\2\u0218\u0219"+ - "\5\u00acW\2\u0219\u0404\3\2\2\2\u021a\u021b\7\21\2\2\u021b\u021c\t\7\2"+ - "\2\u021c\u021d\5\u00acW\2\u021d\u021e\7\u00d6\2\2\u021e\u021f\7\u00e8"+ - "\2\2\u021f\u0220\58\35\2\u0220\u0404\3\2\2\2\u0221\u0222\7\21\2\2\u0222"+ - "\u0223\t\7\2\2\u0223\u0224\5\u00acW\2\u0224\u0225\7\u00fd\2\2\u0225\u0228"+ - "\7\u00e8\2\2\u0226\u0227\7p\2\2\u0227\u0229\7U\2\2\u0228\u0226\3\2\2\2"+ - "\u0228\u0229\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\58\35\2\u022b\u0404"+ - "\3\2\2\2\u022c\u022d\7\21\2\2\u022d\u022e\7\u00e5\2\2\u022e\u022f\5\u00ac"+ - "W\2\u022f\u0231\t\b\2\2\u0230\u0232\7-\2\2\u0231\u0230\3\2\2\2\u0231\u0232"+ - "\3\2\2\2\u0232\u0233\3\2\2\2\u0233\u0235\5\u00acW\2\u0234\u0236\5\u010c"+ - "\u0087\2\u0235\u0234\3\2\2\2\u0235\u0236\3\2\2\2\u0236\u0404\3\2\2\2\u0237"+ - "\u0238\7\21\2\2\u0238\u0239\7\u00e5\2\2\u0239\u023b\5\u00acW\2\u023a\u023c"+ - "\5&\24\2\u023b\u023a\3\2\2\2\u023b\u023c\3\2\2\2\u023c\u023d\3\2\2\2\u023d"+ - "\u023f\7%\2\2\u023e\u0240\7-\2\2\u023f\u023e\3\2\2\2\u023f\u0240\3\2\2"+ - "\2\u0240\u0241\3\2\2\2\u0241\u0242\5\u00acW\2\u0242\u0244\5\u00e8u\2\u0243"+ - "\u0245\5\u00dep\2\u0244\u0243\3\2\2\2\u0244\u0245\3\2\2\2\u0245\u0404"+ - "\3\2\2\2\u0246\u0247\7\21\2\2\u0247\u0248\7\u00e5\2\2\u0248\u024a\5\u00ac"+ - "W\2\u0249\u024b\5&\24\2\u024a\u0249\3\2\2\2\u024a\u024b\3\2\2\2\u024b"+ - "\u024c\3\2\2\2\u024c\u024d\7\u00c2\2\2\u024d\u024e\7.\2\2\u024e\u024f"+ - "\7\4\2\2\u024f\u0250\5\u00e2r\2\u0250\u0251\7\5\2\2\u0251\u0404\3\2\2"+ - "\2\u0252\u0253\7\21\2\2\u0253\u0254\7\u00e5\2\2\u0254\u0256\5\u00acW\2"+ - "\u0255\u0257\5&\24\2\u0256\u0255\3\2\2\2\u0256\u0257\3\2\2\2\u0257\u0258"+ - "\3\2\2\2\u0258\u0259\7\u00d6\2\2\u0259\u025a\7\u00d3\2\2\u025a\u025e\7"+ - "\u011d\2\2\u025b\u025c\7\u0108\2\2\u025c\u025d\7\u00d4\2\2\u025d\u025f"+ - "\58\35\2\u025e\u025b\3\2\2\2\u025e\u025f\3\2\2\2\u025f\u0404\3\2\2\2\u0260"+ - "\u0261\7\21\2\2\u0261\u0262\7\u00e5\2\2\u0262\u0264\5\u00acW\2\u0263\u0265"+ - "\5&\24\2\u0264\u0263\3\2\2\2\u0264\u0265\3\2\2\2\u0265\u0266\3\2\2\2\u0266"+ - "\u0267\7\u00d6\2\2\u0267\u0268\7\u00d4\2\2\u0268\u0269\58\35\2\u0269\u0404"+ - "\3\2\2\2\u026a\u026b\7\21\2\2\u026b\u026c\t\7\2\2\u026c\u026d\5\u00ac"+ - "W\2\u026d\u0271\7\16\2\2\u026e\u026f\7p\2\2\u026f\u0270\7\u009b\2\2\u0270"+ - "\u0272\7U\2\2\u0271\u026e\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u0274\3\2"+ - "\2\2\u0273\u0275\5$\23\2\u0274\u0273\3\2\2\2\u0275\u0276\3\2\2\2\u0276"+ - "\u0274\3\2\2\2\u0276\u0277\3\2\2\2\u0277\u0404\3\2\2\2\u0278\u0279\7\21"+ - "\2\2\u0279\u027a\7\u00e5\2\2\u027a\u027b\5\u00acW\2\u027b\u027c\5&\24"+ - "\2\u027c\u027d\7\u00c0\2\2\u027d\u027e\7\u00ec\2\2\u027e\u027f\5&\24\2"+ - "\u027f\u0404\3\2\2\2\u0280\u0281\7\21\2\2\u0281\u0282\t\7\2\2\u0282\u0283"+ - "\5\u00acW\2\u0283\u0286\7N\2\2\u0284\u0285\7p\2\2\u0285\u0287\7U\2\2\u0286"+ - "\u0284\3\2\2\2\u0286\u0287\3\2\2\2\u0287\u0288\3\2\2\2\u0288\u028d\5&"+ - "\24\2\u0289\u028a\7\6\2\2\u028a\u028c\5&\24\2\u028b\u0289\3\2\2\2\u028c"+ - "\u028f\3\2\2\2\u028d\u028b\3\2\2\2\u028d\u028e\3\2\2\2\u028e\u0291\3\2"+ - "\2\2\u028f\u028d\3\2\2\2\u0290\u0292\7\u00b7\2\2\u0291\u0290\3\2\2\2\u0291"+ - "\u0292\3\2\2\2\u0292\u0404\3\2\2\2\u0293\u0294\7\21\2\2\u0294\u0295\7"+ - "\u00e5\2\2\u0295\u0297\5\u00acW\2\u0296\u0298\5&\24\2\u0297\u0296\3\2"+ - "\2\2\u0297\u0298\3\2\2\2\u0298\u0299\3\2\2\2\u0299\u029a\7\u00d6\2\2\u029a"+ - "\u029b\5\34\17\2\u029b\u0404\3\2\2\2\u029c\u029d\7\21\2\2\u029d\u029e"+ - "\7\u00e5\2\2\u029e\u029f\5\u00acW\2\u029f\u02a0\7\u00bc\2\2\u02a0\u02a1"+ - "\7\u00ae\2\2\u02a1\u0404\3\2\2\2\u02a2\u02a3\7N\2\2\u02a3\u02a6\7\u00e5"+ - "\2\2\u02a4\u02a5\7p\2\2\u02a5\u02a7\7U\2\2\u02a6\u02a4\3\2\2\2\u02a6\u02a7"+ - "\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02aa\5\u00acW\2\u02a9\u02ab\7\u00b7"+ - "\2\2\u02aa\u02a9\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\u0404\3\2\2\2\u02ac"+ - "\u02ad\7N\2\2\u02ad\u02b0\7\u0103\2\2\u02ae\u02af\7p\2\2\u02af\u02b1\7"+ - "U\2\2\u02b0\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2"+ - "\u0404\5\u00acW\2\u02b3\u02b6\7\67\2\2\u02b4\u02b5\7\u00a3\2\2\u02b5\u02b7"+ - "\7\u00c2\2\2\u02b6\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02bc\3\2\2"+ - "\2\u02b8\u02ba\7j\2\2\u02b9\u02b8\3\2\2\2\u02b9\u02ba\3\2\2\2\u02ba\u02bb"+ - "\3\2\2\2\u02bb\u02bd\7\u00e9\2\2\u02bc\u02b9\3\2\2\2\u02bc\u02bd\3\2\2"+ - "\2\u02bd\u02be\3\2\2\2\u02be\u02c2\7\u0103\2\2\u02bf\u02c0\7p\2\2\u02c0"+ - "\u02c1\7\u009b\2\2\u02c1\u02c3\7U\2\2\u02c2\u02bf\3\2\2\2\u02c2\u02c3"+ - "\3\2\2\2\u02c3\u02c4\3\2\2\2\u02c4\u02c6\5\u00acW\2\u02c5\u02c7\5\u009c"+ - "O\2\u02c6\u02c5\3\2\2\2\u02c6\u02c7\3\2\2\2\u02c7\u02d0\3\2\2\2\u02c8"+ - "\u02cf\5\36\20\2\u02c9\u02ca\7\u00ad\2\2\u02ca\u02cb\7\u009f\2\2\u02cb"+ - "\u02cf\5\u0094K\2\u02cc\u02cd\7\u00e8\2\2\u02cd\u02cf\58\35\2\u02ce\u02c8"+ - "\3\2\2\2\u02ce\u02c9\3\2\2\2\u02ce\u02cc\3\2\2\2\u02cf\u02d2\3\2\2\2\u02d0"+ - "\u02ce\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02d3\3\2\2\2\u02d2\u02d0\3\2"+ - "\2\2\u02d3\u02d4\7\30\2\2\u02d4\u02d5\5 \21\2\u02d5\u0404\3\2\2\2\u02d6"+ - "\u02d9\7\67\2\2\u02d7\u02d8\7\u00a3\2\2\u02d8\u02da\7\u00c2\2\2\u02d9"+ - "\u02d7\3\2\2\2\u02d9\u02da\3\2\2\2\u02da\u02dc\3\2\2\2\u02db\u02dd\7j"+ - "\2\2\u02dc\u02db\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02de\3\2\2\2\u02de"+ - "\u02df\7\u00e9\2\2\u02df\u02e0\7\u0103\2\2\u02e0\u02e5\5\u00aeX\2\u02e1"+ - "\u02e2\7\4\2\2\u02e2\u02e3\5\u00e6t\2\u02e3\u02e4\7\5\2\2\u02e4\u02e6"+ - "\3\2\2\2\u02e5\u02e1\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7"+ - "\u02ea\5\64\33\2\u02e8\u02e9\7\u00a2\2\2\u02e9\u02eb\58\35\2\u02ea\u02e8"+ - "\3\2\2\2\u02ea\u02eb\3\2\2\2\u02eb\u0404\3\2\2\2\u02ec\u02ed\7\21\2\2"+ - "\u02ed\u02ee\7\u0103\2\2\u02ee\u02f0\5\u00acW\2\u02ef\u02f1\7\30\2\2\u02f0"+ - "\u02ef\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2\u02f3\5 "+ - "\21\2\u02f3\u0404\3\2\2\2\u02f4\u02f7\7\67\2\2\u02f5\u02f6\7\u00a3\2\2"+ - "\u02f6\u02f8\7\u00c2\2\2\u02f7\u02f5\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8"+ - "\u02fa\3\2\2\2\u02f9\u02fb\7\u00e9\2\2\u02fa\u02f9\3\2\2\2\u02fa\u02fb"+ - "\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc\u0300\7h\2\2\u02fd\u02fe\7p\2\2\u02fe"+ - "\u02ff\7\u009b\2\2\u02ff\u0301\7U\2\2\u0300\u02fd\3\2\2\2\u0300\u0301"+ - "\3\2\2\2\u0301\u0302\3\2\2\2\u0302\u0303\5\u00acW\2\u0303\u0304\7\30\2"+ - "\2\u0304\u030e\7\u011d\2\2\u0305\u0306\7\u0101\2\2\u0306\u030b\5J&\2\u0307"+ - "\u0308\7\6\2\2\u0308\u030a\5J&\2\u0309\u0307\3\2\2\2\u030a\u030d\3\2\2"+ - "\2\u030b\u0309\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030f\3\2\2\2\u030d\u030b"+ - "\3\2\2\2\u030e\u0305\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u0404\3\2\2\2\u0310"+ - "\u0312\7N\2\2\u0311\u0313\7\u00e9\2\2\u0312\u0311\3\2\2\2\u0312\u0313"+ - "\3\2\2\2\u0313\u0314\3\2\2\2\u0314\u0317\7h\2\2\u0315\u0316\7p\2\2\u0316"+ - "\u0318\7U\2\2\u0317\u0315\3\2\2\2\u0317\u0318\3\2\2\2\u0318\u0319\3\2"+ - "\2\2\u0319\u0404\5\u00acW\2\u031a\u031c\7V\2\2\u031b\u031d\t\t\2\2\u031c"+ - "\u031b\3\2\2\2\u031c\u031d\3\2\2\2\u031d\u031e\3\2\2\2\u031e\u0404\5\20"+ - "\t\2\u031f\u0320\7\u00d9\2\2\u0320\u0323\7\u00e6\2\2\u0321\u0322\t\5\2"+ - "\2\u0322\u0324\5\u00acW\2\u0323\u0321\3\2\2\2\u0323\u0324\3\2\2\2\u0324"+ - "\u0329\3\2\2\2\u0325\u0327\7\u0086\2\2\u0326\u0325\3\2\2\2\u0326\u0327"+ - "\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u032a\7\u011d\2\2\u0329\u0326\3\2\2"+ - "\2\u0329\u032a\3\2\2\2\u032a\u0404\3\2\2\2\u032b\u032c\7\u00d9\2\2\u032c"+ - "\u032d\7\u00e5\2\2\u032d\u0330\7X\2\2\u032e\u032f\t\5\2\2\u032f\u0331"+ - "\5\u00acW\2\u0330\u032e\3\2\2\2\u0330\u0331\3\2\2\2\u0331\u0332\3\2\2"+ - "\2\u0332\u0333\7\u0086\2\2\u0333\u0335\7\u011d\2\2\u0334\u0336\5&\24\2"+ - "\u0335\u0334\3\2\2\2\u0335\u0336\3\2\2\2\u0336\u0404\3\2\2\2\u0337\u0338"+ - "\7\u00d9\2\2\u0338\u0339\7\u00e8\2\2\u0339\u033e\5\u00acW\2\u033a\u033b"+ - "\7\4\2\2\u033b\u033c\5<\37\2\u033c\u033d\7\5\2\2\u033d\u033f\3\2\2\2\u033e"+ - "\u033a\3\2\2\2\u033e\u033f\3\2\2\2\u033f\u0404\3\2\2\2\u0340\u0341\7\u00d9"+ - "\2\2\u0341\u0342\7.\2\2\u0342\u0343\t\5\2\2\u0343\u0346\5\u00acW\2\u0344"+ - "\u0345\t\5\2\2\u0345\u0347\5\u00acW\2\u0346\u0344\3\2\2\2\u0346\u0347"+ - "\3\2\2\2\u0347\u0404\3\2\2\2\u0348\u0349\7\u00d9\2\2\u0349\u034c\7\u0104"+ - "\2\2\u034a\u034b\t\5\2\2\u034b\u034d\5\u00acW\2\u034c\u034a\3\2\2\2\u034c"+ - "\u034d\3\2\2\2\u034d\u0352\3\2\2\2\u034e\u0350\7\u0086\2\2\u034f\u034e"+ - "\3\2\2\2\u034f\u0350\3\2\2\2\u0350\u0351\3\2\2\2\u0351\u0353\7\u011d\2"+ - "\2\u0352\u034f\3\2\2\2\u0352\u0353\3\2\2\2\u0353\u0404\3\2\2\2\u0354\u0355"+ - "\7\u00d9\2\2\u0355\u0356\7\u00ae\2\2\u0356\u0358\5\u00acW\2\u0357\u0359"+ - "\5&\24\2\u0358\u0357\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u0404\3\2\2\2\u035a"+ - "\u035c\7\u00d9\2\2\u035b\u035d\5\u0104\u0083\2\u035c\u035b\3\2\2\2\u035c"+ - "\u035d\3\2\2\2\u035d\u035e\3\2\2\2\u035e\u0366\7i\2\2\u035f\u0361\7\u0086"+ - "\2\2\u0360\u035f\3\2\2\2\u0360\u0361\3\2\2\2\u0361\u0364\3\2\2\2\u0362"+ - "\u0365\5\u00acW\2\u0363\u0365\7\u011d\2\2\u0364\u0362\3\2\2\2\u0364\u0363"+ - "\3\2\2\2\u0365\u0367\3\2\2\2\u0366\u0360\3\2\2\2\u0366\u0367\3\2\2\2\u0367"+ - "\u0404\3\2\2\2\u0368\u0369\7\u00d9\2\2\u0369\u036a\7\67\2\2\u036a\u036b"+ - "\7\u00e5\2\2\u036b\u036e\5\u00acW\2\u036c\u036d\7\30\2\2\u036d\u036f\7"+ - "\u00d3\2\2\u036e\u036c\3\2\2\2\u036e\u036f\3\2\2\2\u036f\u0404\3\2\2\2"+ - "\u0370\u0371\7\u00d9\2\2\u0371\u0372\7:\2\2\u0372\u0404\7\u0097\2\2\u0373"+ - "\u0374\t\n\2\2\u0374\u0376\7h\2\2\u0375\u0377\7X\2\2\u0376\u0375\3\2\2"+ - "\2\u0376\u0377\3\2\2\2\u0377\u0378\3\2\2\2\u0378\u0404\5,\27\2\u0379\u037a"+ - "\t\n\2\2\u037a\u037c\5*\26\2\u037b\u037d\7X\2\2\u037c\u037b\3\2\2\2\u037c"+ - "\u037d\3\2\2\2\u037d\u037e\3\2\2\2\u037e\u037f\5\u00acW\2\u037f\u0404"+ - "\3\2\2\2\u0380\u0382\t\n\2\2\u0381\u0383\7\u00e5\2\2\u0382\u0381\3\2\2"+ - "\2\u0382\u0383\3\2\2\2\u0383\u0385\3\2\2\2\u0384\u0386\t\13\2\2\u0385"+ - "\u0384\3\2\2\2\u0385\u0386\3\2\2\2\u0386\u0387\3\2\2\2\u0387\u0389\5\u00ac"+ - "W\2\u0388\u038a\5&\24\2\u0389\u0388\3\2\2\2\u0389\u038a\3\2\2\2\u038a"+ - "\u038c\3\2\2\2\u038b\u038d\5.\30\2\u038c\u038b\3\2\2\2\u038c\u038d\3\2"+ - "\2\2\u038d\u0404\3\2\2\2\u038e\u0390\t\n\2\2\u038f\u0391\7\u00b8\2\2\u0390"+ - "\u038f\3\2\2\2\u0390\u0391\3\2\2\2\u0391\u0392\3\2\2\2\u0392\u0404\5 "+ - "\21\2\u0393\u0394\7/\2\2\u0394\u0395\7\u009f\2\2\u0395\u0396\5*\26\2\u0396"+ - "\u0397\5\u00acW\2\u0397\u0398\7}\2\2\u0398\u0399\t\f\2\2\u0399\u0404\3"+ - "\2\2\2\u039a\u039b\7/\2\2\u039b\u039c\7\u009f\2\2\u039c\u039d\7\u00e5"+ - "\2\2\u039d\u039e\5\u00acW\2\u039e\u039f\7}\2\2\u039f\u03a0\t\f\2\2\u03a0"+ - "\u0404\3\2\2\2\u03a1\u03a2\7\u00bf\2\2\u03a2\u03a3\7\u00e5\2\2\u03a3\u0404"+ - "\5\u00acW\2\u03a4\u03ac\7\u00bf\2\2\u03a5\u03ad\7\u011d\2\2\u03a6\u03a8"+ - "\13\2\2\2\u03a7\u03a6\3\2\2\2\u03a8\u03ab\3\2\2\2\u03a9\u03aa\3\2\2\2"+ - "\u03a9\u03a7\3\2\2\2\u03aa\u03ad\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ac\u03a5"+ - "\3\2\2\2\u03ac\u03a9\3\2\2\2\u03ad\u0404\3\2\2\2\u03ae\u03b0\7!\2\2\u03af"+ - "\u03b1\7\u0083\2\2\u03b0\u03af\3\2\2\2\u03b0\u03b1\3\2\2\2\u03b1\u03b2"+ - "\3\2\2\2\u03b2\u03b3\7\u00e5\2\2\u03b3\u03b6\5\u00acW\2\u03b4\u03b5\7"+ - "\u00a2\2\2\u03b5\u03b7\58\35\2\u03b6\u03b4\3\2\2\2\u03b6\u03b7\3\2\2\2"+ - "\u03b7\u03bc\3\2\2\2\u03b8\u03ba\7\30\2\2\u03b9\u03b8\3\2\2\2\u03b9\u03ba"+ - "\3\2\2\2\u03ba\u03bb\3\2\2\2\u03bb\u03bd\5 \21\2\u03bc\u03b9\3\2\2\2\u03bc"+ - "\u03bd\3\2\2\2\u03bd\u0404\3\2\2\2\u03be\u03bf\7\u00f8\2\2\u03bf\u03c2"+ - "\7\u00e5\2\2\u03c0\u03c1\7p\2\2\u03c1\u03c3\7U\2\2\u03c2\u03c0\3\2\2\2"+ - "\u03c2\u03c3\3\2\2\2\u03c3\u03c4\3\2\2\2\u03c4\u0404\5\u00acW\2\u03c5"+ - "\u03c6\7\'\2\2\u03c6\u0404\7!\2\2\u03c7\u03c8\7\u008a\2\2\u03c8\u03ca"+ - "\7?\2\2\u03c9\u03cb\7\u008b\2\2\u03ca\u03c9\3\2\2\2\u03ca\u03cb\3\2\2"+ - "\2\u03cb\u03cc\3\2\2\2\u03cc\u03cd\7w\2\2\u03cd\u03cf\7\u011d\2\2\u03ce"+ - "\u03d0\7\u00ab\2\2\u03cf\u03ce\3\2\2\2\u03cf\u03d0\3\2\2\2\u03d0\u03d1"+ - "\3\2\2\2\u03d1\u03d2\7|\2\2\u03d2\u03d3\7\u00e5\2\2\u03d3\u03d5\5\u00ac"+ - "W\2\u03d4\u03d6\5&\24\2\u03d5\u03d4\3\2\2\2\u03d5\u03d6\3\2\2\2\u03d6"+ - "\u0404\3\2\2\2\u03d7\u03d8\7\u00f4\2\2\u03d8\u03d9\7\u00e5\2\2\u03d9\u03db"+ - "\5\u00acW\2\u03da\u03dc\5&\24\2\u03db\u03da\3\2\2\2\u03db\u03dc\3\2\2"+ - "\2\u03dc\u0404\3\2\2\2\u03dd\u03de\7\u0096\2\2\u03de\u03df\7\u00c1\2\2"+ - "\u03df\u03e0\7\u00e5\2\2\u03e0\u0404\5\u00acW\2\u03e1\u03e2\t\r\2\2\u03e2"+ - "\u03ea\5\u0104\u0083\2\u03e3\u03eb\7\u011d\2\2\u03e4\u03e6\13\2\2\2\u03e5"+ - "\u03e4\3\2\2\2\u03e6\u03e9\3\2\2\2\u03e7\u03e8\3\2\2\2\u03e7\u03e5\3\2"+ - "\2\2\u03e8\u03eb\3\2\2\2\u03e9\u03e7\3\2\2\2\u03ea\u03e3\3\2\2\2\u03ea"+ - "\u03e7\3\2\2\2\u03eb\u0404\3\2\2\2\u03ec\u03ed\7\u00d6\2\2\u03ed\u03f1"+ - "\7\u00c8\2\2\u03ee\u03f0\13\2\2\2\u03ef\u03ee\3\2\2\2\u03f0\u03f3\3\2"+ - "\2\2\u03f1\u03f2\3\2\2\2\u03f1\u03ef\3\2\2\2\u03f2\u0404\3\2\2\2\u03f3"+ - "\u03f1\3\2\2\2\u03f4\u03f8\7\u00d6\2\2\u03f5\u03f7\13\2\2\2\u03f6\u03f5"+ - "\3\2\2\2\u03f7\u03fa\3\2\2\2\u03f8\u03f9\3\2\2\2\u03f8\u03f6\3\2\2\2\u03f9"+ - "\u0404\3\2\2\2\u03fa\u03f8\3\2\2\2\u03fb\u0404\7\u00c3\2\2\u03fc\u0400"+ - "\5\22\n\2\u03fd\u03ff\13\2\2\2\u03fe\u03fd\3\2\2\2\u03ff\u0402\3\2\2\2"+ - "\u0400\u0401\3\2\2\2\u0400\u03fe\3\2\2\2\u0401\u0404\3\2\2\2\u0402\u0400"+ - "\3\2\2\2\u0403\u012f\3\2\2\2\u0403\u0131\3\2\2\2\u0403\u0134\3\2\2\2\u0403"+ - "\u0139\3\2\2\2\u0403\u014b\3\2\2\2\u0403\u0152\3\2\2\2\u0403\u0158\3\2"+ - "\2\2\u0403\u0162\3\2\2\2\u0403\u016e\3\2\2\2\u0403\u0180\3\2\2\2\u0403"+ - "\u0190\3\2\2\2\u0403\u01b5\3\2\2\2\u0403\u01ca\3\2\2\2\u0403\u01d9\3\2"+ - "\2\2\u0403\u01ea\3\2\2\2\u0403\u01f1\3\2\2\2\u0403\u01fa\3\2\2\2\u0403"+ - "\u0203\3\2\2\2\u0403\u020c\3\2\2\2\u0403\u0213\3\2\2\2\u0403\u021a\3\2"+ - "\2\2\u0403\u0221\3\2\2\2\u0403\u022c\3\2\2\2\u0403\u0237\3\2\2\2\u0403"+ - "\u0246\3\2\2\2\u0403\u0252\3\2\2\2\u0403\u0260\3\2\2\2\u0403\u026a\3\2"+ - "\2\2\u0403\u0278\3\2\2\2\u0403\u0280\3\2\2\2\u0403\u0293\3\2\2\2\u0403"+ - "\u029c\3\2\2\2\u0403\u02a2\3\2\2\2\u0403\u02ac\3\2\2\2\u0403\u02b3\3\2"+ - "\2\2\u0403\u02d6\3\2\2\2\u0403\u02ec\3\2\2\2\u0403\u02f4\3\2\2\2\u0403"+ - "\u0310\3\2\2\2\u0403\u031a\3\2\2\2\u0403\u031f\3\2\2\2\u0403\u032b\3\2"+ - "\2\2\u0403\u0337\3\2\2\2\u0403\u0340\3\2\2\2\u0403\u0348\3\2\2\2\u0403"+ - "\u0354\3\2\2\2\u0403\u035a\3\2\2\2\u0403\u0368\3\2\2\2\u0403\u0370\3\2"+ - "\2\2\u0403\u0373\3\2\2\2\u0403\u0379\3\2\2\2\u0403\u0380\3\2\2\2\u0403"+ - "\u038e\3\2\2\2\u0403\u0393\3\2\2\2\u0403\u039a\3\2\2\2\u0403\u03a1\3\2"+ - "\2\2\u0403\u03a4\3\2\2\2\u0403\u03ae\3\2\2\2\u0403\u03be\3\2\2\2\u0403"+ - "\u03c5\3\2\2\2\u0403\u03c7\3\2\2\2\u0403\u03d7\3\2\2\2\u0403\u03dd\3\2"+ - "\2\2\u0403\u03e1\3\2\2\2\u0403\u03ec\3\2\2\2\u0403\u03f4\3\2\2\2\u0403"+ - "\u03fb\3\2\2\2\u0403\u03fc\3\2\2\2\u0404\21\3\2\2\2\u0405\u0406\7\67\2"+ - "\2\u0406\u04ae\7\u00c8\2\2\u0407\u0408\7N\2\2\u0408\u04ae\7\u00c8\2\2"+ - "\u0409\u040b\7k\2\2\u040a\u040c\7\u00c8\2\2\u040b\u040a\3\2\2\2\u040b"+ - "\u040c\3\2\2\2\u040c\u04ae\3\2\2\2\u040d\u040f\7\u00c5\2\2\u040e\u0410"+ - "\7\u00c8\2\2\u040f\u040e\3\2\2\2\u040f\u0410\3\2\2\2\u0410\u04ae\3\2\2"+ - "\2\u0411\u0412\7\u00d9\2\2\u0412\u04ae\7k\2\2\u0413\u0414\7\u00d9\2\2"+ - "\u0414\u0416\7\u00c8\2\2\u0415\u0417\7k\2\2\u0416\u0415\3\2\2\2\u0416"+ - "\u0417\3\2\2\2\u0417\u04ae\3\2\2\2\u0418\u0419\7\u00d9\2\2\u0419\u04ae"+ - "\7\u00b5\2\2\u041a\u041b\7\u00d9\2\2\u041b\u04ae\7\u00c9\2\2\u041c\u041d"+ - "\7\u00d9\2\2\u041d\u041e\7:\2\2\u041e\u04ae\7\u00c9\2\2\u041f\u0420\7"+ - "W\2\2\u0420\u04ae\7\u00e5\2\2\u0421\u0422\7r\2\2\u0422\u04ae\7\u00e5\2"+ - "\2\u0423\u0424\7\u00d9\2\2\u0424\u04ae\7\62\2\2\u0425\u0426\7\u00d9\2"+ - "\2\u0426\u0427\7\67\2\2\u0427\u04ae\7\u00e5\2\2\u0428\u0429\7\u00d9\2"+ - "\2\u0429\u04ae\7\u00f0\2\2\u042a\u042b\7\u00d9\2\2\u042b\u04ae\7u\2\2"+ - "\u042c\u042d\7\u00d9\2\2\u042d\u04ae\7\u008e\2\2\u042e\u042f\7\67\2\2"+ - "\u042f\u04ae\7t\2\2\u0430\u0431\7N\2\2\u0431\u04ae\7t\2\2\u0432\u0433"+ - "\7\21\2\2\u0433\u04ae\7t\2\2\u0434\u0435\7\u008d\2\2\u0435\u04ae\7\u00e5"+ - "\2\2\u0436\u0437\7\u008d\2\2\u0437\u04ae\7@\2\2\u0438\u0439\7\u00fc\2"+ - "\2\u0439\u04ae\7\u00e5\2\2\u043a\u043b\7\u00fc\2\2\u043b\u04ae\7@\2\2"+ - "\u043c\u043d\7\67\2\2\u043d\u043e\7\u00e9\2\2\u043e\u04ae\7\u0090\2\2"+ - "\u043f\u0440\7N\2\2\u0440\u0441\7\u00e9\2\2\u0441\u04ae\7\u0090\2\2\u0442"+ - "\u0443\7\21\2\2\u0443\u0444\7\u00e5\2\2\u0444\u0445\5\u00aeX\2\u0445\u0446"+ - "\7\u009b\2\2\u0446\u0447\7)\2\2\u0447\u04ae\3\2\2\2\u0448\u0449\7\21\2"+ - "\2\u0449\u044a\7\u00e5\2\2\u044a\u044b\5\u00aeX\2\u044b\u044c\7)\2\2\u044c"+ - "\u044d\7 \2\2\u044d\u04ae\3\2\2\2\u044e\u044f\7\21\2\2\u044f\u0450\7\u00e5"+ - "\2\2\u0450\u0451\5\u00aeX\2\u0451\u0452\7\u009b\2\2\u0452\u0453\7\u00dd"+ - "\2\2\u0453\u04ae\3\2\2\2\u0454\u0455\7\21\2\2\u0455\u0456\7\u00e5\2\2"+ - "\u0456\u0457\5\u00aeX\2\u0457\u0458\7\u00da\2\2\u0458\u0459\7 \2\2\u0459"+ - "\u04ae\3\2\2\2\u045a\u045b\7\21\2\2\u045b\u045c\7\u00e5\2\2\u045c\u045d"+ - "\5\u00aeX\2\u045d\u045e\7\u009b\2\2\u045e\u045f\7\u00da\2\2\u045f\u04ae"+ - "\3\2\2\2\u0460\u0461\7\21\2\2\u0461\u0462\7\u00e5\2\2\u0462\u0463\5\u00ae"+ - "X\2\u0463\u0464\7\u009b\2\2\u0464\u0465\7\u00e0\2\2\u0465\u0466\7\30\2"+ - "\2\u0466\u0467\7J\2\2\u0467\u04ae\3\2\2\2\u0468\u0469\7\21\2\2\u0469\u046a"+ - "\7\u00e5\2\2\u046a\u046b\5\u00aeX\2\u046b\u046c\7\u00d6\2\2\u046c\u046d"+ - "\7\u00da\2\2\u046d\u046e\7\u008c\2\2\u046e\u04ae\3\2\2\2\u046f\u0470\7"+ - "\21\2\2\u0470\u0471\7\u00e5\2\2\u0471\u0472\5\u00aeX\2\u0472\u0473\7T"+ - "\2\2\u0473\u0474\7\u00ac\2\2\u0474\u04ae\3\2\2\2\u0475\u0476\7\21\2\2"+ - "\u0476\u0477\7\u00e5\2\2\u0477\u0478\5\u00aeX\2\u0478\u0479\7\26\2\2\u0479"+ - "\u047a\7\u00ac\2\2\u047a\u04ae\3\2\2\2\u047b\u047c\7\21\2\2\u047c\u047d"+ - "\7\u00e5\2\2\u047d\u047e\5\u00aeX\2\u047e\u047f\7\u00f6\2\2\u047f\u0480"+ - "\7\u00ac\2\2\u0480\u04ae\3\2\2\2\u0481\u0482\7\21\2\2\u0482\u0483\7\u00e5"+ - "\2\2\u0483\u0484\5\u00aeX\2\u0484\u0485\7\u00ed\2\2\u0485\u04ae\3\2\2"+ - "\2\u0486\u0487\7\21\2\2\u0487\u0488\7\u00e5\2\2\u0488\u048a\5\u00aeX\2"+ - "\u0489\u048b\5&\24\2\u048a\u0489\3\2\2\2\u048a\u048b\3\2\2\2\u048b\u048c"+ - "\3\2\2\2\u048c\u048d\7\61\2\2\u048d\u04ae\3\2\2\2\u048e\u048f\7\21\2\2"+ - "\u048f\u0490\7\u00e5\2\2\u0490\u0492\5\u00aeX\2\u0491\u0493\5&\24\2\u0492"+ - "\u0491\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u0494\3\2\2\2\u0494\u0495\7\64"+ - "\2\2\u0495\u04ae\3\2\2\2\u0496\u0497\7\21\2\2\u0497\u0498\7\u00e5\2\2"+ - "\u0498\u049a\5\u00aeX\2\u0499\u049b\5&\24\2\u049a\u0499\3\2\2\2\u049a"+ - "\u049b\3\2\2\2\u049b\u049c\3\2\2\2\u049c\u049d\7\u00d6\2\2\u049d\u049e"+ - "\7_\2\2\u049e\u04ae\3\2\2\2\u049f\u04a0\7\21\2\2\u04a0\u04a1\7\u00e5\2"+ - "\2\u04a1\u04a3\5\u00aeX\2\u04a2\u04a4\5&\24\2\u04a3\u04a2\3\2\2\2\u04a3"+ - "\u04a4\3\2\2\2\u04a4\u04a5\3\2\2\2\u04a5\u04a6\7\u00c2\2\2\u04a6\u04a7"+ - "\7.\2\2\u04a7\u04ae\3\2\2\2\u04a8\u04a9\7\u00de\2\2\u04a9\u04ae\7\u00ef"+ - "\2\2\u04aa\u04ae\7\60\2\2\u04ab\u04ae\7\u00ca\2\2\u04ac\u04ae\7I\2\2\u04ad"+ - "\u0405\3\2\2\2\u04ad\u0407\3\2\2\2\u04ad\u0409\3\2\2\2\u04ad\u040d\3\2"+ - "\2\2\u04ad\u0411\3\2\2\2\u04ad\u0413\3\2\2\2\u04ad\u0418\3\2\2\2\u04ad"+ - "\u041a\3\2\2\2\u04ad\u041c\3\2\2\2\u04ad\u041f\3\2\2\2\u04ad\u0421\3\2"+ - "\2\2\u04ad\u0423\3\2\2\2\u04ad\u0425\3\2\2\2\u04ad\u0428\3\2\2\2\u04ad"+ - "\u042a\3\2\2\2\u04ad\u042c\3\2\2\2\u04ad\u042e\3\2\2\2\u04ad\u0430\3\2"+ - "\2\2\u04ad\u0432\3\2\2\2\u04ad\u0434\3\2\2\2\u04ad\u0436\3\2\2\2\u04ad"+ - "\u0438\3\2\2\2\u04ad\u043a\3\2\2\2\u04ad\u043c\3\2\2\2\u04ad\u043f\3\2"+ - "\2\2\u04ad\u0442\3\2\2\2\u04ad\u0448\3\2\2\2\u04ad\u044e\3\2\2\2\u04ad"+ - "\u0454\3\2\2\2\u04ad\u045a\3\2\2\2\u04ad\u0460\3\2\2\2\u04ad\u0468\3\2"+ - "\2\2\u04ad\u046f\3\2\2\2\u04ad\u0475\3\2\2\2\u04ad\u047b\3\2\2\2\u04ad"+ - "\u0481\3\2\2\2\u04ad\u0486\3\2\2\2\u04ad\u048e\3\2\2\2\u04ad\u0496\3\2"+ - "\2\2\u04ad\u049f\3\2\2\2\u04ad\u04a8\3\2\2\2\u04ad\u04aa\3\2\2\2\u04ad"+ - "\u04ab\3\2\2\2\u04ad\u04ac\3\2\2\2\u04ae\23\3\2\2\2\u04af\u04b1\7\67\2"+ - "\2\u04b0\u04b2\7\u00e9\2\2\u04b1\u04b0\3\2\2\2\u04b1\u04b2\3\2\2\2\u04b2"+ - "\u04b4\3\2\2\2\u04b3\u04b5\7Y\2\2\u04b4\u04b3\3\2\2\2\u04b4\u04b5\3\2"+ - "\2\2\u04b5\u04b6\3\2\2\2\u04b6\u04ba\7\u00e5\2\2\u04b7\u04b8\7p\2\2\u04b8"+ - "\u04b9\7\u009b\2\2\u04b9\u04bb\7U\2\2\u04ba\u04b7\3\2\2\2\u04ba\u04bb"+ - "\3\2\2\2\u04bb\u04bc\3\2\2\2\u04bc\u04bd\5\u00acW\2\u04bd\25\3\2\2\2\u04be"+ - "\u04bf\7\67\2\2\u04bf\u04c1\7\u00a3\2\2\u04c0\u04be\3\2\2\2\u04c0\u04c1"+ - "\3\2\2\2\u04c1\u04c2\3\2\2\2\u04c2\u04c3\7\u00c2\2\2\u04c3\u04c4\7\u00e5"+ - "\2\2\u04c4\u04c5\5\u00acW\2\u04c5\27\3\2\2\2\u04c6\u04c7\7)\2\2\u04c7"+ - "\u04c8\7 \2\2\u04c8\u04cc\5\u0094K\2\u04c9\u04ca\7\u00dd\2\2\u04ca\u04cb"+ - "\7 \2\2\u04cb\u04cd\5\u0098M\2\u04cc\u04c9\3\2\2\2\u04cc\u04cd\3\2\2\2"+ - "\u04cd\u04ce\3\2\2\2\u04ce\u04cf\7|\2\2\u04cf\u04d0\7\u0121\2\2\u04d0"+ - "\u04d1\7\37\2\2\u04d1\31\3\2\2\2\u04d2\u04d3\7\u00da\2\2\u04d3\u04d4\7"+ - " \2\2\u04d4\u04d5\5\u0094K\2\u04d5\u04d8\7\u009f\2\2\u04d6\u04d9\5@!\2"+ - "\u04d7\u04d9\5B\"\2\u04d8\u04d6\3\2\2\2\u04d8\u04d7\3\2\2\2\u04d9\u04dd"+ - "\3\2\2\2\u04da\u04db\7\u00e0\2\2\u04db\u04dc\7\30\2\2\u04dc\u04de\7J\2"+ - "\2\u04dd\u04da\3\2\2\2\u04dd\u04de\3\2\2\2\u04de\33\3\2\2\2\u04df\u04e0"+ - "\7\u008c\2\2\u04e0\u04e1\7\u011d\2\2\u04e1\35\3\2\2\2\u04e2\u04e3\7/\2"+ - "\2\u04e3\u04e4\7\u011d\2\2\u04e4\37\3\2\2\2\u04e5\u04e7\5\60\31\2\u04e6"+ - "\u04e5\3\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8\u04e9\5R"+ - "*\2\u04e9\u04ea\5N(\2\u04ea!\3\2\2\2\u04eb\u04ec\7y\2\2\u04ec\u04ee\7"+ - "\u00ab\2\2\u04ed\u04ef\7\u00e5\2\2\u04ee\u04ed\3\2\2\2\u04ee\u04ef\3\2"+ - "\2\2\u04ef\u04f0\3\2\2\2\u04f0\u04f7\5\u00acW\2\u04f1\u04f5\5&\24\2\u04f2"+ - "\u04f3\7p\2\2\u04f3\u04f4\7\u009b\2\2\u04f4\u04f6\7U\2\2\u04f5\u04f2\3"+ - "\2\2\2\u04f5\u04f6\3\2\2\2\u04f6\u04f8\3\2\2\2\u04f7\u04f1\3\2\2\2\u04f7"+ - "\u04f8\3\2\2\2\u04f8\u0523\3\2\2\2\u04f9\u04fa\7y\2\2\u04fa\u04fc\7|\2"+ - "\2\u04fb\u04fd\7\u00e5\2\2\u04fc\u04fb\3\2\2\2\u04fc\u04fd\3\2\2\2\u04fd"+ - "\u04fe\3\2\2\2\u04fe\u0500\5\u00acW\2\u04ff\u0501\5&\24\2\u0500\u04ff"+ - "\3\2\2\2\u0500\u0501\3\2\2\2\u0501\u0505\3\2\2\2\u0502\u0503\7p\2\2\u0503"+ - "\u0504\7\u009b\2\2\u0504\u0506\7U\2\2\u0505\u0502\3\2\2\2\u0505\u0506"+ - "\3\2\2\2\u0506\u0523\3\2\2\2\u0507\u0508\7y\2\2\u0508\u050a\7\u00ab\2"+ - "\2\u0509\u050b\7\u008b\2\2\u050a\u0509\3\2\2\2\u050a\u050b\3\2\2\2\u050b"+ - "\u050c\3\2\2\2\u050c\u050d\7K\2\2\u050d\u050f\7\u011d\2\2\u050e\u0510"+ - "\5\u00a8U\2\u050f\u050e\3\2\2\2\u050f\u0510\3\2\2\2\u0510\u0512\3\2\2"+ - "\2\u0511\u0513\5D#\2\u0512\u0511\3\2\2\2\u0512\u0513\3\2\2\2\u0513\u0523"+ - "\3\2\2\2\u0514\u0515\7y\2\2\u0515\u0517\7\u00ab\2\2\u0516\u0518\7\u008b"+ - "\2\2\u0517\u0516\3\2\2\2\u0517\u0518\3\2\2\2\u0518\u0519\3\2\2\2\u0519"+ - "\u051b\7K\2\2\u051a\u051c\7\u011d\2\2\u051b\u051a\3\2\2\2\u051b\u051c"+ - "\3\2\2\2\u051c\u051d\3\2\2\2\u051d\u0520\5\64\33\2\u051e\u051f\7\u00a2"+ - "\2\2\u051f\u0521\58\35\2\u0520\u051e\3\2\2\2\u0520\u0521\3\2\2\2\u0521"+ - "\u0523\3\2\2\2\u0522\u04eb\3\2\2\2\u0522\u04f9\3\2\2\2\u0522\u0507\3\2"+ - "\2\2\u0522\u0514\3\2\2\2\u0523#\3\2\2\2\u0524\u0526\5&\24\2\u0525\u0527"+ - "\5\34\17\2\u0526\u0525\3\2\2\2\u0526\u0527\3\2\2\2\u0527%\3\2\2\2\u0528"+ - "\u0529\7\u00ac\2\2\u0529\u052a\7\4\2\2\u052a\u052f\5(\25\2\u052b\u052c"+ - "\7\6\2\2\u052c\u052e\5(\25\2\u052d\u052b\3\2\2\2\u052e\u0531\3\2\2\2\u052f"+ - "\u052d\3\2\2\2\u052f\u0530\3\2\2\2\u0530\u0532\3\2\2\2\u0531\u052f\3\2"+ - "\2\2\u0532\u0533\7\5\2\2\u0533\'\3\2\2\2\u0534\u0537\5\u0104\u0083\2\u0535"+ - "\u0536\7\u010a\2\2\u0536\u0538\5\u00c6d\2\u0537\u0535\3\2\2\2\u0537\u0538"+ - "\3\2\2\2\u0538)\3\2\2\2\u0539\u053a\t\16\2\2\u053a+\3\2\2\2\u053b\u0541"+ - "\5\u00fe\u0080\2\u053c\u0541\7\u011d\2\2\u053d\u0541\5\u00c8e\2\u053e"+ - "\u0541\5\u00caf\2\u053f\u0541\5\u00ccg\2\u0540\u053b\3\2\2\2\u0540\u053c"+ - "\3\2\2\2\u0540\u053d\3\2\2\2\u0540\u053e\3\2\2\2\u0540\u053f\3\2\2\2\u0541"+ - "-\3\2\2\2\u0542\u0547\5\u0104\u0083\2\u0543\u0544\7\7\2\2\u0544\u0546"+ - "\5\u0104\u0083\2\u0545\u0543\3\2\2\2\u0546\u0549\3\2\2\2\u0547\u0545\3"+ - "\2\2\2\u0547\u0548\3\2\2\2\u0548/\3\2\2\2\u0549\u0547\3\2\2\2\u054a\u054b"+ - "\7\u0108\2\2\u054b\u0550\5\62\32\2\u054c\u054d\7\6\2\2\u054d\u054f\5\62"+ - "\32\2\u054e\u054c\3\2\2\2\u054f\u0552\3\2\2\2\u0550\u054e\3\2\2\2\u0550"+ - "\u0551\3\2\2\2\u0551\61\3\2\2\2\u0552\u0550\3\2\2\2\u0553\u0555\5\u0100"+ - "\u0081\2\u0554\u0556\5\u0094K\2\u0555\u0554\3\2\2\2\u0555\u0556\3\2\2"+ - "\2\u0556\u0558\3\2\2\2\u0557\u0559\7\30\2\2\u0558\u0557\3\2\2\2\u0558"+ - "\u0559\3\2\2\2\u0559\u055a\3\2\2\2\u055a\u055b\7\4\2\2\u055b\u055c\5 "+ - "\21\2\u055c\u055d\7\5\2\2\u055d\63\3\2\2\2\u055e\u055f\7\u0101\2\2\u055f"+ - "\u0560\5\u00acW\2\u0560\65\3\2\2\2\u0561\u0562\7\u00a2\2\2\u0562\u056c"+ - "\58\35\2\u0563\u0564\7\u00ad\2\2\u0564\u0565\7 \2\2\u0565\u056c\5\u00b6"+ - "\\\2\u0566\u056c\5\30\r\2\u0567\u056c\5\34\17\2\u0568\u056c\5\36\20\2"+ - "\u0569\u056a\7\u00e8\2\2\u056a\u056c\58\35\2\u056b\u0561\3\2\2\2\u056b"+ - "\u0563\3\2\2\2\u056b\u0566\3\2\2\2\u056b\u0567\3\2\2\2\u056b\u0568\3\2"+ - "\2\2\u056b\u0569\3\2\2\2\u056c\u056f\3\2\2\2\u056d\u056b\3\2\2\2\u056d"+ - "\u056e\3\2\2\2\u056e\67\3\2\2\2\u056f\u056d\3\2\2\2\u0570\u0571\7\4\2"+ - "\2\u0571\u0576\5:\36\2\u0572\u0573\7\6\2\2\u0573\u0575\5:\36\2\u0574\u0572"+ - "\3\2\2\2\u0575\u0578\3\2\2\2\u0576\u0574\3\2\2\2\u0576\u0577\3\2\2\2\u0577"+ - "\u0579\3\2\2\2\u0578\u0576\3\2\2\2\u0579\u057a\7\5\2\2\u057a9\3\2\2\2"+ - "\u057b\u0580\5<\37\2\u057c\u057e\7\u010a\2\2\u057d\u057c\3\2\2\2\u057d"+ - "\u057e\3\2\2\2\u057e\u057f\3\2\2\2\u057f\u0581\5> \2\u0580\u057d\3\2\2"+ - "\2\u0580\u0581\3\2\2\2\u0581;\3\2\2\2\u0582\u0587\5\u0104\u0083\2\u0583"+ - "\u0584\7\7\2\2\u0584\u0586\5\u0104\u0083\2\u0585\u0583\3\2\2\2\u0586\u0589"+ - "\3\2\2\2\u0587\u0585\3\2\2\2\u0587\u0588\3\2\2\2\u0588\u058c\3\2\2\2\u0589"+ - "\u0587\3\2\2\2\u058a\u058c\7\u011d\2\2\u058b\u0582\3\2\2\2\u058b\u058a"+ - "\3\2\2\2\u058c=\3\2\2\2\u058d\u0592\7\u0121\2\2\u058e\u0592\7\u0123\2"+ - "\2\u058f\u0592\5\u00ceh\2\u0590\u0592\7\u011d\2\2\u0591\u058d\3\2\2\2"+ - "\u0591\u058e\3\2\2\2\u0591\u058f\3\2\2\2\u0591\u0590\3\2\2\2\u0592?\3"+ - "\2\2\2\u0593\u0594\7\4\2\2\u0594\u0599\5\u00c6d\2\u0595\u0596\7\6\2\2"+ - "\u0596\u0598\5\u00c6d\2\u0597\u0595\3\2\2\2\u0598\u059b\3\2\2\2\u0599"+ - "\u0597\3\2\2\2\u0599\u059a\3\2\2\2\u059a\u059c\3\2\2\2\u059b\u0599\3\2"+ - "\2\2\u059c\u059d\7\5\2\2\u059dA\3\2\2\2\u059e\u059f\7\4\2\2\u059f\u05a4"+ - "\5@!\2\u05a0\u05a1\7\6\2\2\u05a1\u05a3\5@!\2\u05a2\u05a0\3\2\2\2\u05a3"+ - "\u05a6\3\2\2\2\u05a4\u05a2\3\2\2\2\u05a4\u05a5\3\2\2\2\u05a5\u05a7\3\2"+ - "\2\2\u05a6\u05a4\3\2\2\2\u05a7\u05a8\7\5\2\2\u05a8C\3\2\2\2\u05a9\u05aa"+ - "\7\u00e0\2\2\u05aa\u05ab\7\30\2\2\u05ab\u05b0\5F$\2\u05ac\u05ad\7\u00e0"+ - "\2\2\u05ad\u05ae\7 \2\2\u05ae\u05b0\5H%\2\u05af\u05a9\3\2\2\2\u05af\u05ac"+ - "\3\2\2\2\u05b0E\3\2\2\2\u05b1\u05b2\7x\2\2\u05b2\u05b3\7\u011d\2\2\u05b3"+ - "\u05b4\7\u00a7\2\2\u05b4\u05b7\7\u011d\2\2\u05b5\u05b7\5\u0104\u0083\2"+ - "\u05b6\u05b1\3\2\2\2\u05b6\u05b5\3\2\2\2\u05b7G\3\2\2\2\u05b8\u05bc\7"+ - "\u011d\2\2\u05b9\u05ba\7\u0108\2\2\u05ba\u05bb\7\u00d4\2\2\u05bb\u05bd"+ - "\58\35\2\u05bc\u05b9\3\2\2\2\u05bc\u05bd\3\2\2\2\u05bdI\3\2\2\2\u05be"+ - "\u05bf\5\u0104\u0083\2\u05bf\u05c0\7\u011d\2\2\u05c0K\3\2\2\2\u05c1\u05c2"+ - "\5\"\22\2\u05c2\u05c3\5R*\2\u05c3\u05c4\5N(\2\u05c4\u05f5\3\2\2\2\u05c5"+ - "\u05c7\5x=\2\u05c6\u05c8\5P)\2\u05c7\u05c6\3\2\2\2\u05c8\u05c9\3\2\2\2"+ - "\u05c9\u05c7\3\2\2\2\u05c9\u05ca\3\2\2\2\u05ca\u05f5\3\2\2\2\u05cb\u05cc"+ - "\7E\2\2\u05cc\u05cd\7f\2\2\u05cd\u05ce\5\u00acW\2\u05ce\u05d0\5\u00a6"+ - "T\2\u05cf\u05d1\5p9\2\u05d0\u05cf\3\2\2\2\u05d0\u05d1\3\2\2\2\u05d1\u05f5"+ - "\3\2\2\2\u05d2\u05d3\7\u00fe\2\2\u05d3\u05d4\5\u00acW\2\u05d4\u05d5\5"+ - "\u00a6T\2\u05d5\u05d7\5b\62\2\u05d6\u05d8\5p9\2\u05d7\u05d6\3\2\2\2\u05d7"+ - "\u05d8\3\2\2\2\u05d8\u05f5\3\2\2\2\u05d9\u05da\7\u0093\2\2\u05da\u05db"+ - "\7|\2\2\u05db\u05dc\5\u00acW\2\u05dc\u05dd\5\u00a6T\2\u05dd\u05e3\7\u0101"+ - "\2\2\u05de\u05e4\5\u00acW\2\u05df\u05e0\7\4\2\2\u05e0\u05e1\5 \21\2\u05e1"+ - "\u05e2\7\5\2\2\u05e2\u05e4\3\2\2\2\u05e3\u05de\3\2\2\2\u05e3\u05df\3\2"+ - "\2\2\u05e4\u05e5\3\2\2\2\u05e5\u05e6\5\u00a6T\2\u05e6\u05e7\7\u009f\2"+ - "\2\u05e7\u05eb\5\u00be`\2\u05e8\u05ea\5d\63\2\u05e9\u05e8\3\2\2\2\u05ea"+ - "\u05ed\3\2\2\2\u05eb\u05e9\3\2\2\2\u05eb\u05ec\3\2\2\2\u05ec\u05f1\3\2"+ - "\2\2\u05ed\u05eb\3\2\2\2\u05ee\u05f0\5f\64\2\u05ef\u05ee\3\2\2\2\u05f0"+ - "\u05f3\3\2\2\2\u05f1\u05ef\3\2\2\2\u05f1\u05f2\3\2\2\2\u05f2\u05f5\3\2"+ - "\2\2\u05f3\u05f1\3\2\2\2\u05f4\u05c1\3\2\2\2\u05f4\u05c5\3\2\2\2\u05f4"+ - "\u05cb\3\2\2\2\u05f4\u05d2\3\2\2\2\u05f4\u05d9\3\2\2\2\u05f5M\3\2\2\2"+ - "\u05f6\u05f7\7\u00a4\2\2\u05f7\u05f8\7 \2\2\u05f8\u05fd\5V,\2\u05f9\u05fa"+ - "\7\6\2\2\u05fa\u05fc\5V,\2\u05fb\u05f9\3\2\2\2\u05fc\u05ff\3\2\2\2\u05fd"+ - "\u05fb\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe\u0601\3\2\2\2\u05ff\u05fd\3\2"+ - "\2\2\u0600\u05f6\3\2\2\2\u0600\u0601\3\2\2\2\u0601\u060c\3\2\2\2\u0602"+ - "\u0603\7(\2\2\u0603\u0604\7 \2\2\u0604\u0609\5\u00bc_\2\u0605\u0606\7"+ - "\6\2\2\u0606\u0608\5\u00bc_\2\u0607\u0605\3\2\2\2\u0608\u060b\3\2\2\2"+ - "\u0609\u0607\3\2\2\2\u0609\u060a\3\2\2\2\u060a\u060d\3\2\2\2\u060b\u0609"+ - "\3\2\2\2\u060c\u0602\3\2\2\2\u060c\u060d\3\2\2\2\u060d\u0618\3\2\2\2\u060e"+ - "\u060f\7M\2\2\u060f\u0610\7 \2\2\u0610\u0615\5\u00bc_\2\u0611\u0612\7"+ - "\6\2\2\u0612\u0614\5\u00bc_\2\u0613\u0611\3\2\2\2\u0614\u0617\3\2\2\2"+ - "\u0615\u0613\3\2\2\2\u0615\u0616\3\2\2\2\u0616\u0619\3\2\2\2\u0617\u0615"+ - "\3\2\2\2\u0618\u060e\3\2\2\2\u0618\u0619\3\2\2\2\u0619\u0624\3\2\2\2\u061a"+ - "\u061b\7\u00dc\2\2\u061b\u061c\7 \2\2\u061c\u0621\5V,\2\u061d\u061e\7"+ - "\6\2\2\u061e\u0620\5V,\2\u061f\u061d\3\2\2\2\u0620\u0623\3\2\2\2\u0621"+ - "\u061f\3\2\2\2\u0621\u0622\3\2\2\2\u0622\u0625\3\2\2\2\u0623\u0621\3\2"+ - "\2\2\u0624\u061a\3\2\2\2\u0624\u0625\3\2\2\2\u0625\u0627\3\2\2\2\u0626"+ - "\u0628\5\u00f0y\2\u0627\u0626\3\2\2\2\u0627\u0628\3\2\2\2\u0628\u062e"+ - "\3\2\2\2\u0629\u062c\7\u0087\2\2\u062a\u062d\7\20\2\2\u062b\u062d\5\u00bc"+ - "_\2\u062c\u062a\3\2\2\2\u062c\u062b\3\2\2\2\u062d\u062f\3\2\2\2\u062e"+ - "\u0629\3\2\2\2\u062e\u062f\3\2\2\2\u062fO\3\2\2\2\u0630\u0631\5\"\22\2"+ - "\u0631\u0632\5Z.\2\u0632Q\3\2\2\2\u0633\u0634\b*\1\2\u0634\u0635\5T+\2"+ - "\u0635\u064d\3\2\2\2\u0636\u0637\f\5\2\2\u0637\u0638\6*\5\2\u0638\u063a"+ - "\t\17\2\2\u0639\u063b\5\u0086D\2\u063a\u0639\3\2\2\2\u063a\u063b\3\2\2"+ - "\2\u063b\u063c\3\2\2\2\u063c\u064c\5R*\6\u063d\u063e\f\4\2\2\u063e\u063f"+ - "\6*\7\2\u063f\u0641\7z\2\2\u0640\u0642\5\u0086D\2\u0641\u0640\3\2\2\2"+ - "\u0641\u0642\3\2\2\2\u0642\u0643\3\2\2\2\u0643\u064c\5R*\5\u0644\u0645"+ - "\f\3\2\2\u0645\u0646\6*\t\2\u0646\u0648\t\20\2\2\u0647\u0649\5\u0086D"+ - "\2\u0648\u0647\3\2\2\2\u0648\u0649\3\2\2\2\u0649\u064a\3\2\2\2\u064a\u064c"+ - "\5R*\4\u064b\u0636\3\2\2\2\u064b\u063d\3\2\2\2\u064b\u0644\3\2\2\2\u064c"+ - "\u064f\3\2\2\2\u064d\u064b\3\2\2\2\u064d\u064e\3\2\2\2\u064eS\3\2\2\2"+ - "\u064f\u064d\3\2\2\2\u0650\u065a\5\\/\2\u0651\u065a\5X-\2\u0652\u0653"+ - "\7\u00e5\2\2\u0653\u065a\5\u00acW\2\u0654\u065a\5\u00a2R\2\u0655\u0656"+ - "\7\4\2\2\u0656\u0657\5 \21\2\u0657\u0658\7\5\2\2\u0658\u065a\3\2\2\2\u0659"+ - "\u0650\3\2\2\2\u0659\u0651\3\2\2\2\u0659\u0652\3\2\2\2\u0659\u0654\3\2"+ - "\2\2\u0659\u0655\3\2\2\2\u065aU\3\2\2\2\u065b\u065d\5\u00bc_\2\u065c\u065e"+ - "\t\21\2\2\u065d\u065c\3\2\2\2\u065d\u065e\3\2\2\2\u065e\u0661\3\2\2\2"+ - "\u065f\u0660\7\u009d\2\2\u0660\u0662\t\22\2\2\u0661\u065f\3\2\2\2\u0661"+ - "\u0662\3\2\2\2\u0662W\3\2\2\2\u0663\u0665\5x=\2\u0664\u0666\5Z.\2\u0665"+ - "\u0664\3\2\2\2\u0666\u0667\3\2\2\2\u0667\u0665\3\2\2\2\u0667\u0668\3\2"+ - "\2\2\u0668Y\3\2\2\2\u0669\u066b\5^\60\2\u066a\u066c\5p9\2\u066b\u066a"+ - "\3\2\2\2\u066b\u066c\3\2\2\2\u066c\u066d\3\2\2\2\u066d\u066e\5N(\2\u066e"+ - "\u0685\3\2\2\2\u066f\u0673\5`\61\2\u0670\u0672\5\u0084C\2\u0671\u0670"+ - "\3\2\2\2\u0672\u0675\3\2\2\2\u0673\u0671\3\2\2\2\u0673\u0674\3\2\2\2\u0674"+ - "\u0677\3\2\2\2\u0675\u0673\3\2\2\2\u0676\u0678\5p9\2\u0677\u0676\3\2\2"+ - "\2\u0677\u0678\3\2\2\2\u0678\u067a\3\2\2\2\u0679\u067b\5z>\2\u067a\u0679"+ - "\3\2\2\2\u067a\u067b\3\2\2\2\u067b\u067d\3\2\2\2\u067c\u067e\5r:\2\u067d"+ - "\u067c\3\2\2\2\u067d\u067e\3\2\2\2\u067e\u0680\3\2\2\2\u067f\u0681\5\u00f0"+ - "y\2\u0680\u067f\3\2\2\2\u0680\u0681\3\2\2\2\u0681\u0682\3\2\2\2\u0682"+ - "\u0683\5N(\2\u0683\u0685\3\2\2\2\u0684\u0669\3\2\2\2\u0684\u066f\3\2\2"+ - "\2\u0685[\3\2\2\2\u0686\u0688\5^\60\2\u0687\u0689\5x=\2\u0688\u0687\3"+ - "\2\2\2\u0688\u0689\3\2\2\2\u0689\u068b\3\2\2\2\u068a\u068c\5p9\2\u068b"+ - "\u068a\3\2\2\2\u068b\u068c\3\2\2\2\u068c\u06a4\3\2\2\2\u068d\u068f\5`"+ - "\61\2\u068e\u0690\5x=\2\u068f\u068e\3\2\2\2\u068f\u0690\3\2\2\2\u0690"+ - "\u0694\3\2\2\2\u0691\u0693\5\u0084C\2\u0692\u0691\3\2\2\2\u0693\u0696"+ - "\3\2\2\2\u0694\u0692\3\2\2\2\u0694\u0695\3\2\2\2\u0695\u0698\3\2\2\2\u0696"+ - "\u0694\3\2\2\2\u0697\u0699\5p9\2\u0698\u0697\3\2\2\2\u0698\u0699\3\2\2"+ - "\2\u0699\u069b\3\2\2\2\u069a\u069c\5z>\2\u069b\u069a\3\2\2\2\u069b\u069c"+ - "\3\2\2\2\u069c\u069e\3\2\2\2\u069d\u069f\5r:\2\u069e\u069d\3\2\2\2\u069e"+ - "\u069f\3\2\2\2\u069f\u06a1\3\2\2\2\u06a0\u06a2\5\u00f0y\2\u06a1\u06a0"+ - "\3\2\2\2\u06a1\u06a2\3\2\2\2\u06a2\u06a4\3\2\2\2\u06a3\u0686\3\2\2\2\u06a3"+ - "\u068d\3\2\2\2\u06a4]\3\2\2\2\u06a5\u06a6\7\u00d0\2\2\u06a6\u06a7\7\u00f1"+ - "\2\2\u06a7\u06a8\7\4\2\2\u06a8\u06a9\5\u00b4[\2\u06a9\u06aa\7\5\2\2\u06aa"+ - "\u06b0\3\2\2\2\u06ab\u06ac\7\u0091\2\2\u06ac\u06b0\5\u00b4[\2\u06ad\u06ae"+ - "\7\u00bd\2\2\u06ae\u06b0\5\u00b4[\2\u06af\u06a5\3\2\2\2\u06af\u06ab\3"+ - "\2\2\2\u06af\u06ad\3\2\2\2\u06b0\u06b2\3\2\2\2\u06b1\u06b3\5\u00a8U\2"+ - "\u06b2\u06b1\3\2\2\2\u06b2\u06b3\3\2\2\2\u06b3\u06b6\3\2\2\2\u06b4\u06b5"+ - "\7\u00bb\2\2\u06b5\u06b7\7\u011d\2\2\u06b6\u06b4\3\2\2\2\u06b6\u06b7\3"+ - "\2\2\2\u06b7\u06b8\3\2\2\2\u06b8\u06b9\7\u0101\2\2\u06b9\u06c6\7\u011d"+ - "\2\2\u06ba\u06c4\7\30\2\2\u06bb\u06c5\5\u0096L\2\u06bc\u06c5\5\u00e6t"+ - "\2\u06bd\u06c0\7\4\2\2\u06be\u06c1\5\u0096L\2\u06bf\u06c1\5\u00e6t\2\u06c0"+ - "\u06be\3\2\2\2\u06c0\u06bf\3\2\2\2\u06c1\u06c2\3\2\2\2\u06c2\u06c3\7\5"+ - "\2\2\u06c3\u06c5\3\2\2\2\u06c4\u06bb\3\2\2\2\u06c4\u06bc\3\2\2\2\u06c4"+ - "\u06bd\3\2\2\2\u06c5\u06c7\3\2\2\2\u06c6\u06ba\3\2\2\2\u06c6\u06c7\3\2"+ - "\2\2\u06c7\u06c9\3\2\2\2\u06c8\u06ca\5\u00a8U\2\u06c9\u06c8\3\2\2\2\u06c9"+ - "\u06ca\3\2\2\2\u06ca\u06cd\3\2\2\2\u06cb\u06cc\7\u00ba\2\2\u06cc\u06ce"+ - "\7\u011d\2\2\u06cd\u06cb\3\2\2\2\u06cd\u06ce\3\2\2\2\u06ce_\3\2\2\2\u06cf"+ - "\u06d3\7\u00d0\2\2\u06d0\u06d2\5t;\2\u06d1\u06d0\3\2\2\2\u06d2\u06d5\3"+ - "\2\2\2\u06d3\u06d1\3\2\2\2\u06d3\u06d4\3\2\2\2\u06d4\u06d7\3\2\2\2\u06d5"+ - "\u06d3\3\2\2\2\u06d6\u06d8\5\u0086D\2\u06d7\u06d6\3\2\2\2\u06d7\u06d8"+ - "\3\2\2\2\u06d8\u06d9\3\2\2\2\u06d9\u06da\5\u00b4[\2\u06daa\3\2\2\2\u06db"+ - "\u06dc\7\u00d6\2\2\u06dc\u06dd\5l\67\2\u06ddc\3\2\2\2\u06de\u06df\7\u0105"+ - "\2\2\u06df\u06e2\7\u0092\2\2\u06e0\u06e1\7\23\2\2\u06e1\u06e3\5\u00be"+ - "`\2\u06e2\u06e0\3\2\2\2\u06e2\u06e3\3\2\2\2\u06e3\u06e4\3\2\2\2\u06e4"+ - "\u06e5\7\u00eb\2\2\u06e5\u06e6\5h\65\2\u06e6e\3\2\2\2\u06e7\u06e8\7\u0105"+ - "\2\2\u06e8\u06e9\7\u009b\2\2\u06e9\u06ec\7\u0092\2\2\u06ea\u06eb\7\23"+ - "\2\2\u06eb\u06ed\5\u00be`\2\u06ec\u06ea\3\2\2\2\u06ec\u06ed\3\2\2\2\u06ed"+ - "\u06ee\3\2\2\2\u06ee\u06ef\7\u00eb\2\2\u06ef\u06f0\5j\66\2\u06f0g\3\2"+ - "\2\2\u06f1\u06f9\7E\2\2\u06f2\u06f3\7\u00fe\2\2\u06f3\u06f4\7\u00d6\2"+ - "\2\u06f4\u06f9\7\u0114\2\2\u06f5\u06f6\7\u00fe\2\2\u06f6\u06f7\7\u00d6"+ - "\2\2\u06f7\u06f9\5l\67\2\u06f8\u06f1\3\2\2\2\u06f8\u06f2\3\2\2\2\u06f8"+ - "\u06f5\3\2\2\2\u06f9i\3\2\2\2\u06fa\u06fb\7y\2\2\u06fb\u070d\7\u0114\2"+ - "\2\u06fc\u06fd\7y\2\2\u06fd\u06fe\7\4\2\2\u06fe\u06ff\5\u00aaV\2\u06ff"+ - "\u0700\7\5\2\2\u0700\u0701\7\u0102\2\2\u0701\u0702\7\4\2\2\u0702\u0707"+ - "\5\u00bc_\2\u0703\u0704\7\6\2\2\u0704\u0706\5\u00bc_\2\u0705\u0703\3\2"+ - "\2\2\u0706\u0709\3\2\2\2\u0707\u0705\3\2\2\2\u0707\u0708\3\2\2\2\u0708"+ - "\u070a\3\2\2\2\u0709\u0707\3\2\2\2\u070a\u070b\7\5\2\2\u070b\u070d\3\2"+ - "\2\2\u070c\u06fa\3\2\2\2\u070c\u06fc\3\2\2\2\u070dk\3\2\2\2\u070e\u0713"+ - "\5n8\2\u070f\u0710\7\6\2\2\u0710\u0712\5n8\2\u0711\u070f\3\2\2\2\u0712"+ - "\u0715\3\2\2\2\u0713\u0711\3\2\2\2\u0713\u0714\3\2\2\2\u0714m\3\2\2\2"+ - "\u0715\u0713\3\2\2\2\u0716\u0717\5\u00acW\2\u0717\u0718\7\u010a\2\2\u0718"+ - "\u0719\5\u00bc_\2\u0719o\3\2\2\2\u071a\u071b\7\u0106\2\2\u071b\u071c\5"+ - "\u00be`\2\u071cq\3\2\2\2\u071d\u071e\7n\2\2\u071e\u071f\5\u00be`\2\u071f"+ - "s\3\2\2\2\u0720\u0721\7\b\2\2\u0721\u0728\5v<\2\u0722\u0724\7\6\2\2\u0723"+ - "\u0722\3\2\2\2\u0723\u0724\3\2\2\2\u0724\u0725\3\2\2\2\u0725\u0727\5v"+ - "<\2\u0726\u0723\3\2\2\2\u0727\u072a\3\2\2\2\u0728\u0726\3\2\2\2\u0728"+ - "\u0729\3\2\2\2\u0729\u072b\3\2\2\2\u072a\u0728\3\2\2\2\u072b\u072c\7\t"+ - "\2\2\u072cu\3\2\2\2\u072d\u073b\5\u0104\u0083\2\u072e\u072f\5\u0104\u0083"+ - "\2\u072f\u0730\7\4\2\2\u0730\u0735\5\u00c4c\2\u0731\u0732\7\6\2\2\u0732"+ - "\u0734\5\u00c4c\2\u0733\u0731\3\2\2\2\u0734\u0737\3\2\2\2\u0735\u0733"+ - "\3\2\2\2\u0735\u0736\3\2\2\2\u0736\u0738\3\2\2\2\u0737\u0735\3\2\2\2\u0738"+ - "\u0739\7\5\2\2\u0739\u073b\3\2\2\2\u073a\u072d\3\2\2\2\u073a\u072e\3\2"+ - "\2\2\u073bw\3\2\2\2\u073c\u073d\7f\2\2\u073d\u0742\5\u0088E\2\u073e\u073f"+ - "\7\6\2\2\u073f\u0741\5\u0088E\2\u0740\u073e\3\2\2\2\u0741\u0744\3\2\2"+ - "\2\u0742\u0740\3\2\2\2\u0742\u0743\3\2\2\2\u0743\u0748\3\2\2\2\u0744\u0742"+ - "\3\2\2\2\u0745\u0747\5\u0084C\2\u0746\u0745\3\2\2\2\u0747\u074a\3\2\2"+ - "\2\u0748\u0746\3\2\2\2\u0748\u0749\3\2\2\2\u0749\u074c\3\2\2\2\u074a\u0748"+ - "\3\2\2\2\u074b\u074d\5~@\2\u074c\u074b\3\2\2\2\u074c\u074d\3\2\2\2\u074d"+ - "y\3\2\2\2\u074e\u074f\7l\2\2\u074f\u0750\7 \2\2\u0750\u0755\5\u00bc_\2"+ - "\u0751\u0752\7\6\2\2\u0752\u0754\5\u00bc_\2\u0753\u0751\3\2\2\2\u0754"+ - "\u0757\3\2\2\2\u0755\u0753\3\2\2\2\u0755\u0756\3\2\2\2\u0756\u0769\3\2"+ - "\2\2\u0757\u0755\3\2\2\2\u0758\u0759\7\u0108\2\2\u0759\u076a\7\u00cb\2"+ - "\2\u075a\u075b\7\u0108\2\2\u075b\u076a\79\2\2\u075c\u075d\7m\2\2\u075d"+ - "\u075e\7\u00d8\2\2\u075e\u075f\7\4\2\2\u075f\u0764\5|?\2\u0760\u0761\7"+ - "\6\2\2\u0761\u0763\5|?\2\u0762\u0760\3\2\2\2\u0763\u0766\3\2\2\2\u0764"+ - "\u0762\3\2\2\2\u0764\u0765\3\2\2\2\u0765\u0767\3\2\2\2\u0766\u0764\3\2"+ - "\2\2\u0767\u0768\7\5\2\2\u0768\u076a\3\2\2\2\u0769\u0758\3\2\2\2\u0769"+ - "\u075a\3\2\2\2\u0769\u075c\3\2\2\2\u0769\u076a\3\2\2\2\u076a\u077b\3\2"+ - "\2\2\u076b\u076c\7l\2\2\u076c\u076d\7 \2\2\u076d\u076e\7m\2\2\u076e\u076f"+ - "\7\u00d8\2\2\u076f\u0770\7\4\2\2\u0770\u0775\5|?\2\u0771\u0772\7\6\2\2"+ - "\u0772\u0774\5|?\2\u0773\u0771\3\2\2\2\u0774\u0777\3\2\2\2\u0775\u0773"+ - "\3\2\2\2\u0775\u0776\3\2\2\2\u0776\u0778\3\2\2\2\u0777\u0775\3\2\2\2\u0778"+ - "\u0779\7\5\2\2\u0779\u077b\3\2\2\2\u077a\u074e\3\2\2\2\u077a\u076b\3\2"+ - "\2\2\u077b{\3\2\2\2\u077c\u0785\7\4\2\2\u077d\u0782\5\u00bc_\2\u077e\u077f"+ - "\7\6\2\2\u077f\u0781\5\u00bc_\2\u0780\u077e\3\2\2\2\u0781\u0784\3\2\2"+ - "\2\u0782\u0780\3\2\2\2\u0782\u0783\3\2\2\2\u0783\u0786\3\2\2\2\u0784\u0782"+ - "\3\2\2\2\u0785\u077d\3\2\2\2\u0785\u0786\3\2\2\2\u0786\u0787\3\2\2\2\u0787"+ - "\u078a\7\5\2\2\u0788\u078a\5\u00bc_\2\u0789\u077c\3\2\2\2\u0789\u0788"+ - "\3\2\2\2\u078a}\3\2\2\2\u078b\u078c\7\u00b0\2\2\u078c\u078d\7\4\2\2\u078d"+ - "\u078e\5\u00b4[\2\u078e\u078f\7b\2\2\u078f\u0790\5\u0080A\2\u0790\u0791"+ - "\7s\2\2\u0791\u0792\7\4\2\2\u0792\u0797\5\u0082B\2\u0793\u0794\7\6\2\2"+ - "\u0794\u0796\5\u0082B\2\u0795\u0793\3\2\2\2\u0796\u0799\3\2\2\2\u0797"+ - "\u0795\3\2\2\2\u0797\u0798\3\2\2\2\u0798\u079a\3\2\2\2\u0799\u0797\3\2"+ - "\2\2\u079a\u079b\7\5\2\2\u079b\u079c\7\5\2\2\u079c\177\3\2\2\2\u079d\u07aa"+ - "\5\u0104\u0083\2\u079e\u079f\7\4\2\2\u079f\u07a4\5\u0104\u0083\2\u07a0"+ - "\u07a1\7\6\2\2\u07a1\u07a3\5\u0104\u0083\2\u07a2\u07a0\3\2\2\2\u07a3\u07a6"+ - "\3\2\2\2\u07a4\u07a2\3\2\2\2\u07a4\u07a5\3\2\2\2\u07a5\u07a7\3\2\2\2\u07a6"+ - "\u07a4\3\2\2\2\u07a7\u07a8\7\5\2\2\u07a8\u07aa\3\2\2\2\u07a9\u079d\3\2"+ - "\2\2\u07a9\u079e\3\2\2\2\u07aa\u0081\3\2\2\2\u07ab\u07b0\5\u00bc_\2\u07ac"+ - "\u07ae\7\30\2\2\u07ad\u07ac\3\2\2\2\u07ad\u07ae\3\2\2\2\u07ae\u07af\3"+ - "\2\2\2\u07af\u07b1\5\u0104\u0083\2\u07b0\u07ad\3\2\2\2\u07b0\u07b1\3\2"+ - "\2\2\u07b1\u0083\3\2\2\2\u07b2\u07b3\7\u0082\2\2\u07b3\u07b5\7\u0103\2"+ - "\2\u07b4\u07b6\7\u00a6\2\2\u07b5\u07b4\3\2\2\2\u07b5\u07b6\3\2\2\2\u07b6"+ - "\u07b7\3\2\2\2\u07b7\u07b8\5\u00fe\u0080\2\u07b8\u07c1\7\4\2\2\u07b9\u07be"+ - "\5\u00bc_\2\u07ba\u07bb\7\6\2\2\u07bb\u07bd\5\u00bc_\2\u07bc\u07ba\3\2"+ - "\2\2\u07bd\u07c0\3\2\2\2\u07be\u07bc\3\2\2\2\u07be\u07bf\3\2\2\2\u07bf"+ - "\u07c2\3\2\2\2\u07c0\u07be\3\2\2\2\u07c1\u07b9\3\2\2\2\u07c1\u07c2\3\2"+ - "\2\2\u07c2\u07c3\3\2\2\2\u07c3\u07c4\7\5\2\2\u07c4\u07d0\5\u0104\u0083"+ - "\2\u07c5\u07c7\7\30\2\2\u07c6\u07c5\3\2\2\2\u07c6\u07c7\3\2\2\2\u07c7"+ - "\u07c8\3\2\2\2\u07c8\u07cd\5\u0104\u0083\2\u07c9\u07ca\7\6\2\2\u07ca\u07cc"+ - "\5\u0104\u0083\2\u07cb\u07c9\3\2\2\2\u07cc\u07cf\3\2\2\2\u07cd\u07cb\3"+ - "\2\2\2\u07cd\u07ce\3\2\2\2\u07ce\u07d1\3\2\2\2\u07cf\u07cd\3\2\2\2\u07d0"+ - "\u07c6\3\2\2\2\u07d0\u07d1\3\2\2\2\u07d1\u0085\3\2\2\2\u07d2\u07d3\t\23"+ - "\2\2\u07d3\u0087\3\2\2\2\u07d4\u07d8\5\u00a0Q\2\u07d5\u07d7\5\u008aF\2"+ - "\u07d6\u07d5\3\2\2\2\u07d7\u07da\3\2\2\2\u07d8\u07d6\3\2\2\2\u07d8\u07d9"+ - "\3\2\2\2\u07d9\u0089\3\2\2\2\u07da\u07d8\3\2\2\2\u07db\u07dc\5\u008cG"+ - "\2\u07dc\u07dd\7\177\2\2\u07dd\u07df\5\u00a0Q\2\u07de\u07e0\5\u008eH\2"+ - "\u07df\u07de\3\2\2\2\u07df\u07e0\3\2\2\2\u07e0\u07e7\3\2\2\2\u07e1\u07e2"+ - "\7\u0099\2\2\u07e2\u07e3\5\u008cG\2\u07e3\u07e4\7\177\2\2\u07e4\u07e5"+ - "\5\u00a0Q\2\u07e5\u07e7\3\2\2\2\u07e6\u07db\3\2\2\2\u07e6\u07e1\3\2\2"+ - "\2\u07e7\u008b\3\2\2\2\u07e8\u07ea\7v\2\2\u07e9\u07e8\3\2\2\2\u07e9\u07ea"+ - "\3\2\2\2\u07ea\u0801\3\2\2\2\u07eb\u0801\78\2\2\u07ec\u07ee\7\u0085\2"+ - "\2\u07ed\u07ef\7\u00a6\2\2\u07ee\u07ed\3\2\2\2\u07ee\u07ef\3\2\2\2\u07ef"+ - "\u0801\3\2\2\2\u07f0\u07f2\7\u0085\2\2\u07f1\u07f0\3\2\2\2\u07f1\u07f2"+ - "\3\2\2\2\u07f2\u07f3\3\2\2\2\u07f3\u0801\7\u00d1\2\2\u07f4\u07f6\7\u00c6"+ - "\2\2\u07f5\u07f7\7\u00a6\2\2\u07f6\u07f5\3\2\2\2\u07f6\u07f7\3\2\2\2\u07f7"+ - "\u0801\3\2\2\2\u07f8\u07fa\7g\2\2\u07f9\u07fb\7\u00a6\2\2\u07fa\u07f9"+ - "\3\2\2\2\u07fa\u07fb\3\2\2\2\u07fb\u0801\3\2\2\2\u07fc\u07fe\7\u0085\2"+ - "\2\u07fd\u07fc\3\2\2\2\u07fd\u07fe\3\2\2\2\u07fe\u07ff\3\2\2\2\u07ff\u0801"+ - "\7\24\2\2\u0800\u07e9\3\2\2\2\u0800\u07eb\3\2\2\2\u0800\u07ec\3\2\2\2"+ - "\u0800\u07f1\3\2\2\2\u0800\u07f4\3\2\2\2\u0800\u07f8\3\2\2\2\u0800\u07fd"+ - "\3\2\2\2\u0801\u008d\3\2\2\2\u0802\u0803\7\u009f\2\2\u0803\u0807\5\u00be"+ - "`\2\u0804\u0805\7\u0101\2\2\u0805\u0807\5\u0094K\2\u0806\u0802\3\2\2\2"+ - "\u0806\u0804\3\2\2\2\u0807\u008f\3\2\2\2\u0808\u0809\7\u00e7\2\2\u0809"+ - "\u080b\7\4\2\2\u080a\u080c\5\u0092J\2\u080b\u080a\3\2\2\2\u080b\u080c"+ - "\3\2\2\2\u080c\u080d\3\2\2\2\u080d\u080e\7\5\2\2\u080e\u0091\3\2\2\2\u080f"+ - "\u0811\7\u0113\2\2\u0810\u080f\3\2\2\2\u0810\u0811\3\2\2\2\u0811\u0812"+ - "\3\2\2\2\u0812\u0813\t\24\2\2\u0813\u0828\7\u00af\2\2\u0814\u0815\5\u00bc"+ - "_\2\u0815\u0816\7\u00cd\2\2\u0816\u0828\3\2\2\2\u0817\u0818\7\36\2\2\u0818"+ - "\u0819\7\u0121\2\2\u0819\u081a\7\u00a5\2\2\u081a\u081b\7\u009e\2\2\u081b"+ - "\u0824\7\u0121\2\2\u081c\u0822\7\u009f\2\2\u081d\u0823\5\u0104\u0083\2"+ - "\u081e\u081f\5\u00fe\u0080\2\u081f\u0820\7\4\2\2\u0820\u0821\7\5\2\2\u0821"+ - "\u0823\3\2\2\2\u0822\u081d\3\2\2\2\u0822\u081e\3\2\2\2\u0823\u0825\3\2"+ - "\2\2\u0824\u081c\3\2\2\2\u0824\u0825\3\2\2\2\u0825\u0828\3\2\2\2\u0826"+ - "\u0828\5\u00bc_\2\u0827\u0810\3\2\2\2\u0827\u0814\3\2\2\2\u0827\u0817"+ - "\3\2\2\2\u0827\u0826\3\2\2\2\u0828\u0093\3\2\2\2\u0829\u082a\7\4\2\2\u082a"+ - "\u082b\5\u0096L\2\u082b\u082c\7\5\2\2\u082c\u0095\3\2\2\2\u082d\u0832"+ - "\5\u0100\u0081\2\u082e\u082f\7\6\2\2\u082f\u0831\5\u0100\u0081\2\u0830"+ - "\u082e\3\2\2\2\u0831\u0834\3\2\2\2\u0832\u0830\3\2\2\2\u0832\u0833\3\2"+ - "\2\2\u0833\u0097\3\2\2\2\u0834\u0832\3\2\2\2\u0835\u0836\7\4\2\2\u0836"+ - "\u083b\5\u009aN\2\u0837\u0838\7\6\2\2\u0838\u083a\5\u009aN\2\u0839\u0837"+ - "\3\2\2\2\u083a\u083d\3\2\2\2\u083b\u0839\3\2\2\2\u083b\u083c\3\2\2\2\u083c"+ - "\u083e\3\2\2\2\u083d\u083b\3\2\2\2\u083e\u083f\7\5\2\2\u083f\u0099\3\2"+ - "\2\2\u0840\u0842\5\u0100\u0081\2\u0841\u0843\t\21\2\2\u0842\u0841\3\2"+ - "\2\2\u0842\u0843\3\2\2\2\u0843\u009b\3\2\2\2\u0844\u0845\7\4\2\2\u0845"+ - "\u084a\5\u009eP\2\u0846\u0847\7\6\2\2\u0847\u0849\5\u009eP\2\u0848\u0846"+ - "\3\2\2\2\u0849\u084c\3\2\2\2\u084a\u0848\3\2\2\2\u084a\u084b\3\2\2\2\u084b"+ - "\u084d\3\2\2\2\u084c\u084a\3\2\2\2\u084d\u084e\7\5\2\2\u084e\u009d\3\2"+ - "\2\2\u084f\u0851\5\u0104\u0083\2\u0850\u0852\5\36\20\2\u0851\u0850\3\2"+ - "\2\2\u0851\u0852\3\2\2\2\u0852\u009f\3\2\2\2\u0853\u0855\5\u00acW\2\u0854"+ - "\u0856\5\u0090I\2\u0855\u0854\3\2\2\2\u0855\u0856\3\2\2\2\u0856\u0857"+ - "\3\2\2\2\u0857\u0858\5\u00a6T\2\u0858\u086c\3\2\2\2\u0859\u085a\7\4\2"+ - "\2\u085a\u085b\5 \21\2\u085b\u085d\7\5\2\2\u085c\u085e\5\u0090I\2\u085d"+ - "\u085c\3\2\2\2\u085d\u085e\3\2\2\2\u085e\u085f\3\2\2\2\u085f\u0860\5\u00a6"+ - "T\2\u0860\u086c\3\2\2\2\u0861\u0862\7\4\2\2\u0862\u0863\5\u0088E\2\u0863"+ - "\u0865\7\5\2\2\u0864\u0866\5\u0090I\2\u0865\u0864\3\2\2\2\u0865\u0866"+ - "\3\2\2\2\u0866\u0867\3\2\2\2\u0867\u0868\5\u00a6T\2\u0868\u086c\3\2\2"+ - "\2\u0869\u086c\5\u00a2R\2\u086a\u086c\5\u00a4S\2\u086b\u0853\3\2\2\2\u086b"+ - "\u0859\3\2\2\2\u086b\u0861\3\2\2\2\u086b\u0869\3\2\2\2\u086b\u086a\3\2"+ - "\2\2\u086c\u00a1\3\2\2\2\u086d\u086e\7\u0102\2\2\u086e\u0873\5\u00bc_"+ - "\2\u086f\u0870\7\6\2\2\u0870\u0872\5\u00bc_\2\u0871\u086f\3\2\2\2\u0872"+ - "\u0875\3\2\2\2\u0873\u0871\3\2\2\2\u0873\u0874\3\2\2\2\u0874\u0876\3\2"+ - "\2\2\u0875\u0873\3\2\2\2\u0876\u0877\5\u00a6T\2\u0877\u00a3\3\2\2\2\u0878"+ - "\u0879\5\u0100\u0081\2\u0879\u0882\7\4\2\2\u087a\u087f\5\u00bc_\2\u087b"+ - "\u087c\7\6\2\2\u087c\u087e\5\u00bc_\2\u087d\u087b\3"; - private static final String _serializedATNSegment1 = - "\2\2\2\u087e\u0881\3\2\2\2\u087f\u087d\3\2\2\2\u087f\u0880\3\2\2\2\u0880"+ - "\u0883\3\2\2\2\u0881\u087f\3\2\2\2\u0882\u087a\3\2\2\2\u0882\u0883\3\2"+ - "\2\2\u0883\u0884\3\2\2\2\u0884\u0885\7\5\2\2\u0885\u0886\5\u00a6T\2\u0886"+ - "\u00a5\3\2\2\2\u0887\u0889\7\30\2\2\u0888\u0887\3\2\2\2\u0888\u0889\3"+ - "\2\2\2\u0889\u088a\3\2\2\2\u088a\u088c\5\u0106\u0084\2\u088b\u088d\5\u0094"+ - "K\2\u088c\u088b\3\2\2\2\u088c\u088d\3\2\2\2\u088d\u088f\3\2\2\2\u088e"+ - "\u0888\3\2\2\2\u088e\u088f\3\2\2\2\u088f\u00a7\3\2\2\2\u0890\u0891\7\u00cc"+ - "\2\2\u0891\u0892\7d\2\2\u0892\u0893\7\u00d3\2\2\u0893\u0897\7\u011d\2"+ - "\2\u0894\u0895\7\u0108\2\2\u0895\u0896\7\u00d4\2\2\u0896\u0898\58\35\2"+ - "\u0897\u0894\3\2\2\2\u0897\u0898\3\2\2\2\u0898\u08c2\3\2\2\2\u0899\u089a"+ - "\7\u00cc\2\2\u089a\u089b\7d\2\2\u089b\u08a5\7F\2\2\u089c\u089d\7]\2\2"+ - "\u089d\u089e\7\u00ea\2\2\u089e\u089f\7 \2\2\u089f\u08a3\7\u011d\2\2\u08a0"+ - "\u08a1\7R\2\2\u08a1\u08a2\7 \2\2\u08a2\u08a4\7\u011d\2\2\u08a3\u08a0\3"+ - "\2\2\2\u08a3\u08a4\3\2\2\2\u08a4\u08a6\3\2\2\2\u08a5\u089c\3\2\2\2\u08a5"+ - "\u08a6\3\2\2\2\u08a6\u08ac\3\2\2\2\u08a7\u08a8\7,\2\2\u08a8\u08a9\7~\2"+ - "\2\u08a9\u08aa\7\u00ea\2\2\u08aa\u08ab\7 \2\2\u08ab\u08ad\7\u011d\2\2"+ - "\u08ac\u08a7\3\2\2\2\u08ac\u08ad\3\2\2\2\u08ad\u08b3\3\2\2\2\u08ae\u08af"+ - "\7\u0091\2\2\u08af\u08b0\7\u0080\2\2\u08b0\u08b1\7\u00ea\2\2\u08b1\u08b2"+ - "\7 \2\2\u08b2\u08b4\7\u011d\2\2\u08b3\u08ae\3\2\2\2\u08b3\u08b4\3\2\2"+ - "\2\u08b4\u08b9\3\2\2\2\u08b5\u08b6\7\u0088\2\2\u08b6\u08b7\7\u00ea\2\2"+ - "\u08b7\u08b8\7 \2\2\u08b8\u08ba\7\u011d\2\2\u08b9\u08b5\3\2\2\2\u08b9"+ - "\u08ba\3\2\2\2\u08ba\u08bf\3\2\2\2\u08bb\u08bc\7\u009c\2\2\u08bc\u08bd"+ - "\7D\2\2\u08bd\u08be\7\30\2\2\u08be\u08c0\7\u011d\2\2\u08bf\u08bb\3\2\2"+ - "\2\u08bf\u08c0\3\2\2\2\u08c0\u08c2\3\2\2\2\u08c1\u0890\3\2\2\2\u08c1\u0899"+ - "\3\2\2\2\u08c2\u00a9\3\2\2\2\u08c3\u08c8\5\u00acW\2\u08c4\u08c5\7\6\2"+ - "\2\u08c5\u08c7\5\u00acW\2\u08c6\u08c4\3\2\2\2\u08c7\u08ca\3\2\2\2\u08c8"+ - "\u08c6\3\2\2\2\u08c8\u08c9\3\2\2\2\u08c9\u00ab\3\2\2\2\u08ca\u08c8\3\2"+ - "\2\2\u08cb\u08d0\5\u0100\u0081\2\u08cc\u08cd\7\7\2\2\u08cd\u08cf\5\u0100"+ - "\u0081\2\u08ce\u08cc\3\2\2\2\u08cf\u08d2\3\2\2\2\u08d0\u08ce\3\2\2\2\u08d0"+ - "\u08d1\3\2\2\2\u08d1\u00ad\3\2\2\2\u08d2\u08d0\3\2\2\2\u08d3\u08d4\5\u0100"+ - "\u0081\2\u08d4\u08d5\7\7\2\2\u08d5\u08d7\3\2\2\2\u08d6\u08d3\3\2\2\2\u08d6"+ - "\u08d7\3\2\2\2\u08d7\u08d8\3\2\2\2\u08d8\u08d9\5\u0100\u0081\2\u08d9\u00af"+ - "\3\2\2\2\u08da\u08db\5\u0100\u0081\2\u08db\u08dc\7\7\2\2\u08dc\u08de\3"+ - "\2\2\2\u08dd\u08da\3\2\2\2\u08dd\u08de\3\2\2\2\u08de\u08df\3\2\2\2\u08df"+ - "\u08e0\5\u0100\u0081\2\u08e0\u00b1\3\2\2\2\u08e1\u08e9\5\u00bc_\2\u08e2"+ - "\u08e4\7\30\2\2\u08e3\u08e2\3\2\2\2\u08e3\u08e4\3\2\2\2\u08e4\u08e7\3"+ - "\2\2\2\u08e5\u08e8\5\u0100\u0081\2\u08e6\u08e8\5\u0094K\2\u08e7\u08e5"+ - "\3\2\2\2\u08e7\u08e6\3\2\2\2\u08e8\u08ea\3\2\2\2\u08e9\u08e3\3\2\2\2\u08e9"+ - "\u08ea\3\2\2\2\u08ea\u00b3\3\2\2\2\u08eb\u08f0\5\u00b2Z\2\u08ec\u08ed"+ - "\7\6\2\2\u08ed\u08ef\5\u00b2Z\2\u08ee\u08ec\3\2\2\2\u08ef\u08f2\3\2\2"+ - "\2\u08f0\u08ee\3\2\2\2\u08f0\u08f1\3\2\2\2\u08f1\u00b5\3\2\2\2\u08f2\u08f0"+ - "\3\2\2\2\u08f3\u08f4\7\4\2\2\u08f4\u08f9\5\u00b8]\2\u08f5\u08f6\7\6\2"+ - "\2\u08f6\u08f8\5\u00b8]\2\u08f7\u08f5\3\2\2\2\u08f8\u08fb\3\2\2\2\u08f9"+ - "\u08f7\3\2\2\2\u08f9\u08fa\3\2\2\2\u08fa\u08fc\3\2\2\2\u08fb\u08f9\3\2"+ - "\2\2\u08fc\u08fd\7\5\2\2\u08fd\u00b7\3\2\2\2\u08fe\u090c\5\u00fe\u0080"+ - "\2\u08ff\u0900\5\u0104\u0083\2\u0900\u0901\7\4\2\2\u0901\u0906\5\u00ba"+ - "^\2\u0902\u0903\7\6\2\2\u0903\u0905\5\u00ba^\2\u0904\u0902\3\2\2\2\u0905"+ - "\u0908\3\2\2\2\u0906\u0904\3\2\2\2\u0906\u0907\3\2\2\2\u0907\u0909\3\2"+ - "\2\2\u0908\u0906\3\2\2\2\u0909\u090a\7\5\2\2\u090a\u090c\3\2\2\2\u090b"+ - "\u08fe\3\2\2\2\u090b\u08ff\3\2\2\2\u090c\u00b9\3\2\2\2\u090d\u0910\5\u00fe"+ - "\u0080\2\u090e\u0910\5\u00c6d\2\u090f\u090d\3\2\2\2\u090f\u090e\3\2\2"+ - "\2\u0910\u00bb\3\2\2\2\u0911\u0912\5\u00be`\2\u0912\u00bd\3\2\2\2\u0913"+ - "\u0914\b`\1\2\u0914\u0915\7\u009b\2\2\u0915\u0920\5\u00be`\7\u0916\u0917"+ - "\7U\2\2\u0917\u0918\7\4\2\2\u0918\u0919\5 \21\2\u0919\u091a\7\5\2\2\u091a"+ - "\u0920\3\2\2\2\u091b\u091d\5\u00c2b\2\u091c\u091e\5\u00c0a\2\u091d\u091c"+ - "\3\2\2\2\u091d\u091e\3\2\2\2\u091e\u0920\3\2\2\2\u091f\u0913\3\2\2\2\u091f"+ - "\u0916\3\2\2\2\u091f\u091b\3\2\2\2\u0920\u0929\3\2\2\2\u0921\u0922\f\4"+ - "\2\2\u0922\u0923\7\23\2\2\u0923\u0928\5\u00be`\5\u0924\u0925\f\3\2\2\u0925"+ - "\u0926\7\u00a3\2\2\u0926\u0928\5\u00be`\4\u0927\u0921\3\2\2\2\u0927\u0924"+ - "\3\2\2\2\u0928\u092b\3\2\2\2\u0929\u0927\3\2\2\2\u0929\u092a\3\2\2\2\u092a"+ - "\u00bf\3\2\2\2\u092b\u0929\3\2\2\2\u092c\u092e\7\u009b\2\2\u092d\u092c"+ - "\3\2\2\2\u092d\u092e\3\2\2\2\u092e\u092f\3\2\2\2\u092f\u0930\7\34\2\2"+ - "\u0930\u0931\5\u00c2b\2\u0931\u0932\7\23\2\2\u0932\u0933\5\u00c2b\2\u0933"+ - "\u097f\3\2\2\2\u0934\u0936\7\u009b\2\2\u0935\u0934\3\2\2\2\u0935\u0936"+ - "\3\2\2\2\u0936\u0937\3\2\2\2\u0937\u0938\7s\2\2\u0938\u0939\7\4\2\2\u0939"+ - "\u093e\5\u00bc_\2\u093a\u093b\7\6\2\2\u093b\u093d\5\u00bc_\2\u093c\u093a"+ - "\3\2\2\2\u093d\u0940\3\2\2\2\u093e\u093c\3\2\2\2\u093e\u093f\3\2\2\2\u093f"+ - "\u0941\3\2\2\2\u0940\u093e\3\2\2\2\u0941\u0942\7\5\2\2\u0942\u097f\3\2"+ - "\2\2\u0943\u0945\7\u009b\2\2\u0944\u0943\3\2\2\2\u0944\u0945\3\2\2\2\u0945"+ - "\u0946\3\2\2\2\u0946\u0947\7s\2\2\u0947\u0948\7\4\2\2\u0948\u0949\5 \21"+ - "\2\u0949\u094a\7\5\2\2\u094a\u097f\3\2\2\2\u094b\u094d\7\u009b\2\2\u094c"+ - "\u094b\3\2\2\2\u094c\u094d\3\2\2\2\u094d\u094e\3\2\2\2\u094e\u094f\7\u00c7"+ - "\2\2\u094f\u097f\5\u00c2b\2\u0950\u0952\7\u009b\2\2\u0951\u0950\3\2\2"+ - "\2\u0951\u0952\3\2\2\2\u0952\u0953\3\2\2\2\u0953\u0954\7\u0086\2\2\u0954"+ - "\u0962\t\25\2\2\u0955\u0956\7\4\2\2\u0956\u0963\7\5\2\2\u0957\u0958\7"+ - "\4\2\2\u0958\u095d\5\u00bc_\2\u0959\u095a\7\6\2\2\u095a\u095c\5\u00bc"+ - "_\2\u095b\u0959\3\2\2\2\u095c\u095f\3\2\2\2\u095d\u095b\3\2\2\2\u095d"+ - "\u095e\3\2\2\2\u095e\u0960\3\2\2\2\u095f\u095d\3\2\2\2\u0960\u0961\7\5"+ - "\2\2\u0961\u0963\3\2\2\2\u0962\u0955\3\2\2\2\u0962\u0957\3\2\2\2\u0963"+ - "\u097f\3\2\2\2\u0964\u0966\7\u009b\2\2\u0965\u0964\3\2\2\2\u0965\u0966"+ - "\3\2\2\2\u0966\u0967\3\2\2\2\u0967\u0968\7\u0086\2\2\u0968\u096b\5\u00c2"+ - "b\2\u0969\u096a\7Q\2\2\u096a\u096c\7\u011d\2\2\u096b\u0969\3\2\2\2\u096b"+ - "\u096c\3\2\2\2\u096c\u097f\3\2\2\2\u096d\u096f\7}\2\2\u096e\u0970\7\u009b"+ - "\2\2\u096f\u096e\3\2\2\2\u096f\u0970\3\2\2\2\u0970\u0971\3\2\2\2\u0971"+ - "\u097f\7\u009c\2\2\u0972\u0974\7}\2\2\u0973\u0975\7\u009b\2\2\u0974\u0973"+ - "\3\2\2\2\u0974\u0975\3\2\2\2\u0975\u0976\3\2\2\2\u0976\u097f\t\26\2\2"+ - "\u0977\u0979\7}\2\2\u0978\u097a\7\u009b\2\2\u0979\u0978\3\2\2\2\u0979"+ - "\u097a\3\2\2\2\u097a\u097b\3\2\2\2\u097b\u097c\7L\2\2\u097c\u097d\7f\2"+ - "\2\u097d\u097f\5\u00c2b\2\u097e\u092d\3\2\2\2\u097e\u0935\3\2\2\2\u097e"+ - "\u0944\3\2\2\2\u097e\u094c\3\2\2\2\u097e\u0951\3\2\2\2\u097e\u0965\3\2"+ - "\2\2\u097e\u096d\3\2\2\2\u097e\u0972\3\2\2\2\u097e\u0977\3\2\2\2\u097f"+ - "\u00c1\3\2\2\2\u0980\u0981\bb\1\2\u0981\u0985\5\u00c4c\2\u0982\u0983\t"+ - "\27\2\2\u0983\u0985\5\u00c2b\t\u0984\u0980\3\2\2\2\u0984\u0982\3\2\2\2"+ - "\u0985\u099b\3\2\2\2\u0986\u0987\f\b\2\2\u0987\u0988\t\30\2\2\u0988\u099a"+ - "\5\u00c2b\t\u0989\u098a\f\7\2\2\u098a\u098b\t\31\2\2\u098b\u099a\5\u00c2"+ - "b\b\u098c\u098d\f\6\2\2\u098d\u098e\7\u0119\2\2\u098e\u099a\5\u00c2b\7"+ - "\u098f\u0990\f\5\2\2\u0990\u0991\7\u011c\2\2\u0991\u099a\5\u00c2b\6\u0992"+ - "\u0993\f\4\2\2\u0993\u0994\7\u011a\2\2\u0994\u099a\5\u00c2b\5\u0995\u0996"+ - "\f\3\2\2\u0996\u0997\5\u00c8e\2\u0997\u0998\5\u00c2b\4\u0998\u099a\3\2"+ - "\2\2\u0999\u0986\3\2\2\2\u0999\u0989\3\2\2\2\u0999\u098c\3\2\2\2\u0999"+ - "\u098f\3\2\2\2\u0999\u0992\3\2\2\2\u0999\u0995\3\2\2\2\u099a\u099d\3\2"+ - "\2\2\u099b\u0999\3\2\2\2\u099b\u099c\3\2\2\2\u099c\u00c3\3\2\2\2\u099d"+ - "\u099b\3\2\2\2\u099e\u099f\bc\1\2\u099f\u0a57\t\32\2\2\u09a0\u09a2\7#"+ - "\2\2\u09a1\u09a3\5\u00eex\2\u09a2\u09a1\3\2\2\2\u09a3\u09a4\3\2\2\2\u09a4"+ - "\u09a2\3\2\2\2\u09a4\u09a5\3\2\2\2\u09a5\u09a8\3\2\2\2\u09a6\u09a7\7O"+ - "\2\2\u09a7\u09a9\5\u00bc_\2\u09a8\u09a6\3\2\2\2\u09a8\u09a9\3\2\2\2\u09a9"+ - "\u09aa\3\2\2\2\u09aa\u09ab\7P\2\2\u09ab\u0a57\3\2\2\2\u09ac\u09ad\7#\2"+ - "\2\u09ad\u09af\5\u00bc_\2\u09ae\u09b0\5\u00eex\2\u09af\u09ae\3\2\2\2\u09b0"+ - "\u09b1\3\2\2\2\u09b1\u09af\3\2\2\2\u09b1\u09b2\3\2\2\2\u09b2\u09b5\3\2"+ - "\2\2\u09b3\u09b4\7O\2\2\u09b4\u09b6\5\u00bc_\2\u09b5\u09b3\3\2\2\2\u09b5"+ - "\u09b6\3\2\2\2\u09b6\u09b7\3\2\2\2\u09b7\u09b8\7P\2\2\u09b8\u0a57\3\2"+ - "\2\2\u09b9\u09ba\7$\2\2\u09ba\u09bb\7\4\2\2\u09bb\u09bc\5\u00bc_\2\u09bc"+ - "\u09bd\7\30\2\2\u09bd\u09be\5\u00e0q\2\u09be\u09bf\7\5\2\2\u09bf\u0a57"+ - "\3\2\2\2\u09c0\u09c1\7\u00e2\2\2\u09c1\u09ca\7\4\2\2\u09c2\u09c7\5\u00b2"+ - "Z\2\u09c3\u09c4\7\6\2\2\u09c4\u09c6\5\u00b2Z\2\u09c5\u09c3\3\2\2\2\u09c6"+ - "\u09c9\3\2\2\2\u09c7\u09c5\3\2\2\2\u09c7\u09c8\3\2\2\2\u09c8\u09cb\3\2"+ - "\2\2\u09c9\u09c7\3\2\2\2\u09ca\u09c2\3\2\2\2\u09ca\u09cb\3\2\2\2\u09cb"+ - "\u09cc\3\2\2\2\u09cc\u0a57\7\5\2\2\u09cd\u09ce\7`\2\2\u09ce\u09cf\7\4"+ - "\2\2\u09cf\u09d2\5\u00bc_\2\u09d0\u09d1\7q\2\2\u09d1\u09d3\7\u009d\2\2"+ - "\u09d2\u09d0\3\2\2\2\u09d2\u09d3\3\2\2\2\u09d3\u09d4\3\2\2\2\u09d4\u09d5"+ - "\7\5\2\2\u09d5\u0a57\3\2\2\2\u09d6\u09d7\7\u0081\2\2\u09d7\u09d8\7\4\2"+ - "\2\u09d8\u09db\5\u00bc_\2\u09d9\u09da\7q\2\2\u09da\u09dc\7\u009d\2\2\u09db"+ - "\u09d9\3\2\2\2\u09db\u09dc\3\2\2\2\u09dc\u09dd\3\2\2\2\u09dd\u09de\7\5"+ - "\2\2\u09de\u0a57\3\2\2\2\u09df\u09e0\7\u00b2\2\2\u09e0\u09e1\7\4\2\2\u09e1"+ - "\u09e2\5\u00c2b\2\u09e2\u09e3\7s\2\2\u09e3\u09e4\5\u00c2b\2\u09e4\u09e5"+ - "\7\5\2\2\u09e5\u0a57\3\2\2\2\u09e6\u0a57\5\u00c6d\2\u09e7\u0a57\7\u0114"+ - "\2\2\u09e8\u09e9\5\u00fe\u0080\2\u09e9\u09ea\7\7\2\2\u09ea\u09eb\7\u0114"+ - "\2\2\u09eb\u0a57\3\2\2\2\u09ec\u09ed\7\4\2\2\u09ed\u09f0\5\u00b2Z\2\u09ee"+ - "\u09ef\7\6\2\2\u09ef\u09f1\5\u00b2Z\2\u09f0\u09ee\3\2\2\2\u09f1\u09f2"+ - "\3\2\2\2\u09f2\u09f0\3\2\2\2\u09f2\u09f3\3\2\2\2\u09f3\u09f4\3\2\2\2\u09f4"+ - "\u09f5\7\5\2\2\u09f5\u0a57\3\2\2\2\u09f6\u09f7\7\4\2\2\u09f7\u09f8\5 "+ - "\21\2\u09f8\u09f9\7\5\2\2\u09f9\u0a57\3\2\2\2\u09fa\u09fb\5\u00fc\177"+ - "\2\u09fb\u0a07\7\4\2\2\u09fc\u09fe\5\u0086D\2\u09fd\u09fc\3\2\2\2\u09fd"+ - "\u09fe\3\2\2\2\u09fe\u09ff\3\2\2\2\u09ff\u0a04\5\u00bc_\2\u0a00\u0a01"+ - "\7\6\2\2\u0a01\u0a03\5\u00bc_\2\u0a02\u0a00\3\2\2\2\u0a03\u0a06\3\2\2"+ - "\2\u0a04\u0a02\3\2\2\2\u0a04\u0a05\3\2\2\2\u0a05\u0a08\3\2\2\2\u0a06\u0a04"+ - "\3\2\2\2\u0a07\u09fd\3\2\2\2\u0a07\u0a08\3\2\2\2\u0a08\u0a09\3\2\2\2\u0a09"+ - "\u0a10\7\5\2\2\u0a0a\u0a0b\7^\2\2\u0a0b\u0a0c\7\4\2\2\u0a0c\u0a0d\7\u0106"+ - "\2\2\u0a0d\u0a0e\5\u00be`\2\u0a0e\u0a0f\7\5\2\2\u0a0f\u0a11\3\2\2\2\u0a10"+ - "\u0a0a\3\2\2\2\u0a10\u0a11\3\2\2\2\u0a11\u0a14\3\2\2\2\u0a12\u0a13\7\u00a8"+ - "\2\2\u0a13\u0a15\5\u00f4{\2\u0a14\u0a12\3\2\2\2\u0a14\u0a15\3\2\2\2\u0a15"+ - "\u0a57\3\2\2\2\u0a16\u0a17\5\u0104\u0083\2\u0a17\u0a18\7\n\2\2\u0a18\u0a19"+ - "\5\u00bc_\2\u0a19\u0a57\3\2\2\2\u0a1a\u0a1b\7\4\2\2\u0a1b\u0a1e\5\u0104"+ - "\u0083\2\u0a1c\u0a1d\7\6\2\2\u0a1d\u0a1f\5\u0104\u0083\2\u0a1e\u0a1c\3"+ - "\2\2\2\u0a1f\u0a20\3\2\2\2\u0a20\u0a1e\3\2\2\2\u0a20\u0a21\3\2\2\2\u0a21"+ - "\u0a22\3\2\2\2\u0a22\u0a23\7\5\2\2\u0a23\u0a24\7\n\2\2\u0a24\u0a25\5\u00bc"+ - "_\2\u0a25\u0a57\3\2\2\2\u0a26\u0a57\5\u0104\u0083\2\u0a27\u0a28\7\4\2"+ - "\2\u0a28\u0a29\5\u00bc_\2\u0a29\u0a2a\7\5\2\2\u0a2a\u0a57\3\2\2\2\u0a2b"+ - "\u0a2c\7Z\2\2\u0a2c\u0a2d\7\4\2\2\u0a2d\u0a2e\5\u0104\u0083\2\u0a2e\u0a2f"+ - "\7f\2\2\u0a2f\u0a30\5\u00c2b\2\u0a30\u0a31\7\5\2\2\u0a31\u0a57\3\2\2\2"+ - "\u0a32\u0a33\t\33\2\2\u0a33\u0a34\7\4\2\2\u0a34\u0a35\5\u00c2b\2\u0a35"+ - "\u0a36\t\34\2\2\u0a36\u0a39\5\u00c2b\2\u0a37\u0a38\t\35\2\2\u0a38\u0a3a"+ - "\5\u00c2b\2\u0a39\u0a37\3\2\2\2\u0a39\u0a3a\3\2\2\2\u0a3a\u0a3b\3\2\2"+ - "\2\u0a3b\u0a3c\7\5\2\2\u0a3c\u0a57\3\2\2\2\u0a3d\u0a3e\7\u00f2\2\2\u0a3e"+ - "\u0a40\7\4\2\2\u0a3f\u0a41\t\36\2\2\u0a40\u0a3f\3\2\2\2\u0a40\u0a41\3"+ - "\2\2\2\u0a41\u0a43\3\2\2\2\u0a42\u0a44\5\u00c2b\2\u0a43\u0a42\3\2\2\2"+ - "\u0a43\u0a44\3\2\2\2\u0a44\u0a45\3\2\2\2\u0a45\u0a46\7f\2\2\u0a46\u0a47"+ - "\5\u00c2b\2\u0a47\u0a48\7\5\2\2\u0a48\u0a57\3\2\2\2\u0a49\u0a4a\7\u00aa"+ - "\2\2\u0a4a\u0a4b\7\4\2\2\u0a4b\u0a4c\5\u00c2b\2\u0a4c\u0a4d\7\u00b1\2"+ - "\2\u0a4d\u0a4e\5\u00c2b\2\u0a4e\u0a4f\7f\2\2\u0a4f\u0a52\5\u00c2b\2\u0a50"+ - "\u0a51\7b\2\2\u0a51\u0a53\5\u00c2b\2\u0a52\u0a50\3\2\2\2\u0a52\u0a53\3"+ - "\2\2\2\u0a53\u0a54\3\2\2\2\u0a54\u0a55\7\5\2\2\u0a55\u0a57\3\2\2\2\u0a56"+ - "\u099e\3\2\2\2\u0a56\u09a0\3\2\2\2\u0a56\u09ac\3\2\2\2\u0a56\u09b9\3\2"+ - "\2\2\u0a56\u09c0\3\2\2\2\u0a56\u09cd\3\2\2\2\u0a56\u09d6\3\2\2\2\u0a56"+ - "\u09df\3\2\2\2\u0a56\u09e6\3\2\2\2\u0a56\u09e7\3\2\2\2\u0a56\u09e8\3\2"+ - "\2\2\u0a56\u09ec\3\2\2\2\u0a56\u09f6\3\2\2\2\u0a56\u09fa\3\2\2\2\u0a56"+ - "\u0a16\3\2\2\2\u0a56\u0a1a\3\2\2\2\u0a56\u0a26\3\2\2\2\u0a56\u0a27\3\2"+ - "\2\2\u0a56\u0a2b\3\2\2\2\u0a56\u0a32\3\2\2\2\u0a56\u0a3d\3\2\2\2\u0a56"+ - "\u0a49\3\2\2\2\u0a57\u0a62\3\2\2\2\u0a58\u0a59\f\n\2\2\u0a59\u0a5a\7\13"+ - "\2\2\u0a5a\u0a5b\5\u00c2b\2\u0a5b\u0a5c\7\f\2\2\u0a5c\u0a61\3\2\2\2\u0a5d"+ - "\u0a5e\f\b\2\2\u0a5e\u0a5f\7\7\2\2\u0a5f\u0a61\5\u0104\u0083\2\u0a60\u0a58"+ - "\3\2\2\2\u0a60\u0a5d\3\2\2\2\u0a61\u0a64\3\2\2\2\u0a62\u0a60\3\2\2\2\u0a62"+ - "\u0a63\3\2\2\2\u0a63\u00c5\3\2\2\2\u0a64\u0a62\3\2\2\2\u0a65\u0a72\7\u009c"+ - "\2\2\u0a66\u0a72\5\u00d0i\2\u0a67\u0a68\5\u0104\u0083\2\u0a68\u0a69\7"+ - "\u011d\2\2\u0a69\u0a72\3\2\2\2\u0a6a\u0a72\5\u010a\u0086\2\u0a6b\u0a72"+ - "\5\u00ceh\2\u0a6c\u0a6e\7\u011d\2\2\u0a6d\u0a6c\3\2\2\2\u0a6e\u0a6f\3"+ - "\2\2\2\u0a6f\u0a6d\3\2\2\2\u0a6f\u0a70\3\2\2\2\u0a70\u0a72\3\2\2\2\u0a71"+ - "\u0a65\3\2\2\2\u0a71\u0a66\3\2\2\2\u0a71\u0a67\3\2\2\2\u0a71\u0a6a\3\2"+ - "\2\2\u0a71\u0a6b\3\2\2\2\u0a71\u0a6d\3\2\2\2\u0a72\u00c7\3\2\2\2\u0a73"+ - "\u0a74\t\37\2\2\u0a74\u00c9\3\2\2\2\u0a75\u0a76\t \2\2\u0a76\u00cb\3\2"+ - "\2\2\u0a77\u0a78\t!\2\2\u0a78\u00cd\3\2\2\2\u0a79\u0a7a\t\"\2\2\u0a7a"+ - "\u00cf\3\2\2\2\u0a7b\u0a7e\7{\2\2\u0a7c\u0a7f\5\u00d2j\2\u0a7d\u0a7f\5"+ - "\u00d6l\2\u0a7e\u0a7c\3\2\2\2\u0a7e\u0a7d\3\2\2\2\u0a7e\u0a7f\3\2\2\2"+ - "\u0a7f\u00d1\3\2\2\2\u0a80\u0a82\5\u00d4k\2\u0a81\u0a83\5\u00d8m\2\u0a82"+ - "\u0a81\3\2\2\2\u0a82\u0a83\3\2\2\2\u0a83\u00d3\3\2\2\2\u0a84\u0a85\5\u00da"+ - "n\2\u0a85\u0a86\5\u00dco\2\u0a86\u0a88\3\2\2\2\u0a87\u0a84\3\2\2\2\u0a88"+ - "\u0a89\3\2\2\2\u0a89\u0a87\3\2\2\2\u0a89\u0a8a\3\2\2\2\u0a8a\u00d5\3\2"+ - "\2\2\u0a8b\u0a8e\5\u00d8m\2\u0a8c\u0a8f\5\u00d4k\2\u0a8d\u0a8f\5\u00d8"+ - "m\2\u0a8e\u0a8c\3\2\2\2\u0a8e\u0a8d\3\2\2\2\u0a8e\u0a8f\3\2\2\2\u0a8f"+ - "\u00d7\3\2\2\2\u0a90\u0a91\5\u00dan\2\u0a91\u0a92\5\u00dco\2\u0a92\u0a93"+ - "\7\u00ec\2\2\u0a93\u0a94\5\u00dco\2\u0a94\u00d9\3\2\2\2\u0a95\u0a97\t"+ - "#\2\2\u0a96\u0a95\3\2\2\2\u0a96\u0a97\3\2\2\2\u0a97\u0a98\3\2\2\2\u0a98"+ - "\u0a9b\t\24\2\2\u0a99\u0a9b\7\u011d\2\2\u0a9a\u0a96\3\2\2\2\u0a9a\u0a99"+ - "\3\2\2\2\u0a9b\u00db\3\2\2\2\u0a9c\u0aa4\7B\2\2\u0a9d\u0aa4\7o\2\2\u0a9e"+ - "\u0aa4\7\u0094\2\2\u0a9f\u0aa4\7\u0095\2\2\u0aa0\u0aa4\7\u00cf\2\2\u0aa1"+ - "\u0aa4\7\u0109\2\2\u0aa2\u0aa4\5\u0104\u0083\2\u0aa3\u0a9c\3\2\2\2\u0aa3"+ - "\u0a9d\3\2\2\2\u0aa3\u0a9e\3\2\2\2\u0aa3\u0a9f\3\2\2\2\u0aa3\u0aa0\3\2"+ - "\2\2\u0aa3\u0aa1\3\2\2\2\u0aa3\u0aa2\3\2\2\2\u0aa4\u00dd\3\2\2\2\u0aa5"+ - "\u0aa9\7`\2\2\u0aa6\u0aa7\7\17\2\2\u0aa7\u0aa9\5\u0100\u0081\2\u0aa8\u0aa5"+ - "\3\2\2\2\u0aa8\u0aa6\3\2\2\2\u0aa9\u00df\3\2\2\2\u0aaa\u0aab\7\27\2\2"+ - "\u0aab\u0aac\7\u010e\2\2\u0aac\u0aad\5\u00e0q\2\u0aad\u0aae\7\u0110\2"+ - "\2\u0aae\u0acd\3\2\2\2\u0aaf\u0ab0\7\u0091\2\2\u0ab0\u0ab1\7\u010e\2\2"+ - "\u0ab1\u0ab2\5\u00e0q\2\u0ab2\u0ab3\7\6\2\2\u0ab3\u0ab4\5\u00e0q\2\u0ab4"+ - "\u0ab5\7\u0110\2\2\u0ab5\u0acd\3\2\2\2\u0ab6\u0abd\7\u00e2\2\2\u0ab7\u0ab9"+ - "\7\u010e\2\2\u0ab8\u0aba\5\u00eav\2\u0ab9\u0ab8\3\2\2\2\u0ab9\u0aba\3"+ - "\2\2\2\u0aba\u0abb\3\2\2\2\u0abb\u0abe\7\u0110\2\2\u0abc\u0abe\7\u010c"+ - "\2\2\u0abd\u0ab7\3\2\2\2\u0abd\u0abc\3\2\2\2\u0abe\u0acd\3\2\2\2\u0abf"+ - "\u0aca\5\u0104\u0083\2\u0ac0\u0ac1\7\4\2\2\u0ac1\u0ac6\7\u0121\2\2\u0ac2"+ - "\u0ac3\7\6\2\2\u0ac3\u0ac5\7\u0121\2\2\u0ac4\u0ac2\3\2\2\2\u0ac5\u0ac8"+ - "\3\2\2\2\u0ac6\u0ac4\3\2\2\2\u0ac6\u0ac7\3\2\2\2\u0ac7\u0ac9\3\2\2\2\u0ac8"+ - "\u0ac6\3\2\2\2\u0ac9\u0acb\7\5\2\2\u0aca\u0ac0\3\2\2\2\u0aca\u0acb\3\2"+ - "\2\2\u0acb\u0acd\3\2\2\2\u0acc\u0aaa\3\2\2\2\u0acc\u0aaf\3\2\2\2\u0acc"+ - "\u0ab6\3\2\2\2\u0acc\u0abf\3\2\2\2\u0acd\u00e1\3\2\2\2\u0ace\u0ad3\5\u00e4"+ - "s\2\u0acf\u0ad0\7\6\2\2\u0ad0\u0ad2\5\u00e4s\2\u0ad1\u0acf\3\2\2\2\u0ad2"+ - "\u0ad5\3\2\2\2\u0ad3\u0ad1\3\2\2\2\u0ad3\u0ad4\3\2\2\2\u0ad4\u00e3\3\2"+ - "\2\2\u0ad5\u0ad3\3\2\2\2\u0ad6\u0ad7\5\u00acW\2\u0ad7\u0ada\5\u00e0q\2"+ - "\u0ad8\u0ad9\7\u009b\2\2\u0ad9\u0adb\7\u009c\2\2\u0ada\u0ad8\3\2\2\2\u0ada"+ - "\u0adb\3\2\2\2\u0adb\u0add\3\2\2\2\u0adc\u0ade\5\36\20\2\u0add\u0adc\3"+ - "\2\2\2\u0add\u0ade\3\2\2\2\u0ade\u0ae0\3\2\2\2\u0adf\u0ae1\5\u00dep\2"+ - "\u0ae0\u0adf\3\2\2\2\u0ae0\u0ae1\3\2\2\2\u0ae1\u00e5\3\2\2\2\u0ae2\u0ae7"+ - "\5\u00e8u\2\u0ae3\u0ae4\7\6\2\2\u0ae4\u0ae6\5\u00e8u\2\u0ae5\u0ae3\3\2"+ - "\2\2\u0ae6\u0ae9\3\2\2\2\u0ae7\u0ae5\3\2\2\2\u0ae7\u0ae8\3\2\2\2\u0ae8"+ - "\u00e7\3\2\2\2\u0ae9\u0ae7\3\2\2\2\u0aea\u0aeb\5\u0100\u0081\2\u0aeb\u0aee"+ - "\5\u00e0q\2\u0aec\u0aed\7\u009b\2\2\u0aed\u0aef\7\u009c\2\2\u0aee\u0aec"+ - "\3\2\2\2\u0aee\u0aef\3\2\2\2\u0aef\u0af1\3\2\2\2\u0af0\u0af2\5\36\20\2"+ - "\u0af1\u0af0\3\2\2\2\u0af1\u0af2\3\2\2\2\u0af2\u00e9\3\2\2\2\u0af3\u0af8"+ - "\5\u00ecw\2\u0af4\u0af5\7\6\2\2\u0af5\u0af7\5\u00ecw\2\u0af6\u0af4\3\2"+ - "\2\2\u0af7\u0afa\3\2\2\2\u0af8\u0af6\3\2\2\2\u0af8\u0af9\3\2\2\2\u0af9"+ - "\u00eb\3\2\2\2\u0afa\u0af8\3\2\2\2\u0afb\u0afc\5\u0104\u0083\2\u0afc\u0afd"+ - "\7\r\2\2\u0afd\u0b00\5\u00e0q\2\u0afe\u0aff\7\u009b\2\2\u0aff\u0b01\7"+ - "\u009c\2\2\u0b00\u0afe\3\2\2\2\u0b00\u0b01\3\2\2\2\u0b01\u0b03\3\2\2\2"+ - "\u0b02\u0b04\5\36\20\2\u0b03\u0b02\3\2\2\2\u0b03\u0b04\3\2\2\2\u0b04\u00ed"+ - "\3\2\2\2\u0b05\u0b06\7\u0105\2\2\u0b06\u0b07\5\u00bc_\2\u0b07\u0b08\7"+ - "\u00eb\2\2\u0b08\u0b09\5\u00bc_\2\u0b09\u00ef\3\2\2\2\u0b0a\u0b0b\7\u0107"+ - "\2\2\u0b0b\u0b10\5\u00f2z\2\u0b0c\u0b0d\7\6\2\2\u0b0d\u0b0f\5\u00f2z\2"+ - "\u0b0e\u0b0c\3\2\2\2\u0b0f\u0b12\3\2\2\2\u0b10\u0b0e\3\2\2\2\u0b10\u0b11"+ - "\3\2\2\2\u0b11\u00f1\3\2\2\2\u0b12\u0b10\3\2\2\2\u0b13\u0b14\5\u0100\u0081"+ - "\2\u0b14\u0b15\7\30\2\2\u0b15\u0b16\5\u00f4{\2\u0b16\u00f3\3\2\2\2\u0b17"+ - "\u0b46\5\u0100\u0081\2\u0b18\u0b19\7\4\2\2\u0b19\u0b1a\5\u0100\u0081\2"+ - "\u0b1a\u0b1b\7\5\2\2\u0b1b\u0b46\3\2\2\2\u0b1c\u0b3f\7\4\2\2\u0b1d\u0b1e"+ - "\7(\2\2\u0b1e\u0b1f\7 \2\2\u0b1f\u0b24\5\u00bc_\2\u0b20\u0b21\7\6\2\2"+ - "\u0b21\u0b23\5\u00bc_\2\u0b22\u0b20\3\2\2\2\u0b23\u0b26\3\2\2\2\u0b24"+ - "\u0b22\3\2\2\2\u0b24\u0b25\3\2\2\2\u0b25\u0b40\3\2\2\2\u0b26\u0b24\3\2"+ - "\2\2\u0b27\u0b28\t$\2\2\u0b28\u0b29\7 \2\2\u0b29\u0b2e\5\u00bc_\2\u0b2a"+ - "\u0b2b\7\6\2\2\u0b2b\u0b2d\5\u00bc_\2\u0b2c\u0b2a\3\2\2\2\u0b2d\u0b30"+ - "\3\2\2\2\u0b2e\u0b2c\3\2\2\2\u0b2e\u0b2f\3\2\2\2\u0b2f\u0b32\3\2\2\2\u0b30"+ - "\u0b2e\3\2\2\2\u0b31\u0b27\3\2\2\2\u0b31\u0b32\3\2\2\2\u0b32\u0b3d\3\2"+ - "\2\2\u0b33\u0b34\t%\2\2\u0b34\u0b35\7 \2\2\u0b35\u0b3a\5V,\2\u0b36\u0b37"+ - "\7\6\2\2\u0b37\u0b39\5V,\2\u0b38\u0b36\3\2\2\2\u0b39\u0b3c\3\2\2\2\u0b3a"+ - "\u0b38\3\2\2\2\u0b3a\u0b3b\3\2\2\2\u0b3b\u0b3e\3\2\2\2\u0b3c\u0b3a\3\2"+ - "\2\2\u0b3d\u0b33\3\2\2\2\u0b3d\u0b3e\3\2\2\2\u0b3e\u0b40\3\2\2\2\u0b3f"+ - "\u0b1d\3\2\2\2\u0b3f\u0b31\3\2\2\2\u0b40\u0b42\3\2\2\2\u0b41\u0b43\5\u00f6"+ - "|\2\u0b42\u0b41\3\2\2\2\u0b42\u0b43\3\2\2\2\u0b43\u0b44\3\2\2\2\u0b44"+ - "\u0b46\7\5\2\2\u0b45\u0b17\3\2\2\2\u0b45\u0b18\3\2\2\2\u0b45\u0b1c\3\2"+ - "\2\2\u0b46\u00f5\3\2\2\2\u0b47\u0b48\7\u00b9\2\2\u0b48\u0b58\5\u00f8}"+ - "\2\u0b49\u0b4a\7\u00cd\2\2\u0b4a\u0b58\5\u00f8}\2\u0b4b\u0b4c\7\u00b9"+ - "\2\2\u0b4c\u0b4d\7\34\2\2\u0b4d\u0b4e\5\u00f8}\2\u0b4e\u0b4f\7\23\2\2"+ - "\u0b4f\u0b50\5\u00f8}\2\u0b50\u0b58\3\2\2\2\u0b51\u0b52\7\u00cd\2\2\u0b52"+ - "\u0b53\7\34\2\2\u0b53\u0b54\5\u00f8}\2\u0b54\u0b55\7\23\2\2\u0b55\u0b56"+ - "\5\u00f8}\2\u0b56\u0b58\3\2\2\2\u0b57\u0b47\3\2\2\2\u0b57\u0b49\3\2\2"+ - "\2\u0b57\u0b4b\3\2\2\2\u0b57\u0b51\3\2\2\2\u0b58\u00f7\3\2\2\2\u0b59\u0b5a"+ - "\7\u00f7\2\2\u0b5a\u0b61\t&\2\2\u0b5b\u0b5c\7:\2\2\u0b5c\u0b61\7\u00cc"+ - "\2\2\u0b5d\u0b5e\5\u00bc_\2\u0b5e\u0b5f\t&\2\2\u0b5f\u0b61\3\2\2\2\u0b60"+ - "\u0b59\3\2\2\2\u0b60\u0b5b\3\2\2\2\u0b60\u0b5d\3\2\2\2\u0b61\u00f9\3\2"+ - "\2\2\u0b62\u0b67\5\u00fe\u0080\2\u0b63\u0b64\7\6\2\2\u0b64\u0b66\5\u00fe"+ - "\u0080\2\u0b65\u0b63\3\2\2\2\u0b66\u0b69\3\2\2\2\u0b67\u0b65\3\2\2\2\u0b67"+ - "\u0b68\3\2\2\2\u0b68\u00fb\3\2\2\2\u0b69\u0b67\3\2\2\2\u0b6a\u0b6f\5\u00fe"+ - "\u0080\2\u0b6b\u0b6f\7^\2\2\u0b6c\u0b6f\7\u0085\2\2\u0b6d\u0b6f\7\u00c6"+ - "\2\2\u0b6e\u0b6a\3\2\2\2\u0b6e\u0b6b\3\2\2\2\u0b6e\u0b6c\3\2\2\2\u0b6e"+ - "\u0b6d\3\2\2\2\u0b6f\u00fd\3\2\2\2\u0b70\u0b75\5\u0104\u0083\2\u0b71\u0b72"+ - "\7\7\2\2\u0b72\u0b74\5\u0104\u0083\2\u0b73\u0b71\3\2\2\2\u0b74\u0b77\3"+ - "\2\2\2\u0b75\u0b73\3\2\2\2\u0b75\u0b76\3\2\2\2\u0b76\u00ff\3\2\2\2\u0b77"+ - "\u0b75\3\2\2\2\u0b78\u0b79\5\u0104\u0083\2\u0b79\u0b7a\5\u0102\u0082\2"+ - "\u0b7a\u0101\3\2\2\2\u0b7b\u0b7c\7\u0113\2\2\u0b7c\u0b7e\5\u0104\u0083"+ - "\2\u0b7d\u0b7b\3\2\2\2\u0b7e\u0b7f\3\2\2\2\u0b7f\u0b7d\3\2\2\2\u0b7f\u0b80"+ - "\3\2\2\2\u0b80\u0b83\3\2\2\2\u0b81\u0b83\3\2\2\2\u0b82\u0b7d\3\2\2\2\u0b82"+ - "\u0b81\3\2\2\2\u0b83\u0103\3\2\2\2\u0b84\u0b88\5\u0106\u0084\2\u0b85\u0b86"+ - "\6\u0083\24\2\u0b86\u0b88\5\u0110\u0089\2\u0b87\u0b84\3\2\2\2\u0b87\u0b85"+ - "\3\2\2\2\u0b88\u0105\3\2\2\2\u0b89\u0b90\7\u0126\2\2\u0b8a\u0b90\5\u0108"+ - "\u0085\2\u0b8b\u0b8c\6\u0084\25\2\u0b8c\u0b90\5\u010e\u0088\2\u0b8d\u0b8e"+ - "\6\u0084\26\2\u0b8e\u0b90\5\u0112\u008a\2\u0b8f\u0b89\3\2\2\2\u0b8f\u0b8a"+ - "\3\2\2\2\u0b8f\u0b8b\3\2\2\2\u0b8f\u0b8d\3\2\2\2\u0b90\u0107\3\2\2\2\u0b91"+ - "\u0b92\7\u0127\2\2\u0b92\u0109\3\2\2\2\u0b93\u0b95\6\u0086\27\2\u0b94"+ - "\u0b96\7\u0113\2\2\u0b95\u0b94\3\2\2\2\u0b95\u0b96\3\2\2\2\u0b96\u0b97"+ - "\3\2\2\2\u0b97\u0bbb\7\u0122\2\2\u0b98\u0b9a\6\u0086\30\2\u0b99\u0b9b"+ - "\7\u0113\2\2\u0b9a\u0b99\3\2\2\2\u0b9a\u0b9b\3\2\2\2\u0b9b\u0b9c\3\2\2"+ - "\2\u0b9c\u0bbb\7\u0123\2\2\u0b9d\u0b9f\6\u0086\31\2\u0b9e\u0ba0\7\u0113"+ - "\2\2\u0b9f\u0b9e\3\2\2\2\u0b9f\u0ba0\3\2\2\2\u0ba0\u0ba1\3\2\2\2\u0ba1"+ - "\u0bbb\t\'\2\2\u0ba2\u0ba4\7\u0113\2\2\u0ba3\u0ba2\3\2\2\2\u0ba3\u0ba4"+ - "\3\2\2\2\u0ba4\u0ba5\3\2\2\2\u0ba5\u0bbb\7\u0121\2\2\u0ba6\u0ba8\7\u0113"+ - "\2\2\u0ba7\u0ba6\3\2\2\2\u0ba7\u0ba8\3\2\2\2\u0ba8\u0ba9\3\2\2\2\u0ba9"+ - "\u0bbb\7\u011e\2\2\u0baa\u0bac\7\u0113\2\2\u0bab\u0baa\3\2\2\2\u0bab\u0bac"+ - "\3\2\2\2\u0bac\u0bad\3\2\2\2\u0bad\u0bbb\7\u011f\2\2\u0bae\u0bb0\7\u0113"+ - "\2\2\u0baf\u0bae\3\2\2\2\u0baf\u0bb0\3\2\2\2\u0bb0\u0bb1\3\2\2\2\u0bb1"+ - "\u0bbb\7\u0120\2\2\u0bb2\u0bb4\7\u0113\2\2\u0bb3\u0bb2\3\2\2\2\u0bb3\u0bb4"+ - "\3\2\2\2\u0bb4\u0bb5\3\2\2\2\u0bb5\u0bbb\7\u0124\2\2\u0bb6\u0bb8\7\u0113"+ - "\2\2\u0bb7\u0bb6\3\2\2\2\u0bb7\u0bb8\3\2\2\2\u0bb8\u0bb9\3\2\2\2\u0bb9"+ - "\u0bbb\7\u0125\2\2\u0bba\u0b93\3\2\2\2\u0bba\u0b98\3\2\2\2\u0bba\u0b9d"+ - "\3\2\2\2\u0bba\u0ba3\3\2\2\2\u0bba\u0ba7\3\2\2\2\u0bba\u0bab\3\2\2\2\u0bba"+ - "\u0baf\3\2\2\2\u0bba\u0bb3\3\2\2\2\u0bba\u0bb7\3\2\2\2\u0bbb\u010b\3\2"+ - "\2\2\u0bbc\u0bbd\7\u00f5\2\2\u0bbd\u0bc4\5\u00e0q\2\u0bbe\u0bc4\5\36\20"+ - "\2\u0bbf\u0bc4\5\u00dep\2\u0bc0\u0bc1\t(\2\2\u0bc1\u0bc2\7\u009b\2\2\u0bc2"+ - "\u0bc4\7\u009c\2\2\u0bc3\u0bbc\3\2\2\2\u0bc3\u0bbe\3\2\2\2\u0bc3\u0bbf"+ - "\3\2\2\2\u0bc3\u0bc0\3\2\2\2\u0bc4\u010d\3\2\2\2\u0bc5\u0bc6\t)\2\2\u0bc6"+ - "\u010f\3\2\2\2\u0bc7\u0bc8\t*\2\2\u0bc8\u0111\3\2\2\2\u0bc9\u0bca\t+\2"+ - "\2\u0bca\u0113\3\2\2\2\u018c\u0118\u0131\u0136\u013e\u0146\u0148\u015c"+ - "\u0160\u0166\u0169\u016c\u0174\u0177\u017b\u017e\u0186\u018b\u018e\u0195"+ - "\u01a1\u01aa\u01ac\u01b0\u01b3\u01ba\u01c5\u01c7\u01cf\u01d4\u01d7\u01dd"+ - "\u01e8\u0228\u0231\u0235\u023b\u023f\u0244\u024a\u0256\u025e\u0264\u0271"+ - "\u0276\u0286\u028d\u0291\u0297\u02a6\u02aa\u02b0\u02b6\u02b9\u02bc\u02c2"+ - "\u02c6\u02ce\u02d0\u02d9\u02dc\u02e5\u02ea\u02f0\u02f7\u02fa\u0300\u030b"+ - "\u030e\u0312\u0317\u031c\u0323\u0326\u0329\u0330\u0335\u033e\u0346\u034c"+ - "\u034f\u0352\u0358\u035c\u0360\u0364\u0366\u036e\u0376\u037c\u0382\u0385"+ - "\u0389\u038c\u0390\u03a9\u03ac\u03b0\u03b6\u03b9\u03bc\u03c2\u03ca\u03cf"+ - "\u03d5\u03db\u03e7\u03ea\u03f1\u03f8\u0400\u0403\u040b\u040f\u0416\u048a"+ - "\u0492\u049a\u04a3\u04ad\u04b1\u04b4\u04ba\u04c0\u04cc\u04d8\u04dd\u04e6"+ - "\u04ee\u04f5\u04f7\u04fc\u0500\u0505\u050a\u050f\u0512\u0517\u051b\u0520"+ - "\u0522\u0526\u052f\u0537\u0540\u0547\u0550\u0555\u0558\u056b\u056d\u0576"+ - "\u057d\u0580\u0587\u058b\u0591\u0599\u05a4\u05af\u05b6\u05bc\u05c9\u05d0"+ - "\u05d7\u05e3\u05eb\u05f1\u05f4\u05fd\u0600\u0609\u060c\u0615\u0618\u0621"+ - "\u0624\u0627\u062c\u062e\u063a\u0641\u0648\u064b\u064d\u0659\u065d\u0661"+ - "\u0667\u066b\u0673\u0677\u067a\u067d\u0680\u0684\u0688\u068b\u068f\u0694"+ - "\u0698\u069b\u069e\u06a1\u06a3\u06af\u06b2\u06b6\u06c0\u06c4\u06c6\u06c9"+ - "\u06cd\u06d3\u06d7\u06e2\u06ec\u06f8\u0707\u070c\u0713\u0723\u0728\u0735"+ - "\u073a\u0742\u0748\u074c\u0755\u0764\u0769\u0775\u077a\u0782\u0785\u0789"+ - "\u0797\u07a4\u07a9\u07ad\u07b0\u07b5\u07be\u07c1\u07c6\u07cd\u07d0\u07d8"+ - "\u07df\u07e6\u07e9\u07ee\u07f1\u07f6\u07fa\u07fd\u0800\u0806\u080b\u0810"+ - "\u0822\u0824\u0827\u0832\u083b\u0842\u084a\u0851\u0855\u085d\u0865\u086b"+ - "\u0873\u087f\u0882\u0888\u088c\u088e\u0897\u08a3\u08a5\u08ac\u08b3\u08b9"+ - "\u08bf\u08c1\u08c8\u08d0\u08d6\u08dd\u08e3\u08e7\u08e9\u08f0\u08f9\u0906"+ - "\u090b\u090f\u091d\u091f\u0927\u0929\u092d\u0935\u093e\u0944\u094c\u0951"+ - "\u095d\u0962\u0965\u096b\u096f\u0974\u0979\u097e\u0984\u0999\u099b\u09a4"+ - "\u09a8\u09b1\u09b5\u09c7\u09ca\u09d2\u09db\u09f2\u09fd\u0a04\u0a07\u0a10"+ - "\u0a14\u0a20\u0a39\u0a40\u0a43\u0a52\u0a56\u0a60\u0a62\u0a6f\u0a71\u0a7e"+ - "\u0a82\u0a89\u0a8e\u0a96\u0a9a\u0aa3\u0aa8\u0ab9\u0abd\u0ac6\u0aca\u0acc"+ - "\u0ad3\u0ada\u0add\u0ae0\u0ae7\u0aee\u0af1\u0af8\u0b00\u0b03\u0b10\u0b24"+ - "\u0b2e\u0b31\u0b3a\u0b3d\u0b3f\u0b42\u0b45\u0b57\u0b60\u0b67\u0b6e\u0b75"+ - "\u0b7f\u0b82\u0b87\u0b8f\u0b95\u0b9a\u0b9f\u0ba3\u0ba7\u0bab\u0baf\u0bb3"+ - "\u0bb7\u0bba\u0bc3"; - public static final String _serializedATN = Utils.join( - new String[] { - _serializedATNSegment0, - _serializedATNSegment1 - }, - "" - ); - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/pysparkling/sql/ast/generated/SqlBaseParser.py b/pysparkling/sql/ast/generated/SqlBaseParser.py new file mode 100644 index 000000000..aec31a9f5 --- /dev/null +++ b/pysparkling/sql/ast/generated/SqlBaseParser.py @@ -0,0 +1,22167 @@ +# Generated from ../grammar/SqlBase.g4 by ANTLR 4.7.1 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +from typing.io import TextIO +import sys + +def serializedATN(): + with StringIO() as buf: + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u012b") + buf.write("\u0bcc\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") + buf.write("\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") + buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") + buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") + buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") + buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") + buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") + buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") + buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") + buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") + buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") + buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") + buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") + buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") + buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") + buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") + buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") + buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") + buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") + buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\3\2\3") + buf.write("\2\7\2\u0117\n\2\f\2\16\2\u011a\13\2\3\2\3\2\3\3\3\3\3") + buf.write("\3\3\4\3\4\3\4\3\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\b") + buf.write("\3\b\3\b\3\t\3\t\5\t\u0132\n\t\3\t\3\t\3\t\5\t\u0137\n") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u013f\n\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\7\t\u0147\n\t\f\t\16\t\u014a\13\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\5\t\u015d\n\t\3\t\3\t\5\t\u0161\n\t\3\t\3\t\3\t\3") + buf.write("\t\5\t\u0167\n\t\3\t\5\t\u016a\n\t\3\t\5\t\u016d\n\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\5\t\u0175\n\t\3\t\5\t\u0178\n\t") + buf.write("\3\t\3\t\5\t\u017c\n\t\3\t\5\t\u017f\n\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\5\t\u0187\n\t\3\t\3\t\3\t\5\t\u018c\n\t\3\t") + buf.write("\5\t\u018f\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u0196\n\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u01a2\n\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\7\t\u01ab\n\t\f\t\16\t\u01ae\13") + buf.write("\t\3\t\5\t\u01b1\n\t\3\t\5\t\u01b4\n\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\5\t\u01bb\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\7\t\u01c6\n\t\f\t\16\t\u01c9\13\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\5\t\u01d0\n\t\3\t\3\t\3\t\5\t\u01d5\n\t\3\t\5\t\u01d8") + buf.write("\n\t\3\t\3\t\3\t\3\t\5\t\u01de\n\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\3\t\3\t\3\t\5\t\u01e9\n\t\3\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\3\t\5\t\u0229\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t") + buf.write("\u0232\n\t\3\t\3\t\5\t\u0236\n\t\3\t\3\t\3\t\3\t\5\t\u023c") + buf.write("\n\t\3\t\3\t\5\t\u0240\n\t\3\t\3\t\3\t\5\t\u0245\n\t\3") + buf.write("\t\3\t\3\t\3\t\5\t\u024b\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\5\t\u0257\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5") + buf.write("\t\u025f\n\t\3\t\3\t\3\t\3\t\5\t\u0265\n\t\3\t\3\t\3\t") + buf.write("\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0272\n\t\3\t\6\t") + buf.write("\u0275\n\t\r\t\16\t\u0276\3\t\3\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0287\n\t\3\t\3\t\3\t") + buf.write("\7\t\u028c\n\t\f\t\16\t\u028f\13\t\3\t\5\t\u0292\n\t\3") + buf.write("\t\3\t\3\t\3\t\5\t\u0298\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02a7\n\t\3\t\3\t\5\t\u02ab") + buf.write("\n\t\3\t\3\t\3\t\3\t\5\t\u02b1\n\t\3\t\3\t\3\t\3\t\5\t") + buf.write("\u02b7\n\t\3\t\5\t\u02ba\n\t\3\t\5\t\u02bd\n\t\3\t\3\t") + buf.write("\3\t\3\t\5\t\u02c3\n\t\3\t\3\t\5\t\u02c7\n\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\7\t\u02cf\n\t\f\t\16\t\u02d2\13\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\5\t\u02da\n\t\3\t\5\t\u02dd\n\t\3\t") + buf.write("\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02e6\n\t\3\t\3\t\3\t\5\t") + buf.write("\u02eb\n\t\3\t\3\t\3\t\3\t\5\t\u02f1\n\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\5\t\u02f8\n\t\3\t\5\t\u02fb\n\t\3\t\3\t\3\t\3\t") + buf.write("\5\t\u0301\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u030a\n") + buf.write("\t\f\t\16\t\u030d\13\t\5\t\u030f\n\t\3\t\3\t\5\t\u0313") + buf.write("\n\t\3\t\3\t\3\t\5\t\u0318\n\t\3\t\3\t\3\t\5\t\u031d\n") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\5\t\u0324\n\t\3\t\5\t\u0327\n\t") + buf.write("\3\t\5\t\u032a\n\t\3\t\3\t\3\t\3\t\3\t\5\t\u0331\n\t\3") + buf.write("\t\3\t\3\t\5\t\u0336\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5") + buf.write("\t\u033f\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u0347\n\t\3\t") + buf.write("\3\t\3\t\3\t\5\t\u034d\n\t\3\t\5\t\u0350\n\t\3\t\5\t\u0353") + buf.write("\n\t\3\t\3\t\3\t\3\t\5\t\u0359\n\t\3\t\3\t\5\t\u035d\n") + buf.write("\t\3\t\3\t\5\t\u0361\n\t\3\t\3\t\5\t\u0365\n\t\5\t\u0367") + buf.write("\n\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u036f\n\t\3\t\3\t\3\t") + buf.write("\3\t\3\t\3\t\5\t\u0377\n\t\3\t\3\t\3\t\3\t\5\t\u037d\n") + buf.write("\t\3\t\3\t\3\t\3\t\5\t\u0383\n\t\3\t\5\t\u0386\n\t\3\t") + buf.write("\3\t\5\t\u038a\n\t\3\t\5\t\u038d\n\t\3\t\3\t\5\t\u0391") + buf.write("\n\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u03a8\n\t\f\t\16") + buf.write("\t\u03ab\13\t\5\t\u03ad\n\t\3\t\3\t\5\t\u03b1\n\t\3\t") + buf.write("\3\t\3\t\3\t\5\t\u03b7\n\t\3\t\5\t\u03ba\n\t\3\t\5\t\u03bd") + buf.write("\n\t\3\t\3\t\3\t\3\t\5\t\u03c3\n\t\3\t\3\t\3\t\3\t\3\t") + buf.write("\3\t\5\t\u03cb\n\t\3\t\3\t\3\t\5\t\u03d0\n\t\3\t\3\t\3") + buf.write("\t\3\t\5\t\u03d6\n\t\3\t\3\t\3\t\3\t\5\t\u03dc\n\t\3\t") + buf.write("\3\t\3\t\3\t\3\t\3\t\3\t\3\t\7\t\u03e6\n\t\f\t\16\t\u03e9") + buf.write("\13\t\5\t\u03eb\n\t\3\t\3\t\3\t\7\t\u03f0\n\t\f\t\16\t") + buf.write("\u03f3\13\t\3\t\3\t\7\t\u03f7\n\t\f\t\16\t\u03fa\13\t") + buf.write("\3\t\3\t\3\t\7\t\u03ff\n\t\f\t\16\t\u0402\13\t\5\t\u0404") + buf.write("\n\t\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u040c\n\n\3\n\3\n\5\n") + buf.write("\u0410\n\n\3\n\3\n\3\n\3\n\3\n\5\n\u0417\n\n\3\n\3\n\3") + buf.write("\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") + buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") + buf.write("\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") + buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") + buf.write("\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") + buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") + buf.write("\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") + buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") + buf.write("\n\3\n\3\n\3\n\5\n\u048b\n\n\3\n\3\n\3\n\3\n\3\n\3\n\5") + buf.write("\n\u0493\n\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u049b\n\n\3\n") + buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u04a4\n\n\3\n\3\n\3\n\3\n") + buf.write("\3\n\3\n\3\n\3\n\5\n\u04ae\n\n\3\13\3\13\5\13\u04b2\n") + buf.write("\13\3\13\5\13\u04b5\n\13\3\13\3\13\3\13\3\13\5\13\u04bb") + buf.write("\n\13\3\13\3\13\3\f\3\f\5\f\u04c1\n\f\3\f\3\f\3\f\3\f") + buf.write("\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u04cd\n\r\3\r\3\r\3\r\3\r") + buf.write("\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u04d9\n\16\3\16\3") + buf.write("\16\3\16\5\16\u04de\n\16\3\17\3\17\3\17\3\20\3\20\3\20") + buf.write("\3\21\5\21\u04e7\n\21\3\21\3\21\3\21\3\22\3\22\3\22\5") + buf.write("\22\u04ef\n\22\3\22\3\22\3\22\3\22\3\22\5\22\u04f6\n\22") + buf.write("\5\22\u04f8\n\22\3\22\3\22\3\22\5\22\u04fd\n\22\3\22\3") + buf.write("\22\5\22\u0501\n\22\3\22\3\22\3\22\5\22\u0506\n\22\3\22") + buf.write("\3\22\3\22\5\22\u050b\n\22\3\22\3\22\3\22\5\22\u0510\n") + buf.write("\22\3\22\5\22\u0513\n\22\3\22\3\22\3\22\5\22\u0518\n\22") + buf.write("\3\22\3\22\5\22\u051c\n\22\3\22\3\22\3\22\5\22\u0521\n") + buf.write("\22\5\22\u0523\n\22\3\23\3\23\5\23\u0527\n\23\3\24\3\24") + buf.write("\3\24\3\24\3\24\7\24\u052e\n\24\f\24\16\24\u0531\13\24") + buf.write("\3\24\3\24\3\25\3\25\3\25\5\25\u0538\n\25\3\26\3\26\3") + buf.write("\27\3\27\3\27\3\27\3\27\5\27\u0541\n\27\3\30\3\30\3\30") + buf.write("\7\30\u0546\n\30\f\30\16\30\u0549\13\30\3\31\3\31\3\31") + buf.write("\3\31\7\31\u054f\n\31\f\31\16\31\u0552\13\31\3\32\3\32") + buf.write("\5\32\u0556\n\32\3\32\5\32\u0559\n\32\3\32\3\32\3\32\3") + buf.write("\32\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34") + buf.write("\3\34\3\34\3\34\7\34\u056c\n\34\f\34\16\34\u056f\13\34") + buf.write("\3\35\3\35\3\35\3\35\7\35\u0575\n\35\f\35\16\35\u0578") + buf.write("\13\35\3\35\3\35\3\36\3\36\5\36\u057e\n\36\3\36\5\36\u0581") + buf.write("\n\36\3\37\3\37\3\37\7\37\u0586\n\37\f\37\16\37\u0589") + buf.write("\13\37\3\37\5\37\u058c\n\37\3 \3 \3 \3 \5 \u0592\n \3") + buf.write("!\3!\3!\3!\7!\u0598\n!\f!\16!\u059b\13!\3!\3!\3\"\3\"") + buf.write("\3\"\3\"\7\"\u05a3\n\"\f\"\16\"\u05a6\13\"\3\"\3\"\3#") + buf.write("\3#\3#\3#\3#\3#\5#\u05b0\n#\3$\3$\3$\3$\3$\5$\u05b7\n") + buf.write("$\3%\3%\3%\3%\5%\u05bd\n%\3&\3&\3&\3\'\3\'\3\'\3\'\3\'") + buf.write("\3\'\6\'\u05c8\n\'\r\'\16\'\u05c9\3\'\3\'\3\'\3\'\3\'") + buf.write("\5\'\u05d1\n\'\3\'\3\'\3\'\3\'\3\'\5\'\u05d8\n\'\3\'\3") + buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\5\'\u05e4\n\'\3\'\3") + buf.write("\'\3\'\3\'\7\'\u05ea\n\'\f\'\16\'\u05ed\13\'\3\'\7\'\u05f0") + buf.write("\n\'\f\'\16\'\u05f3\13\'\5\'\u05f5\n\'\3(\3(\3(\3(\3(") + buf.write("\7(\u05fc\n(\f(\16(\u05ff\13(\5(\u0601\n(\3(\3(\3(\3(") + buf.write("\3(\7(\u0608\n(\f(\16(\u060b\13(\5(\u060d\n(\3(\3(\3(") + buf.write("\3(\3(\7(\u0614\n(\f(\16(\u0617\13(\5(\u0619\n(\3(\3(") + buf.write("\3(\3(\3(\7(\u0620\n(\f(\16(\u0623\13(\5(\u0625\n(\3(") + buf.write("\5(\u0628\n(\3(\3(\3(\5(\u062d\n(\5(\u062f\n(\3)\3)\3") + buf.write(")\3*\3*\3*\3*\3*\3*\3*\5*\u063b\n*\3*\3*\3*\3*\3*\5*\u0642") + buf.write("\n*\3*\3*\3*\3*\3*\5*\u0649\n*\3*\7*\u064c\n*\f*\16*\u064f") + buf.write("\13*\3+\3+\3+\3+\3+\3+\3+\3+\3+\5+\u065a\n+\3,\3,\5,\u065e") + buf.write("\n,\3,\3,\5,\u0662\n,\3-\3-\6-\u0666\n-\r-\16-\u0667\3") + buf.write(".\3.\5.\u066c\n.\3.\3.\3.\3.\7.\u0672\n.\f.\16.\u0675") + buf.write("\13.\3.\5.\u0678\n.\3.\5.\u067b\n.\3.\5.\u067e\n.\3.\5") + buf.write(".\u0681\n.\3.\3.\5.\u0685\n.\3/\3/\5/\u0689\n/\3/\5/\u068c") + buf.write("\n/\3/\3/\5/\u0690\n/\3/\7/\u0693\n/\f/\16/\u0696\13/") + buf.write("\3/\5/\u0699\n/\3/\5/\u069c\n/\3/\5/\u069f\n/\3/\5/\u06a2") + buf.write("\n/\5/\u06a4\n/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60") + buf.write("\3\60\3\60\5\60\u06b0\n\60\3\60\5\60\u06b3\n\60\3\60\3") + buf.write("\60\5\60\u06b7\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60") + buf.write("\3\60\5\60\u06c1\n\60\3\60\3\60\5\60\u06c5\n\60\5\60\u06c7") + buf.write("\n\60\3\60\5\60\u06ca\n\60\3\60\3\60\5\60\u06ce\n\60\3") + buf.write("\61\3\61\7\61\u06d2\n\61\f\61\16\61\u06d5\13\61\3\61\5") + buf.write("\61\u06d8\n\61\3\61\3\61\3\62\3\62\3\62\3\63\3\63\3\63") + buf.write("\3\63\5\63\u06e3\n\63\3\63\3\63\3\63\3\64\3\64\3\64\3") + buf.write("\64\3\64\5\64\u06ed\n\64\3\64\3\64\3\64\3\65\3\65\3\65") + buf.write("\3\65\3\65\3\65\3\65\5\65\u06f9\n\65\3\66\3\66\3\66\3") + buf.write("\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\7\66\u0706\n\66") + buf.write("\f\66\16\66\u0709\13\66\3\66\3\66\5\66\u070d\n\66\3\67") + buf.write("\3\67\3\67\7\67\u0712\n\67\f\67\16\67\u0715\13\67\38\3") + buf.write("8\38\38\39\39\39\3:\3:\3:\3;\3;\3;\5;\u0724\n;\3;\7;\u0727") + buf.write("\n;\f;\16;\u072a\13;\3;\3;\3<\3<\3<\3<\3<\3<\7<\u0734") + buf.write("\n<\f<\16<\u0737\13<\3<\3<\5<\u073b\n<\3=\3=\3=\3=\7=") + buf.write("\u0741\n=\f=\16=\u0744\13=\3=\7=\u0747\n=\f=\16=\u074a") + buf.write("\13=\3=\5=\u074d\n=\3>\3>\3>\3>\3>\7>\u0754\n>\f>\16>") + buf.write("\u0757\13>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\7>\u0763\n>\f") + buf.write(">\16>\u0766\13>\3>\3>\5>\u076a\n>\3>\3>\3>\3>\3>\3>\3") + buf.write(">\3>\7>\u0774\n>\f>\16>\u0777\13>\3>\3>\5>\u077b\n>\3") + buf.write("?\3?\3?\3?\7?\u0781\n?\f?\16?\u0784\13?\5?\u0786\n?\3") + buf.write("?\3?\5?\u078a\n?\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\7@\u0796") + buf.write("\n@\f@\16@\u0799\13@\3@\3@\3@\3A\3A\3A\3A\3A\7A\u07a3") + buf.write("\nA\fA\16A\u07a6\13A\3A\3A\5A\u07aa\nA\3B\3B\5B\u07ae") + buf.write("\nB\3B\5B\u07b1\nB\3C\3C\3C\5C\u07b6\nC\3C\3C\3C\3C\3") + buf.write("C\7C\u07bd\nC\fC\16C\u07c0\13C\5C\u07c2\nC\3C\3C\3C\5") + buf.write("C\u07c7\nC\3C\3C\3C\7C\u07cc\nC\fC\16C\u07cf\13C\5C\u07d1") + buf.write("\nC\3D\3D\3E\3E\7E\u07d7\nE\fE\16E\u07da\13E\3F\3F\3F") + buf.write("\3F\5F\u07e0\nF\3F\3F\3F\3F\3F\5F\u07e7\nF\3G\5G\u07ea") + buf.write("\nG\3G\3G\3G\5G\u07ef\nG\3G\5G\u07f2\nG\3G\3G\3G\5G\u07f7") + buf.write("\nG\3G\3G\5G\u07fb\nG\3G\5G\u07fe\nG\3G\5G\u0801\nG\3") + buf.write("H\3H\3H\3H\5H\u0807\nH\3I\3I\3I\5I\u080c\nI\3I\3I\3J\5") + buf.write("J\u0811\nJ\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3") + buf.write("J\3J\5J\u0823\nJ\5J\u0825\nJ\3J\5J\u0828\nJ\3K\3K\3K\3") + buf.write("K\3L\3L\3L\7L\u0831\nL\fL\16L\u0834\13L\3M\3M\3M\3M\7") + buf.write("M\u083a\nM\fM\16M\u083d\13M\3M\3M\3N\3N\5N\u0843\nN\3") + buf.write("O\3O\3O\3O\7O\u0849\nO\fO\16O\u084c\13O\3O\3O\3P\3P\5") + buf.write("P\u0852\nP\3Q\3Q\5Q\u0856\nQ\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u085e") + buf.write("\nQ\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u0866\nQ\3Q\3Q\3Q\3Q\5Q\u086c") + buf.write("\nQ\3R\3R\3R\3R\7R\u0872\nR\fR\16R\u0875\13R\3R\3R\3S") + buf.write("\3S\3S\3S\3S\7S\u087e\nS\fS\16S\u0881\13S\5S\u0883\nS") + buf.write("\3S\3S\3S\3T\5T\u0889\nT\3T\3T\5T\u088d\nT\5T\u088f\n") + buf.write("T\3U\3U\3U\3U\3U\3U\3U\5U\u0898\nU\3U\3U\3U\3U\3U\3U\3") + buf.write("U\3U\3U\3U\5U\u08a4\nU\5U\u08a6\nU\3U\3U\3U\3U\3U\5U\u08ad") + buf.write("\nU\3U\3U\3U\3U\3U\5U\u08b4\nU\3U\3U\3U\3U\5U\u08ba\n") + buf.write("U\3U\3U\3U\3U\5U\u08c0\nU\5U\u08c2\nU\3V\3V\3V\7V\u08c7") + buf.write("\nV\fV\16V\u08ca\13V\3W\3W\3W\7W\u08cf\nW\fW\16W\u08d2") + buf.write("\13W\3X\3X\3X\5X\u08d7\nX\3X\3X\3Y\3Y\3Y\5Y\u08de\nY\3") + buf.write("Y\3Y\3Z\3Z\5Z\u08e4\nZ\3Z\3Z\5Z\u08e8\nZ\5Z\u08ea\nZ\3") + buf.write("[\3[\3[\7[\u08ef\n[\f[\16[\u08f2\13[\3\\\3\\\3\\\3\\\7") + buf.write("\\\u08f8\n\\\f\\\16\\\u08fb\13\\\3\\\3\\\3]\3]\3]\3]\3") + buf.write("]\3]\7]\u0905\n]\f]\16]\u0908\13]\3]\3]\5]\u090c\n]\3") + buf.write("^\3^\5^\u0910\n^\3_\3_\3`\3`\3`\3`\3`\3`\3`\3`\3`\3`\5") + buf.write("`\u091e\n`\5`\u0920\n`\3`\3`\3`\3`\3`\3`\7`\u0928\n`\f") + buf.write("`\16`\u092b\13`\3a\5a\u092e\na\3a\3a\3a\3a\3a\3a\5a\u0936") + buf.write("\na\3a\3a\3a\3a\3a\7a\u093d\na\fa\16a\u0940\13a\3a\3a") + buf.write("\3a\5a\u0945\na\3a\3a\3a\3a\3a\3a\5a\u094d\na\3a\3a\3") + buf.write("a\5a\u0952\na\3a\3a\3a\3a\3a\3a\3a\3a\7a\u095c\na\fa\16") + buf.write("a\u095f\13a\3a\3a\5a\u0963\na\3a\5a\u0966\na\3a\3a\3a") + buf.write("\3a\5a\u096c\na\3a\3a\5a\u0970\na\3a\3a\3a\5a\u0975\n") + buf.write("a\3a\3a\3a\5a\u097a\na\3a\3a\3a\5a\u097f\na\3b\3b\3b\3") + buf.write("b\5b\u0985\nb\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3") + buf.write("b\3b\3b\3b\3b\3b\7b\u099a\nb\fb\16b\u099d\13b\3c\3c\3") + buf.write("c\3c\6c\u09a3\nc\rc\16c\u09a4\3c\3c\5c\u09a9\nc\3c\3c") + buf.write("\3c\3c\3c\6c\u09b0\nc\rc\16c\u09b1\3c\3c\5c\u09b6\nc\3") + buf.write("c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\7c\u09c6\nc\f") + buf.write("c\16c\u09c9\13c\5c\u09cb\nc\3c\3c\3c\3c\3c\3c\5c\u09d3") + buf.write("\nc\3c\3c\3c\3c\3c\3c\3c\5c\u09dc\nc\3c\3c\3c\3c\3c\3") + buf.write("c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\6c\u09f1\nc\r") + buf.write("c\16c\u09f2\3c\3c\3c\3c\3c\3c\3c\3c\3c\5c\u09fe\nc\3c") + buf.write("\3c\3c\7c\u0a03\nc\fc\16c\u0a06\13c\5c\u0a08\nc\3c\3c") + buf.write("\3c\3c\3c\3c\3c\5c\u0a11\nc\3c\3c\5c\u0a15\nc\3c\3c\3") + buf.write("c\3c\3c\3c\3c\3c\6c\u0a1f\nc\rc\16c\u0a20\3c\3c\3c\3c") + buf.write("\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3") + buf.write("c\3c\5c\u0a3a\nc\3c\3c\3c\3c\3c\5c\u0a41\nc\3c\5c\u0a44") + buf.write("\nc\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\5c\u0a53\n") + buf.write("c\3c\3c\5c\u0a57\nc\3c\3c\3c\3c\3c\3c\3c\3c\7c\u0a61\n") + buf.write("c\fc\16c\u0a64\13c\3d\3d\3d\3d\3d\3d\3d\3d\6d\u0a6e\n") + buf.write("d\rd\16d\u0a6f\5d\u0a72\nd\3e\3e\3f\3f\3g\3g\3h\3h\3i") + buf.write("\3i\3i\5i\u0a7f\ni\3j\3j\5j\u0a83\nj\3k\3k\3k\6k\u0a88") + buf.write("\nk\rk\16k\u0a89\3l\3l\3l\5l\u0a8f\nl\3m\3m\3m\3m\3m\3") + buf.write("n\5n\u0a97\nn\3n\3n\5n\u0a9b\nn\3o\3o\3o\3o\3o\3o\3o\5") + buf.write("o\u0aa4\no\3p\3p\3p\5p\u0aa9\np\3q\3q\3q\3q\3q\3q\3q\3") + buf.write("q\3q\3q\3q\3q\3q\3q\3q\5q\u0aba\nq\3q\3q\5q\u0abe\nq\3") + buf.write("q\3q\3q\3q\3q\7q\u0ac5\nq\fq\16q\u0ac8\13q\3q\5q\u0acb") + buf.write("\nq\5q\u0acd\nq\3r\3r\3r\7r\u0ad2\nr\fr\16r\u0ad5\13r") + buf.write("\3s\3s\3s\3s\5s\u0adb\ns\3s\5s\u0ade\ns\3s\5s\u0ae1\n") + buf.write("s\3t\3t\3t\7t\u0ae6\nt\ft\16t\u0ae9\13t\3u\3u\3u\3u\5") + buf.write("u\u0aef\nu\3u\5u\u0af2\nu\3v\3v\3v\7v\u0af7\nv\fv\16v") + buf.write("\u0afa\13v\3w\3w\3w\3w\3w\5w\u0b01\nw\3w\5w\u0b04\nw\3") + buf.write("x\3x\3x\3x\3x\3y\3y\3y\3y\7y\u0b0f\ny\fy\16y\u0b12\13") + buf.write("y\3z\3z\3z\3z\3{\3{\3{\3{\3{\3{\3{\3{\3{\3{\3{\7{\u0b23") + buf.write("\n{\f{\16{\u0b26\13{\3{\3{\3{\3{\3{\7{\u0b2d\n{\f{\16") + buf.write("{\u0b30\13{\5{\u0b32\n{\3{\3{\3{\3{\3{\7{\u0b39\n{\f{") + buf.write("\16{\u0b3c\13{\5{\u0b3e\n{\5{\u0b40\n{\3{\5{\u0b43\n{") + buf.write("\3{\5{\u0b46\n{\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3|\3") + buf.write("|\3|\3|\3|\5|\u0b58\n|\3}\3}\3}\3}\3}\3}\3}\5}\u0b61\n") + buf.write("}\3~\3~\3~\7~\u0b66\n~\f~\16~\u0b69\13~\3\177\3\177\3") + buf.write("\177\3\177\5\177\u0b6f\n\177\3\u0080\3\u0080\3\u0080\7") + buf.write("\u0080\u0b74\n\u0080\f\u0080\16\u0080\u0b77\13\u0080\3") + buf.write("\u0081\3\u0081\3\u0081\3\u0082\3\u0082\6\u0082\u0b7e\n") + buf.write("\u0082\r\u0082\16\u0082\u0b7f\3\u0082\5\u0082\u0b83\n") + buf.write("\u0082\3\u0083\3\u0083\3\u0083\5\u0083\u0b88\n\u0083\3") + buf.write("\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\5\u0084") + buf.write("\u0b90\n\u0084\3\u0085\3\u0085\3\u0086\3\u0086\5\u0086") + buf.write("\u0b96\n\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u0b9b\n") + buf.write("\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u0ba0\n\u0086\3") + buf.write("\u0086\3\u0086\5\u0086\u0ba4\n\u0086\3\u0086\3\u0086\5") + buf.write("\u0086\u0ba8\n\u0086\3\u0086\3\u0086\5\u0086\u0bac\n\u0086") + buf.write("\3\u0086\3\u0086\5\u0086\u0bb0\n\u0086\3\u0086\3\u0086") + buf.write("\5\u0086\u0bb4\n\u0086\3\u0086\3\u0086\5\u0086\u0bb8\n") + buf.write("\u0086\3\u0086\5\u0086\u0bbb\n\u0086\3\u0087\3\u0087\3") + buf.write("\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0bc4\n") + buf.write("\u0087\3\u0088\3\u0088\3\u0089\3\u0089\3\u008a\3\u008a") + buf.write("\3\u008a\7\u03a9\u03e7\u03f1\u03f8\u0400\6R\u00be\u00c2") + buf.write("\u00c4\u008b\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"") + buf.write("$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz") + buf.write("|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090") + buf.write("\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2") + buf.write("\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4") + buf.write("\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6") + buf.write("\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8") + buf.write("\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea") + buf.write("\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc") + buf.write("\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e") + buf.write("\u0110\u0112\2,\4\2CC\u00b6\u00b6\4\2\"\"\u00c4\u00c4") + buf.write("\4\2AA\u0098\u0098\4\2ffss\3\2-.\4\2\u00e5\u00e5\u0103") + buf.write("\u0103\4\2\21\21%%\7\2**\66\66XXee\u008f\u008f\3\2GH\4") + buf.write("\2XXee\4\2\u009c\u009c\u011d\u011d\4\2\16\16\u0089\u0089") + buf.write("\5\2@@\u0097\u0097\u00ce\u00ce\6\2SSzz\u00d7\u00d7\u00f9") + buf.write("\u00f9\5\2SS\u00d7\u00d7\u00f9\u00f9\4\2\31\31GG\4\2`") + buf.write("`\u0081\u0081\4\2\20\20LL\4\2\u0121\u0121\u0123\u0123") + buf.write("\5\2\20\20\25\25\u00db\u00db\5\2[[\u00f3\u00f3\u00fb\u00fb") + buf.write("\4\2\u0112\u0113\u0118\u0118\3\2\u0114\u0117\4\2\u0112") + buf.write("\u0113\u011b\u011b\4\2;;==\3\2\u00e3\u00e4\4\2\6\6ff\4") + buf.write("\2\6\6bb\5\2\35\35\u0084\u0084\u00ee\u00ee\3\2\u010a\u0111") + buf.write("\3\2\u0112\u011c\6\2\23\23ss\u009b\u009b\u00a3\u00a3\4") + buf.write("\2[[\u00f3\u00f3\3\2\u0112\u0113\4\2MM\u00ac\u00ac\4\2") + buf.write("\u00a4\u00a4\u00dc\u00dc\4\2aa\u00b3\u00b3\3\2\u0122\u0123") + buf.write("\4\2NN\u00d6\u00d6\65\2\16\17\21\22\26\27\31\32\34\34") + buf.write("\36\"%%\'*,,.\64\66\669:?ACKMNRRTZ]]_adehjmmprtuwy{{~") + buf.write("~\u0080\u0083\u0086\u0093\u0096\u0098\u009a\u009a\u009d") + buf.write("\u009e\u00a1\u00a2\u00a5\u00a5\u00a7\u00a8\u00aa\u00b3") + buf.write("\u00b5\u00bd\u00bf\u00c5\u00c7\u00ce\u00d2\u00d4\u00d6") + buf.write("\u00d6\u00d8\u00da\u00dc\u00e4\u00e6\u00ea\u00ed\u00ed") + buf.write("\u00ef\u00f4\u00f6\u00f8\u00fc\u00ff\u0102\u0104\u0107") + buf.write("\u0107\u0117\u0117\21\2\24\2488SSggvvzz\177\177\u0085") + buf.write("\u0085\u0099\u0099\u009f\u009f\u00c6\u00c6\u00d1\u00d1") + buf.write("\u00d7\u00d7\u00f9\u00f9\u0101\u0101\23\2\16\23\25\67") + buf.write("9RTfhuwy{~\u0080\u0084\u0086\u0098\u009a\u009e\u00a0\u00c5") + buf.write("\u00c7\u00d0\u00d2\u00d6\u00d8\u00f8\u00fa\u0100\u0102") + buf.write("\u0109\u0117\u0117\2\u0da4\2\u0114\3\2\2\2\4\u011d\3\2") + buf.write("\2\2\6\u0120\3\2\2\2\b\u0123\3\2\2\2\n\u0126\3\2\2\2\f") + buf.write("\u0129\3\2\2\2\16\u012c\3\2\2\2\20\u0403\3\2\2\2\22\u04ad") + buf.write("\3\2\2\2\24\u04af\3\2\2\2\26\u04c0\3\2\2\2\30\u04c6\3") + buf.write("\2\2\2\32\u04d2\3\2\2\2\34\u04df\3\2\2\2\36\u04e2\3\2") + buf.write("\2\2 \u04e6\3\2\2\2\"\u0522\3\2\2\2$\u0524\3\2\2\2&\u0528") + buf.write("\3\2\2\2(\u0534\3\2\2\2*\u0539\3\2\2\2,\u0540\3\2\2\2") + buf.write(".\u0542\3\2\2\2\60\u054a\3\2\2\2\62\u0553\3\2\2\2\64\u055e") + buf.write("\3\2\2\2\66\u056d\3\2\2\28\u0570\3\2\2\2:\u057b\3\2\2") + buf.write("\2<\u058b\3\2\2\2>\u0591\3\2\2\2@\u0593\3\2\2\2B\u059e") + buf.write("\3\2\2\2D\u05af\3\2\2\2F\u05b6\3\2\2\2H\u05b8\3\2\2\2") + buf.write("J\u05be\3\2\2\2L\u05f4\3\2\2\2N\u0600\3\2\2\2P\u0630\3") + buf.write("\2\2\2R\u0633\3\2\2\2T\u0659\3\2\2\2V\u065b\3\2\2\2X\u0663") + buf.write("\3\2\2\2Z\u0684\3\2\2\2\\\u06a3\3\2\2\2^\u06af\3\2\2\2") + buf.write("`\u06cf\3\2\2\2b\u06db\3\2\2\2d\u06de\3\2\2\2f\u06e7\3") + buf.write("\2\2\2h\u06f8\3\2\2\2j\u070c\3\2\2\2l\u070e\3\2\2\2n\u0716") + buf.write("\3\2\2\2p\u071a\3\2\2\2r\u071d\3\2\2\2t\u0720\3\2\2\2") + buf.write("v\u073a\3\2\2\2x\u073c\3\2\2\2z\u077a\3\2\2\2|\u0789\3") + buf.write("\2\2\2~\u078b\3\2\2\2\u0080\u07a9\3\2\2\2\u0082\u07ab") + buf.write("\3\2\2\2\u0084\u07b2\3\2\2\2\u0086\u07d2\3\2\2\2\u0088") + buf.write("\u07d4\3\2\2\2\u008a\u07e6\3\2\2\2\u008c\u0800\3\2\2\2") + buf.write("\u008e\u0806\3\2\2\2\u0090\u0808\3\2\2\2\u0092\u0827\3") + buf.write("\2\2\2\u0094\u0829\3\2\2\2\u0096\u082d\3\2\2\2\u0098\u0835") + buf.write("\3\2\2\2\u009a\u0840\3\2\2\2\u009c\u0844\3\2\2\2\u009e") + buf.write("\u084f\3\2\2\2\u00a0\u086b\3\2\2\2\u00a2\u086d\3\2\2\2") + buf.write("\u00a4\u0878\3\2\2\2\u00a6\u088e\3\2\2\2\u00a8\u08c1\3") + buf.write("\2\2\2\u00aa\u08c3\3\2\2\2\u00ac\u08cb\3\2\2\2\u00ae\u08d6") + buf.write("\3\2\2\2\u00b0\u08dd\3\2\2\2\u00b2\u08e1\3\2\2\2\u00b4") + buf.write("\u08eb\3\2\2\2\u00b6\u08f3\3\2\2\2\u00b8\u090b\3\2\2\2") + buf.write("\u00ba\u090f\3\2\2\2\u00bc\u0911\3\2\2\2\u00be\u091f\3") + buf.write("\2\2\2\u00c0\u097e\3\2\2\2\u00c2\u0984\3\2\2\2\u00c4\u0a56") + buf.write("\3\2\2\2\u00c6\u0a71\3\2\2\2\u00c8\u0a73\3\2\2\2\u00ca") + buf.write("\u0a75\3\2\2\2\u00cc\u0a77\3\2\2\2\u00ce\u0a79\3\2\2\2") + buf.write("\u00d0\u0a7b\3\2\2\2\u00d2\u0a80\3\2\2\2\u00d4\u0a87\3") + buf.write("\2\2\2\u00d6\u0a8b\3\2\2\2\u00d8\u0a90\3\2\2\2\u00da\u0a9a") + buf.write("\3\2\2\2\u00dc\u0aa3\3\2\2\2\u00de\u0aa8\3\2\2\2\u00e0") + buf.write("\u0acc\3\2\2\2\u00e2\u0ace\3\2\2\2\u00e4\u0ad6\3\2\2\2") + buf.write("\u00e6\u0ae2\3\2\2\2\u00e8\u0aea\3\2\2\2\u00ea\u0af3\3") + buf.write("\2\2\2\u00ec\u0afb\3\2\2\2\u00ee\u0b05\3\2\2\2\u00f0\u0b0a") + buf.write("\3\2\2\2\u00f2\u0b13\3\2\2\2\u00f4\u0b45\3\2\2\2\u00f6") + buf.write("\u0b57\3\2\2\2\u00f8\u0b60\3\2\2\2\u00fa\u0b62\3\2\2\2") + buf.write("\u00fc\u0b6e\3\2\2\2\u00fe\u0b70\3\2\2\2\u0100\u0b78\3") + buf.write("\2\2\2\u0102\u0b82\3\2\2\2\u0104\u0b87\3\2\2\2\u0106\u0b8f") + buf.write("\3\2\2\2\u0108\u0b91\3\2\2\2\u010a\u0bba\3\2\2\2\u010c") + buf.write("\u0bc3\3\2\2\2\u010e\u0bc5\3\2\2\2\u0110\u0bc7\3\2\2\2") + buf.write("\u0112\u0bc9\3\2\2\2\u0114\u0118\5\20\t\2\u0115\u0117") + buf.write("\7\3\2\2\u0116\u0115\3\2\2\2\u0117\u011a\3\2\2\2\u0118") + buf.write("\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119\u011b\3\2\2\2") + buf.write("\u011a\u0118\3\2\2\2\u011b\u011c\7\2\2\3\u011c\3\3\2\2") + buf.write("\2\u011d\u011e\5\u00b2Z\2\u011e\u011f\7\2\2\3\u011f\5") + buf.write("\3\2\2\2\u0120\u0121\5\u00aeX\2\u0121\u0122\7\2\2\3\u0122") + buf.write("\7\3\2\2\2\u0123\u0124\5\u00acW\2\u0124\u0125\7\2\2\3") + buf.write("\u0125\t\3\2\2\2\u0126\u0127\5\u00b0Y\2\u0127\u0128\7") + buf.write("\2\2\3\u0128\13\3\2\2\2\u0129\u012a\5\u00e0q\2\u012a\u012b") + buf.write("\7\2\2\3\u012b\r\3\2\2\2\u012c\u012d\5\u00e6t\2\u012d") + buf.write("\u012e\7\2\2\3\u012e\17\3\2\2\2\u012f\u0404\5 \21\2\u0130") + buf.write("\u0132\5\60\31\2\u0131\u0130\3\2\2\2\u0131\u0132\3\2\2") + buf.write("\2\u0132\u0133\3\2\2\2\u0133\u0404\5L\'\2\u0134\u0136") + buf.write("\7\u00ff\2\2\u0135\u0137\7\u0097\2\2\u0136\u0135\3\2\2") + buf.write("\2\u0136\u0137\3\2\2\2\u0137\u0138\3\2\2\2\u0138\u0404") + buf.write("\5\u00acW\2\u0139\u013a\7\67\2\2\u013a\u013e\5*\26\2\u013b") + buf.write("\u013c\7p\2\2\u013c\u013d\7\u009b\2\2\u013d\u013f\7U\2") + buf.write("\2\u013e\u013b\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0140") + buf.write("\3\2\2\2\u0140\u0148\5\u00acW\2\u0141\u0147\5\36\20\2") + buf.write("\u0142\u0147\5\34\17\2\u0143\u0144\7\u0108\2\2\u0144\u0145") + buf.write("\t\2\2\2\u0145\u0147\58\35\2\u0146\u0141\3\2\2\2\u0146") + buf.write("\u0142\3\2\2\2\u0146\u0143\3\2\2\2\u0147\u014a\3\2\2\2") + buf.write("\u0148\u0146\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u0404\3") + buf.write("\2\2\2\u014a\u0148\3\2\2\2\u014b\u014c\7\21\2\2\u014c") + buf.write("\u014d\5*\26\2\u014d\u014e\5\u00acW\2\u014e\u014f\7\u00d6") + buf.write("\2\2\u014f\u0150\t\2\2\2\u0150\u0151\58\35\2\u0151\u0404") + buf.write("\3\2\2\2\u0152\u0153\7\21\2\2\u0153\u0154\5*\26\2\u0154") + buf.write("\u0155\5\u00acW\2\u0155\u0156\7\u00d6\2\2\u0156\u0157") + buf.write("\5\34\17\2\u0157\u0404\3\2\2\2\u0158\u0159\7N\2\2\u0159") + buf.write("\u015c\5*\26\2\u015a\u015b\7p\2\2\u015b\u015d\7U\2\2\u015c") + buf.write("\u015a\3\2\2\2\u015c\u015d\3\2\2\2\u015d\u015e\3\2\2\2") + buf.write("\u015e\u0160\5\u00acW\2\u015f\u0161\t\3\2\2\u0160\u015f") + buf.write("\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0404\3\2\2\2\u0162") + buf.write("\u0163\7\u00d9\2\2\u0163\u0166\t\4\2\2\u0164\u0165\t\5") + buf.write("\2\2\u0165\u0167\5\u00acW\2\u0166\u0164\3\2\2\2\u0166") + buf.write("\u0167\3\2\2\2\u0167\u016c\3\2\2\2\u0168\u016a\7\u0086") + buf.write("\2\2\u0169\u0168\3\2\2\2\u0169\u016a\3\2\2\2\u016a\u016b") + buf.write("\3\2\2\2\u016b\u016d\7\u011d\2\2\u016c\u0169\3\2\2\2\u016c") + buf.write("\u016d\3\2\2\2\u016d\u0404\3\2\2\2\u016e\u016f\6\t\2\2") + buf.write("\u016f\u0174\5\24\13\2\u0170\u0171\7\4\2\2\u0171\u0172") + buf.write("\5\u00e6t\2\u0172\u0173\7\5\2\2\u0173\u0175\3\2\2\2\u0174") + buf.write("\u0170\3\2\2\2\u0174\u0175\3\2\2\2\u0175\u0177\3\2\2\2") + buf.write("\u0176\u0178\5\64\33\2\u0177\u0176\3\2\2\2\u0177\u0178") + buf.write("\3\2\2\2\u0178\u0179\3\2\2\2\u0179\u017e\5\66\34\2\u017a") + buf.write("\u017c\7\30\2\2\u017b\u017a\3\2\2\2\u017b\u017c\3\2\2") + buf.write("\2\u017c\u017d\3\2\2\2\u017d\u017f\5 \21\2\u017e\u017b") + buf.write("\3\2\2\2\u017e\u017f\3\2\2\2\u017f\u0404\3\2\2\2\u0180") + buf.write("\u0181\6\t\3\2\u0181\u0186\5\24\13\2\u0182\u0183\7\4\2") + buf.write("\2\u0183\u0184\5\u00e6t\2\u0184\u0185\7\5\2\2\u0185\u0187") + buf.write("\3\2\2\2\u0186\u0182\3\2\2\2\u0186\u0187\3\2\2\2\u0187") + buf.write("\u0188\3\2\2\2\u0188\u0189\5\64\33\2\u0189\u018e\5\66") + buf.write("\34\2\u018a\u018c\7\30\2\2\u018b\u018a\3\2\2\2\u018b\u018c") + buf.write("\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018f\5 \21\2\u018e") + buf.write("\u018b\3\2\2\2\u018e\u018f\3\2\2\2\u018f\u0404\3\2\2\2") + buf.write("\u0190\u0195\5\24\13\2\u0191\u0192\7\4\2\2\u0192\u0193") + buf.write("\5\u00e6t\2\u0193\u0194\7\5\2\2\u0194\u0196\3\2\2\2\u0195") + buf.write("\u0191\3\2\2\2\u0195\u0196\3\2\2\2\u0196\u01ac\3\2\2\2") + buf.write("\u0197\u01ab\5\36\20\2\u0198\u0199\7\u00ad\2\2\u0199\u019a") + buf.write("\7 \2\2\u019a\u019b\7\4\2\2\u019b\u019c\5\u00e6t\2\u019c") + buf.write("\u019d\7\5\2\2\u019d\u01a2\3\2\2\2\u019e\u019f\7\u00ad") + buf.write("\2\2\u019f\u01a0\7 \2\2\u01a0\u01a2\5\u0094K\2\u01a1\u0198") + buf.write("\3\2\2\2\u01a1\u019e\3\2\2\2\u01a2\u01ab\3\2\2\2\u01a3") + buf.write("\u01ab\5\30\r\2\u01a4\u01ab\5\32\16\2\u01a5\u01ab\5\u00a8") + buf.write("U\2\u01a6\u01ab\5D#\2\u01a7\u01ab\5\34\17\2\u01a8\u01a9") + buf.write("\7\u00e8\2\2\u01a9\u01ab\58\35\2\u01aa\u0197\3\2\2\2\u01aa") + buf.write("\u01a1\3\2\2\2\u01aa\u01a3\3\2\2\2\u01aa\u01a4\3\2\2\2") + buf.write("\u01aa\u01a5\3\2\2\2\u01aa\u01a6\3\2\2\2\u01aa\u01a7\3") + buf.write("\2\2\2\u01aa\u01a8\3\2\2\2\u01ab\u01ae\3\2\2\2\u01ac\u01aa") + buf.write("\3\2\2\2\u01ac\u01ad\3\2\2\2\u01ad\u01b3\3\2\2\2\u01ae") + buf.write("\u01ac\3\2\2\2\u01af\u01b1\7\30\2\2\u01b0\u01af\3\2\2") + buf.write("\2\u01b0\u01b1\3\2\2\2\u01b1\u01b2\3\2\2\2\u01b2\u01b4") + buf.write("\5 \21\2\u01b3\u01b0\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4") + buf.write("\u0404\3\2\2\2\u01b5\u01b6\7\67\2\2\u01b6\u01ba\7\u00e5") + buf.write("\2\2\u01b7\u01b8\7p\2\2\u01b8\u01b9\7\u009b\2\2\u01b9") + buf.write("\u01bb\7U\2\2\u01ba\u01b7\3\2\2\2\u01ba\u01bb\3\2\2\2") + buf.write("\u01bb\u01bc\3\2\2\2\u01bc\u01bd\5\u00aeX\2\u01bd\u01be") + buf.write("\7\u0086\2\2\u01be\u01c7\5\u00aeX\2\u01bf\u01c6\5\64\33") + buf.write("\2\u01c0\u01c6\5\u00a8U\2\u01c1\u01c6\5D#\2\u01c2\u01c6") + buf.write("\5\34\17\2\u01c3\u01c4\7\u00e8\2\2\u01c4\u01c6\58\35\2") + buf.write("\u01c5\u01bf\3\2\2\2\u01c5\u01c0\3\2\2\2\u01c5\u01c1\3") + buf.write("\2\2\2\u01c5\u01c2\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c6\u01c9") + buf.write("\3\2\2\2\u01c7\u01c5\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8") + buf.write("\u0404\3\2\2\2\u01c9\u01c7\3\2\2\2\u01ca\u01cf\5\26\f") + buf.write("\2\u01cb\u01cc\7\4\2\2\u01cc\u01cd\5\u00e6t\2\u01cd\u01ce") + buf.write("\7\5\2\2\u01ce\u01d0\3\2\2\2\u01cf\u01cb\3\2\2\2\u01cf") + buf.write("\u01d0\3\2\2\2\u01d0\u01d1\3\2\2\2\u01d1\u01d2\5\64\33") + buf.write("\2\u01d2\u01d7\5\66\34\2\u01d3\u01d5\7\30\2\2\u01d4\u01d3") + buf.write("\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6") + buf.write("\u01d8\5 \21\2\u01d7\u01d4\3\2\2\2\u01d7\u01d8\3\2\2\2") + buf.write("\u01d8\u0404\3\2\2\2\u01d9\u01da\7\22\2\2\u01da\u01db") + buf.write("\7\u00e5\2\2\u01db\u01dd\5\u00acW\2\u01dc\u01de\5&\24") + buf.write("\2\u01dd\u01dc\3\2\2\2\u01dd\u01de\3\2\2\2\u01de\u01df") + buf.write("\3\2\2\2\u01df\u01e0\7\63\2\2\u01e0\u01e8\7\u00df\2\2") + buf.write("\u01e1\u01e9\5\u0104\u0083\2\u01e2\u01e3\7b\2\2\u01e3") + buf.write("\u01e4\7.\2\2\u01e4\u01e9\5\u0096L\2\u01e5\u01e6\7b\2") + buf.write("\2\u01e6\u01e7\7\20\2\2\u01e7\u01e9\7.\2\2\u01e8\u01e1") + buf.write("\3\2\2\2\u01e8\u01e2\3\2\2\2\u01e8\u01e5\3\2\2\2\u01e8") + buf.write("\u01e9\3\2\2\2\u01e9\u0404\3\2\2\2\u01ea\u01eb\7\21\2") + buf.write("\2\u01eb\u01ec\7\u00e5\2\2\u01ec\u01ed\5\u00acW\2\u01ed") + buf.write("\u01ee\7\16\2\2\u01ee\u01ef\t\6\2\2\u01ef\u01f0\5\u00e2") + buf.write("r\2\u01f0\u0404\3\2\2\2\u01f1\u01f2\7\21\2\2\u01f2\u01f3") + buf.write("\7\u00e5\2\2\u01f3\u01f4\5\u00acW\2\u01f4\u01f5\7\16\2") + buf.write("\2\u01f5\u01f6\t\6\2\2\u01f6\u01f7\7\4\2\2\u01f7\u01f8") + buf.write("\5\u00e2r\2\u01f8\u01f9\7\5\2\2\u01f9\u0404\3\2\2\2\u01fa") + buf.write("\u01fb\7\21\2\2\u01fb\u01fc\7\u00e5\2\2\u01fc\u01fd\5") + buf.write("\u00acW\2\u01fd\u01fe\7\u00c0\2\2\u01fe\u01ff\7-\2\2\u01ff") + buf.write("\u0200\5\u00acW\2\u0200\u0201\7\u00ec\2\2\u0201\u0202") + buf.write("\5\u0100\u0081\2\u0202\u0404\3\2\2\2\u0203\u0204\7\21") + buf.write("\2\2\u0204\u0205\7\u00e5\2\2\u0205\u0206\5\u00acW\2\u0206") + buf.write("\u0207\7N\2\2\u0207\u0208\t\6\2\2\u0208\u0209\7\4\2\2") + buf.write("\u0209\u020a\5\u00aaV\2\u020a\u020b\7\5\2\2\u020b\u0404") + buf.write("\3\2\2\2\u020c\u020d\7\21\2\2\u020d\u020e\7\u00e5\2\2") + buf.write("\u020e\u020f\5\u00acW\2\u020f\u0210\7N\2\2\u0210\u0211") + buf.write("\t\6\2\2\u0211\u0212\5\u00aaV\2\u0212\u0404\3\2\2\2\u0213") + buf.write("\u0214\7\21\2\2\u0214\u0215\t\7\2\2\u0215\u0216\5\u00ac") + buf.write("W\2\u0216\u0217\7\u00c0\2\2\u0217\u0218\7\u00ec\2\2\u0218") + buf.write("\u0219\5\u00acW\2\u0219\u0404\3\2\2\2\u021a\u021b\7\21") + buf.write("\2\2\u021b\u021c\t\7\2\2\u021c\u021d\5\u00acW\2\u021d") + buf.write("\u021e\7\u00d6\2\2\u021e\u021f\7\u00e8\2\2\u021f\u0220") + buf.write("\58\35\2\u0220\u0404\3\2\2\2\u0221\u0222\7\21\2\2\u0222") + buf.write("\u0223\t\7\2\2\u0223\u0224\5\u00acW\2\u0224\u0225\7\u00fd") + buf.write("\2\2\u0225\u0228\7\u00e8\2\2\u0226\u0227\7p\2\2\u0227") + buf.write("\u0229\7U\2\2\u0228\u0226\3\2\2\2\u0228\u0229\3\2\2\2") + buf.write("\u0229\u022a\3\2\2\2\u022a\u022b\58\35\2\u022b\u0404\3") + buf.write("\2\2\2\u022c\u022d\7\21\2\2\u022d\u022e\7\u00e5\2\2\u022e") + buf.write("\u022f\5\u00acW\2\u022f\u0231\t\b\2\2\u0230\u0232\7-\2") + buf.write("\2\u0231\u0230\3\2\2\2\u0231\u0232\3\2\2\2\u0232\u0233") + buf.write("\3\2\2\2\u0233\u0235\5\u00acW\2\u0234\u0236\5\u010c\u0087") + buf.write("\2\u0235\u0234\3\2\2\2\u0235\u0236\3\2\2\2\u0236\u0404") + buf.write("\3\2\2\2\u0237\u0238\7\21\2\2\u0238\u0239\7\u00e5\2\2") + buf.write("\u0239\u023b\5\u00acW\2\u023a\u023c\5&\24\2\u023b\u023a") + buf.write("\3\2\2\2\u023b\u023c\3\2\2\2\u023c\u023d\3\2\2\2\u023d") + buf.write("\u023f\7%\2\2\u023e\u0240\7-\2\2\u023f\u023e\3\2\2\2\u023f") + buf.write("\u0240\3\2\2\2\u0240\u0241\3\2\2\2\u0241\u0242\5\u00ac") + buf.write("W\2\u0242\u0244\5\u00e8u\2\u0243\u0245\5\u00dep\2\u0244") + buf.write("\u0243\3\2\2\2\u0244\u0245\3\2\2\2\u0245\u0404\3\2\2\2") + buf.write("\u0246\u0247\7\21\2\2\u0247\u0248\7\u00e5\2\2\u0248\u024a") + buf.write("\5\u00acW\2\u0249\u024b\5&\24\2\u024a\u0249\3\2\2\2\u024a") + buf.write("\u024b\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u024d\7\u00c2") + buf.write("\2\2\u024d\u024e\7.\2\2\u024e\u024f\7\4\2\2\u024f\u0250") + buf.write("\5\u00e2r\2\u0250\u0251\7\5\2\2\u0251\u0404\3\2\2\2\u0252") + buf.write("\u0253\7\21\2\2\u0253\u0254\7\u00e5\2\2\u0254\u0256\5") + buf.write("\u00acW\2\u0255\u0257\5&\24\2\u0256\u0255\3\2\2\2\u0256") + buf.write("\u0257\3\2\2\2\u0257\u0258\3\2\2\2\u0258\u0259\7\u00d6") + buf.write("\2\2\u0259\u025a\7\u00d3\2\2\u025a\u025e\7\u011d\2\2\u025b") + buf.write("\u025c\7\u0108\2\2\u025c\u025d\7\u00d4\2\2\u025d\u025f") + buf.write("\58\35\2\u025e\u025b\3\2\2\2\u025e\u025f\3\2\2\2\u025f") + buf.write("\u0404\3\2\2\2\u0260\u0261\7\21\2\2\u0261\u0262\7\u00e5") + buf.write("\2\2\u0262\u0264\5\u00acW\2\u0263\u0265\5&\24\2\u0264") + buf.write("\u0263\3\2\2\2\u0264\u0265\3\2\2\2\u0265\u0266\3\2\2\2") + buf.write("\u0266\u0267\7\u00d6\2\2\u0267\u0268\7\u00d4\2\2\u0268") + buf.write("\u0269\58\35\2\u0269\u0404\3\2\2\2\u026a\u026b\7\21\2") + buf.write("\2\u026b\u026c\t\7\2\2\u026c\u026d\5\u00acW\2\u026d\u0271") + buf.write("\7\16\2\2\u026e\u026f\7p\2\2\u026f\u0270\7\u009b\2\2\u0270") + buf.write("\u0272\7U\2\2\u0271\u026e\3\2\2\2\u0271\u0272\3\2\2\2") + buf.write("\u0272\u0274\3\2\2\2\u0273\u0275\5$\23\2\u0274\u0273\3") + buf.write("\2\2\2\u0275\u0276\3\2\2\2\u0276\u0274\3\2\2\2\u0276\u0277") + buf.write("\3\2\2\2\u0277\u0404\3\2\2\2\u0278\u0279\7\21\2\2\u0279") + buf.write("\u027a\7\u00e5\2\2\u027a\u027b\5\u00acW\2\u027b\u027c") + buf.write("\5&\24\2\u027c\u027d\7\u00c0\2\2\u027d\u027e\7\u00ec\2") + buf.write("\2\u027e\u027f\5&\24\2\u027f\u0404\3\2\2\2\u0280\u0281") + buf.write("\7\21\2\2\u0281\u0282\t\7\2\2\u0282\u0283\5\u00acW\2\u0283") + buf.write("\u0286\7N\2\2\u0284\u0285\7p\2\2\u0285\u0287\7U\2\2\u0286") + buf.write("\u0284\3\2\2\2\u0286\u0287\3\2\2\2\u0287\u0288\3\2\2\2") + buf.write("\u0288\u028d\5&\24\2\u0289\u028a\7\6\2\2\u028a\u028c\5") + buf.write("&\24\2\u028b\u0289\3\2\2\2\u028c\u028f\3\2\2\2\u028d\u028b") + buf.write("\3\2\2\2\u028d\u028e\3\2\2\2\u028e\u0291\3\2\2\2\u028f") + buf.write("\u028d\3\2\2\2\u0290\u0292\7\u00b7\2\2\u0291\u0290\3\2") + buf.write("\2\2\u0291\u0292\3\2\2\2\u0292\u0404\3\2\2\2\u0293\u0294") + buf.write("\7\21\2\2\u0294\u0295\7\u00e5\2\2\u0295\u0297\5\u00ac") + buf.write("W\2\u0296\u0298\5&\24\2\u0297\u0296\3\2\2\2\u0297\u0298") + buf.write("\3\2\2\2\u0298\u0299\3\2\2\2\u0299\u029a\7\u00d6\2\2\u029a") + buf.write("\u029b\5\34\17\2\u029b\u0404\3\2\2\2\u029c\u029d\7\21") + buf.write("\2\2\u029d\u029e\7\u00e5\2\2\u029e\u029f\5\u00acW\2\u029f") + buf.write("\u02a0\7\u00bc\2\2\u02a0\u02a1\7\u00ae\2\2\u02a1\u0404") + buf.write("\3\2\2\2\u02a2\u02a3\7N\2\2\u02a3\u02a6\7\u00e5\2\2\u02a4") + buf.write("\u02a5\7p\2\2\u02a5\u02a7\7U\2\2\u02a6\u02a4\3\2\2\2\u02a6") + buf.write("\u02a7\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02aa\5\u00ac") + buf.write("W\2\u02a9\u02ab\7\u00b7\2\2\u02aa\u02a9\3\2\2\2\u02aa") + buf.write("\u02ab\3\2\2\2\u02ab\u0404\3\2\2\2\u02ac\u02ad\7N\2\2") + buf.write("\u02ad\u02b0\7\u0103\2\2\u02ae\u02af\7p\2\2\u02af\u02b1") + buf.write("\7U\2\2\u02b0\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1") + buf.write("\u02b2\3\2\2\2\u02b2\u0404\5\u00acW\2\u02b3\u02b6\7\67") + buf.write("\2\2\u02b4\u02b5\7\u00a3\2\2\u02b5\u02b7\7\u00c2\2\2\u02b6") + buf.write("\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02bc\3\2\2\2") + buf.write("\u02b8\u02ba\7j\2\2\u02b9\u02b8\3\2\2\2\u02b9\u02ba\3") + buf.write("\2\2\2\u02ba\u02bb\3\2\2\2\u02bb\u02bd\7\u00e9\2\2\u02bc") + buf.write("\u02b9\3\2\2\2\u02bc\u02bd\3\2\2\2\u02bd\u02be\3\2\2\2") + buf.write("\u02be\u02c2\7\u0103\2\2\u02bf\u02c0\7p\2\2\u02c0\u02c1") + buf.write("\7\u009b\2\2\u02c1\u02c3\7U\2\2\u02c2\u02bf\3\2\2\2\u02c2") + buf.write("\u02c3\3\2\2\2\u02c3\u02c4\3\2\2\2\u02c4\u02c6\5\u00ac") + buf.write("W\2\u02c5\u02c7\5\u009cO\2\u02c6\u02c5\3\2\2\2\u02c6\u02c7") + buf.write("\3\2\2\2\u02c7\u02d0\3\2\2\2\u02c8\u02cf\5\36\20\2\u02c9") + buf.write("\u02ca\7\u00ad\2\2\u02ca\u02cb\7\u009f\2\2\u02cb\u02cf") + buf.write("\5\u0094K\2\u02cc\u02cd\7\u00e8\2\2\u02cd\u02cf\58\35") + buf.write("\2\u02ce\u02c8\3\2\2\2\u02ce\u02c9\3\2\2\2\u02ce\u02cc") + buf.write("\3\2\2\2\u02cf\u02d2\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d0") + buf.write("\u02d1\3\2\2\2\u02d1\u02d3\3\2\2\2\u02d2\u02d0\3\2\2\2") + buf.write("\u02d3\u02d4\7\30\2\2\u02d4\u02d5\5 \21\2\u02d5\u0404") + buf.write("\3\2\2\2\u02d6\u02d9\7\67\2\2\u02d7\u02d8\7\u00a3\2\2") + buf.write("\u02d8\u02da\7\u00c2\2\2\u02d9\u02d7\3\2\2\2\u02d9\u02da") + buf.write("\3\2\2\2\u02da\u02dc\3\2\2\2\u02db\u02dd\7j\2\2\u02dc") + buf.write("\u02db\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02de\3\2\2\2") + buf.write("\u02de\u02df\7\u00e9\2\2\u02df\u02e0\7\u0103\2\2\u02e0") + buf.write("\u02e5\5\u00aeX\2\u02e1\u02e2\7\4\2\2\u02e2\u02e3\5\u00e6") + buf.write("t\2\u02e3\u02e4\7\5\2\2\u02e4\u02e6\3\2\2\2\u02e5\u02e1") + buf.write("\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7") + buf.write("\u02ea\5\64\33\2\u02e8\u02e9\7\u00a2\2\2\u02e9\u02eb\5") + buf.write("8\35\2\u02ea\u02e8\3\2\2\2\u02ea\u02eb\3\2\2\2\u02eb\u0404") + buf.write("\3\2\2\2\u02ec\u02ed\7\21\2\2\u02ed\u02ee\7\u0103\2\2") + buf.write("\u02ee\u02f0\5\u00acW\2\u02ef\u02f1\7\30\2\2\u02f0\u02ef") + buf.write("\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2") + buf.write("\u02f3\5 \21\2\u02f3\u0404\3\2\2\2\u02f4\u02f7\7\67\2") + buf.write("\2\u02f5\u02f6\7\u00a3\2\2\u02f6\u02f8\7\u00c2\2\2\u02f7") + buf.write("\u02f5\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8\u02fa\3\2\2\2") + buf.write("\u02f9\u02fb\7\u00e9\2\2\u02fa\u02f9\3\2\2\2\u02fa\u02fb") + buf.write("\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc\u0300\7h\2\2\u02fd") + buf.write("\u02fe\7p\2\2\u02fe\u02ff\7\u009b\2\2\u02ff\u0301\7U\2") + buf.write("\2\u0300\u02fd\3\2\2\2\u0300\u0301\3\2\2\2\u0301\u0302") + buf.write("\3\2\2\2\u0302\u0303\5\u00acW\2\u0303\u0304\7\30\2\2\u0304") + buf.write("\u030e\7\u011d\2\2\u0305\u0306\7\u0101\2\2\u0306\u030b") + buf.write("\5J&\2\u0307\u0308\7\6\2\2\u0308\u030a\5J&\2\u0309\u0307") + buf.write("\3\2\2\2\u030a\u030d\3\2\2\2\u030b\u0309\3\2\2\2\u030b") + buf.write("\u030c\3\2\2\2\u030c\u030f\3\2\2\2\u030d\u030b\3\2\2\2") + buf.write("\u030e\u0305\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u0404\3") + buf.write("\2\2\2\u0310\u0312\7N\2\2\u0311\u0313\7\u00e9\2\2\u0312") + buf.write("\u0311\3\2\2\2\u0312\u0313\3\2\2\2\u0313\u0314\3\2\2\2") + buf.write("\u0314\u0317\7h\2\2\u0315\u0316\7p\2\2\u0316\u0318\7U") + buf.write("\2\2\u0317\u0315\3\2\2\2\u0317\u0318\3\2\2\2\u0318\u0319") + buf.write("\3\2\2\2\u0319\u0404\5\u00acW\2\u031a\u031c\7V\2\2\u031b") + buf.write("\u031d\t\t\2\2\u031c\u031b\3\2\2\2\u031c\u031d\3\2\2\2") + buf.write("\u031d\u031e\3\2\2\2\u031e\u0404\5\20\t\2\u031f\u0320") + buf.write("\7\u00d9\2\2\u0320\u0323\7\u00e6\2\2\u0321\u0322\t\5\2") + buf.write("\2\u0322\u0324\5\u00acW\2\u0323\u0321\3\2\2\2\u0323\u0324") + buf.write("\3\2\2\2\u0324\u0329\3\2\2\2\u0325\u0327\7\u0086\2\2\u0326") + buf.write("\u0325\3\2\2\2\u0326\u0327\3\2\2\2\u0327\u0328\3\2\2\2") + buf.write("\u0328\u032a\7\u011d\2\2\u0329\u0326\3\2\2\2\u0329\u032a") + buf.write("\3\2\2\2\u032a\u0404\3\2\2\2\u032b\u032c\7\u00d9\2\2\u032c") + buf.write("\u032d\7\u00e5\2\2\u032d\u0330\7X\2\2\u032e\u032f\t\5") + buf.write("\2\2\u032f\u0331\5\u00acW\2\u0330\u032e\3\2\2\2\u0330") + buf.write("\u0331\3\2\2\2\u0331\u0332\3\2\2\2\u0332\u0333\7\u0086") + buf.write("\2\2\u0333\u0335\7\u011d\2\2\u0334\u0336\5&\24\2\u0335") + buf.write("\u0334\3\2\2\2\u0335\u0336\3\2\2\2\u0336\u0404\3\2\2\2") + buf.write("\u0337\u0338\7\u00d9\2\2\u0338\u0339\7\u00e8\2\2\u0339") + buf.write("\u033e\5\u00acW\2\u033a\u033b\7\4\2\2\u033b\u033c\5<\37") + buf.write("\2\u033c\u033d\7\5\2\2\u033d\u033f\3\2\2\2\u033e\u033a") + buf.write("\3\2\2\2\u033e\u033f\3\2\2\2\u033f\u0404\3\2\2\2\u0340") + buf.write("\u0341\7\u00d9\2\2\u0341\u0342\7.\2\2\u0342\u0343\t\5") + buf.write("\2\2\u0343\u0346\5\u00acW\2\u0344\u0345\t\5\2\2\u0345") + buf.write("\u0347\5\u00acW\2\u0346\u0344\3\2\2\2\u0346\u0347\3\2") + buf.write("\2\2\u0347\u0404\3\2\2\2\u0348\u0349\7\u00d9\2\2\u0349") + buf.write("\u034c\7\u0104\2\2\u034a\u034b\t\5\2\2\u034b\u034d\5\u00ac") + buf.write("W\2\u034c\u034a\3\2\2\2\u034c\u034d\3\2\2\2\u034d\u0352") + buf.write("\3\2\2\2\u034e\u0350\7\u0086\2\2\u034f\u034e\3\2\2\2\u034f") + buf.write("\u0350\3\2\2\2\u0350\u0351\3\2\2\2\u0351\u0353\7\u011d") + buf.write("\2\2\u0352\u034f\3\2\2\2\u0352\u0353\3\2\2\2\u0353\u0404") + buf.write("\3\2\2\2\u0354\u0355\7\u00d9\2\2\u0355\u0356\7\u00ae\2") + buf.write("\2\u0356\u0358\5\u00acW\2\u0357\u0359\5&\24\2\u0358\u0357") + buf.write("\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u0404\3\2\2\2\u035a") + buf.write("\u035c\7\u00d9\2\2\u035b\u035d\5\u0104\u0083\2\u035c\u035b") + buf.write("\3\2\2\2\u035c\u035d\3\2\2\2\u035d\u035e\3\2\2\2\u035e") + buf.write("\u0366\7i\2\2\u035f\u0361\7\u0086\2\2\u0360\u035f\3\2") + buf.write("\2\2\u0360\u0361\3\2\2\2\u0361\u0364\3\2\2\2\u0362\u0365") + buf.write("\5\u00acW\2\u0363\u0365\7\u011d\2\2\u0364\u0362\3\2\2") + buf.write("\2\u0364\u0363\3\2\2\2\u0365\u0367\3\2\2\2\u0366\u0360") + buf.write("\3\2\2\2\u0366\u0367\3\2\2\2\u0367\u0404\3\2\2\2\u0368") + buf.write("\u0369\7\u00d9\2\2\u0369\u036a\7\67\2\2\u036a\u036b\7") + buf.write("\u00e5\2\2\u036b\u036e\5\u00acW\2\u036c\u036d\7\30\2\2") + buf.write("\u036d\u036f\7\u00d3\2\2\u036e\u036c\3\2\2\2\u036e\u036f") + buf.write("\3\2\2\2\u036f\u0404\3\2\2\2\u0370\u0371\7\u00d9\2\2\u0371") + buf.write("\u0372\7:\2\2\u0372\u0404\7\u0097\2\2\u0373\u0374\t\n") + buf.write("\2\2\u0374\u0376\7h\2\2\u0375\u0377\7X\2\2\u0376\u0375") + buf.write("\3\2\2\2\u0376\u0377\3\2\2\2\u0377\u0378\3\2\2\2\u0378") + buf.write("\u0404\5,\27\2\u0379\u037a\t\n\2\2\u037a\u037c\5*\26\2") + buf.write("\u037b\u037d\7X\2\2\u037c\u037b\3\2\2\2\u037c\u037d\3") + buf.write("\2\2\2\u037d\u037e\3\2\2\2\u037e\u037f\5\u00acW\2\u037f") + buf.write("\u0404\3\2\2\2\u0380\u0382\t\n\2\2\u0381\u0383\7\u00e5") + buf.write("\2\2\u0382\u0381\3\2\2\2\u0382\u0383\3\2\2\2\u0383\u0385") + buf.write("\3\2\2\2\u0384\u0386\t\13\2\2\u0385\u0384\3\2\2\2\u0385") + buf.write("\u0386\3\2\2\2\u0386\u0387\3\2\2\2\u0387\u0389\5\u00ac") + buf.write("W\2\u0388\u038a\5&\24\2\u0389\u0388\3\2\2\2\u0389\u038a") + buf.write("\3\2\2\2\u038a\u038c\3\2\2\2\u038b\u038d\5.\30\2\u038c") + buf.write("\u038b\3\2\2\2\u038c\u038d\3\2\2\2\u038d\u0404\3\2\2\2") + buf.write("\u038e\u0390\t\n\2\2\u038f\u0391\7\u00b8\2\2\u0390\u038f") + buf.write("\3\2\2\2\u0390\u0391\3\2\2\2\u0391\u0392\3\2\2\2\u0392") + buf.write("\u0404\5 \21\2\u0393\u0394\7/\2\2\u0394\u0395\7\u009f") + buf.write("\2\2\u0395\u0396\5*\26\2\u0396\u0397\5\u00acW\2\u0397") + buf.write("\u0398\7}\2\2\u0398\u0399\t\f\2\2\u0399\u0404\3\2\2\2") + buf.write("\u039a\u039b\7/\2\2\u039b\u039c\7\u009f\2\2\u039c\u039d") + buf.write("\7\u00e5\2\2\u039d\u039e\5\u00acW\2\u039e\u039f\7}\2\2") + buf.write("\u039f\u03a0\t\f\2\2\u03a0\u0404\3\2\2\2\u03a1\u03a2\7") + buf.write("\u00bf\2\2\u03a2\u03a3\7\u00e5\2\2\u03a3\u0404\5\u00ac") + buf.write("W\2\u03a4\u03ac\7\u00bf\2\2\u03a5\u03ad\7\u011d\2\2\u03a6") + buf.write("\u03a8\13\2\2\2\u03a7\u03a6\3\2\2\2\u03a8\u03ab\3\2\2") + buf.write("\2\u03a9\u03aa\3\2\2\2\u03a9\u03a7\3\2\2\2\u03aa\u03ad") + buf.write("\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ac\u03a5\3\2\2\2\u03ac") + buf.write("\u03a9\3\2\2\2\u03ad\u0404\3\2\2\2\u03ae\u03b0\7!\2\2") + buf.write("\u03af\u03b1\7\u0083\2\2\u03b0\u03af\3\2\2\2\u03b0\u03b1") + buf.write("\3\2\2\2\u03b1\u03b2\3\2\2\2\u03b2\u03b3\7\u00e5\2\2\u03b3") + buf.write("\u03b6\5\u00acW\2\u03b4\u03b5\7\u00a2\2\2\u03b5\u03b7") + buf.write("\58\35\2\u03b6\u03b4\3\2\2\2\u03b6\u03b7\3\2\2\2\u03b7") + buf.write("\u03bc\3\2\2\2\u03b8\u03ba\7\30\2\2\u03b9\u03b8\3\2\2") + buf.write("\2\u03b9\u03ba\3\2\2\2\u03ba\u03bb\3\2\2\2\u03bb\u03bd") + buf.write("\5 \21\2\u03bc\u03b9\3\2\2\2\u03bc\u03bd\3\2\2\2\u03bd") + buf.write("\u0404\3\2\2\2\u03be\u03bf\7\u00f8\2\2\u03bf\u03c2\7\u00e5") + buf.write("\2\2\u03c0\u03c1\7p\2\2\u03c1\u03c3\7U\2\2\u03c2\u03c0") + buf.write("\3\2\2\2\u03c2\u03c3\3\2\2\2\u03c3\u03c4\3\2\2\2\u03c4") + buf.write("\u0404\5\u00acW\2\u03c5\u03c6\7\'\2\2\u03c6\u0404\7!\2") + buf.write("\2\u03c7\u03c8\7\u008a\2\2\u03c8\u03ca\7?\2\2\u03c9\u03cb") + buf.write("\7\u008b\2\2\u03ca\u03c9\3\2\2\2\u03ca\u03cb\3\2\2\2\u03cb") + buf.write("\u03cc\3\2\2\2\u03cc\u03cd\7w\2\2\u03cd\u03cf\7\u011d") + buf.write("\2\2\u03ce\u03d0\7\u00ab\2\2\u03cf\u03ce\3\2\2\2\u03cf") + buf.write("\u03d0\3\2\2\2\u03d0\u03d1\3\2\2\2\u03d1\u03d2\7|\2\2") + buf.write("\u03d2\u03d3\7\u00e5\2\2\u03d3\u03d5\5\u00acW\2\u03d4") + buf.write("\u03d6\5&\24\2\u03d5\u03d4\3\2\2\2\u03d5\u03d6\3\2\2\2") + buf.write("\u03d6\u0404\3\2\2\2\u03d7\u03d8\7\u00f4\2\2\u03d8\u03d9") + buf.write("\7\u00e5\2\2\u03d9\u03db\5\u00acW\2\u03da\u03dc\5&\24") + buf.write("\2\u03db\u03da\3\2\2\2\u03db\u03dc\3\2\2\2\u03dc\u0404") + buf.write("\3\2\2\2\u03dd\u03de\7\u0096\2\2\u03de\u03df\7\u00c1\2") + buf.write("\2\u03df\u03e0\7\u00e5\2\2\u03e0\u0404\5\u00acW\2\u03e1") + buf.write("\u03e2\t\r\2\2\u03e2\u03ea\5\u0104\u0083\2\u03e3\u03eb") + buf.write("\7\u011d\2\2\u03e4\u03e6\13\2\2\2\u03e5\u03e4\3\2\2\2") + buf.write("\u03e6\u03e9\3\2\2\2\u03e7\u03e8\3\2\2\2\u03e7\u03e5\3") + buf.write("\2\2\2\u03e8\u03eb\3\2\2\2\u03e9\u03e7\3\2\2\2\u03ea\u03e3") + buf.write("\3\2\2\2\u03ea\u03e7\3\2\2\2\u03eb\u0404\3\2\2\2\u03ec") + buf.write("\u03ed\7\u00d6\2\2\u03ed\u03f1\7\u00c8\2\2\u03ee\u03f0") + buf.write("\13\2\2\2\u03ef\u03ee\3\2\2\2\u03f0\u03f3\3\2\2\2\u03f1") + buf.write("\u03f2\3\2\2\2\u03f1\u03ef\3\2\2\2\u03f2\u0404\3\2\2\2") + buf.write("\u03f3\u03f1\3\2\2\2\u03f4\u03f8\7\u00d6\2\2\u03f5\u03f7") + buf.write("\13\2\2\2\u03f6\u03f5\3\2\2\2\u03f7\u03fa\3\2\2\2\u03f8") + buf.write("\u03f9\3\2\2\2\u03f8\u03f6\3\2\2\2\u03f9\u0404\3\2\2\2") + buf.write("\u03fa\u03f8\3\2\2\2\u03fb\u0404\7\u00c3\2\2\u03fc\u0400") + buf.write("\5\22\n\2\u03fd\u03ff\13\2\2\2\u03fe\u03fd\3\2\2\2\u03ff") + buf.write("\u0402\3\2\2\2\u0400\u0401\3\2\2\2\u0400\u03fe\3\2\2\2") + buf.write("\u0401\u0404\3\2\2\2\u0402\u0400\3\2\2\2\u0403\u012f\3") + buf.write("\2\2\2\u0403\u0131\3\2\2\2\u0403\u0134\3\2\2\2\u0403\u0139") + buf.write("\3\2\2\2\u0403\u014b\3\2\2\2\u0403\u0152\3\2\2\2\u0403") + buf.write("\u0158\3\2\2\2\u0403\u0162\3\2\2\2\u0403\u016e\3\2\2\2") + buf.write("\u0403\u0180\3\2\2\2\u0403\u0190\3\2\2\2\u0403\u01b5\3") + buf.write("\2\2\2\u0403\u01ca\3\2\2\2\u0403\u01d9\3\2\2\2\u0403\u01ea") + buf.write("\3\2\2\2\u0403\u01f1\3\2\2\2\u0403\u01fa\3\2\2\2\u0403") + buf.write("\u0203\3\2\2\2\u0403\u020c\3\2\2\2\u0403\u0213\3\2\2\2") + buf.write("\u0403\u021a\3\2\2\2\u0403\u0221\3\2\2\2\u0403\u022c\3") + buf.write("\2\2\2\u0403\u0237\3\2\2\2\u0403\u0246\3\2\2\2\u0403\u0252") + buf.write("\3\2\2\2\u0403\u0260\3\2\2\2\u0403\u026a\3\2\2\2\u0403") + buf.write("\u0278\3\2\2\2\u0403\u0280\3\2\2\2\u0403\u0293\3\2\2\2") + buf.write("\u0403\u029c\3\2\2\2\u0403\u02a2\3\2\2\2\u0403\u02ac\3") + buf.write("\2\2\2\u0403\u02b3\3\2\2\2\u0403\u02d6\3\2\2\2\u0403\u02ec") + buf.write("\3\2\2\2\u0403\u02f4\3\2\2\2\u0403\u0310\3\2\2\2\u0403") + buf.write("\u031a\3\2\2\2\u0403\u031f\3\2\2\2\u0403\u032b\3\2\2\2") + buf.write("\u0403\u0337\3\2\2\2\u0403\u0340\3\2\2\2\u0403\u0348\3") + buf.write("\2\2\2\u0403\u0354\3\2\2\2\u0403\u035a\3\2\2\2\u0403\u0368") + buf.write("\3\2\2\2\u0403\u0370\3\2\2\2\u0403\u0373\3\2\2\2\u0403") + buf.write("\u0379\3\2\2\2\u0403\u0380\3\2\2\2\u0403\u038e\3\2\2\2") + buf.write("\u0403\u0393\3\2\2\2\u0403\u039a\3\2\2\2\u0403\u03a1\3") + buf.write("\2\2\2\u0403\u03a4\3\2\2\2\u0403\u03ae\3\2\2\2\u0403\u03be") + buf.write("\3\2\2\2\u0403\u03c5\3\2\2\2\u0403\u03c7\3\2\2\2\u0403") + buf.write("\u03d7\3\2\2\2\u0403\u03dd\3\2\2\2\u0403\u03e1\3\2\2\2") + buf.write("\u0403\u03ec\3\2\2\2\u0403\u03f4\3\2\2\2\u0403\u03fb\3") + buf.write("\2\2\2\u0403\u03fc\3\2\2\2\u0404\21\3\2\2\2\u0405\u0406") + buf.write("\7\67\2\2\u0406\u04ae\7\u00c8\2\2\u0407\u0408\7N\2\2\u0408") + buf.write("\u04ae\7\u00c8\2\2\u0409\u040b\7k\2\2\u040a\u040c\7\u00c8") + buf.write("\2\2\u040b\u040a\3\2\2\2\u040b\u040c\3\2\2\2\u040c\u04ae") + buf.write("\3\2\2\2\u040d\u040f\7\u00c5\2\2\u040e\u0410\7\u00c8\2") + buf.write("\2\u040f\u040e\3\2\2\2\u040f\u0410\3\2\2\2\u0410\u04ae") + buf.write("\3\2\2\2\u0411\u0412\7\u00d9\2\2\u0412\u04ae\7k\2\2\u0413") + buf.write("\u0414\7\u00d9\2\2\u0414\u0416\7\u00c8\2\2\u0415\u0417") + buf.write("\7k\2\2\u0416\u0415\3\2\2\2\u0416\u0417\3\2\2\2\u0417") + buf.write("\u04ae\3\2\2\2\u0418\u0419\7\u00d9\2\2\u0419\u04ae\7\u00b5") + buf.write("\2\2\u041a\u041b\7\u00d9\2\2\u041b\u04ae\7\u00c9\2\2\u041c") + buf.write("\u041d\7\u00d9\2\2\u041d\u041e\7:\2\2\u041e\u04ae\7\u00c9") + buf.write("\2\2\u041f\u0420\7W\2\2\u0420\u04ae\7\u00e5\2\2\u0421") + buf.write("\u0422\7r\2\2\u0422\u04ae\7\u00e5\2\2\u0423\u0424\7\u00d9") + buf.write("\2\2\u0424\u04ae\7\62\2\2\u0425\u0426\7\u00d9\2\2\u0426") + buf.write("\u0427\7\67\2\2\u0427\u04ae\7\u00e5\2\2\u0428\u0429\7") + buf.write("\u00d9\2\2\u0429\u04ae\7\u00f0\2\2\u042a\u042b\7\u00d9") + buf.write("\2\2\u042b\u04ae\7u\2\2\u042c\u042d\7\u00d9\2\2\u042d") + buf.write("\u04ae\7\u008e\2\2\u042e\u042f\7\67\2\2\u042f\u04ae\7") + buf.write("t\2\2\u0430\u0431\7N\2\2\u0431\u04ae\7t\2\2\u0432\u0433") + buf.write("\7\21\2\2\u0433\u04ae\7t\2\2\u0434\u0435\7\u008d\2\2\u0435") + buf.write("\u04ae\7\u00e5\2\2\u0436\u0437\7\u008d\2\2\u0437\u04ae") + buf.write("\7@\2\2\u0438\u0439\7\u00fc\2\2\u0439\u04ae\7\u00e5\2") + buf.write("\2\u043a\u043b\7\u00fc\2\2\u043b\u04ae\7@\2\2\u043c\u043d") + buf.write("\7\67\2\2\u043d\u043e\7\u00e9\2\2\u043e\u04ae\7\u0090") + buf.write("\2\2\u043f\u0440\7N\2\2\u0440\u0441\7\u00e9\2\2\u0441") + buf.write("\u04ae\7\u0090\2\2\u0442\u0443\7\21\2\2\u0443\u0444\7") + buf.write("\u00e5\2\2\u0444\u0445\5\u00aeX\2\u0445\u0446\7\u009b") + buf.write("\2\2\u0446\u0447\7)\2\2\u0447\u04ae\3\2\2\2\u0448\u0449") + buf.write("\7\21\2\2\u0449\u044a\7\u00e5\2\2\u044a\u044b\5\u00ae") + buf.write("X\2\u044b\u044c\7)\2\2\u044c\u044d\7 \2\2\u044d\u04ae") + buf.write("\3\2\2\2\u044e\u044f\7\21\2\2\u044f\u0450\7\u00e5\2\2") + buf.write("\u0450\u0451\5\u00aeX\2\u0451\u0452\7\u009b\2\2\u0452") + buf.write("\u0453\7\u00dd\2\2\u0453\u04ae\3\2\2\2\u0454\u0455\7\21") + buf.write("\2\2\u0455\u0456\7\u00e5\2\2\u0456\u0457\5\u00aeX\2\u0457") + buf.write("\u0458\7\u00da\2\2\u0458\u0459\7 \2\2\u0459\u04ae\3\2") + buf.write("\2\2\u045a\u045b\7\21\2\2\u045b\u045c\7\u00e5\2\2\u045c") + buf.write("\u045d\5\u00aeX\2\u045d\u045e\7\u009b\2\2\u045e\u045f") + buf.write("\7\u00da\2\2\u045f\u04ae\3\2\2\2\u0460\u0461\7\21\2\2") + buf.write("\u0461\u0462\7\u00e5\2\2\u0462\u0463\5\u00aeX\2\u0463") + buf.write("\u0464\7\u009b\2\2\u0464\u0465\7\u00e0\2\2\u0465\u0466") + buf.write("\7\30\2\2\u0466\u0467\7J\2\2\u0467\u04ae\3\2\2\2\u0468") + buf.write("\u0469\7\21\2\2\u0469\u046a\7\u00e5\2\2\u046a\u046b\5") + buf.write("\u00aeX\2\u046b\u046c\7\u00d6\2\2\u046c\u046d\7\u00da") + buf.write("\2\2\u046d\u046e\7\u008c\2\2\u046e\u04ae\3\2\2\2\u046f") + buf.write("\u0470\7\21\2\2\u0470\u0471\7\u00e5\2\2\u0471\u0472\5") + buf.write("\u00aeX\2\u0472\u0473\7T\2\2\u0473\u0474\7\u00ac\2\2\u0474") + buf.write("\u04ae\3\2\2\2\u0475\u0476\7\21\2\2\u0476\u0477\7\u00e5") + buf.write("\2\2\u0477\u0478\5\u00aeX\2\u0478\u0479\7\26\2\2\u0479") + buf.write("\u047a\7\u00ac\2\2\u047a\u04ae\3\2\2\2\u047b\u047c\7\21") + buf.write("\2\2\u047c\u047d\7\u00e5\2\2\u047d\u047e\5\u00aeX\2\u047e") + buf.write("\u047f\7\u00f6\2\2\u047f\u0480\7\u00ac\2\2\u0480\u04ae") + buf.write("\3\2\2\2\u0481\u0482\7\21\2\2\u0482\u0483\7\u00e5\2\2") + buf.write("\u0483\u0484\5\u00aeX\2\u0484\u0485\7\u00ed\2\2\u0485") + buf.write("\u04ae\3\2\2\2\u0486\u0487\7\21\2\2\u0487\u0488\7\u00e5") + buf.write("\2\2\u0488\u048a\5\u00aeX\2\u0489\u048b\5&\24\2\u048a") + buf.write("\u0489\3\2\2\2\u048a\u048b\3\2\2\2\u048b\u048c\3\2\2\2") + buf.write("\u048c\u048d\7\61\2\2\u048d\u04ae\3\2\2\2\u048e\u048f") + buf.write("\7\21\2\2\u048f\u0490\7\u00e5\2\2\u0490\u0492\5\u00ae") + buf.write("X\2\u0491\u0493\5&\24\2\u0492\u0491\3\2\2\2\u0492\u0493") + buf.write("\3\2\2\2\u0493\u0494\3\2\2\2\u0494\u0495\7\64\2\2\u0495") + buf.write("\u04ae\3\2\2\2\u0496\u0497\7\21\2\2\u0497\u0498\7\u00e5") + buf.write("\2\2\u0498\u049a\5\u00aeX\2\u0499\u049b\5&\24\2\u049a") + buf.write("\u0499\3\2\2\2\u049a\u049b\3\2\2\2\u049b\u049c\3\2\2\2") + buf.write("\u049c\u049d\7\u00d6\2\2\u049d\u049e\7_\2\2\u049e\u04ae") + buf.write("\3\2\2\2\u049f\u04a0\7\21\2\2\u04a0\u04a1\7\u00e5\2\2") + buf.write("\u04a1\u04a3\5\u00aeX\2\u04a2\u04a4\5&\24\2\u04a3\u04a2") + buf.write("\3\2\2\2\u04a3\u04a4\3\2\2\2\u04a4\u04a5\3\2\2\2\u04a5") + buf.write("\u04a6\7\u00c2\2\2\u04a6\u04a7\7.\2\2\u04a7\u04ae\3\2") + buf.write("\2\2\u04a8\u04a9\7\u00de\2\2\u04a9\u04ae\7\u00ef\2\2\u04aa") + buf.write("\u04ae\7\60\2\2\u04ab\u04ae\7\u00ca\2\2\u04ac\u04ae\7") + buf.write("I\2\2\u04ad\u0405\3\2\2\2\u04ad\u0407\3\2\2\2\u04ad\u0409") + buf.write("\3\2\2\2\u04ad\u040d\3\2\2\2\u04ad\u0411\3\2\2\2\u04ad") + buf.write("\u0413\3\2\2\2\u04ad\u0418\3\2\2\2\u04ad\u041a\3\2\2\2") + buf.write("\u04ad\u041c\3\2\2\2\u04ad\u041f\3\2\2\2\u04ad\u0421\3") + buf.write("\2\2\2\u04ad\u0423\3\2\2\2\u04ad\u0425\3\2\2\2\u04ad\u0428") + buf.write("\3\2\2\2\u04ad\u042a\3\2\2\2\u04ad\u042c\3\2\2\2\u04ad") + buf.write("\u042e\3\2\2\2\u04ad\u0430\3\2\2\2\u04ad\u0432\3\2\2\2") + buf.write("\u04ad\u0434\3\2\2\2\u04ad\u0436\3\2\2\2\u04ad\u0438\3") + buf.write("\2\2\2\u04ad\u043a\3\2\2\2\u04ad\u043c\3\2\2\2\u04ad\u043f") + buf.write("\3\2\2\2\u04ad\u0442\3\2\2\2\u04ad\u0448\3\2\2\2\u04ad") + buf.write("\u044e\3\2\2\2\u04ad\u0454\3\2\2\2\u04ad\u045a\3\2\2\2") + buf.write("\u04ad\u0460\3\2\2\2\u04ad\u0468\3\2\2\2\u04ad\u046f\3") + buf.write("\2\2\2\u04ad\u0475\3\2\2\2\u04ad\u047b\3\2\2\2\u04ad\u0481") + buf.write("\3\2\2\2\u04ad\u0486\3\2\2\2\u04ad\u048e\3\2\2\2\u04ad") + buf.write("\u0496\3\2\2\2\u04ad\u049f\3\2\2\2\u04ad\u04a8\3\2\2\2") + buf.write("\u04ad\u04aa\3\2\2\2\u04ad\u04ab\3\2\2\2\u04ad\u04ac\3") + buf.write("\2\2\2\u04ae\23\3\2\2\2\u04af\u04b1\7\67\2\2\u04b0\u04b2") + buf.write("\7\u00e9\2\2\u04b1\u04b0\3\2\2\2\u04b1\u04b2\3\2\2\2\u04b2") + buf.write("\u04b4\3\2\2\2\u04b3\u04b5\7Y\2\2\u04b4\u04b3\3\2\2\2") + buf.write("\u04b4\u04b5\3\2\2\2\u04b5\u04b6\3\2\2\2\u04b6\u04ba\7") + buf.write("\u00e5\2\2\u04b7\u04b8\7p\2\2\u04b8\u04b9\7\u009b\2\2") + buf.write("\u04b9\u04bb\7U\2\2\u04ba\u04b7\3\2\2\2\u04ba\u04bb\3") + buf.write("\2\2\2\u04bb\u04bc\3\2\2\2\u04bc\u04bd\5\u00acW\2\u04bd") + buf.write("\25\3\2\2\2\u04be\u04bf\7\67\2\2\u04bf\u04c1\7\u00a3\2") + buf.write("\2\u04c0\u04be\3\2\2\2\u04c0\u04c1\3\2\2\2\u04c1\u04c2") + buf.write("\3\2\2\2\u04c2\u04c3\7\u00c2\2\2\u04c3\u04c4\7\u00e5\2") + buf.write("\2\u04c4\u04c5\5\u00acW\2\u04c5\27\3\2\2\2\u04c6\u04c7") + buf.write("\7)\2\2\u04c7\u04c8\7 \2\2\u04c8\u04cc\5\u0094K\2\u04c9") + buf.write("\u04ca\7\u00dd\2\2\u04ca\u04cb\7 \2\2\u04cb\u04cd\5\u0098") + buf.write("M\2\u04cc\u04c9\3\2\2\2\u04cc\u04cd\3\2\2\2\u04cd\u04ce") + buf.write("\3\2\2\2\u04ce\u04cf\7|\2\2\u04cf\u04d0\7\u0121\2\2\u04d0") + buf.write("\u04d1\7\37\2\2\u04d1\31\3\2\2\2\u04d2\u04d3\7\u00da\2") + buf.write("\2\u04d3\u04d4\7 \2\2\u04d4\u04d5\5\u0094K\2\u04d5\u04d8") + buf.write("\7\u009f\2\2\u04d6\u04d9\5@!\2\u04d7\u04d9\5B\"\2\u04d8") + buf.write("\u04d6\3\2\2\2\u04d8\u04d7\3\2\2\2\u04d9\u04dd\3\2\2\2") + buf.write("\u04da\u04db\7\u00e0\2\2\u04db\u04dc\7\30\2\2\u04dc\u04de") + buf.write("\7J\2\2\u04dd\u04da\3\2\2\2\u04dd\u04de\3\2\2\2\u04de") + buf.write("\33\3\2\2\2\u04df\u04e0\7\u008c\2\2\u04e0\u04e1\7\u011d") + buf.write("\2\2\u04e1\35\3\2\2\2\u04e2\u04e3\7/\2\2\u04e3\u04e4\7") + buf.write("\u011d\2\2\u04e4\37\3\2\2\2\u04e5\u04e7\5\60\31\2\u04e6") + buf.write("\u04e5\3\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e8\3\2\2\2") + buf.write("\u04e8\u04e9\5R*\2\u04e9\u04ea\5N(\2\u04ea!\3\2\2\2\u04eb") + buf.write("\u04ec\7y\2\2\u04ec\u04ee\7\u00ab\2\2\u04ed\u04ef\7\u00e5") + buf.write("\2\2\u04ee\u04ed\3\2\2\2\u04ee\u04ef\3\2\2\2\u04ef\u04f0") + buf.write("\3\2\2\2\u04f0\u04f7\5\u00acW\2\u04f1\u04f5\5&\24\2\u04f2") + buf.write("\u04f3\7p\2\2\u04f3\u04f4\7\u009b\2\2\u04f4\u04f6\7U\2") + buf.write("\2\u04f5\u04f2\3\2\2\2\u04f5\u04f6\3\2\2\2\u04f6\u04f8") + buf.write("\3\2\2\2\u04f7\u04f1\3\2\2\2\u04f7\u04f8\3\2\2\2\u04f8") + buf.write("\u0523\3\2\2\2\u04f9\u04fa\7y\2\2\u04fa\u04fc\7|\2\2\u04fb") + buf.write("\u04fd\7\u00e5\2\2\u04fc\u04fb\3\2\2\2\u04fc\u04fd\3\2") + buf.write("\2\2\u04fd\u04fe\3\2\2\2\u04fe\u0500\5\u00acW\2\u04ff") + buf.write("\u0501\5&\24\2\u0500\u04ff\3\2\2\2\u0500\u0501\3\2\2\2") + buf.write("\u0501\u0505\3\2\2\2\u0502\u0503\7p\2\2\u0503\u0504\7") + buf.write("\u009b\2\2\u0504\u0506\7U\2\2\u0505\u0502\3\2\2\2\u0505") + buf.write("\u0506\3\2\2\2\u0506\u0523\3\2\2\2\u0507\u0508\7y\2\2") + buf.write("\u0508\u050a\7\u00ab\2\2\u0509\u050b\7\u008b\2\2\u050a") + buf.write("\u0509\3\2\2\2\u050a\u050b\3\2\2\2\u050b\u050c\3\2\2\2") + buf.write("\u050c\u050d\7K\2\2\u050d\u050f\7\u011d\2\2\u050e\u0510") + buf.write("\5\u00a8U\2\u050f\u050e\3\2\2\2\u050f\u0510\3\2\2\2\u0510") + buf.write("\u0512\3\2\2\2\u0511\u0513\5D#\2\u0512\u0511\3\2\2\2\u0512") + buf.write("\u0513\3\2\2\2\u0513\u0523\3\2\2\2\u0514\u0515\7y\2\2") + buf.write("\u0515\u0517\7\u00ab\2\2\u0516\u0518\7\u008b\2\2\u0517") + buf.write("\u0516\3\2\2\2\u0517\u0518\3\2\2\2\u0518\u0519\3\2\2\2") + buf.write("\u0519\u051b\7K\2\2\u051a\u051c\7\u011d\2\2\u051b\u051a") + buf.write("\3\2\2\2\u051b\u051c\3\2\2\2\u051c\u051d\3\2\2\2\u051d") + buf.write("\u0520\5\64\33\2\u051e\u051f\7\u00a2\2\2\u051f\u0521\5") + buf.write("8\35\2\u0520\u051e\3\2\2\2\u0520\u0521\3\2\2\2\u0521\u0523") + buf.write("\3\2\2\2\u0522\u04eb\3\2\2\2\u0522\u04f9\3\2\2\2\u0522") + buf.write("\u0507\3\2\2\2\u0522\u0514\3\2\2\2\u0523#\3\2\2\2\u0524") + buf.write("\u0526\5&\24\2\u0525\u0527\5\34\17\2\u0526\u0525\3\2\2") + buf.write("\2\u0526\u0527\3\2\2\2\u0527%\3\2\2\2\u0528\u0529\7\u00ac") + buf.write("\2\2\u0529\u052a\7\4\2\2\u052a\u052f\5(\25\2\u052b\u052c") + buf.write("\7\6\2\2\u052c\u052e\5(\25\2\u052d\u052b\3\2\2\2\u052e") + buf.write("\u0531\3\2\2\2\u052f\u052d\3\2\2\2\u052f\u0530\3\2\2\2") + buf.write("\u0530\u0532\3\2\2\2\u0531\u052f\3\2\2\2\u0532\u0533\7") + buf.write("\5\2\2\u0533\'\3\2\2\2\u0534\u0537\5\u0104\u0083\2\u0535") + buf.write("\u0536\7\u010a\2\2\u0536\u0538\5\u00c6d\2\u0537\u0535") + buf.write("\3\2\2\2\u0537\u0538\3\2\2\2\u0538)\3\2\2\2\u0539\u053a") + buf.write("\t\16\2\2\u053a+\3\2\2\2\u053b\u0541\5\u00fe\u0080\2\u053c") + buf.write("\u0541\7\u011d\2\2\u053d\u0541\5\u00c8e\2\u053e\u0541") + buf.write("\5\u00caf\2\u053f\u0541\5\u00ccg\2\u0540\u053b\3\2\2\2") + buf.write("\u0540\u053c\3\2\2\2\u0540\u053d\3\2\2\2\u0540\u053e\3") + buf.write("\2\2\2\u0540\u053f\3\2\2\2\u0541-\3\2\2\2\u0542\u0547") + buf.write("\5\u0104\u0083\2\u0543\u0544\7\7\2\2\u0544\u0546\5\u0104") + buf.write("\u0083\2\u0545\u0543\3\2\2\2\u0546\u0549\3\2\2\2\u0547") + buf.write("\u0545\3\2\2\2\u0547\u0548\3\2\2\2\u0548/\3\2\2\2\u0549") + buf.write("\u0547\3\2\2\2\u054a\u054b\7\u0108\2\2\u054b\u0550\5\62") + buf.write("\32\2\u054c\u054d\7\6\2\2\u054d\u054f\5\62\32\2\u054e") + buf.write("\u054c\3\2\2\2\u054f\u0552\3\2\2\2\u0550\u054e\3\2\2\2") + buf.write("\u0550\u0551\3\2\2\2\u0551\61\3\2\2\2\u0552\u0550\3\2") + buf.write("\2\2\u0553\u0555\5\u0100\u0081\2\u0554\u0556\5\u0094K") + buf.write("\2\u0555\u0554\3\2\2\2\u0555\u0556\3\2\2\2\u0556\u0558") + buf.write("\3\2\2\2\u0557\u0559\7\30\2\2\u0558\u0557\3\2\2\2\u0558") + buf.write("\u0559\3\2\2\2\u0559\u055a\3\2\2\2\u055a\u055b\7\4\2\2") + buf.write("\u055b\u055c\5 \21\2\u055c\u055d\7\5\2\2\u055d\63\3\2") + buf.write("\2\2\u055e\u055f\7\u0101\2\2\u055f\u0560\5\u00acW\2\u0560") + buf.write("\65\3\2\2\2\u0561\u0562\7\u00a2\2\2\u0562\u056c\58\35") + buf.write("\2\u0563\u0564\7\u00ad\2\2\u0564\u0565\7 \2\2\u0565\u056c") + buf.write("\5\u00b6\\\2\u0566\u056c\5\30\r\2\u0567\u056c\5\34\17") + buf.write("\2\u0568\u056c\5\36\20\2\u0569\u056a\7\u00e8\2\2\u056a") + buf.write("\u056c\58\35\2\u056b\u0561\3\2\2\2\u056b\u0563\3\2\2\2") + buf.write("\u056b\u0566\3\2\2\2\u056b\u0567\3\2\2\2\u056b\u0568\3") + buf.write("\2\2\2\u056b\u0569\3\2\2\2\u056c\u056f\3\2\2\2\u056d\u056b") + buf.write("\3\2\2\2\u056d\u056e\3\2\2\2\u056e\67\3\2\2\2\u056f\u056d") + buf.write("\3\2\2\2\u0570\u0571\7\4\2\2\u0571\u0576\5:\36\2\u0572") + buf.write("\u0573\7\6\2\2\u0573\u0575\5:\36\2\u0574\u0572\3\2\2\2") + buf.write("\u0575\u0578\3\2\2\2\u0576\u0574\3\2\2\2\u0576\u0577\3") + buf.write("\2\2\2\u0577\u0579\3\2\2\2\u0578\u0576\3\2\2\2\u0579\u057a") + buf.write("\7\5\2\2\u057a9\3\2\2\2\u057b\u0580\5<\37\2\u057c\u057e") + buf.write("\7\u010a\2\2\u057d\u057c\3\2\2\2\u057d\u057e\3\2\2\2\u057e") + buf.write("\u057f\3\2\2\2\u057f\u0581\5> \2\u0580\u057d\3\2\2\2\u0580") + buf.write("\u0581\3\2\2\2\u0581;\3\2\2\2\u0582\u0587\5\u0104\u0083") + buf.write("\2\u0583\u0584\7\7\2\2\u0584\u0586\5\u0104\u0083\2\u0585") + buf.write("\u0583\3\2\2\2\u0586\u0589\3\2\2\2\u0587\u0585\3\2\2\2") + buf.write("\u0587\u0588\3\2\2\2\u0588\u058c\3\2\2\2\u0589\u0587\3") + buf.write("\2\2\2\u058a\u058c\7\u011d\2\2\u058b\u0582\3\2\2\2\u058b") + buf.write("\u058a\3\2\2\2\u058c=\3\2\2\2\u058d\u0592\7\u0121\2\2") + buf.write("\u058e\u0592\7\u0123\2\2\u058f\u0592\5\u00ceh\2\u0590") + buf.write("\u0592\7\u011d\2\2\u0591\u058d\3\2\2\2\u0591\u058e\3\2") + buf.write("\2\2\u0591\u058f\3\2\2\2\u0591\u0590\3\2\2\2\u0592?\3") + buf.write("\2\2\2\u0593\u0594\7\4\2\2\u0594\u0599\5\u00c6d\2\u0595") + buf.write("\u0596\7\6\2\2\u0596\u0598\5\u00c6d\2\u0597\u0595\3\2") + buf.write("\2\2\u0598\u059b\3\2\2\2\u0599\u0597\3\2\2\2\u0599\u059a") + buf.write("\3\2\2\2\u059a\u059c\3\2\2\2\u059b\u0599\3\2\2\2\u059c") + buf.write("\u059d\7\5\2\2\u059dA\3\2\2\2\u059e\u059f\7\4\2\2\u059f") + buf.write("\u05a4\5@!\2\u05a0\u05a1\7\6\2\2\u05a1\u05a3\5@!\2\u05a2") + buf.write("\u05a0\3\2\2\2\u05a3\u05a6\3\2\2\2\u05a4\u05a2\3\2\2\2") + buf.write("\u05a4\u05a5\3\2\2\2\u05a5\u05a7\3\2\2\2\u05a6\u05a4\3") + buf.write("\2\2\2\u05a7\u05a8\7\5\2\2\u05a8C\3\2\2\2\u05a9\u05aa") + buf.write("\7\u00e0\2\2\u05aa\u05ab\7\30\2\2\u05ab\u05b0\5F$\2\u05ac") + buf.write("\u05ad\7\u00e0\2\2\u05ad\u05ae\7 \2\2\u05ae\u05b0\5H%") + buf.write("\2\u05af\u05a9\3\2\2\2\u05af\u05ac\3\2\2\2\u05b0E\3\2") + buf.write("\2\2\u05b1\u05b2\7x\2\2\u05b2\u05b3\7\u011d\2\2\u05b3") + buf.write("\u05b4\7\u00a7\2\2\u05b4\u05b7\7\u011d\2\2\u05b5\u05b7") + buf.write("\5\u0104\u0083\2\u05b6\u05b1\3\2\2\2\u05b6\u05b5\3\2\2") + buf.write("\2\u05b7G\3\2\2\2\u05b8\u05bc\7\u011d\2\2\u05b9\u05ba") + buf.write("\7\u0108\2\2\u05ba\u05bb\7\u00d4\2\2\u05bb\u05bd\58\35") + buf.write("\2\u05bc\u05b9\3\2\2\2\u05bc\u05bd\3\2\2\2\u05bdI\3\2") + buf.write("\2\2\u05be\u05bf\5\u0104\u0083\2\u05bf\u05c0\7\u011d\2") + buf.write("\2\u05c0K\3\2\2\2\u05c1\u05c2\5\"\22\2\u05c2\u05c3\5R") + buf.write("*\2\u05c3\u05c4\5N(\2\u05c4\u05f5\3\2\2\2\u05c5\u05c7") + buf.write("\5x=\2\u05c6\u05c8\5P)\2\u05c7\u05c6\3\2\2\2\u05c8\u05c9") + buf.write("\3\2\2\2\u05c9\u05c7\3\2\2\2\u05c9\u05ca\3\2\2\2\u05ca") + buf.write("\u05f5\3\2\2\2\u05cb\u05cc\7E\2\2\u05cc\u05cd\7f\2\2\u05cd") + buf.write("\u05ce\5\u00acW\2\u05ce\u05d0\5\u00a6T\2\u05cf\u05d1\5") + buf.write("p9\2\u05d0\u05cf\3\2\2\2\u05d0\u05d1\3\2\2\2\u05d1\u05f5") + buf.write("\3\2\2\2\u05d2\u05d3\7\u00fe\2\2\u05d3\u05d4\5\u00acW") + buf.write("\2\u05d4\u05d5\5\u00a6T\2\u05d5\u05d7\5b\62\2\u05d6\u05d8") + buf.write("\5p9\2\u05d7\u05d6\3\2\2\2\u05d7\u05d8\3\2\2\2\u05d8\u05f5") + buf.write("\3\2\2\2\u05d9\u05da\7\u0093\2\2\u05da\u05db\7|\2\2\u05db") + buf.write("\u05dc\5\u00acW\2\u05dc\u05dd\5\u00a6T\2\u05dd\u05e3\7") + buf.write("\u0101\2\2\u05de\u05e4\5\u00acW\2\u05df\u05e0\7\4\2\2") + buf.write("\u05e0\u05e1\5 \21\2\u05e1\u05e2\7\5\2\2\u05e2\u05e4\3") + buf.write("\2\2\2\u05e3\u05de\3\2\2\2\u05e3\u05df\3\2\2\2\u05e4\u05e5") + buf.write("\3\2\2\2\u05e5\u05e6\5\u00a6T\2\u05e6\u05e7\7\u009f\2") + buf.write("\2\u05e7\u05eb\5\u00be`\2\u05e8\u05ea\5d\63\2\u05e9\u05e8") + buf.write("\3\2\2\2\u05ea\u05ed\3\2\2\2\u05eb\u05e9\3\2\2\2\u05eb") + buf.write("\u05ec\3\2\2\2\u05ec\u05f1\3\2\2\2\u05ed\u05eb\3\2\2\2") + buf.write("\u05ee\u05f0\5f\64\2\u05ef\u05ee\3\2\2\2\u05f0\u05f3\3") + buf.write("\2\2\2\u05f1\u05ef\3\2\2\2\u05f1\u05f2\3\2\2\2\u05f2\u05f5") + buf.write("\3\2\2\2\u05f3\u05f1\3\2\2\2\u05f4\u05c1\3\2\2\2\u05f4") + buf.write("\u05c5\3\2\2\2\u05f4\u05cb\3\2\2\2\u05f4\u05d2\3\2\2\2") + buf.write("\u05f4\u05d9\3\2\2\2\u05f5M\3\2\2\2\u05f6\u05f7\7\u00a4") + buf.write("\2\2\u05f7\u05f8\7 \2\2\u05f8\u05fd\5V,\2\u05f9\u05fa") + buf.write("\7\6\2\2\u05fa\u05fc\5V,\2\u05fb\u05f9\3\2\2\2\u05fc\u05ff") + buf.write("\3\2\2\2\u05fd\u05fb\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe") + buf.write("\u0601\3\2\2\2\u05ff\u05fd\3\2\2\2\u0600\u05f6\3\2\2\2") + buf.write("\u0600\u0601\3\2\2\2\u0601\u060c\3\2\2\2\u0602\u0603\7") + buf.write("(\2\2\u0603\u0604\7 \2\2\u0604\u0609\5\u00bc_\2\u0605") + buf.write("\u0606\7\6\2\2\u0606\u0608\5\u00bc_\2\u0607\u0605\3\2") + buf.write("\2\2\u0608\u060b\3\2\2\2\u0609\u0607\3\2\2\2\u0609\u060a") + buf.write("\3\2\2\2\u060a\u060d\3\2\2\2\u060b\u0609\3\2\2\2\u060c") + buf.write("\u0602\3\2\2\2\u060c\u060d\3\2\2\2\u060d\u0618\3\2\2\2") + buf.write("\u060e\u060f\7M\2\2\u060f\u0610\7 \2\2\u0610\u0615\5\u00bc") + buf.write("_\2\u0611\u0612\7\6\2\2\u0612\u0614\5\u00bc_\2\u0613\u0611") + buf.write("\3\2\2\2\u0614\u0617\3\2\2\2\u0615\u0613\3\2\2\2\u0615") + buf.write("\u0616\3\2\2\2\u0616\u0619\3\2\2\2\u0617\u0615\3\2\2\2") + buf.write("\u0618\u060e\3\2\2\2\u0618\u0619\3\2\2\2\u0619\u0624\3") + buf.write("\2\2\2\u061a\u061b\7\u00dc\2\2\u061b\u061c\7 \2\2\u061c") + buf.write("\u0621\5V,\2\u061d\u061e\7\6\2\2\u061e\u0620\5V,\2\u061f") + buf.write("\u061d\3\2\2\2\u0620\u0623\3\2\2\2\u0621\u061f\3\2\2\2") + buf.write("\u0621\u0622\3\2\2\2\u0622\u0625\3\2\2\2\u0623\u0621\3") + buf.write("\2\2\2\u0624\u061a\3\2\2\2\u0624\u0625\3\2\2\2\u0625\u0627") + buf.write("\3\2\2\2\u0626\u0628\5\u00f0y\2\u0627\u0626\3\2\2\2\u0627") + buf.write("\u0628\3\2\2\2\u0628\u062e\3\2\2\2\u0629\u062c\7\u0087") + buf.write("\2\2\u062a\u062d\7\20\2\2\u062b\u062d\5\u00bc_\2\u062c") + buf.write("\u062a\3\2\2\2\u062c\u062b\3\2\2\2\u062d\u062f\3\2\2\2") + buf.write("\u062e\u0629\3\2\2\2\u062e\u062f\3\2\2\2\u062fO\3\2\2") + buf.write("\2\u0630\u0631\5\"\22\2\u0631\u0632\5Z.\2\u0632Q\3\2\2") + buf.write("\2\u0633\u0634\b*\1\2\u0634\u0635\5T+\2\u0635\u064d\3") + buf.write("\2\2\2\u0636\u0637\f\5\2\2\u0637\u0638\6*\5\2\u0638\u063a") + buf.write("\t\17\2\2\u0639\u063b\5\u0086D\2\u063a\u0639\3\2\2\2\u063a") + buf.write("\u063b\3\2\2\2\u063b\u063c\3\2\2\2\u063c\u064c\5R*\6\u063d") + buf.write("\u063e\f\4\2\2\u063e\u063f\6*\7\2\u063f\u0641\7z\2\2\u0640") + buf.write("\u0642\5\u0086D\2\u0641\u0640\3\2\2\2\u0641\u0642\3\2") + buf.write("\2\2\u0642\u0643\3\2\2\2\u0643\u064c\5R*\5\u0644\u0645") + buf.write("\f\3\2\2\u0645\u0646\6*\t\2\u0646\u0648\t\20\2\2\u0647") + buf.write("\u0649\5\u0086D\2\u0648\u0647\3\2\2\2\u0648\u0649\3\2") + buf.write("\2\2\u0649\u064a\3\2\2\2\u064a\u064c\5R*\4\u064b\u0636") + buf.write("\3\2\2\2\u064b\u063d\3\2\2\2\u064b\u0644\3\2\2\2\u064c") + buf.write("\u064f\3\2\2\2\u064d\u064b\3\2\2\2\u064d\u064e\3\2\2\2") + buf.write("\u064eS\3\2\2\2\u064f\u064d\3\2\2\2\u0650\u065a\5\\/\2") + buf.write("\u0651\u065a\5X-\2\u0652\u0653\7\u00e5\2\2\u0653\u065a") + buf.write("\5\u00acW\2\u0654\u065a\5\u00a2R\2\u0655\u0656\7\4\2\2") + buf.write("\u0656\u0657\5 \21\2\u0657\u0658\7\5\2\2\u0658\u065a\3") + buf.write("\2\2\2\u0659\u0650\3\2\2\2\u0659\u0651\3\2\2\2\u0659\u0652") + buf.write("\3\2\2\2\u0659\u0654\3\2\2\2\u0659\u0655\3\2\2\2\u065a") + buf.write("U\3\2\2\2\u065b\u065d\5\u00bc_\2\u065c\u065e\t\21\2\2") + buf.write("\u065d\u065c\3\2\2\2\u065d\u065e\3\2\2\2\u065e\u0661\3") + buf.write("\2\2\2\u065f\u0660\7\u009d\2\2\u0660\u0662\t\22\2\2\u0661") + buf.write("\u065f\3\2\2\2\u0661\u0662\3\2\2\2\u0662W\3\2\2\2\u0663") + buf.write("\u0665\5x=\2\u0664\u0666\5Z.\2\u0665\u0664\3\2\2\2\u0666") + buf.write("\u0667\3\2\2\2\u0667\u0665\3\2\2\2\u0667\u0668\3\2\2\2") + buf.write("\u0668Y\3\2\2\2\u0669\u066b\5^\60\2\u066a\u066c\5p9\2") + buf.write("\u066b\u066a\3\2\2\2\u066b\u066c\3\2\2\2\u066c\u066d\3") + buf.write("\2\2\2\u066d\u066e\5N(\2\u066e\u0685\3\2\2\2\u066f\u0673") + buf.write("\5`\61\2\u0670\u0672\5\u0084C\2\u0671\u0670\3\2\2\2\u0672") + buf.write("\u0675\3\2\2\2\u0673\u0671\3\2\2\2\u0673\u0674\3\2\2\2") + buf.write("\u0674\u0677\3\2\2\2\u0675\u0673\3\2\2\2\u0676\u0678\5") + buf.write("p9\2\u0677\u0676\3\2\2\2\u0677\u0678\3\2\2\2\u0678\u067a") + buf.write("\3\2\2\2\u0679\u067b\5z>\2\u067a\u0679\3\2\2\2\u067a\u067b") + buf.write("\3\2\2\2\u067b\u067d\3\2\2\2\u067c\u067e\5r:\2\u067d\u067c") + buf.write("\3\2\2\2\u067d\u067e\3\2\2\2\u067e\u0680\3\2\2\2\u067f") + buf.write("\u0681\5\u00f0y\2\u0680\u067f\3\2\2\2\u0680\u0681\3\2") + buf.write("\2\2\u0681\u0682\3\2\2\2\u0682\u0683\5N(\2\u0683\u0685") + buf.write("\3\2\2\2\u0684\u0669\3\2\2\2\u0684\u066f\3\2\2\2\u0685") + buf.write("[\3\2\2\2\u0686\u0688\5^\60\2\u0687\u0689\5x=\2\u0688") + buf.write("\u0687\3\2\2\2\u0688\u0689\3\2\2\2\u0689\u068b\3\2\2\2") + buf.write("\u068a\u068c\5p9\2\u068b\u068a\3\2\2\2\u068b\u068c\3\2") + buf.write("\2\2\u068c\u06a4\3\2\2\2\u068d\u068f\5`\61\2\u068e\u0690") + buf.write("\5x=\2\u068f\u068e\3\2\2\2\u068f\u0690\3\2\2\2\u0690\u0694") + buf.write("\3\2\2\2\u0691\u0693\5\u0084C\2\u0692\u0691\3\2\2\2\u0693") + buf.write("\u0696\3\2\2\2\u0694\u0692\3\2\2\2\u0694\u0695\3\2\2\2") + buf.write("\u0695\u0698\3\2\2\2\u0696\u0694\3\2\2\2\u0697\u0699\5") + buf.write("p9\2\u0698\u0697\3\2\2\2\u0698\u0699\3\2\2\2\u0699\u069b") + buf.write("\3\2\2\2\u069a\u069c\5z>\2\u069b\u069a\3\2\2\2\u069b\u069c") + buf.write("\3\2\2\2\u069c\u069e\3\2\2\2\u069d\u069f\5r:\2\u069e\u069d") + buf.write("\3\2\2\2\u069e\u069f\3\2\2\2\u069f\u06a1\3\2\2\2\u06a0") + buf.write("\u06a2\5\u00f0y\2\u06a1\u06a0\3\2\2\2\u06a1\u06a2\3\2") + buf.write("\2\2\u06a2\u06a4\3\2\2\2\u06a3\u0686\3\2\2\2\u06a3\u068d") + buf.write("\3\2\2\2\u06a4]\3\2\2\2\u06a5\u06a6\7\u00d0\2\2\u06a6") + buf.write("\u06a7\7\u00f1\2\2\u06a7\u06a8\7\4\2\2\u06a8\u06a9\5\u00b4") + buf.write("[\2\u06a9\u06aa\7\5\2\2\u06aa\u06b0\3\2\2\2\u06ab\u06ac") + buf.write("\7\u0091\2\2\u06ac\u06b0\5\u00b4[\2\u06ad\u06ae\7\u00bd") + buf.write("\2\2\u06ae\u06b0\5\u00b4[\2\u06af\u06a5\3\2\2\2\u06af") + buf.write("\u06ab\3\2\2\2\u06af\u06ad\3\2\2\2\u06b0\u06b2\3\2\2\2") + buf.write("\u06b1\u06b3\5\u00a8U\2\u06b2\u06b1\3\2\2\2\u06b2\u06b3") + buf.write("\3\2\2\2\u06b3\u06b6\3\2\2\2\u06b4\u06b5\7\u00bb\2\2\u06b5") + buf.write("\u06b7\7\u011d\2\2\u06b6\u06b4\3\2\2\2\u06b6\u06b7\3\2") + buf.write("\2\2\u06b7\u06b8\3\2\2\2\u06b8\u06b9\7\u0101\2\2\u06b9") + buf.write("\u06c6\7\u011d\2\2\u06ba\u06c4\7\30\2\2\u06bb\u06c5\5") + buf.write("\u0096L\2\u06bc\u06c5\5\u00e6t\2\u06bd\u06c0\7\4\2\2\u06be") + buf.write("\u06c1\5\u0096L\2\u06bf\u06c1\5\u00e6t\2\u06c0\u06be\3") + buf.write("\2\2\2\u06c0\u06bf\3\2\2\2\u06c1\u06c2\3\2\2\2\u06c2\u06c3") + buf.write("\7\5\2\2\u06c3\u06c5\3\2\2\2\u06c4\u06bb\3\2\2\2\u06c4") + buf.write("\u06bc\3\2\2\2\u06c4\u06bd\3\2\2\2\u06c5\u06c7\3\2\2\2") + buf.write("\u06c6\u06ba\3\2\2\2\u06c6\u06c7\3\2\2\2\u06c7\u06c9\3") + buf.write("\2\2\2\u06c8\u06ca\5\u00a8U\2\u06c9\u06c8\3\2\2\2\u06c9") + buf.write("\u06ca\3\2\2\2\u06ca\u06cd\3\2\2\2\u06cb\u06cc\7\u00ba") + buf.write("\2\2\u06cc\u06ce\7\u011d\2\2\u06cd\u06cb\3\2\2\2\u06cd") + buf.write("\u06ce\3\2\2\2\u06ce_\3\2\2\2\u06cf\u06d3\7\u00d0\2\2") + buf.write("\u06d0\u06d2\5t;\2\u06d1\u06d0\3\2\2\2\u06d2\u06d5\3\2") + buf.write("\2\2\u06d3\u06d1\3\2\2\2\u06d3\u06d4\3\2\2\2\u06d4\u06d7") + buf.write("\3\2\2\2\u06d5\u06d3\3\2\2\2\u06d6\u06d8\5\u0086D\2\u06d7") + buf.write("\u06d6\3\2\2\2\u06d7\u06d8\3\2\2\2\u06d8\u06d9\3\2\2\2") + buf.write("\u06d9\u06da\5\u00b4[\2\u06daa\3\2\2\2\u06db\u06dc\7\u00d6") + buf.write("\2\2\u06dc\u06dd\5l\67\2\u06ddc\3\2\2\2\u06de\u06df\7") + buf.write("\u0105\2\2\u06df\u06e2\7\u0092\2\2\u06e0\u06e1\7\23\2") + buf.write("\2\u06e1\u06e3\5\u00be`\2\u06e2\u06e0\3\2\2\2\u06e2\u06e3") + buf.write("\3\2\2\2\u06e3\u06e4\3\2\2\2\u06e4\u06e5\7\u00eb\2\2\u06e5") + buf.write("\u06e6\5h\65\2\u06e6e\3\2\2\2\u06e7\u06e8\7\u0105\2\2") + buf.write("\u06e8\u06e9\7\u009b\2\2\u06e9\u06ec\7\u0092\2\2\u06ea") + buf.write("\u06eb\7\23\2\2\u06eb\u06ed\5\u00be`\2\u06ec\u06ea\3\2") + buf.write("\2\2\u06ec\u06ed\3\2\2\2\u06ed\u06ee\3\2\2\2\u06ee\u06ef") + buf.write("\7\u00eb\2\2\u06ef\u06f0\5j\66\2\u06f0g\3\2\2\2\u06f1") + buf.write("\u06f9\7E\2\2\u06f2\u06f3\7\u00fe\2\2\u06f3\u06f4\7\u00d6") + buf.write("\2\2\u06f4\u06f9\7\u0114\2\2\u06f5\u06f6\7\u00fe\2\2\u06f6") + buf.write("\u06f7\7\u00d6\2\2\u06f7\u06f9\5l\67\2\u06f8\u06f1\3\2") + buf.write("\2\2\u06f8\u06f2\3\2\2\2\u06f8\u06f5\3\2\2\2\u06f9i\3") + buf.write("\2\2\2\u06fa\u06fb\7y\2\2\u06fb\u070d\7\u0114\2\2\u06fc") + buf.write("\u06fd\7y\2\2\u06fd\u06fe\7\4\2\2\u06fe\u06ff\5\u00aa") + buf.write("V\2\u06ff\u0700\7\5\2\2\u0700\u0701\7\u0102\2\2\u0701") + buf.write("\u0702\7\4\2\2\u0702\u0707\5\u00bc_\2\u0703\u0704\7\6") + buf.write("\2\2\u0704\u0706\5\u00bc_\2\u0705\u0703\3\2\2\2\u0706") + buf.write("\u0709\3\2\2\2\u0707\u0705\3\2\2\2\u0707\u0708\3\2\2\2") + buf.write("\u0708\u070a\3\2\2\2\u0709\u0707\3\2\2\2\u070a\u070b\7") + buf.write("\5\2\2\u070b\u070d\3\2\2\2\u070c\u06fa\3\2\2\2\u070c\u06fc") + buf.write("\3\2\2\2\u070dk\3\2\2\2\u070e\u0713\5n8\2\u070f\u0710") + buf.write("\7\6\2\2\u0710\u0712\5n8\2\u0711\u070f\3\2\2\2\u0712\u0715") + buf.write("\3\2\2\2\u0713\u0711\3\2\2\2\u0713\u0714\3\2\2\2\u0714") + buf.write("m\3\2\2\2\u0715\u0713\3\2\2\2\u0716\u0717\5\u00acW\2\u0717") + buf.write("\u0718\7\u010a\2\2\u0718\u0719\5\u00bc_\2\u0719o\3\2\2") + buf.write("\2\u071a\u071b\7\u0106\2\2\u071b\u071c\5\u00be`\2\u071c") + buf.write("q\3\2\2\2\u071d\u071e\7n\2\2\u071e\u071f\5\u00be`\2\u071f") + buf.write("s\3\2\2\2\u0720\u0721\7\b\2\2\u0721\u0728\5v<\2\u0722") + buf.write("\u0724\7\6\2\2\u0723\u0722\3\2\2\2\u0723\u0724\3\2\2\2") + buf.write("\u0724\u0725\3\2\2\2\u0725\u0727\5v<\2\u0726\u0723\3\2") + buf.write("\2\2\u0727\u072a\3\2\2\2\u0728\u0726\3\2\2\2\u0728\u0729") + buf.write("\3\2\2\2\u0729\u072b\3\2\2\2\u072a\u0728\3\2\2\2\u072b") + buf.write("\u072c\7\t\2\2\u072cu\3\2\2\2\u072d\u073b\5\u0104\u0083") + buf.write("\2\u072e\u072f\5\u0104\u0083\2\u072f\u0730\7\4\2\2\u0730") + buf.write("\u0735\5\u00c4c\2\u0731\u0732\7\6\2\2\u0732\u0734\5\u00c4") + buf.write("c\2\u0733\u0731\3\2\2\2\u0734\u0737\3\2\2\2\u0735\u0733") + buf.write("\3\2\2\2\u0735\u0736\3\2\2\2\u0736\u0738\3\2\2\2\u0737") + buf.write("\u0735\3\2\2\2\u0738\u0739\7\5\2\2\u0739\u073b\3\2\2\2") + buf.write("\u073a\u072d\3\2\2\2\u073a\u072e\3\2\2\2\u073bw\3\2\2") + buf.write("\2\u073c\u073d\7f\2\2\u073d\u0742\5\u0088E\2\u073e\u073f") + buf.write("\7\6\2\2\u073f\u0741\5\u0088E\2\u0740\u073e\3\2\2\2\u0741") + buf.write("\u0744\3\2\2\2\u0742\u0740\3\2\2\2\u0742\u0743\3\2\2\2") + buf.write("\u0743\u0748\3\2\2\2\u0744\u0742\3\2\2\2\u0745\u0747\5") + buf.write("\u0084C\2\u0746\u0745\3\2\2\2\u0747\u074a\3\2\2\2\u0748") + buf.write("\u0746\3\2\2\2\u0748\u0749\3\2\2\2\u0749\u074c\3\2\2\2") + buf.write("\u074a\u0748\3\2\2\2\u074b\u074d\5~@\2\u074c\u074b\3\2") + buf.write("\2\2\u074c\u074d\3\2\2\2\u074dy\3\2\2\2\u074e\u074f\7") + buf.write("l\2\2\u074f\u0750\7 \2\2\u0750\u0755\5\u00bc_\2\u0751") + buf.write("\u0752\7\6\2\2\u0752\u0754\5\u00bc_\2\u0753\u0751\3\2") + buf.write("\2\2\u0754\u0757\3\2\2\2\u0755\u0753\3\2\2\2\u0755\u0756") + buf.write("\3\2\2\2\u0756\u0769\3\2\2\2\u0757\u0755\3\2\2\2\u0758") + buf.write("\u0759\7\u0108\2\2\u0759\u076a\7\u00cb\2\2\u075a\u075b") + buf.write("\7\u0108\2\2\u075b\u076a\79\2\2\u075c\u075d\7m\2\2\u075d") + buf.write("\u075e\7\u00d8\2\2\u075e\u075f\7\4\2\2\u075f\u0764\5|") + buf.write("?\2\u0760\u0761\7\6\2\2\u0761\u0763\5|?\2\u0762\u0760") + buf.write("\3\2\2\2\u0763\u0766\3\2\2\2\u0764\u0762\3\2\2\2\u0764") + buf.write("\u0765\3\2\2\2\u0765\u0767\3\2\2\2\u0766\u0764\3\2\2\2") + buf.write("\u0767\u0768\7\5\2\2\u0768\u076a\3\2\2\2\u0769\u0758\3") + buf.write("\2\2\2\u0769\u075a\3\2\2\2\u0769\u075c\3\2\2\2\u0769\u076a") + buf.write("\3\2\2\2\u076a\u077b\3\2\2\2\u076b\u076c\7l\2\2\u076c") + buf.write("\u076d\7 \2\2\u076d\u076e\7m\2\2\u076e\u076f\7\u00d8\2") + buf.write("\2\u076f\u0770\7\4\2\2\u0770\u0775\5|?\2\u0771\u0772\7") + buf.write("\6\2\2\u0772\u0774\5|?\2\u0773\u0771\3\2\2\2\u0774\u0777") + buf.write("\3\2\2\2\u0775\u0773\3\2\2\2\u0775\u0776\3\2\2\2\u0776") + buf.write("\u0778\3\2\2\2\u0777\u0775\3\2\2\2\u0778\u0779\7\5\2\2") + buf.write("\u0779\u077b\3\2\2\2\u077a\u074e\3\2\2\2\u077a\u076b\3") + buf.write("\2\2\2\u077b{\3\2\2\2\u077c\u0785\7\4\2\2\u077d\u0782") + buf.write("\5\u00bc_\2\u077e\u077f\7\6\2\2\u077f\u0781\5\u00bc_\2") + buf.write("\u0780\u077e\3\2\2\2\u0781\u0784\3\2\2\2\u0782\u0780\3") + buf.write("\2\2\2\u0782\u0783\3\2\2\2\u0783\u0786\3\2\2\2\u0784\u0782") + buf.write("\3\2\2\2\u0785\u077d\3\2\2\2\u0785\u0786\3\2\2\2\u0786") + buf.write("\u0787\3\2\2\2\u0787\u078a\7\5\2\2\u0788\u078a\5\u00bc") + buf.write("_\2\u0789\u077c\3\2\2\2\u0789\u0788\3\2\2\2\u078a}\3\2") + buf.write("\2\2\u078b\u078c\7\u00b0\2\2\u078c\u078d\7\4\2\2\u078d") + buf.write("\u078e\5\u00b4[\2\u078e\u078f\7b\2\2\u078f\u0790\5\u0080") + buf.write("A\2\u0790\u0791\7s\2\2\u0791\u0792\7\4\2\2\u0792\u0797") + buf.write("\5\u0082B\2\u0793\u0794\7\6\2\2\u0794\u0796\5\u0082B\2") + buf.write("\u0795\u0793\3\2\2\2\u0796\u0799\3\2\2\2\u0797\u0795\3") + buf.write("\2\2\2\u0797\u0798\3\2\2\2\u0798\u079a\3\2\2\2\u0799\u0797") + buf.write("\3\2\2\2\u079a\u079b\7\5\2\2\u079b\u079c\7\5\2\2\u079c") + buf.write("\177\3\2\2\2\u079d\u07aa\5\u0104\u0083\2\u079e\u079f\7") + buf.write("\4\2\2\u079f\u07a4\5\u0104\u0083\2\u07a0\u07a1\7\6\2\2") + buf.write("\u07a1\u07a3\5\u0104\u0083\2\u07a2\u07a0\3\2\2\2\u07a3") + buf.write("\u07a6\3\2\2\2\u07a4\u07a2\3\2\2\2\u07a4\u07a5\3\2\2\2") + buf.write("\u07a5\u07a7\3\2\2\2\u07a6\u07a4\3\2\2\2\u07a7\u07a8\7") + buf.write("\5\2\2\u07a8\u07aa\3\2\2\2\u07a9\u079d\3\2\2\2\u07a9\u079e") + buf.write("\3\2\2\2\u07aa\u0081\3\2\2\2\u07ab\u07b0\5\u00bc_\2\u07ac") + buf.write("\u07ae\7\30\2\2\u07ad\u07ac\3\2\2\2\u07ad\u07ae\3\2\2") + buf.write("\2\u07ae\u07af\3\2\2\2\u07af\u07b1\5\u0104\u0083\2\u07b0") + buf.write("\u07ad\3\2\2\2\u07b0\u07b1\3\2\2\2\u07b1\u0083\3\2\2\2") + buf.write("\u07b2\u07b3\7\u0082\2\2\u07b3\u07b5\7\u0103\2\2\u07b4") + buf.write("\u07b6\7\u00a6\2\2\u07b5\u07b4\3\2\2\2\u07b5\u07b6\3\2") + buf.write("\2\2\u07b6\u07b7\3\2\2\2\u07b7\u07b8\5\u00fe\u0080\2\u07b8") + buf.write("\u07c1\7\4\2\2\u07b9\u07be\5\u00bc_\2\u07ba\u07bb\7\6") + buf.write("\2\2\u07bb\u07bd\5\u00bc_\2\u07bc\u07ba\3\2\2\2\u07bd") + buf.write("\u07c0\3\2\2\2\u07be\u07bc\3\2\2\2\u07be\u07bf\3\2\2\2") + buf.write("\u07bf\u07c2\3\2\2\2\u07c0\u07be\3\2\2\2\u07c1\u07b9\3") + buf.write("\2\2\2\u07c1\u07c2\3\2\2\2\u07c2\u07c3\3\2\2\2\u07c3\u07c4") + buf.write("\7\5\2\2\u07c4\u07d0\5\u0104\u0083\2\u07c5\u07c7\7\30") + buf.write("\2\2\u07c6\u07c5\3\2\2\2\u07c6\u07c7\3\2\2\2\u07c7\u07c8") + buf.write("\3\2\2\2\u07c8\u07cd\5\u0104\u0083\2\u07c9\u07ca\7\6\2") + buf.write("\2\u07ca\u07cc\5\u0104\u0083\2\u07cb\u07c9\3\2\2\2\u07cc") + buf.write("\u07cf\3\2\2\2\u07cd\u07cb\3\2\2\2\u07cd\u07ce\3\2\2\2") + buf.write("\u07ce\u07d1\3\2\2\2\u07cf\u07cd\3\2\2\2\u07d0\u07c6\3") + buf.write("\2\2\2\u07d0\u07d1\3\2\2\2\u07d1\u0085\3\2\2\2\u07d2\u07d3") + buf.write("\t\23\2\2\u07d3\u0087\3\2\2\2\u07d4\u07d8\5\u00a0Q\2\u07d5") + buf.write("\u07d7\5\u008aF\2\u07d6\u07d5\3\2\2\2\u07d7\u07da\3\2") + buf.write("\2\2\u07d8\u07d6\3\2\2\2\u07d8\u07d9\3\2\2\2\u07d9\u0089") + buf.write("\3\2\2\2\u07da\u07d8\3\2\2\2\u07db\u07dc\5\u008cG\2\u07dc") + buf.write("\u07dd\7\177\2\2\u07dd\u07df\5\u00a0Q\2\u07de\u07e0\5") + buf.write("\u008eH\2\u07df\u07de\3\2\2\2\u07df\u07e0\3\2\2\2\u07e0") + buf.write("\u07e7\3\2\2\2\u07e1\u07e2\7\u0099\2\2\u07e2\u07e3\5\u008c") + buf.write("G\2\u07e3\u07e4\7\177\2\2\u07e4\u07e5\5\u00a0Q\2\u07e5") + buf.write("\u07e7\3\2\2\2\u07e6\u07db\3\2\2\2\u07e6\u07e1\3\2\2\2") + buf.write("\u07e7\u008b\3\2\2\2\u07e8\u07ea\7v\2\2\u07e9\u07e8\3") + buf.write("\2\2\2\u07e9\u07ea\3\2\2\2\u07ea\u0801\3\2\2\2\u07eb\u0801") + buf.write("\78\2\2\u07ec\u07ee\7\u0085\2\2\u07ed\u07ef\7\u00a6\2") + buf.write("\2\u07ee\u07ed\3\2\2\2\u07ee\u07ef\3\2\2\2\u07ef\u0801") + buf.write("\3\2\2\2\u07f0\u07f2\7\u0085\2\2\u07f1\u07f0\3\2\2\2\u07f1") + buf.write("\u07f2\3\2\2\2\u07f2\u07f3\3\2\2\2\u07f3\u0801\7\u00d1") + buf.write("\2\2\u07f4\u07f6\7\u00c6\2\2\u07f5\u07f7\7\u00a6\2\2\u07f6") + buf.write("\u07f5\3\2\2\2\u07f6\u07f7\3\2\2\2\u07f7\u0801\3\2\2\2") + buf.write("\u07f8\u07fa\7g\2\2\u07f9\u07fb\7\u00a6\2\2\u07fa\u07f9") + buf.write("\3\2\2\2\u07fa\u07fb\3\2\2\2\u07fb\u0801\3\2\2\2\u07fc") + buf.write("\u07fe\7\u0085\2\2\u07fd\u07fc\3\2\2\2\u07fd\u07fe\3\2") + buf.write("\2\2\u07fe\u07ff\3\2\2\2\u07ff\u0801\7\24\2\2\u0800\u07e9") + buf.write("\3\2\2\2\u0800\u07eb\3\2\2\2\u0800\u07ec\3\2\2\2\u0800") + buf.write("\u07f1\3\2\2\2\u0800\u07f4\3\2\2\2\u0800\u07f8\3\2\2\2") + buf.write("\u0800\u07fd\3\2\2\2\u0801\u008d\3\2\2\2\u0802\u0803\7") + buf.write("\u009f\2\2\u0803\u0807\5\u00be`\2\u0804\u0805\7\u0101") + buf.write("\2\2\u0805\u0807\5\u0094K\2\u0806\u0802\3\2\2\2\u0806") + buf.write("\u0804\3\2\2\2\u0807\u008f\3\2\2\2\u0808\u0809\7\u00e7") + buf.write("\2\2\u0809\u080b\7\4\2\2\u080a\u080c\5\u0092J\2\u080b") + buf.write("\u080a\3\2\2\2\u080b\u080c\3\2\2\2\u080c\u080d\3\2\2\2") + buf.write("\u080d\u080e\7\5\2\2\u080e\u0091\3\2\2\2\u080f\u0811\7") + buf.write("\u0113\2\2\u0810\u080f\3\2\2\2\u0810\u0811\3\2\2\2\u0811") + buf.write("\u0812\3\2\2\2\u0812\u0813\t\24\2\2\u0813\u0828\7\u00af") + buf.write("\2\2\u0814\u0815\5\u00bc_\2\u0815\u0816\7\u00cd\2\2\u0816") + buf.write("\u0828\3\2\2\2\u0817\u0818\7\36\2\2\u0818\u0819\7\u0121") + buf.write("\2\2\u0819\u081a\7\u00a5\2\2\u081a\u081b\7\u009e\2\2\u081b") + buf.write("\u0824\7\u0121\2\2\u081c\u0822\7\u009f\2\2\u081d\u0823") + buf.write("\5\u0104\u0083\2\u081e\u081f\5\u00fe\u0080\2\u081f\u0820") + buf.write("\7\4\2\2\u0820\u0821\7\5\2\2\u0821\u0823\3\2\2\2\u0822") + buf.write("\u081d\3\2\2\2\u0822\u081e\3\2\2\2\u0823\u0825\3\2\2\2") + buf.write("\u0824\u081c\3\2\2\2\u0824\u0825\3\2\2\2\u0825\u0828\3") + buf.write("\2\2\2\u0826\u0828\5\u00bc_\2\u0827\u0810\3\2\2\2\u0827") + buf.write("\u0814\3\2\2\2\u0827\u0817\3\2\2\2\u0827\u0826\3\2\2\2") + buf.write("\u0828\u0093\3\2\2\2\u0829\u082a\7\4\2\2\u082a\u082b\5") + buf.write("\u0096L\2\u082b\u082c\7\5\2\2\u082c\u0095\3\2\2\2\u082d") + buf.write("\u0832\5\u0100\u0081\2\u082e\u082f\7\6\2\2\u082f\u0831") + buf.write("\5\u0100\u0081\2\u0830\u082e\3\2\2\2\u0831\u0834\3\2\2") + buf.write("\2\u0832\u0830\3\2\2\2\u0832\u0833\3\2\2\2\u0833\u0097") + buf.write("\3\2\2\2\u0834\u0832\3\2\2\2\u0835\u0836\7\4\2\2\u0836") + buf.write("\u083b\5\u009aN\2\u0837\u0838\7\6\2\2\u0838\u083a\5\u009a") + buf.write("N\2\u0839\u0837\3\2\2\2\u083a\u083d\3\2\2\2\u083b\u0839") + buf.write("\3\2\2\2\u083b\u083c\3\2\2\2\u083c\u083e\3\2\2\2\u083d") + buf.write("\u083b\3\2\2\2\u083e\u083f\7\5\2\2\u083f\u0099\3\2\2\2") + buf.write("\u0840\u0842\5\u0100\u0081\2\u0841\u0843\t\21\2\2\u0842") + buf.write("\u0841\3\2\2\2\u0842\u0843\3\2\2\2\u0843\u009b\3\2\2\2") + buf.write("\u0844\u0845\7\4\2\2\u0845\u084a\5\u009eP\2\u0846\u0847") + buf.write("\7\6\2\2\u0847\u0849\5\u009eP\2\u0848\u0846\3\2\2\2\u0849") + buf.write("\u084c\3\2\2\2\u084a\u0848\3\2\2\2\u084a\u084b\3\2\2\2") + buf.write("\u084b\u084d\3\2\2\2\u084c\u084a\3\2\2\2\u084d\u084e\7") + buf.write("\5\2\2\u084e\u009d\3\2\2\2\u084f\u0851\5\u0104\u0083\2") + buf.write("\u0850\u0852\5\36\20\2\u0851\u0850\3\2\2\2\u0851\u0852") + buf.write("\3\2\2\2\u0852\u009f\3\2\2\2\u0853\u0855\5\u00acW\2\u0854") + buf.write("\u0856\5\u0090I\2\u0855\u0854\3\2\2\2\u0855\u0856\3\2") + buf.write("\2\2\u0856\u0857\3\2\2\2\u0857\u0858\5\u00a6T\2\u0858") + buf.write("\u086c\3\2\2\2\u0859\u085a\7\4\2\2\u085a\u085b\5 \21\2") + buf.write("\u085b\u085d\7\5\2\2\u085c\u085e\5\u0090I\2\u085d\u085c") + buf.write("\3\2\2\2\u085d\u085e\3\2\2\2\u085e\u085f\3\2\2\2\u085f") + buf.write("\u0860\5\u00a6T\2\u0860\u086c\3\2\2\2\u0861\u0862\7\4") + buf.write("\2\2\u0862\u0863\5\u0088E\2\u0863\u0865\7\5\2\2\u0864") + buf.write("\u0866\5\u0090I\2\u0865\u0864\3\2\2\2\u0865\u0866\3\2") + buf.write("\2\2\u0866\u0867\3\2\2\2\u0867\u0868\5\u00a6T\2\u0868") + buf.write("\u086c\3\2\2\2\u0869\u086c\5\u00a2R\2\u086a\u086c\5\u00a4") + buf.write("S\2\u086b\u0853\3\2\2\2\u086b\u0859\3\2\2\2\u086b\u0861") + buf.write("\3\2\2\2\u086b\u0869\3\2\2\2\u086b\u086a\3\2\2\2\u086c") + buf.write("\u00a1\3\2\2\2\u086d\u086e\7\u0102\2\2\u086e\u0873\5\u00bc") + buf.write("_\2\u086f\u0870\7\6\2\2\u0870\u0872\5\u00bc_\2\u0871\u086f") + buf.write("\3\2\2\2\u0872\u0875\3\2\2\2\u0873\u0871\3\2\2\2\u0873") + buf.write("\u0874\3\2\2\2\u0874\u0876\3\2\2\2\u0875\u0873\3\2\2\2") + buf.write("\u0876\u0877\5\u00a6T\2\u0877\u00a3\3\2\2\2\u0878\u0879") + buf.write("\5\u0100\u0081\2\u0879\u0882\7\4\2\2\u087a\u087f\5\u00bc") + buf.write("_\2\u087b\u087c\7\6\2\2\u087c\u087e\5\u00bc_\2\u087d\u087b") + buf.write("\3\2\2\2\u087e\u0881\3\2\2\2\u087f\u087d\3\2\2\2\u087f") + buf.write("\u0880\3\2\2\2\u0880\u0883\3\2\2\2\u0881\u087f\3\2\2\2") + buf.write("\u0882\u087a\3\2\2\2\u0882\u0883\3\2\2\2\u0883\u0884\3") + buf.write("\2\2\2\u0884\u0885\7\5\2\2\u0885\u0886\5\u00a6T\2\u0886") + buf.write("\u00a5\3\2\2\2\u0887\u0889\7\30\2\2\u0888\u0887\3\2\2") + buf.write("\2\u0888\u0889\3\2\2\2\u0889\u088a\3\2\2\2\u088a\u088c") + buf.write("\5\u0106\u0084\2\u088b\u088d\5\u0094K\2\u088c\u088b\3") + buf.write("\2\2\2\u088c\u088d\3\2\2\2\u088d\u088f\3\2\2\2\u088e\u0888") + buf.write("\3\2\2\2\u088e\u088f\3\2\2\2\u088f\u00a7\3\2\2\2\u0890") + buf.write("\u0891\7\u00cc\2\2\u0891\u0892\7d\2\2\u0892\u0893\7\u00d3") + buf.write("\2\2\u0893\u0897\7\u011d\2\2\u0894\u0895\7\u0108\2\2\u0895") + buf.write("\u0896\7\u00d4\2\2\u0896\u0898\58\35\2\u0897\u0894\3\2") + buf.write("\2\2\u0897\u0898\3\2\2\2\u0898\u08c2\3\2\2\2\u0899\u089a") + buf.write("\7\u00cc\2\2\u089a\u089b\7d\2\2\u089b\u08a5\7F\2\2\u089c") + buf.write("\u089d\7]\2\2\u089d\u089e\7\u00ea\2\2\u089e\u089f\7 \2") + buf.write("\2\u089f\u08a3\7\u011d\2\2\u08a0\u08a1\7R\2\2\u08a1\u08a2") + buf.write("\7 \2\2\u08a2\u08a4\7\u011d\2\2\u08a3\u08a0\3\2\2\2\u08a3") + buf.write("\u08a4\3\2\2\2\u08a4\u08a6\3\2\2\2\u08a5\u089c\3\2\2\2") + buf.write("\u08a5\u08a6\3\2\2\2\u08a6\u08ac\3\2\2\2\u08a7\u08a8\7") + buf.write(",\2\2\u08a8\u08a9\7~\2\2\u08a9\u08aa\7\u00ea\2\2\u08aa") + buf.write("\u08ab\7 \2\2\u08ab\u08ad\7\u011d\2\2\u08ac\u08a7\3\2") + buf.write("\2\2\u08ac\u08ad\3\2\2\2\u08ad\u08b3\3\2\2\2\u08ae\u08af") + buf.write("\7\u0091\2\2\u08af\u08b0\7\u0080\2\2\u08b0\u08b1\7\u00ea") + buf.write("\2\2\u08b1\u08b2\7 \2\2\u08b2\u08b4\7\u011d\2\2\u08b3") + buf.write("\u08ae\3\2\2\2\u08b3\u08b4\3\2\2\2\u08b4\u08b9\3\2\2\2") + buf.write("\u08b5\u08b6\7\u0088\2\2\u08b6\u08b7\7\u00ea\2\2\u08b7") + buf.write("\u08b8\7 \2\2\u08b8\u08ba\7\u011d\2\2\u08b9\u08b5\3\2") + buf.write("\2\2\u08b9\u08ba\3\2\2\2\u08ba\u08bf\3\2\2\2\u08bb\u08bc") + buf.write("\7\u009c\2\2\u08bc\u08bd\7D\2\2\u08bd\u08be\7\30\2\2\u08be") + buf.write("\u08c0\7\u011d\2\2\u08bf\u08bb\3\2\2\2\u08bf\u08c0\3\2") + buf.write("\2\2\u08c0\u08c2\3\2\2\2\u08c1\u0890\3\2\2\2\u08c1\u0899") + buf.write("\3\2\2\2\u08c2\u00a9\3\2\2\2\u08c3\u08c8\5\u00acW\2\u08c4") + buf.write("\u08c5\7\6\2\2\u08c5\u08c7\5\u00acW\2\u08c6\u08c4\3\2") + buf.write("\2\2\u08c7\u08ca\3\2\2\2\u08c8\u08c6\3\2\2\2\u08c8\u08c9") + buf.write("\3\2\2\2\u08c9\u00ab\3\2\2\2\u08ca\u08c8\3\2\2\2\u08cb") + buf.write("\u08d0\5\u0100\u0081\2\u08cc\u08cd\7\7\2\2\u08cd\u08cf") + buf.write("\5\u0100\u0081\2\u08ce\u08cc\3\2\2\2\u08cf\u08d2\3\2\2") + buf.write("\2\u08d0\u08ce\3\2\2\2\u08d0\u08d1\3\2\2\2\u08d1\u00ad") + buf.write("\3\2\2\2\u08d2\u08d0\3\2\2\2\u08d3\u08d4\5\u0100\u0081") + buf.write("\2\u08d4\u08d5\7\7\2\2\u08d5\u08d7\3\2\2\2\u08d6\u08d3") + buf.write("\3\2\2\2\u08d6\u08d7\3\2\2\2\u08d7\u08d8\3\2\2\2\u08d8") + buf.write("\u08d9\5\u0100\u0081\2\u08d9\u00af\3\2\2\2\u08da\u08db") + buf.write("\5\u0100\u0081\2\u08db\u08dc\7\7\2\2\u08dc\u08de\3\2\2") + buf.write("\2\u08dd\u08da\3\2\2\2\u08dd\u08de\3\2\2\2\u08de\u08df") + buf.write("\3\2\2\2\u08df\u08e0\5\u0100\u0081\2\u08e0\u00b1\3\2\2") + buf.write("\2\u08e1\u08e9\5\u00bc_\2\u08e2\u08e4\7\30\2\2\u08e3\u08e2") + buf.write("\3\2\2\2\u08e3\u08e4\3\2\2\2\u08e4\u08e7\3\2\2\2\u08e5") + buf.write("\u08e8\5\u0100\u0081\2\u08e6\u08e8\5\u0094K\2\u08e7\u08e5") + buf.write("\3\2\2\2\u08e7\u08e6\3\2\2\2\u08e8\u08ea\3\2\2\2\u08e9") + buf.write("\u08e3\3\2\2\2\u08e9\u08ea\3\2\2\2\u08ea\u00b3\3\2\2\2") + buf.write("\u08eb\u08f0\5\u00b2Z\2\u08ec\u08ed\7\6\2\2\u08ed\u08ef") + buf.write("\5\u00b2Z\2\u08ee\u08ec\3\2\2\2\u08ef\u08f2\3\2\2\2\u08f0") + buf.write("\u08ee\3\2\2\2\u08f0\u08f1\3\2\2\2\u08f1\u00b5\3\2\2\2") + buf.write("\u08f2\u08f0\3\2\2\2\u08f3\u08f4\7\4\2\2\u08f4\u08f9\5") + buf.write("\u00b8]\2\u08f5\u08f6\7\6\2\2\u08f6\u08f8\5\u00b8]\2\u08f7") + buf.write("\u08f5\3\2\2\2\u08f8\u08fb\3\2\2\2\u08f9\u08f7\3\2\2\2") + buf.write("\u08f9\u08fa\3\2\2\2\u08fa\u08fc\3\2\2\2\u08fb\u08f9\3") + buf.write("\2\2\2\u08fc\u08fd\7\5\2\2\u08fd\u00b7\3\2\2\2\u08fe\u090c") + buf.write("\5\u00fe\u0080\2\u08ff\u0900\5\u0104\u0083\2\u0900\u0901") + buf.write("\7\4\2\2\u0901\u0906\5\u00ba^\2\u0902\u0903\7\6\2\2\u0903") + buf.write("\u0905\5\u00ba^\2\u0904\u0902\3\2\2\2\u0905\u0908\3\2") + buf.write("\2\2\u0906\u0904\3\2\2\2\u0906\u0907\3\2\2\2\u0907\u0909") + buf.write("\3\2\2\2\u0908\u0906\3\2\2\2\u0909\u090a\7\5\2\2\u090a") + buf.write("\u090c\3\2\2\2\u090b\u08fe\3\2\2\2\u090b\u08ff\3\2\2\2") + buf.write("\u090c\u00b9\3\2\2\2\u090d\u0910\5\u00fe\u0080\2\u090e") + buf.write("\u0910\5\u00c6d\2\u090f\u090d\3\2\2\2\u090f\u090e\3\2") + buf.write("\2\2\u0910\u00bb\3\2\2\2\u0911\u0912\5\u00be`\2\u0912") + buf.write("\u00bd\3\2\2\2\u0913\u0914\b`\1\2\u0914\u0915\7\u009b") + buf.write("\2\2\u0915\u0920\5\u00be`\7\u0916\u0917\7U\2\2\u0917\u0918") + buf.write("\7\4\2\2\u0918\u0919\5 \21\2\u0919\u091a\7\5\2\2\u091a") + buf.write("\u0920\3\2\2\2\u091b\u091d\5\u00c2b\2\u091c\u091e\5\u00c0") + buf.write("a\2\u091d\u091c\3\2\2\2\u091d\u091e\3\2\2\2\u091e\u0920") + buf.write("\3\2\2\2\u091f\u0913\3\2\2\2\u091f\u0916\3\2\2\2\u091f") + buf.write("\u091b\3\2\2\2\u0920\u0929\3\2\2\2\u0921\u0922\f\4\2\2") + buf.write("\u0922\u0923\7\23\2\2\u0923\u0928\5\u00be`\5\u0924\u0925") + buf.write("\f\3\2\2\u0925\u0926\7\u00a3\2\2\u0926\u0928\5\u00be`") + buf.write("\4\u0927\u0921\3\2\2\2\u0927\u0924\3\2\2\2\u0928\u092b") + buf.write("\3\2\2\2\u0929\u0927\3\2\2\2\u0929\u092a\3\2\2\2\u092a") + buf.write("\u00bf\3\2\2\2\u092b\u0929\3\2\2\2\u092c\u092e\7\u009b") + buf.write("\2\2\u092d\u092c\3\2\2\2\u092d\u092e\3\2\2\2\u092e\u092f") + buf.write("\3\2\2\2\u092f\u0930\7\34\2\2\u0930\u0931\5\u00c2b\2\u0931") + buf.write("\u0932\7\23\2\2\u0932\u0933\5\u00c2b\2\u0933\u097f\3\2") + buf.write("\2\2\u0934\u0936\7\u009b\2\2\u0935\u0934\3\2\2\2\u0935") + buf.write("\u0936\3\2\2\2\u0936\u0937\3\2\2\2\u0937\u0938\7s\2\2") + buf.write("\u0938\u0939\7\4\2\2\u0939\u093e\5\u00bc_\2\u093a\u093b") + buf.write("\7\6\2\2\u093b\u093d\5\u00bc_\2\u093c\u093a\3\2\2\2\u093d") + buf.write("\u0940\3\2\2\2\u093e\u093c\3\2\2\2\u093e\u093f\3\2\2\2") + buf.write("\u093f\u0941\3\2\2\2\u0940\u093e\3\2\2\2\u0941\u0942\7") + buf.write("\5\2\2\u0942\u097f\3\2\2\2\u0943\u0945\7\u009b\2\2\u0944") + buf.write("\u0943\3\2\2\2\u0944\u0945\3\2\2\2\u0945\u0946\3\2\2\2") + buf.write("\u0946\u0947\7s\2\2\u0947\u0948\7\4\2\2\u0948\u0949\5") + buf.write(" \21\2\u0949\u094a\7\5\2\2\u094a\u097f\3\2\2\2\u094b\u094d") + buf.write("\7\u009b\2\2\u094c\u094b\3\2\2\2\u094c\u094d\3\2\2\2\u094d") + buf.write("\u094e\3\2\2\2\u094e\u094f\7\u00c7\2\2\u094f\u097f\5\u00c2") + buf.write("b\2\u0950\u0952\7\u009b\2\2\u0951\u0950\3\2\2\2\u0951") + buf.write("\u0952\3\2\2\2\u0952\u0953\3\2\2\2\u0953\u0954\7\u0086") + buf.write("\2\2\u0954\u0962\t\25\2\2\u0955\u0956\7\4\2\2\u0956\u0963") + buf.write("\7\5\2\2\u0957\u0958\7\4\2\2\u0958\u095d\5\u00bc_\2\u0959") + buf.write("\u095a\7\6\2\2\u095a\u095c\5\u00bc_\2\u095b\u0959\3\2") + buf.write("\2\2\u095c\u095f\3\2\2\2\u095d\u095b\3\2\2\2\u095d\u095e") + buf.write("\3\2\2\2\u095e\u0960\3\2\2\2\u095f\u095d\3\2\2\2\u0960") + buf.write("\u0961\7\5\2\2\u0961\u0963\3\2\2\2\u0962\u0955\3\2\2\2") + buf.write("\u0962\u0957\3\2\2\2\u0963\u097f\3\2\2\2\u0964\u0966\7") + buf.write("\u009b\2\2\u0965\u0964\3\2\2\2\u0965\u0966\3\2\2\2\u0966") + buf.write("\u0967\3\2\2\2\u0967\u0968\7\u0086\2\2\u0968\u096b\5\u00c2") + buf.write("b\2\u0969\u096a\7Q\2\2\u096a\u096c\7\u011d\2\2\u096b\u0969") + buf.write("\3\2\2\2\u096b\u096c\3\2\2\2\u096c\u097f\3\2\2\2\u096d") + buf.write("\u096f\7}\2\2\u096e\u0970\7\u009b\2\2\u096f\u096e\3\2") + buf.write("\2\2\u096f\u0970\3\2\2\2\u0970\u0971\3\2\2\2\u0971\u097f") + buf.write("\7\u009c\2\2\u0972\u0974\7}\2\2\u0973\u0975\7\u009b\2") + buf.write("\2\u0974\u0973\3\2\2\2\u0974\u0975\3\2\2\2\u0975\u0976") + buf.write("\3\2\2\2\u0976\u097f\t\26\2\2\u0977\u0979\7}\2\2\u0978") + buf.write("\u097a\7\u009b\2\2\u0979\u0978\3\2\2\2\u0979\u097a\3\2") + buf.write("\2\2\u097a\u097b\3\2\2\2\u097b\u097c\7L\2\2\u097c\u097d") + buf.write("\7f\2\2\u097d\u097f\5\u00c2b\2\u097e\u092d\3\2\2\2\u097e") + buf.write("\u0935\3\2\2\2\u097e\u0944\3\2\2\2\u097e\u094c\3\2\2\2") + buf.write("\u097e\u0951\3\2\2\2\u097e\u0965\3\2\2\2\u097e\u096d\3") + buf.write("\2\2\2\u097e\u0972\3\2\2\2\u097e\u0977\3\2\2\2\u097f\u00c1") + buf.write("\3\2\2\2\u0980\u0981\bb\1\2\u0981\u0985\5\u00c4c\2\u0982") + buf.write("\u0983\t\27\2\2\u0983\u0985\5\u00c2b\t\u0984\u0980\3\2") + buf.write("\2\2\u0984\u0982\3\2\2\2\u0985\u099b\3\2\2\2\u0986\u0987") + buf.write("\f\b\2\2\u0987\u0988\t\30\2\2\u0988\u099a\5\u00c2b\t\u0989") + buf.write("\u098a\f\7\2\2\u098a\u098b\t\31\2\2\u098b\u099a\5\u00c2") + buf.write("b\b\u098c\u098d\f\6\2\2\u098d\u098e\7\u0119\2\2\u098e") + buf.write("\u099a\5\u00c2b\7\u098f\u0990\f\5\2\2\u0990\u0991\7\u011c") + buf.write("\2\2\u0991\u099a\5\u00c2b\6\u0992\u0993\f\4\2\2\u0993") + buf.write("\u0994\7\u011a\2\2\u0994\u099a\5\u00c2b\5\u0995\u0996") + buf.write("\f\3\2\2\u0996\u0997\5\u00c8e\2\u0997\u0998\5\u00c2b\4") + buf.write("\u0998\u099a\3\2\2\2\u0999\u0986\3\2\2\2\u0999\u0989\3") + buf.write("\2\2\2\u0999\u098c\3\2\2\2\u0999\u098f\3\2\2\2\u0999\u0992") + buf.write("\3\2\2\2\u0999\u0995\3\2\2\2\u099a\u099d\3\2\2\2\u099b") + buf.write("\u0999\3\2\2\2\u099b\u099c\3\2\2\2\u099c\u00c3\3\2\2\2") + buf.write("\u099d\u099b\3\2\2\2\u099e\u099f\bc\1\2\u099f\u0a57\t") + buf.write("\32\2\2\u09a0\u09a2\7#\2\2\u09a1\u09a3\5\u00eex\2\u09a2") + buf.write("\u09a1\3\2\2\2\u09a3\u09a4\3\2\2\2\u09a4\u09a2\3\2\2\2") + buf.write("\u09a4\u09a5\3\2\2\2\u09a5\u09a8\3\2\2\2\u09a6\u09a7\7") + buf.write("O\2\2\u09a7\u09a9\5\u00bc_\2\u09a8\u09a6\3\2\2\2\u09a8") + buf.write("\u09a9\3\2\2\2\u09a9\u09aa\3\2\2\2\u09aa\u09ab\7P\2\2") + buf.write("\u09ab\u0a57\3\2\2\2\u09ac\u09ad\7#\2\2\u09ad\u09af\5") + buf.write("\u00bc_\2\u09ae\u09b0\5\u00eex\2\u09af\u09ae\3\2\2\2\u09b0") + buf.write("\u09b1\3\2\2\2\u09b1\u09af\3\2\2\2\u09b1\u09b2\3\2\2\2") + buf.write("\u09b2\u09b5\3\2\2\2\u09b3\u09b4\7O\2\2\u09b4\u09b6\5") + buf.write("\u00bc_\2\u09b5\u09b3\3\2\2\2\u09b5\u09b6\3\2\2\2\u09b6") + buf.write("\u09b7\3\2\2\2\u09b7\u09b8\7P\2\2\u09b8\u0a57\3\2\2\2") + buf.write("\u09b9\u09ba\7$\2\2\u09ba\u09bb\7\4\2\2\u09bb\u09bc\5") + buf.write("\u00bc_\2\u09bc\u09bd\7\30\2\2\u09bd\u09be\5\u00e0q\2") + buf.write("\u09be\u09bf\7\5\2\2\u09bf\u0a57\3\2\2\2\u09c0\u09c1\7") + buf.write("\u00e2\2\2\u09c1\u09ca\7\4\2\2\u09c2\u09c7\5\u00b2Z\2") + buf.write("\u09c3\u09c4\7\6\2\2\u09c4\u09c6\5\u00b2Z\2\u09c5\u09c3") + buf.write("\3\2\2\2\u09c6\u09c9\3\2\2\2\u09c7\u09c5\3\2\2\2\u09c7") + buf.write("\u09c8\3\2\2\2\u09c8\u09cb\3\2\2\2\u09c9\u09c7\3\2\2\2") + buf.write("\u09ca\u09c2\3\2\2\2\u09ca\u09cb\3\2\2\2\u09cb\u09cc\3") + buf.write("\2\2\2\u09cc\u0a57\7\5\2\2\u09cd\u09ce\7`\2\2\u09ce\u09cf") + buf.write("\7\4\2\2\u09cf\u09d2\5\u00bc_\2\u09d0\u09d1\7q\2\2\u09d1") + buf.write("\u09d3\7\u009d\2\2\u09d2\u09d0\3\2\2\2\u09d2\u09d3\3\2") + buf.write("\2\2\u09d3\u09d4\3\2\2\2\u09d4\u09d5\7\5\2\2\u09d5\u0a57") + buf.write("\3\2\2\2\u09d6\u09d7\7\u0081\2\2\u09d7\u09d8\7\4\2\2\u09d8") + buf.write("\u09db\5\u00bc_\2\u09d9\u09da\7q\2\2\u09da\u09dc\7\u009d") + buf.write("\2\2\u09db\u09d9\3\2\2\2\u09db\u09dc\3\2\2\2\u09dc\u09dd") + buf.write("\3\2\2\2\u09dd\u09de\7\5\2\2\u09de\u0a57\3\2\2\2\u09df") + buf.write("\u09e0\7\u00b2\2\2\u09e0\u09e1\7\4\2\2\u09e1\u09e2\5\u00c2") + buf.write("b\2\u09e2\u09e3\7s\2\2\u09e3\u09e4\5\u00c2b\2\u09e4\u09e5") + buf.write("\7\5\2\2\u09e5\u0a57\3\2\2\2\u09e6\u0a57\5\u00c6d\2\u09e7") + buf.write("\u0a57\7\u0114\2\2\u09e8\u09e9\5\u00fe\u0080\2\u09e9\u09ea") + buf.write("\7\7\2\2\u09ea\u09eb\7\u0114\2\2\u09eb\u0a57\3\2\2\2\u09ec") + buf.write("\u09ed\7\4\2\2\u09ed\u09f0\5\u00b2Z\2\u09ee\u09ef\7\6") + buf.write("\2\2\u09ef\u09f1\5\u00b2Z\2\u09f0\u09ee\3\2\2\2\u09f1") + buf.write("\u09f2\3\2\2\2\u09f2\u09f0\3\2\2\2\u09f2\u09f3\3\2\2\2") + buf.write("\u09f3\u09f4\3\2\2\2\u09f4\u09f5\7\5\2\2\u09f5\u0a57\3") + buf.write("\2\2\2\u09f6\u09f7\7\4\2\2\u09f7\u09f8\5 \21\2\u09f8\u09f9") + buf.write("\7\5\2\2\u09f9\u0a57\3\2\2\2\u09fa\u09fb\5\u00fc\177\2") + buf.write("\u09fb\u0a07\7\4\2\2\u09fc\u09fe\5\u0086D\2\u09fd\u09fc") + buf.write("\3\2\2\2\u09fd\u09fe\3\2\2\2\u09fe\u09ff\3\2\2\2\u09ff") + buf.write("\u0a04\5\u00bc_\2\u0a00\u0a01\7\6\2\2\u0a01\u0a03\5\u00bc") + buf.write("_\2\u0a02\u0a00\3\2\2\2\u0a03\u0a06\3\2\2\2\u0a04\u0a02") + buf.write("\3\2\2\2\u0a04\u0a05\3\2\2\2\u0a05\u0a08\3\2\2\2\u0a06") + buf.write("\u0a04\3\2\2\2\u0a07\u09fd\3\2\2\2\u0a07\u0a08\3\2\2\2") + buf.write("\u0a08\u0a09\3\2\2\2\u0a09\u0a10\7\5\2\2\u0a0a\u0a0b\7") + buf.write("^\2\2\u0a0b\u0a0c\7\4\2\2\u0a0c\u0a0d\7\u0106\2\2\u0a0d") + buf.write("\u0a0e\5\u00be`\2\u0a0e\u0a0f\7\5\2\2\u0a0f\u0a11\3\2") + buf.write("\2\2\u0a10\u0a0a\3\2\2\2\u0a10\u0a11\3\2\2\2\u0a11\u0a14") + buf.write("\3\2\2\2\u0a12\u0a13\7\u00a8\2\2\u0a13\u0a15\5\u00f4{") + buf.write("\2\u0a14\u0a12\3\2\2\2\u0a14\u0a15\3\2\2\2\u0a15\u0a57") + buf.write("\3\2\2\2\u0a16\u0a17\5\u0104\u0083\2\u0a17\u0a18\7\n\2") + buf.write("\2\u0a18\u0a19\5\u00bc_\2\u0a19\u0a57\3\2\2\2\u0a1a\u0a1b") + buf.write("\7\4\2\2\u0a1b\u0a1e\5\u0104\u0083\2\u0a1c\u0a1d\7\6\2") + buf.write("\2\u0a1d\u0a1f\5\u0104\u0083\2\u0a1e\u0a1c\3\2\2\2\u0a1f") + buf.write("\u0a20\3\2\2\2\u0a20\u0a1e\3\2\2\2\u0a20\u0a21\3\2\2\2") + buf.write("\u0a21\u0a22\3\2\2\2\u0a22\u0a23\7\5\2\2\u0a23\u0a24\7") + buf.write("\n\2\2\u0a24\u0a25\5\u00bc_\2\u0a25\u0a57\3\2\2\2\u0a26") + buf.write("\u0a57\5\u0104\u0083\2\u0a27\u0a28\7\4\2\2\u0a28\u0a29") + buf.write("\5\u00bc_\2\u0a29\u0a2a\7\5\2\2\u0a2a\u0a57\3\2\2\2\u0a2b") + buf.write("\u0a2c\7Z\2\2\u0a2c\u0a2d\7\4\2\2\u0a2d\u0a2e\5\u0104") + buf.write("\u0083\2\u0a2e\u0a2f\7f\2\2\u0a2f\u0a30\5\u00c2b\2\u0a30") + buf.write("\u0a31\7\5\2\2\u0a31\u0a57\3\2\2\2\u0a32\u0a33\t\33\2") + buf.write("\2\u0a33\u0a34\7\4\2\2\u0a34\u0a35\5\u00c2b\2\u0a35\u0a36") + buf.write("\t\34\2\2\u0a36\u0a39\5\u00c2b\2\u0a37\u0a38\t\35\2\2") + buf.write("\u0a38\u0a3a\5\u00c2b\2\u0a39\u0a37\3\2\2\2\u0a39\u0a3a") + buf.write("\3\2\2\2\u0a3a\u0a3b\3\2\2\2\u0a3b\u0a3c\7\5\2\2\u0a3c") + buf.write("\u0a57\3\2\2\2\u0a3d\u0a3e\7\u00f2\2\2\u0a3e\u0a40\7\4") + buf.write("\2\2\u0a3f\u0a41\t\36\2\2\u0a40\u0a3f\3\2\2\2\u0a40\u0a41") + buf.write("\3\2\2\2\u0a41\u0a43\3\2\2\2\u0a42\u0a44\5\u00c2b\2\u0a43") + buf.write("\u0a42\3\2\2\2\u0a43\u0a44\3\2\2\2\u0a44\u0a45\3\2\2\2") + buf.write("\u0a45\u0a46\7f\2\2\u0a46\u0a47\5\u00c2b\2\u0a47\u0a48") + buf.write("\7\5\2\2\u0a48\u0a57\3\2\2\2\u0a49\u0a4a\7\u00aa\2\2\u0a4a") + buf.write("\u0a4b\7\4\2\2\u0a4b\u0a4c\5\u00c2b\2\u0a4c\u0a4d\7\u00b1") + buf.write("\2\2\u0a4d\u0a4e\5\u00c2b\2\u0a4e\u0a4f\7f\2\2\u0a4f\u0a52") + buf.write("\5\u00c2b\2\u0a50\u0a51\7b\2\2\u0a51\u0a53\5\u00c2b\2") + buf.write("\u0a52\u0a50\3\2\2\2\u0a52\u0a53\3\2\2\2\u0a53\u0a54\3") + buf.write("\2\2\2\u0a54\u0a55\7\5\2\2\u0a55\u0a57\3\2\2\2\u0a56\u099e") + buf.write("\3\2\2\2\u0a56\u09a0\3\2\2\2\u0a56\u09ac\3\2\2\2\u0a56") + buf.write("\u09b9\3\2\2\2\u0a56\u09c0\3\2\2\2\u0a56\u09cd\3\2\2\2") + buf.write("\u0a56\u09d6\3\2\2\2\u0a56\u09df\3\2\2\2\u0a56\u09e6\3") + buf.write("\2\2\2\u0a56\u09e7\3\2\2\2\u0a56\u09e8\3\2\2\2\u0a56\u09ec") + buf.write("\3\2\2\2\u0a56\u09f6\3\2\2\2\u0a56\u09fa\3\2\2\2\u0a56") + buf.write("\u0a16\3\2\2\2\u0a56\u0a1a\3\2\2\2\u0a56\u0a26\3\2\2\2") + buf.write("\u0a56\u0a27\3\2\2\2\u0a56\u0a2b\3\2\2\2\u0a56\u0a32\3") + buf.write("\2\2\2\u0a56\u0a3d\3\2\2\2\u0a56\u0a49\3\2\2\2\u0a57\u0a62") + buf.write("\3\2\2\2\u0a58\u0a59\f\n\2\2\u0a59\u0a5a\7\13\2\2\u0a5a") + buf.write("\u0a5b\5\u00c2b\2\u0a5b\u0a5c\7\f\2\2\u0a5c\u0a61\3\2") + buf.write("\2\2\u0a5d\u0a5e\f\b\2\2\u0a5e\u0a5f\7\7\2\2\u0a5f\u0a61") + buf.write("\5\u0104\u0083\2\u0a60\u0a58\3\2\2\2\u0a60\u0a5d\3\2\2") + buf.write("\2\u0a61\u0a64\3\2\2\2\u0a62\u0a60\3\2\2\2\u0a62\u0a63") + buf.write("\3\2\2\2\u0a63\u00c5\3\2\2\2\u0a64\u0a62\3\2\2\2\u0a65") + buf.write("\u0a72\7\u009c\2\2\u0a66\u0a72\5\u00d0i\2\u0a67\u0a68") + buf.write("\5\u0104\u0083\2\u0a68\u0a69\7\u011d\2\2\u0a69\u0a72\3") + buf.write("\2\2\2\u0a6a\u0a72\5\u010a\u0086\2\u0a6b\u0a72\5\u00ce") + buf.write("h\2\u0a6c\u0a6e\7\u011d\2\2\u0a6d\u0a6c\3\2\2\2\u0a6e") + buf.write("\u0a6f\3\2\2\2\u0a6f\u0a6d\3\2\2\2\u0a6f\u0a70\3\2\2\2") + buf.write("\u0a70\u0a72\3\2\2\2\u0a71\u0a65\3\2\2\2\u0a71\u0a66\3") + buf.write("\2\2\2\u0a71\u0a67\3\2\2\2\u0a71\u0a6a\3\2\2\2\u0a71\u0a6b") + buf.write("\3\2\2\2\u0a71\u0a6d\3\2\2\2\u0a72\u00c7\3\2\2\2\u0a73") + buf.write("\u0a74\t\37\2\2\u0a74\u00c9\3\2\2\2\u0a75\u0a76\t \2\2") + buf.write("\u0a76\u00cb\3\2\2\2\u0a77\u0a78\t!\2\2\u0a78\u00cd\3") + buf.write("\2\2\2\u0a79\u0a7a\t\"\2\2\u0a7a\u00cf\3\2\2\2\u0a7b\u0a7e") + buf.write("\7{\2\2\u0a7c\u0a7f\5\u00d2j\2\u0a7d\u0a7f\5\u00d6l\2") + buf.write("\u0a7e\u0a7c\3\2\2\2\u0a7e\u0a7d\3\2\2\2\u0a7e\u0a7f\3") + buf.write("\2\2\2\u0a7f\u00d1\3\2\2\2\u0a80\u0a82\5\u00d4k\2\u0a81") + buf.write("\u0a83\5\u00d8m\2\u0a82\u0a81\3\2\2\2\u0a82\u0a83\3\2") + buf.write("\2\2\u0a83\u00d3\3\2\2\2\u0a84\u0a85\5\u00dan\2\u0a85") + buf.write("\u0a86\5\u00dco\2\u0a86\u0a88\3\2\2\2\u0a87\u0a84\3\2") + buf.write("\2\2\u0a88\u0a89\3\2\2\2\u0a89\u0a87\3\2\2\2\u0a89\u0a8a") + buf.write("\3\2\2\2\u0a8a\u00d5\3\2\2\2\u0a8b\u0a8e\5\u00d8m\2\u0a8c") + buf.write("\u0a8f\5\u00d4k\2\u0a8d\u0a8f\5\u00d8m\2\u0a8e\u0a8c\3") + buf.write("\2\2\2\u0a8e\u0a8d\3\2\2\2\u0a8e\u0a8f\3\2\2\2\u0a8f\u00d7") + buf.write("\3\2\2\2\u0a90\u0a91\5\u00dan\2\u0a91\u0a92\5\u00dco\2") + buf.write("\u0a92\u0a93\7\u00ec\2\2\u0a93\u0a94\5\u00dco\2\u0a94") + buf.write("\u00d9\3\2\2\2\u0a95\u0a97\t#\2\2\u0a96\u0a95\3\2\2\2") + buf.write("\u0a96\u0a97\3\2\2\2\u0a97\u0a98\3\2\2\2\u0a98\u0a9b\t") + buf.write("\24\2\2\u0a99\u0a9b\7\u011d\2\2\u0a9a\u0a96\3\2\2\2\u0a9a") + buf.write("\u0a99\3\2\2\2\u0a9b\u00db\3\2\2\2\u0a9c\u0aa4\7B\2\2") + buf.write("\u0a9d\u0aa4\7o\2\2\u0a9e\u0aa4\7\u0094\2\2\u0a9f\u0aa4") + buf.write("\7\u0095\2\2\u0aa0\u0aa4\7\u00cf\2\2\u0aa1\u0aa4\7\u0109") + buf.write("\2\2\u0aa2\u0aa4\5\u0104\u0083\2\u0aa3\u0a9c\3\2\2\2\u0aa3") + buf.write("\u0a9d\3\2\2\2\u0aa3\u0a9e\3\2\2\2\u0aa3\u0a9f\3\2\2\2") + buf.write("\u0aa3\u0aa0\3\2\2\2\u0aa3\u0aa1\3\2\2\2\u0aa3\u0aa2\3") + buf.write("\2\2\2\u0aa4\u00dd\3\2\2\2\u0aa5\u0aa9\7`\2\2\u0aa6\u0aa7") + buf.write("\7\17\2\2\u0aa7\u0aa9\5\u0100\u0081\2\u0aa8\u0aa5\3\2") + buf.write("\2\2\u0aa8\u0aa6\3\2\2\2\u0aa9\u00df\3\2\2\2\u0aaa\u0aab") + buf.write("\7\27\2\2\u0aab\u0aac\7\u010e\2\2\u0aac\u0aad\5\u00e0") + buf.write("q\2\u0aad\u0aae\7\u0110\2\2\u0aae\u0acd\3\2\2\2\u0aaf") + buf.write("\u0ab0\7\u0091\2\2\u0ab0\u0ab1\7\u010e\2\2\u0ab1\u0ab2") + buf.write("\5\u00e0q\2\u0ab2\u0ab3\7\6\2\2\u0ab3\u0ab4\5\u00e0q\2") + buf.write("\u0ab4\u0ab5\7\u0110\2\2\u0ab5\u0acd\3\2\2\2\u0ab6\u0abd") + buf.write("\7\u00e2\2\2\u0ab7\u0ab9\7\u010e\2\2\u0ab8\u0aba\5\u00ea") + buf.write("v\2\u0ab9\u0ab8\3\2\2\2\u0ab9\u0aba\3\2\2\2\u0aba\u0abb") + buf.write("\3\2\2\2\u0abb\u0abe\7\u0110\2\2\u0abc\u0abe\7\u010c\2") + buf.write("\2\u0abd\u0ab7\3\2\2\2\u0abd\u0abc\3\2\2\2\u0abe\u0acd") + buf.write("\3\2\2\2\u0abf\u0aca\5\u0104\u0083\2\u0ac0\u0ac1\7\4\2") + buf.write("\2\u0ac1\u0ac6\7\u0121\2\2\u0ac2\u0ac3\7\6\2\2\u0ac3\u0ac5") + buf.write("\7\u0121\2\2\u0ac4\u0ac2\3\2\2\2\u0ac5\u0ac8\3\2\2\2\u0ac6") + buf.write("\u0ac4\3\2\2\2\u0ac6\u0ac7\3\2\2\2\u0ac7\u0ac9\3\2\2\2") + buf.write("\u0ac8\u0ac6\3\2\2\2\u0ac9\u0acb\7\5\2\2\u0aca\u0ac0\3") + buf.write("\2\2\2\u0aca\u0acb\3\2\2\2\u0acb\u0acd\3\2\2\2\u0acc\u0aaa") + buf.write("\3\2\2\2\u0acc\u0aaf\3\2\2\2\u0acc\u0ab6\3\2\2\2\u0acc") + buf.write("\u0abf\3\2\2\2\u0acd\u00e1\3\2\2\2\u0ace\u0ad3\5\u00e4") + buf.write("s\2\u0acf\u0ad0\7\6\2\2\u0ad0\u0ad2\5\u00e4s\2\u0ad1\u0acf") + buf.write("\3\2\2\2\u0ad2\u0ad5\3\2\2\2\u0ad3\u0ad1\3\2\2\2\u0ad3") + buf.write("\u0ad4\3\2\2\2\u0ad4\u00e3\3\2\2\2\u0ad5\u0ad3\3\2\2\2") + buf.write("\u0ad6\u0ad7\5\u00acW\2\u0ad7\u0ada\5\u00e0q\2\u0ad8\u0ad9") + buf.write("\7\u009b\2\2\u0ad9\u0adb\7\u009c\2\2\u0ada\u0ad8\3\2\2") + buf.write("\2\u0ada\u0adb\3\2\2\2\u0adb\u0add\3\2\2\2\u0adc\u0ade") + buf.write("\5\36\20\2\u0add\u0adc\3\2\2\2\u0add\u0ade\3\2\2\2\u0ade") + buf.write("\u0ae0\3\2\2\2\u0adf\u0ae1\5\u00dep\2\u0ae0\u0adf\3\2") + buf.write("\2\2\u0ae0\u0ae1\3\2\2\2\u0ae1\u00e5\3\2\2\2\u0ae2\u0ae7") + buf.write("\5\u00e8u\2\u0ae3\u0ae4\7\6\2\2\u0ae4\u0ae6\5\u00e8u\2") + buf.write("\u0ae5\u0ae3\3\2\2\2\u0ae6\u0ae9\3\2\2\2\u0ae7\u0ae5\3") + buf.write("\2\2\2\u0ae7\u0ae8\3\2\2\2\u0ae8\u00e7\3\2\2\2\u0ae9\u0ae7") + buf.write("\3\2\2\2\u0aea\u0aeb\5\u0100\u0081\2\u0aeb\u0aee\5\u00e0") + buf.write("q\2\u0aec\u0aed\7\u009b\2\2\u0aed\u0aef\7\u009c\2\2\u0aee") + buf.write("\u0aec\3\2\2\2\u0aee\u0aef\3\2\2\2\u0aef\u0af1\3\2\2\2") + buf.write("\u0af0\u0af2\5\36\20\2\u0af1\u0af0\3\2\2\2\u0af1\u0af2") + buf.write("\3\2\2\2\u0af2\u00e9\3\2\2\2\u0af3\u0af8\5\u00ecw\2\u0af4") + buf.write("\u0af5\7\6\2\2\u0af5\u0af7\5\u00ecw\2\u0af6\u0af4\3\2") + buf.write("\2\2\u0af7\u0afa\3\2\2\2\u0af8\u0af6\3\2\2\2\u0af8\u0af9") + buf.write("\3\2\2\2\u0af9\u00eb\3\2\2\2\u0afa\u0af8\3\2\2\2\u0afb") + buf.write("\u0afc\5\u0104\u0083\2\u0afc\u0afd\7\r\2\2\u0afd\u0b00") + buf.write("\5\u00e0q\2\u0afe\u0aff\7\u009b\2\2\u0aff\u0b01\7\u009c") + buf.write("\2\2\u0b00\u0afe\3\2\2\2\u0b00\u0b01\3\2\2\2\u0b01\u0b03") + buf.write("\3\2\2\2\u0b02\u0b04\5\36\20\2\u0b03\u0b02\3\2\2\2\u0b03") + buf.write("\u0b04\3\2\2\2\u0b04\u00ed\3\2\2\2\u0b05\u0b06\7\u0105") + buf.write("\2\2\u0b06\u0b07\5\u00bc_\2\u0b07\u0b08\7\u00eb\2\2\u0b08") + buf.write("\u0b09\5\u00bc_\2\u0b09\u00ef\3\2\2\2\u0b0a\u0b0b\7\u0107") + buf.write("\2\2\u0b0b\u0b10\5\u00f2z\2\u0b0c\u0b0d\7\6\2\2\u0b0d") + buf.write("\u0b0f\5\u00f2z\2\u0b0e\u0b0c\3\2\2\2\u0b0f\u0b12\3\2") + buf.write("\2\2\u0b10\u0b0e\3\2\2\2\u0b10\u0b11\3\2\2\2\u0b11\u00f1") + buf.write("\3\2\2\2\u0b12\u0b10\3\2\2\2\u0b13\u0b14\5\u0100\u0081") + buf.write("\2\u0b14\u0b15\7\30\2\2\u0b15\u0b16\5\u00f4{\2\u0b16\u00f3") + buf.write("\3\2\2\2\u0b17\u0b46\5\u0100\u0081\2\u0b18\u0b19\7\4\2") + buf.write("\2\u0b19\u0b1a\5\u0100\u0081\2\u0b1a\u0b1b\7\5\2\2\u0b1b") + buf.write("\u0b46\3\2\2\2\u0b1c\u0b3f\7\4\2\2\u0b1d\u0b1e\7(\2\2") + buf.write("\u0b1e\u0b1f\7 \2\2\u0b1f\u0b24\5\u00bc_\2\u0b20\u0b21") + buf.write("\7\6\2\2\u0b21\u0b23\5\u00bc_\2\u0b22\u0b20\3\2\2\2\u0b23") + buf.write("\u0b26\3\2\2\2\u0b24\u0b22\3\2\2\2\u0b24\u0b25\3\2\2\2") + buf.write("\u0b25\u0b40\3\2\2\2\u0b26\u0b24\3\2\2\2\u0b27\u0b28\t") + buf.write("$\2\2\u0b28\u0b29\7 \2\2\u0b29\u0b2e\5\u00bc_\2\u0b2a") + buf.write("\u0b2b\7\6\2\2\u0b2b\u0b2d\5\u00bc_\2\u0b2c\u0b2a\3\2") + buf.write("\2\2\u0b2d\u0b30\3\2\2\2\u0b2e\u0b2c\3\2\2\2\u0b2e\u0b2f") + buf.write("\3\2\2\2\u0b2f\u0b32\3\2\2\2\u0b30\u0b2e\3\2\2\2\u0b31") + buf.write("\u0b27\3\2\2\2\u0b31\u0b32\3\2\2\2\u0b32\u0b3d\3\2\2\2") + buf.write("\u0b33\u0b34\t%\2\2\u0b34\u0b35\7 \2\2\u0b35\u0b3a\5V") + buf.write(",\2\u0b36\u0b37\7\6\2\2\u0b37\u0b39\5V,\2\u0b38\u0b36") + buf.write("\3\2\2\2\u0b39\u0b3c\3\2\2\2\u0b3a\u0b38\3\2\2\2\u0b3a") + buf.write("\u0b3b\3\2\2\2\u0b3b\u0b3e\3\2\2\2\u0b3c\u0b3a\3\2\2\2") + buf.write("\u0b3d\u0b33\3\2\2\2\u0b3d\u0b3e\3\2\2\2\u0b3e\u0b40\3") + buf.write("\2\2\2\u0b3f\u0b1d\3\2\2\2\u0b3f\u0b31\3\2\2\2\u0b40\u0b42") + buf.write("\3\2\2\2\u0b41\u0b43\5\u00f6|\2\u0b42\u0b41\3\2\2\2\u0b42") + buf.write("\u0b43\3\2\2\2\u0b43\u0b44\3\2\2\2\u0b44\u0b46\7\5\2\2") + buf.write("\u0b45\u0b17\3\2\2\2\u0b45\u0b18\3\2\2\2\u0b45\u0b1c\3") + buf.write("\2\2\2\u0b46\u00f5\3\2\2\2\u0b47\u0b48\7\u00b9\2\2\u0b48") + buf.write("\u0b58\5\u00f8}\2\u0b49\u0b4a\7\u00cd\2\2\u0b4a\u0b58") + buf.write("\5\u00f8}\2\u0b4b\u0b4c\7\u00b9\2\2\u0b4c\u0b4d\7\34\2") + buf.write("\2\u0b4d\u0b4e\5\u00f8}\2\u0b4e\u0b4f\7\23\2\2\u0b4f\u0b50") + buf.write("\5\u00f8}\2\u0b50\u0b58\3\2\2\2\u0b51\u0b52\7\u00cd\2") + buf.write("\2\u0b52\u0b53\7\34\2\2\u0b53\u0b54\5\u00f8}\2\u0b54\u0b55") + buf.write("\7\23\2\2\u0b55\u0b56\5\u00f8}\2\u0b56\u0b58\3\2\2\2\u0b57") + buf.write("\u0b47\3\2\2\2\u0b57\u0b49\3\2\2\2\u0b57\u0b4b\3\2\2\2") + buf.write("\u0b57\u0b51\3\2\2\2\u0b58\u00f7\3\2\2\2\u0b59\u0b5a\7") + buf.write("\u00f7\2\2\u0b5a\u0b61\t&\2\2\u0b5b\u0b5c\7:\2\2\u0b5c") + buf.write("\u0b61\7\u00cc\2\2\u0b5d\u0b5e\5\u00bc_\2\u0b5e\u0b5f") + buf.write("\t&\2\2\u0b5f\u0b61\3\2\2\2\u0b60\u0b59\3\2\2\2\u0b60") + buf.write("\u0b5b\3\2\2\2\u0b60\u0b5d\3\2\2\2\u0b61\u00f9\3\2\2\2") + buf.write("\u0b62\u0b67\5\u00fe\u0080\2\u0b63\u0b64\7\6\2\2\u0b64") + buf.write("\u0b66\5\u00fe\u0080\2\u0b65\u0b63\3\2\2\2\u0b66\u0b69") + buf.write("\3\2\2\2\u0b67\u0b65\3\2\2\2\u0b67\u0b68\3\2\2\2\u0b68") + buf.write("\u00fb\3\2\2\2\u0b69\u0b67\3\2\2\2\u0b6a\u0b6f\5\u00fe") + buf.write("\u0080\2\u0b6b\u0b6f\7^\2\2\u0b6c\u0b6f\7\u0085\2\2\u0b6d") + buf.write("\u0b6f\7\u00c6\2\2\u0b6e\u0b6a\3\2\2\2\u0b6e\u0b6b\3\2") + buf.write("\2\2\u0b6e\u0b6c\3\2\2\2\u0b6e\u0b6d\3\2\2\2\u0b6f\u00fd") + buf.write("\3\2\2\2\u0b70\u0b75\5\u0104\u0083\2\u0b71\u0b72\7\7\2") + buf.write("\2\u0b72\u0b74\5\u0104\u0083\2\u0b73\u0b71\3\2\2\2\u0b74") + buf.write("\u0b77\3\2\2\2\u0b75\u0b73\3\2\2\2\u0b75\u0b76\3\2\2\2") + buf.write("\u0b76\u00ff\3\2\2\2\u0b77\u0b75\3\2\2\2\u0b78\u0b79\5") + buf.write("\u0104\u0083\2\u0b79\u0b7a\5\u0102\u0082\2\u0b7a\u0101") + buf.write("\3\2\2\2\u0b7b\u0b7c\7\u0113\2\2\u0b7c\u0b7e\5\u0104\u0083") + buf.write("\2\u0b7d\u0b7b\3\2\2\2\u0b7e\u0b7f\3\2\2\2\u0b7f\u0b7d") + buf.write("\3\2\2\2\u0b7f\u0b80\3\2\2\2\u0b80\u0b83\3\2\2\2\u0b81") + buf.write("\u0b83\3\2\2\2\u0b82\u0b7d\3\2\2\2\u0b82\u0b81\3\2\2\2") + buf.write("\u0b83\u0103\3\2\2\2\u0b84\u0b88\5\u0106\u0084\2\u0b85") + buf.write("\u0b86\6\u0083\24\2\u0b86\u0b88\5\u0110\u0089\2\u0b87") + buf.write("\u0b84\3\2\2\2\u0b87\u0b85\3\2\2\2\u0b88\u0105\3\2\2\2") + buf.write("\u0b89\u0b90\7\u0126\2\2\u0b8a\u0b90\5\u0108\u0085\2\u0b8b") + buf.write("\u0b8c\6\u0084\25\2\u0b8c\u0b90\5\u010e\u0088\2\u0b8d") + buf.write("\u0b8e\6\u0084\26\2\u0b8e\u0b90\5\u0112\u008a\2\u0b8f") + buf.write("\u0b89\3\2\2\2\u0b8f\u0b8a\3\2\2\2\u0b8f\u0b8b\3\2\2\2") + buf.write("\u0b8f\u0b8d\3\2\2\2\u0b90\u0107\3\2\2\2\u0b91\u0b92\7") + buf.write("\u0127\2\2\u0b92\u0109\3\2\2\2\u0b93\u0b95\6\u0086\27") + buf.write("\2\u0b94\u0b96\7\u0113\2\2\u0b95\u0b94\3\2\2\2\u0b95\u0b96") + buf.write("\3\2\2\2\u0b96\u0b97\3\2\2\2\u0b97\u0bbb\7\u0122\2\2\u0b98") + buf.write("\u0b9a\6\u0086\30\2\u0b99\u0b9b\7\u0113\2\2\u0b9a\u0b99") + buf.write("\3\2\2\2\u0b9a\u0b9b\3\2\2\2\u0b9b\u0b9c\3\2\2\2\u0b9c") + buf.write("\u0bbb\7\u0123\2\2\u0b9d\u0b9f\6\u0086\31\2\u0b9e\u0ba0") + buf.write("\7\u0113\2\2\u0b9f\u0b9e\3\2\2\2\u0b9f\u0ba0\3\2\2\2\u0ba0") + buf.write("\u0ba1\3\2\2\2\u0ba1\u0bbb\t\'\2\2\u0ba2\u0ba4\7\u0113") + buf.write("\2\2\u0ba3\u0ba2\3\2\2\2\u0ba3\u0ba4\3\2\2\2\u0ba4\u0ba5") + buf.write("\3\2\2\2\u0ba5\u0bbb\7\u0121\2\2\u0ba6\u0ba8\7\u0113\2") + buf.write("\2\u0ba7\u0ba6\3\2\2\2\u0ba7\u0ba8\3\2\2\2\u0ba8\u0ba9") + buf.write("\3\2\2\2\u0ba9\u0bbb\7\u011e\2\2\u0baa\u0bac\7\u0113\2") + buf.write("\2\u0bab\u0baa\3\2\2\2\u0bab\u0bac\3\2\2\2\u0bac\u0bad") + buf.write("\3\2\2\2\u0bad\u0bbb\7\u011f\2\2\u0bae\u0bb0\7\u0113\2") + buf.write("\2\u0baf\u0bae\3\2\2\2\u0baf\u0bb0\3\2\2\2\u0bb0\u0bb1") + buf.write("\3\2\2\2\u0bb1\u0bbb\7\u0120\2\2\u0bb2\u0bb4\7\u0113\2") + buf.write("\2\u0bb3\u0bb2\3\2\2\2\u0bb3\u0bb4\3\2\2\2\u0bb4\u0bb5") + buf.write("\3\2\2\2\u0bb5\u0bbb\7\u0124\2\2\u0bb6\u0bb8\7\u0113\2") + buf.write("\2\u0bb7\u0bb6\3\2\2\2\u0bb7\u0bb8\3\2\2\2\u0bb8\u0bb9") + buf.write("\3\2\2\2\u0bb9\u0bbb\7\u0125\2\2\u0bba\u0b93\3\2\2\2\u0bba") + buf.write("\u0b98\3\2\2\2\u0bba\u0b9d\3\2\2\2\u0bba\u0ba3\3\2\2\2") + buf.write("\u0bba\u0ba7\3\2\2\2\u0bba\u0bab\3\2\2\2\u0bba\u0baf\3") + buf.write("\2\2\2\u0bba\u0bb3\3\2\2\2\u0bba\u0bb7\3\2\2\2\u0bbb\u010b") + buf.write("\3\2\2\2\u0bbc\u0bbd\7\u00f5\2\2\u0bbd\u0bc4\5\u00e0q") + buf.write("\2\u0bbe\u0bc4\5\36\20\2\u0bbf\u0bc4\5\u00dep\2\u0bc0") + buf.write("\u0bc1\t(\2\2\u0bc1\u0bc2\7\u009b\2\2\u0bc2\u0bc4\7\u009c") + buf.write("\2\2\u0bc3\u0bbc\3\2\2\2\u0bc3\u0bbe\3\2\2\2\u0bc3\u0bbf") + buf.write("\3\2\2\2\u0bc3\u0bc0\3\2\2\2\u0bc4\u010d\3\2\2\2\u0bc5") + buf.write("\u0bc6\t)\2\2\u0bc6\u010f\3\2\2\2\u0bc7\u0bc8\t*\2\2\u0bc8") + buf.write("\u0111\3\2\2\2\u0bc9\u0bca\t+\2\2\u0bca\u0113\3\2\2\2") + buf.write("\u018c\u0118\u0131\u0136\u013e\u0146\u0148\u015c\u0160") + buf.write("\u0166\u0169\u016c\u0174\u0177\u017b\u017e\u0186\u018b") + buf.write("\u018e\u0195\u01a1\u01aa\u01ac\u01b0\u01b3\u01ba\u01c5") + buf.write("\u01c7\u01cf\u01d4\u01d7\u01dd\u01e8\u0228\u0231\u0235") + buf.write("\u023b\u023f\u0244\u024a\u0256\u025e\u0264\u0271\u0276") + buf.write("\u0286\u028d\u0291\u0297\u02a6\u02aa\u02b0\u02b6\u02b9") + buf.write("\u02bc\u02c2\u02c6\u02ce\u02d0\u02d9\u02dc\u02e5\u02ea") + buf.write("\u02f0\u02f7\u02fa\u0300\u030b\u030e\u0312\u0317\u031c") + buf.write("\u0323\u0326\u0329\u0330\u0335\u033e\u0346\u034c\u034f") + buf.write("\u0352\u0358\u035c\u0360\u0364\u0366\u036e\u0376\u037c") + buf.write("\u0382\u0385\u0389\u038c\u0390\u03a9\u03ac\u03b0\u03b6") + buf.write("\u03b9\u03bc\u03c2\u03ca\u03cf\u03d5\u03db\u03e7\u03ea") + buf.write("\u03f1\u03f8\u0400\u0403\u040b\u040f\u0416\u048a\u0492") + buf.write("\u049a\u04a3\u04ad\u04b1\u04b4\u04ba\u04c0\u04cc\u04d8") + buf.write("\u04dd\u04e6\u04ee\u04f5\u04f7\u04fc\u0500\u0505\u050a") + buf.write("\u050f\u0512\u0517\u051b\u0520\u0522\u0526\u052f\u0537") + buf.write("\u0540\u0547\u0550\u0555\u0558\u056b\u056d\u0576\u057d") + buf.write("\u0580\u0587\u058b\u0591\u0599\u05a4\u05af\u05b6\u05bc") + buf.write("\u05c9\u05d0\u05d7\u05e3\u05eb\u05f1\u05f4\u05fd\u0600") + buf.write("\u0609\u060c\u0615\u0618\u0621\u0624\u0627\u062c\u062e") + buf.write("\u063a\u0641\u0648\u064b\u064d\u0659\u065d\u0661\u0667") + buf.write("\u066b\u0673\u0677\u067a\u067d\u0680\u0684\u0688\u068b") + buf.write("\u068f\u0694\u0698\u069b\u069e\u06a1\u06a3\u06af\u06b2") + buf.write("\u06b6\u06c0\u06c4\u06c6\u06c9\u06cd\u06d3\u06d7\u06e2") + buf.write("\u06ec\u06f8\u0707\u070c\u0713\u0723\u0728\u0735\u073a") + buf.write("\u0742\u0748\u074c\u0755\u0764\u0769\u0775\u077a\u0782") + buf.write("\u0785\u0789\u0797\u07a4\u07a9\u07ad\u07b0\u07b5\u07be") + buf.write("\u07c1\u07c6\u07cd\u07d0\u07d8\u07df\u07e6\u07e9\u07ee") + buf.write("\u07f1\u07f6\u07fa\u07fd\u0800\u0806\u080b\u0810\u0822") + buf.write("\u0824\u0827\u0832\u083b\u0842\u084a\u0851\u0855\u085d") + buf.write("\u0865\u086b\u0873\u087f\u0882\u0888\u088c\u088e\u0897") + buf.write("\u08a3\u08a5\u08ac\u08b3\u08b9\u08bf\u08c1\u08c8\u08d0") + buf.write("\u08d6\u08dd\u08e3\u08e7\u08e9\u08f0\u08f9\u0906\u090b") + buf.write("\u090f\u091d\u091f\u0927\u0929\u092d\u0935\u093e\u0944") + buf.write("\u094c\u0951\u095d\u0962\u0965\u096b\u096f\u0974\u0979") + buf.write("\u097e\u0984\u0999\u099b\u09a4\u09a8\u09b1\u09b5\u09c7") + buf.write("\u09ca\u09d2\u09db\u09f2\u09fd\u0a04\u0a07\u0a10\u0a14") + buf.write("\u0a20\u0a39\u0a40\u0a43\u0a52\u0a56\u0a60\u0a62\u0a6f") + buf.write("\u0a71\u0a7e\u0a82\u0a89\u0a8e\u0a96\u0a9a\u0aa3\u0aa8") + buf.write("\u0ab9\u0abd\u0ac6\u0aca\u0acc\u0ad3\u0ada\u0add\u0ae0") + buf.write("\u0ae7\u0aee\u0af1\u0af8\u0b00\u0b03\u0b10\u0b24\u0b2e") + buf.write("\u0b31\u0b3a\u0b3d\u0b3f\u0b42\u0b45\u0b57\u0b60\u0b67") + buf.write("\u0b6e\u0b75\u0b7f\u0b82\u0b87\u0b8f\u0b95\u0b9a\u0b9f") + buf.write("\u0ba3\u0ba7\u0bab\u0baf\u0bb3\u0bb7\u0bba\u0bc3") + return buf.getvalue() + + +class SqlBaseParser ( Parser ): + + grammarFileName = "SqlBase.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "';'", "'('", "')'", "','", "'.'", "'/*+'", + "'*/'", "'->'", "'['", "']'", "':'", "'ADD'", "'AFTER'", + "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANTI'", + "'ANY'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", + "'AUTHORIZATION'", "'BETWEEN'", "'BOTH'", "'BUCKET'", + "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", "'CASE'", + "'CAST'", "'CHANGE'", "'CHECK'", "'CLEAR'", "'CLUSTER'", + "'CLUSTERED'", "'CODEGEN'", "'COLLATE'", "'COLLECTION'", + "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMPACT'", + "'COMPACTIONS'", "'COMPUTE'", "'CONCATENATE'", "'CONSTRAINT'", + "'COST'", "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", + "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", + "'CURRENT_USER'", "'DATA'", "'DATABASE'", "", + "'DAY'", "'DBPROPERTIES'", "'DEFINED'", "'DELETE'", + "'DELIMITED'", "'DESC'", "'DESCRIBE'", "'DFS'", "'DIRECTORIES'", + "'DIRECTORY'", "'DISTINCT'", "'DISTRIBUTE'", "'DROP'", + "'ELSE'", "'END'", "'ESCAPE'", "'ESCAPED'", "'EXCEPT'", + "'EXCHANGE'", "'EXISTS'", "'EXPLAIN'", "'EXPORT'", + "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", "'FALSE'", + "'FETCH'", "'FIELDS'", "'FILTER'", "'FILEFORMAT'", + "'FIRST'", "'FOLLOWING'", "'FOR'", "'FOREIGN'", "'FORMAT'", + "'FORMATTED'", "'FROM'", "'FULL'", "'FUNCTION'", "'FUNCTIONS'", + "'GLOBAL'", "'GRANT'", "'GROUP'", "'GROUPING'", "'HAVING'", + "'HOUR'", "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", "'INDEX'", + "'INDEXES'", "'INNER'", "'INPATH'", "'INPUTFORMAT'", + "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", + "'IS'", "'ITEMS'", "'JOIN'", "'KEYS'", "'LAST'", "'LATERAL'", + "'LAZY'", "'LEADING'", "'LEFT'", "'LIKE'", "'LIMIT'", + "'LINES'", "'LIST'", "'LOAD'", "'LOCAL'", "'LOCATION'", + "'LOCK'", "'LOCKS'", "'LOGICAL'", "'MACRO'", "'MAP'", + "'MATCHED'", "'MERGE'", "'MINUTE'", "'MONTH'", "'MSCK'", + "'NAMESPACE'", "'NAMESPACES'", "'NATURAL'", "'NO'", + "", "'NULL'", "'NULLS'", "'OF'", "'ON'", "'ONLY'", + "'OPTION'", "'OPTIONS'", "'OR'", "'ORDER'", "'OUT'", + "'OUTER'", "'OUTPUTFORMAT'", "'OVER'", "'OVERLAPS'", + "'OVERLAY'", "'OVERWRITE'", "'PARTITION'", "'PARTITIONED'", + "'PARTITIONS'", "'PERCENT'", "'PIVOT'", "'PLACING'", + "'POSITION'", "'PRECEDING'", "'PRIMARY'", "'PRINCIPALS'", + "'PROPERTIES'", "'PURGE'", "'QUERY'", "'RANGE'", "'RECORDREADER'", + "'RECORDWRITER'", "'RECOVER'", "'REDUCE'", "'REFERENCES'", + "'REFRESH'", "'RENAME'", "'REPAIR'", "'REPLACE'", "'RESET'", + "'RESTRICT'", "'REVOKE'", "'RIGHT'", "", "'ROLE'", + "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", + "'SCHEMA'", "'SECOND'", "'SELECT'", "'SEMI'", "'SEPARATED'", + "'SERDE'", "'SERDEPROPERTIES'", "'SESSION_USER'", "'SET'", + "'MINUS'", "'SETS'", "'SHOW'", "'SKEWED'", "'SOME'", + "'SORT'", "'SORTED'", "'START'", "'STATISTICS'", "'STORED'", + "'STRATIFY'", "'STRUCT'", "'SUBSTR'", "'SUBSTRING'", + "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'", + "", "'TERMINATED'", "'THEN'", "'TO'", "'TOUCH'", + "'TRAILING'", "'TRANSACTION'", "'TRANSACTIONS'", "'TRANSFORM'", + "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", "'UNARCHIVE'", + "'UNBOUNDED'", "'UNCACHE'", "'UNION'", "'UNIQUE'", + "'UNKNOWN'", "'UNLOCK'", "'UNSET'", "'UPDATE'", "'USE'", + "'USER'", "'USING'", "'VALUES'", "'VIEW'", "'VIEWS'", + "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'YEAR'", + "", "'<=>'", "'<>'", "'!='", "'<'", "", + "'>'", "", "'+'", "'-'", "'*'", "'/'", "'%'", + "'DIV'", "'~'", "'&'", "'|'", "'||'", "'^'" ] + + symbolicNames = [ "", "", "", "", + "", "", "", "", + "", "", "", "", + "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", + "ANTI", "ANY", "ARCHIVE", "ARRAY", "AS", "ASC", "AT", + "AUTHORIZATION", "BETWEEN", "BOTH", "BUCKET", "BUCKETS", + "BY", "CACHE", "CASCADE", "CASE", "CAST", "CHANGE", + "CHECK", "CLEAR", "CLUSTER", "CLUSTERED", "CODEGEN", + "COLLATE", "COLLECTION", "COLUMN", "COLUMNS", "COMMENT", + "COMMIT", "COMPACT", "COMPACTIONS", "COMPUTE", "CONCATENATE", + "CONSTRAINT", "COST", "CREATE", "CROSS", "CUBE", "CURRENT", + "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DAY", + "DBPROPERTIES", "DEFINED", "DELETE", "DELIMITED", + "DESC", "DESCRIBE", "DFS", "DIRECTORIES", "DIRECTORY", + "DISTINCT", "DISTRIBUTE", "DROP", "ELSE", "END", "ESCAPE", + "ESCAPED", "EXCEPT", "EXCHANGE", "EXISTS", "EXPLAIN", + "EXPORT", "EXTENDED", "EXTERNAL", "EXTRACT", "FALSE", + "FETCH", "FIELDS", "FILTER", "FILEFORMAT", "FIRST", + "FOLLOWING", "FOR", "FOREIGN", "FORMAT", "FORMATTED", + "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GLOBAL", + "GRANT", "GROUP", "GROUPING", "HAVING", "HOUR", "IF", + "IGNORE", "IMPORT", "IN", "INDEX", "INDEXES", "INNER", + "INPATH", "INPUTFORMAT", "INSERT", "INTERSECT", "INTERVAL", + "INTO", "IS", "ITEMS", "JOIN", "KEYS", "LAST", "LATERAL", + "LAZY", "LEADING", "LEFT", "LIKE", "LIMIT", "LINES", + "LIST", "LOAD", "LOCAL", "LOCATION", "LOCK", "LOCKS", + "LOGICAL", "MACRO", "MAP", "MATCHED", "MERGE", "MINUTE", + "MONTH", "MSCK", "NAMESPACE", "NAMESPACES", "NATURAL", + "NO", "NOT", "NULL", "NULLS", "OF", "ON", "ONLY", + "OPTION", "OPTIONS", "OR", "ORDER", "OUT", "OUTER", + "OUTPUTFORMAT", "OVER", "OVERLAPS", "OVERLAY", "OVERWRITE", + "PARTITION", "PARTITIONED", "PARTITIONS", "PERCENTLIT", + "PIVOT", "PLACING", "POSITION", "PRECEDING", "PRIMARY", + "PRINCIPALS", "PROPERTIES", "PURGE", "QUERY", "RANGE", + "RECORDREADER", "RECORDWRITER", "RECOVER", "REDUCE", + "REFERENCES", "REFRESH", "RENAME", "REPAIR", "REPLACE", + "RESET", "RESTRICT", "REVOKE", "RIGHT", "RLIKE", "ROLE", + "ROLES", "ROLLBACK", "ROLLUP", "ROW", "ROWS", "SCHEMA", + "SECOND", "SELECT", "SEMI", "SEPARATED", "SERDE", + "SERDEPROPERTIES", "SESSION_USER", "SET", "SETMINUS", + "SETS", "SHOW", "SKEWED", "SOME", "SORT", "SORTED", + "START", "STATISTICS", "STORED", "STRATIFY", "STRUCT", + "SUBSTR", "SUBSTRING", "TABLE", "TABLES", "TABLESAMPLE", + "TBLPROPERTIES", "TEMPORARY", "TERMINATED", "THEN", + "TO", "TOUCH", "TRAILING", "TRANSACTION", "TRANSACTIONS", + "TRANSFORM", "TRIM", "TRUE", "TRUNCATE", "TYPE", "UNARCHIVE", + "UNBOUNDED", "UNCACHE", "UNION", "UNIQUE", "UNKNOWN", + "UNLOCK", "UNSET", "UPDATE", "USE", "USER", "USING", + "VALUES", "VIEW", "VIEWS", "WHEN", "WHERE", "WINDOW", + "WITH", "YEAR", "EQ", "NSEQ", "NEQ", "NEQJ", "LT", + "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", + "PERCENT", "DIV", "TILDE", "AMPERSAND", "PIPE", "CONCAT_PIPE", + "HAT", "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", + "TINYINT_LITERAL", "INTEGER_VALUE", "EXPONENT_VALUE", + "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", + "BRACKETED_COMMENT", "WS", "UNRECOGNIZED" ] + + RULE_singleStatement = 0 + RULE_singleExpression = 1 + RULE_singleTableIdentifier = 2 + RULE_singleMultipartIdentifier = 3 + RULE_singleFunctionIdentifier = 4 + RULE_singleDataType = 5 + RULE_singleTableSchema = 6 + RULE_statement = 7 + RULE_unsupportedHiveNativeCommands = 8 + RULE_createTableHeader = 9 + RULE_replaceTableHeader = 10 + RULE_bucketSpec = 11 + RULE_skewSpec = 12 + RULE_locationSpec = 13 + RULE_commentSpec = 14 + RULE_query = 15 + RULE_insertInto = 16 + RULE_partitionSpecLocation = 17 + RULE_partitionSpec = 18 + RULE_partitionVal = 19 + RULE_namespace = 20 + RULE_describeFuncName = 21 + RULE_describeColName = 22 + RULE_ctes = 23 + RULE_namedQuery = 24 + RULE_tableProvider = 25 + RULE_createTableClauses = 26 + RULE_tablePropertyList = 27 + RULE_tableProperty = 28 + RULE_tablePropertyKey = 29 + RULE_tablePropertyValue = 30 + RULE_constantList = 31 + RULE_nestedConstantList = 32 + RULE_createFileFormat = 33 + RULE_fileFormat = 34 + RULE_storageHandler = 35 + RULE_resource = 36 + RULE_dmlStatementNoWith = 37 + RULE_queryOrganization = 38 + RULE_multiInsertQueryBody = 39 + RULE_queryTerm = 40 + RULE_queryPrimary = 41 + RULE_sortItem = 42 + RULE_fromStatement = 43 + RULE_fromStatementBody = 44 + RULE_querySpecification = 45 + RULE_transformClause = 46 + RULE_selectClause = 47 + RULE_setClause = 48 + RULE_matchedClause = 49 + RULE_notMatchedClause = 50 + RULE_matchedAction = 51 + RULE_notMatchedAction = 52 + RULE_assignmentList = 53 + RULE_assignment = 54 + RULE_whereClause = 55 + RULE_havingClause = 56 + RULE_hint = 57 + RULE_hintStatement = 58 + RULE_fromClause = 59 + RULE_aggregationClause = 60 + RULE_groupingSet = 61 + RULE_pivotClause = 62 + RULE_pivotColumn = 63 + RULE_pivotValue = 64 + RULE_lateralView = 65 + RULE_setQuantifier = 66 + RULE_relation = 67 + RULE_joinRelation = 68 + RULE_joinType = 69 + RULE_joinCriteria = 70 + RULE_sample = 71 + RULE_sampleMethod = 72 + RULE_identifierList = 73 + RULE_identifierSeq = 74 + RULE_orderedIdentifierList = 75 + RULE_orderedIdentifier = 76 + RULE_identifierCommentList = 77 + RULE_identifierComment = 78 + RULE_relationPrimary = 79 + RULE_inlineTable = 80 + RULE_functionTable = 81 + RULE_tableAlias = 82 + RULE_rowFormat = 83 + RULE_multipartIdentifierList = 84 + RULE_multipartIdentifier = 85 + RULE_tableIdentifier = 86 + RULE_functionIdentifier = 87 + RULE_namedExpression = 88 + RULE_namedExpressionSeq = 89 + RULE_transformList = 90 + RULE_transform = 91 + RULE_transformArgument = 92 + RULE_expression = 93 + RULE_booleanExpression = 94 + RULE_predicate = 95 + RULE_valueExpression = 96 + RULE_primaryExpression = 97 + RULE_constant = 98 + RULE_comparisonOperator = 99 + RULE_arithmeticOperator = 100 + RULE_predicateOperator = 101 + RULE_booleanValue = 102 + RULE_interval = 103 + RULE_errorCapturingMultiUnitsInterval = 104 + RULE_multiUnitsInterval = 105 + RULE_errorCapturingUnitToUnitInterval = 106 + RULE_unitToUnitInterval = 107 + RULE_intervalValue = 108 + RULE_intervalUnit = 109 + RULE_colPosition = 110 + RULE_dataType = 111 + RULE_qualifiedColTypeWithPositionList = 112 + RULE_qualifiedColTypeWithPosition = 113 + RULE_colTypeList = 114 + RULE_colType = 115 + RULE_complexColTypeList = 116 + RULE_complexColType = 117 + RULE_whenClause = 118 + RULE_windowClause = 119 + RULE_namedWindow = 120 + RULE_windowSpec = 121 + RULE_windowFrame = 122 + RULE_frameBound = 123 + RULE_qualifiedNameList = 124 + RULE_functionName = 125 + RULE_qualifiedName = 126 + RULE_errorCapturingIdentifier = 127 + RULE_errorCapturingIdentifierExtra = 128 + RULE_identifier = 129 + RULE_strictIdentifier = 130 + RULE_quotedIdentifier = 131 + RULE_number = 132 + RULE_alterColumnAction = 133 + RULE_ansiNonReserved = 134 + RULE_strictNonReserved = 135 + RULE_nonReserved = 136 + + ruleNames = [ "singleStatement", "singleExpression", "singleTableIdentifier", + "singleMultipartIdentifier", "singleFunctionIdentifier", + "singleDataType", "singleTableSchema", "statement", "unsupportedHiveNativeCommands", + "createTableHeader", "replaceTableHeader", "bucketSpec", + "skewSpec", "locationSpec", "commentSpec", "query", "insertInto", + "partitionSpecLocation", "partitionSpec", "partitionVal", + "namespace", "describeFuncName", "describeColName", "ctes", + "namedQuery", "tableProvider", "createTableClauses", + "tablePropertyList", "tableProperty", "tablePropertyKey", + "tablePropertyValue", "constantList", "nestedConstantList", + "createFileFormat", "fileFormat", "storageHandler", "resource", + "dmlStatementNoWith", "queryOrganization", "multiInsertQueryBody", + "queryTerm", "queryPrimary", "sortItem", "fromStatement", + "fromStatementBody", "querySpecification", "transformClause", + "selectClause", "setClause", "matchedClause", "notMatchedClause", + "matchedAction", "notMatchedAction", "assignmentList", + "assignment", "whereClause", "havingClause", "hint", + "hintStatement", "fromClause", "aggregationClause", "groupingSet", + "pivotClause", "pivotColumn", "pivotValue", "lateralView", + "setQuantifier", "relation", "joinRelation", "joinType", + "joinCriteria", "sample", "sampleMethod", "identifierList", + "identifierSeq", "orderedIdentifierList", "orderedIdentifier", + "identifierCommentList", "identifierComment", "relationPrimary", + "inlineTable", "functionTable", "tableAlias", "rowFormat", + "multipartIdentifierList", "multipartIdentifier", "tableIdentifier", + "functionIdentifier", "namedExpression", "namedExpressionSeq", + "transformList", "transform", "transformArgument", "expression", + "booleanExpression", "predicate", "valueExpression", + "primaryExpression", "constant", "comparisonOperator", + "arithmeticOperator", "predicateOperator", "booleanValue", + "interval", "errorCapturingMultiUnitsInterval", "multiUnitsInterval", + "errorCapturingUnitToUnitInterval", "unitToUnitInterval", + "intervalValue", "intervalUnit", "colPosition", "dataType", + "qualifiedColTypeWithPositionList", "qualifiedColTypeWithPosition", + "colTypeList", "colType", "complexColTypeList", "complexColType", + "whenClause", "windowClause", "namedWindow", "windowSpec", + "windowFrame", "frameBound", "qualifiedNameList", "functionName", + "qualifiedName", "errorCapturingIdentifier", "errorCapturingIdentifierExtra", + "identifier", "strictIdentifier", "quotedIdentifier", + "number", "alterColumnAction", "ansiNonReserved", "strictNonReserved", + "nonReserved" ] + + EOF = Token.EOF + T__0=1 + T__1=2 + T__2=3 + T__3=4 + T__4=5 + T__5=6 + T__6=7 + T__7=8 + T__8=9 + T__9=10 + T__10=11 + ADD=12 + AFTER=13 + ALL=14 + ALTER=15 + ANALYZE=16 + AND=17 + ANTI=18 + ANY=19 + ARCHIVE=20 + ARRAY=21 + AS=22 + ASC=23 + AT=24 + AUTHORIZATION=25 + BETWEEN=26 + BOTH=27 + BUCKET=28 + BUCKETS=29 + BY=30 + CACHE=31 + CASCADE=32 + CASE=33 + CAST=34 + CHANGE=35 + CHECK=36 + CLEAR=37 + CLUSTER=38 + CLUSTERED=39 + CODEGEN=40 + COLLATE=41 + COLLECTION=42 + COLUMN=43 + COLUMNS=44 + COMMENT=45 + COMMIT=46 + COMPACT=47 + COMPACTIONS=48 + COMPUTE=49 + CONCATENATE=50 + CONSTRAINT=51 + COST=52 + CREATE=53 + CROSS=54 + CUBE=55 + CURRENT=56 + CURRENT_DATE=57 + CURRENT_TIME=58 + CURRENT_TIMESTAMP=59 + CURRENT_USER=60 + DATA=61 + DATABASE=62 + DATABASES=63 + DAY=64 + DBPROPERTIES=65 + DEFINED=66 + DELETE=67 + DELIMITED=68 + DESC=69 + DESCRIBE=70 + DFS=71 + DIRECTORIES=72 + DIRECTORY=73 + DISTINCT=74 + DISTRIBUTE=75 + DROP=76 + ELSE=77 + END=78 + ESCAPE=79 + ESCAPED=80 + EXCEPT=81 + EXCHANGE=82 + EXISTS=83 + EXPLAIN=84 + EXPORT=85 + EXTENDED=86 + EXTERNAL=87 + EXTRACT=88 + FALSE=89 + FETCH=90 + FIELDS=91 + FILTER=92 + FILEFORMAT=93 + FIRST=94 + FOLLOWING=95 + FOR=96 + FOREIGN=97 + FORMAT=98 + FORMATTED=99 + FROM=100 + FULL=101 + FUNCTION=102 + FUNCTIONS=103 + GLOBAL=104 + GRANT=105 + GROUP=106 + GROUPING=107 + HAVING=108 + HOUR=109 + IF=110 + IGNORE=111 + IMPORT=112 + IN=113 + INDEX=114 + INDEXES=115 + INNER=116 + INPATH=117 + INPUTFORMAT=118 + INSERT=119 + INTERSECT=120 + INTERVAL=121 + INTO=122 + IS=123 + ITEMS=124 + JOIN=125 + KEYS=126 + LAST=127 + LATERAL=128 + LAZY=129 + LEADING=130 + LEFT=131 + LIKE=132 + LIMIT=133 + LINES=134 + LIST=135 + LOAD=136 + LOCAL=137 + LOCATION=138 + LOCK=139 + LOCKS=140 + LOGICAL=141 + MACRO=142 + MAP=143 + MATCHED=144 + MERGE=145 + MINUTE=146 + MONTH=147 + MSCK=148 + NAMESPACE=149 + NAMESPACES=150 + NATURAL=151 + NO=152 + NOT=153 + NULL=154 + NULLS=155 + OF=156 + ON=157 + ONLY=158 + OPTION=159 + OPTIONS=160 + OR=161 + ORDER=162 + OUT=163 + OUTER=164 + OUTPUTFORMAT=165 + OVER=166 + OVERLAPS=167 + OVERLAY=168 + OVERWRITE=169 + PARTITION=170 + PARTITIONED=171 + PARTITIONS=172 + PERCENTLIT=173 + PIVOT=174 + PLACING=175 + POSITION=176 + PRECEDING=177 + PRIMARY=178 + PRINCIPALS=179 + PROPERTIES=180 + PURGE=181 + QUERY=182 + RANGE=183 + RECORDREADER=184 + RECORDWRITER=185 + RECOVER=186 + REDUCE=187 + REFERENCES=188 + REFRESH=189 + RENAME=190 + REPAIR=191 + REPLACE=192 + RESET=193 + RESTRICT=194 + REVOKE=195 + RIGHT=196 + RLIKE=197 + ROLE=198 + ROLES=199 + ROLLBACK=200 + ROLLUP=201 + ROW=202 + ROWS=203 + SCHEMA=204 + SECOND=205 + SELECT=206 + SEMI=207 + SEPARATED=208 + SERDE=209 + SERDEPROPERTIES=210 + SESSION_USER=211 + SET=212 + SETMINUS=213 + SETS=214 + SHOW=215 + SKEWED=216 + SOME=217 + SORT=218 + SORTED=219 + START=220 + STATISTICS=221 + STORED=222 + STRATIFY=223 + STRUCT=224 + SUBSTR=225 + SUBSTRING=226 + TABLE=227 + TABLES=228 + TABLESAMPLE=229 + TBLPROPERTIES=230 + TEMPORARY=231 + TERMINATED=232 + THEN=233 + TO=234 + TOUCH=235 + TRAILING=236 + TRANSACTION=237 + TRANSACTIONS=238 + TRANSFORM=239 + TRIM=240 + TRUE=241 + TRUNCATE=242 + TYPE=243 + UNARCHIVE=244 + UNBOUNDED=245 + UNCACHE=246 + UNION=247 + UNIQUE=248 + UNKNOWN=249 + UNLOCK=250 + UNSET=251 + UPDATE=252 + USE=253 + USER=254 + USING=255 + VALUES=256 + VIEW=257 + VIEWS=258 + WHEN=259 + WHERE=260 + WINDOW=261 + WITH=262 + YEAR=263 + EQ=264 + NSEQ=265 + NEQ=266 + NEQJ=267 + LT=268 + LTE=269 + GT=270 + GTE=271 + PLUS=272 + MINUS=273 + ASTERISK=274 + SLASH=275 + PERCENT=276 + DIV=277 + TILDE=278 + AMPERSAND=279 + PIPE=280 + CONCAT_PIPE=281 + HAT=282 + STRING=283 + BIGINT_LITERAL=284 + SMALLINT_LITERAL=285 + TINYINT_LITERAL=286 + INTEGER_VALUE=287 + EXPONENT_VALUE=288 + DECIMAL_VALUE=289 + DOUBLE_LITERAL=290 + BIGDECIMAL_LITERAL=291 + IDENTIFIER=292 + BACKQUOTED_IDENTIFIER=293 + SIMPLE_COMMENT=294 + BRACKETED_COMMENT=295 + WS=296 + UNRECOGNIZED=297 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.7.1") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + """ + When false, INTERSECT is given the greater precedence over the other set + operations (UNION, EXCEPT and MINUS) as per the SQL standard. + """ + legacy_setops_precedence_enbled = False + + """ + When false, a literal with an exponent would be converted into + double type rather than decimal type. + """ + legacy_exponent_literal_as_decimal_enabled = False + + """ + When false, CREATE TABLE syntax without a provider will use + the value of spark.sql.sources.default as its provider. + """ + legacy_create_hive_table_by_default_enabled = False + + """ + When true, the behavior of keywords follows ANSI SQL standard. + """ + SQL_standard_keyword_behavior = False + + def isValidDecimal(self): + """ + Verify whether current token is a valid decimal token (which contains dot). + Returns true if the character that follows the token is not a digit or letter or underscore. + + For example: + For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. + For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. + For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. + For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed + by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' + which is not a digit or letter or underscore. + """ + nextChar = self._input.LA(1) + if 'A' <= nextChar <= 'Z' or '0' <= nextChar <= '9' or nextChar == '_': + return False + else: + return True + + def isHint(self): + """ + This method will be called when we see '/*' and try to match it as a bracketed comment. + If the next character is '+', it should be parsed as hint later, and we cannot match + it as a bracketed comment. + + Returns true if the next character is '+'. + """ + nextChar = self._input.LA(1) + if nextChar == '+': + return True + else: + return False + + + class SingleStatementContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def statement(self): + return self.getTypedRuleContext(SqlBaseParser.StatementContext,0) + + + def EOF(self): + return self.getToken(SqlBaseParser.EOF, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_singleStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleStatement" ): + listener.enterSingleStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleStatement" ): + listener.exitSingleStatement(self) + + + + + def singleStatement(self): + + localctx = SqlBaseParser.SingleStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_singleStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 274 + self.statement() + self.state = 278 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__0: + self.state = 275 + self.match(SqlBaseParser.T__0) + self.state = 280 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 281 + self.match(SqlBaseParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def namedExpression(self): + return self.getTypedRuleContext(SqlBaseParser.NamedExpressionContext,0) + + + def EOF(self): + return self.getToken(SqlBaseParser.EOF, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_singleExpression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleExpression" ): + listener.enterSingleExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleExpression" ): + listener.exitSingleExpression(self) + + + + + def singleExpression(self): + + localctx = SqlBaseParser.SingleExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_singleExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 283 + self.namedExpression() + self.state = 284 + self.match(SqlBaseParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleTableIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def tableIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.TableIdentifierContext,0) + + + def EOF(self): + return self.getToken(SqlBaseParser.EOF, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_singleTableIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleTableIdentifier" ): + listener.enterSingleTableIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleTableIdentifier" ): + listener.exitSingleTableIdentifier(self) + + + + + def singleTableIdentifier(self): + + localctx = SqlBaseParser.SingleTableIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_singleTableIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 286 + self.tableIdentifier() + self.state = 287 + self.match(SqlBaseParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleMultipartIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def EOF(self): + return self.getToken(SqlBaseParser.EOF, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_singleMultipartIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleMultipartIdentifier" ): + listener.enterSingleMultipartIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleMultipartIdentifier" ): + listener.exitSingleMultipartIdentifier(self) + + + + + def singleMultipartIdentifier(self): + + localctx = SqlBaseParser.SingleMultipartIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_singleMultipartIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 289 + self.multipartIdentifier() + self.state = 290 + self.match(SqlBaseParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleFunctionIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def functionIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.FunctionIdentifierContext,0) + + + def EOF(self): + return self.getToken(SqlBaseParser.EOF, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_singleFunctionIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleFunctionIdentifier" ): + listener.enterSingleFunctionIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleFunctionIdentifier" ): + listener.exitSingleFunctionIdentifier(self) + + + + + def singleFunctionIdentifier(self): + + localctx = SqlBaseParser.SingleFunctionIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_singleFunctionIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 292 + self.functionIdentifier() + self.state = 293 + self.match(SqlBaseParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleDataTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def dataType(self): + return self.getTypedRuleContext(SqlBaseParser.DataTypeContext,0) + + + def EOF(self): + return self.getToken(SqlBaseParser.EOF, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_singleDataType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleDataType" ): + listener.enterSingleDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleDataType" ): + listener.exitSingleDataType(self) + + + + + def singleDataType(self): + + localctx = SqlBaseParser.SingleDataTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_singleDataType) + try: + self.enterOuterAlt(localctx, 1) + self.state = 295 + self.dataType() + self.state = 296 + self.match(SqlBaseParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleTableSchemaContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def colTypeList(self): + return self.getTypedRuleContext(SqlBaseParser.ColTypeListContext,0) + + + def EOF(self): + return self.getToken(SqlBaseParser.EOF, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_singleTableSchema + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleTableSchema" ): + listener.enterSingleTableSchema(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleTableSchema" ): + listener.exitSingleTableSchema(self) + + + + + def singleTableSchema(self): + + localctx = SqlBaseParser.SingleTableSchemaContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_singleTableSchema) + try: + self.enterOuterAlt(localctx, 1) + self.state = 298 + self.colTypeList() + self.state = 299 + self.match(SqlBaseParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StatementContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_statement + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class ExplainContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def EXPLAIN(self): + return self.getToken(SqlBaseParser.EXPLAIN, 0) + def statement(self): + return self.getTypedRuleContext(SqlBaseParser.StatementContext,0) + + def LOGICAL(self): + return self.getToken(SqlBaseParser.LOGICAL, 0) + def FORMATTED(self): + return self.getToken(SqlBaseParser.FORMATTED, 0) + def EXTENDED(self): + return self.getToken(SqlBaseParser.EXTENDED, 0) + def CODEGEN(self): + return self.getToken(SqlBaseParser.CODEGEN, 0) + def COST(self): + return self.getToken(SqlBaseParser.COST, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExplain" ): + listener.enterExplain(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExplain" ): + listener.exitExplain(self) + + + class ResetConfigurationContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def RESET(self): + return self.getToken(SqlBaseParser.RESET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResetConfiguration" ): + listener.enterResetConfiguration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResetConfiguration" ): + listener.exitResetConfiguration(self) + + + class AlterViewQueryContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterViewQuery" ): + listener.enterAlterViewQuery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterViewQuery" ): + listener.exitAlterViewQuery(self) + + + class UseContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def USE(self): + return self.getToken(SqlBaseParser.USE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def NAMESPACE(self): + return self.getToken(SqlBaseParser.NAMESPACE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUse" ): + listener.enterUse(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUse" ): + listener.exitUse(self) + + + class DropNamespaceContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + def namespace(self): + return self.getTypedRuleContext(SqlBaseParser.NamespaceContext,0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def RESTRICT(self): + return self.getToken(SqlBaseParser.RESTRICT, 0) + def CASCADE(self): + return self.getToken(SqlBaseParser.CASCADE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropNamespace" ): + listener.enterDropNamespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropNamespace" ): + listener.exitDropNamespace(self) + + + class CreateTempViewUsingContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def tableIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.TableIdentifierContext,0) + + def tableProvider(self): + return self.getTypedRuleContext(SqlBaseParser.TableProviderContext,0) + + def OR(self): + return self.getToken(SqlBaseParser.OR, 0) + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + def GLOBAL(self): + return self.getToken(SqlBaseParser.GLOBAL, 0) + def colTypeList(self): + return self.getTypedRuleContext(SqlBaseParser.ColTypeListContext,0) + + def OPTIONS(self): + return self.getToken(SqlBaseParser.OPTIONS, 0) + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTempViewUsing" ): + listener.enterCreateTempViewUsing(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTempViewUsing" ): + listener.exitCreateTempViewUsing(self) + + + class RenameTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.from_ = None # MultipartIdentifierContext + self.to = None # MultipartIdentifierContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def RENAME(self): + return self.getToken(SqlBaseParser.RENAME, 0) + def TO(self): + return self.getToken(SqlBaseParser.TO, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def multipartIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultipartIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRenameTable" ): + listener.enterRenameTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRenameTable" ): + listener.exitRenameTable(self) + + + class FailNativeCommandContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + def ROLE(self): + return self.getToken(SqlBaseParser.ROLE, 0) + def unsupportedHiveNativeCommands(self): + return self.getTypedRuleContext(SqlBaseParser.UnsupportedHiveNativeCommandsContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFailNativeCommand" ): + listener.enterFailNativeCommand(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFailNativeCommand" ): + listener.exitFailNativeCommand(self) + + + class ClearCacheContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def CLEAR(self): + return self.getToken(SqlBaseParser.CLEAR, 0) + def CACHE(self): + return self.getToken(SqlBaseParser.CACHE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterClearCache" ): + listener.enterClearCache(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitClearCache" ): + listener.exitClearCache(self) + + + class DropViewContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropView" ): + listener.enterDropView(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropView" ): + listener.exitDropView(self) + + + class ShowTablesContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.pattern = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def TABLES(self): + return self.getToken(SqlBaseParser.TABLES, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowTables" ): + listener.enterShowTables(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowTables" ): + listener.exitShowTables(self) + + + class RecoverPartitionsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def RECOVER(self): + return self.getToken(SqlBaseParser.RECOVER, 0) + def PARTITIONS(self): + return self.getToken(SqlBaseParser.PARTITIONS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRecoverPartitions" ): + listener.enterRecoverPartitions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRecoverPartitions" ): + listener.exitRecoverPartitions(self) + + + class ShowCurrentNamespaceContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def CURRENT(self): + return self.getToken(SqlBaseParser.CURRENT, 0) + def NAMESPACE(self): + return self.getToken(SqlBaseParser.NAMESPACE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowCurrentNamespace" ): + listener.enterShowCurrentNamespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowCurrentNamespace" ): + listener.exitShowCurrentNamespace(self) + + + class RenameTablePartitionContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.from_ = None # PartitionSpecContext + self.to = None # PartitionSpecContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def RENAME(self): + return self.getToken(SqlBaseParser.RENAME, 0) + def TO(self): + return self.getToken(SqlBaseParser.TO, 0) + def partitionSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.PartitionSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRenameTablePartition" ): + listener.enterRenameTablePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRenameTablePartition" ): + listener.exitRenameTablePartition(self) + + + class RepairTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def MSCK(self): + return self.getToken(SqlBaseParser.MSCK, 0) + def REPAIR(self): + return self.getToken(SqlBaseParser.REPAIR, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRepairTable" ): + listener.enterRepairTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRepairTable" ): + listener.exitRepairTable(self) + + + class RefreshResourceContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def REFRESH(self): + return self.getToken(SqlBaseParser.REFRESH, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRefreshResource" ): + listener.enterRefreshResource(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRefreshResource" ): + listener.exitRefreshResource(self) + + + class ShowCreateTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + def SERDE(self): + return self.getToken(SqlBaseParser.SERDE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowCreateTable" ): + listener.enterShowCreateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowCreateTable" ): + listener.exitShowCreateTable(self) + + + class ShowNamespacesContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.pattern = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def DATABASES(self): + return self.getToken(SqlBaseParser.DATABASES, 0) + def NAMESPACES(self): + return self.getToken(SqlBaseParser.NAMESPACES, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowNamespaces" ): + listener.enterShowNamespaces(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowNamespaces" ): + listener.exitShowNamespaces(self) + + + class ShowColumnsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.table = None # MultipartIdentifierContext + self.ns = None # MultipartIdentifierContext + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + def FROM(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.FROM) + else: + return self.getToken(SqlBaseParser.FROM, i) + def IN(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.IN) + else: + return self.getToken(SqlBaseParser.IN, i) + def multipartIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultipartIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowColumns" ): + listener.enterShowColumns(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowColumns" ): + listener.exitShowColumns(self) + + + class ReplaceTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def replaceTableHeader(self): + return self.getTypedRuleContext(SqlBaseParser.ReplaceTableHeaderContext,0) + + def tableProvider(self): + return self.getTypedRuleContext(SqlBaseParser.TableProviderContext,0) + + def createTableClauses(self): + return self.getTypedRuleContext(SqlBaseParser.CreateTableClausesContext,0) + + def colTypeList(self): + return self.getTypedRuleContext(SqlBaseParser.ColTypeListContext,0) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReplaceTable" ): + listener.enterReplaceTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReplaceTable" ): + listener.exitReplaceTable(self) + + + class AddTablePartitionContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def ADD(self): + return self.getToken(SqlBaseParser.ADD, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def partitionSpecLocation(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.PartitionSpecLocationContext) + else: + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecLocationContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAddTablePartition" ): + listener.enterAddTablePartition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAddTablePartition" ): + listener.exitAddTablePartition(self) + + + class SetNamespaceLocationContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def namespace(self): + return self.getTypedRuleContext(SqlBaseParser.NamespaceContext,0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + def locationSpec(self): + return self.getTypedRuleContext(SqlBaseParser.LocationSpecContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetNamespaceLocation" ): + listener.enterSetNamespaceLocation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetNamespaceLocation" ): + listener.exitSetNamespaceLocation(self) + + + class RefreshTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def REFRESH(self): + return self.getToken(SqlBaseParser.REFRESH, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRefreshTable" ): + listener.enterRefreshTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRefreshTable" ): + listener.exitRefreshTable(self) + + + class SetNamespacePropertiesContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def namespace(self): + return self.getTypedRuleContext(SqlBaseParser.NamespaceContext,0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + def DBPROPERTIES(self): + return self.getToken(SqlBaseParser.DBPROPERTIES, 0) + def PROPERTIES(self): + return self.getToken(SqlBaseParser.PROPERTIES, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetNamespaceProperties" ): + listener.enterSetNamespaceProperties(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetNamespaceProperties" ): + listener.exitSetNamespaceProperties(self) + + + class ManageResourceContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.op = None # Token + self.copyFrom(ctx) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def ADD(self): + return self.getToken(SqlBaseParser.ADD, 0) + def LIST(self): + return self.getToken(SqlBaseParser.LIST, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterManageResource" ): + listener.enterManageResource(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitManageResource" ): + listener.exitManageResource(self) + + + class AnalyzeContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ANALYZE(self): + return self.getToken(SqlBaseParser.ANALYZE, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def COMPUTE(self): + return self.getToken(SqlBaseParser.COMPUTE, 0) + def STATISTICS(self): + return self.getToken(SqlBaseParser.STATISTICS, 0) + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def FOR(self): + return self.getToken(SqlBaseParser.FOR, 0) + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + def identifierSeq(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierSeqContext,0) + + def ALL(self): + return self.getToken(SqlBaseParser.ALL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAnalyze" ): + listener.enterAnalyze(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAnalyze" ): + listener.exitAnalyze(self) + + + class CreateHiveTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.columns = None # ColTypeListContext + self.partitionColumns = None # ColTypeListContext + self.partitionColumnNames = None # IdentifierListContext + self.tableProps = None # TablePropertyListContext + self.copyFrom(ctx) + + def createTableHeader(self): + return self.getTypedRuleContext(SqlBaseParser.CreateTableHeaderContext,0) + + def commentSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.CommentSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,i) + + def bucketSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.BucketSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.BucketSpecContext,i) + + def skewSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.SkewSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.SkewSpecContext,i) + + def rowFormat(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.RowFormatContext) + else: + return self.getTypedRuleContext(SqlBaseParser.RowFormatContext,i) + + def createFileFormat(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.CreateFileFormatContext) + else: + return self.getTypedRuleContext(SqlBaseParser.CreateFileFormatContext,i) + + def locationSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.LocationSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.LocationSpecContext,i) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def colTypeList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ColTypeListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ColTypeListContext,i) + + def PARTITIONED(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.PARTITIONED) + else: + return self.getToken(SqlBaseParser.PARTITIONED, i) + def BY(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.BY) + else: + return self.getToken(SqlBaseParser.BY, i) + def TBLPROPERTIES(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.TBLPROPERTIES) + else: + return self.getToken(SqlBaseParser.TBLPROPERTIES, i) + def identifierList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,i) + + def tablePropertyList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TablePropertyListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,i) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateHiveTable" ): + listener.enterCreateHiveTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateHiveTable" ): + listener.exitCreateHiveTable(self) + + + class CreateFunctionContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.className = None # Token + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + def FUNCTION(self): + return self.getToken(SqlBaseParser.FUNCTION, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def OR(self): + return self.getToken(SqlBaseParser.OR, 0) + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def USING(self): + return self.getToken(SqlBaseParser.USING, 0) + def resource(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ResourceContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ResourceContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateFunction" ): + listener.enterCreateFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateFunction" ): + listener.exitCreateFunction(self) + + + class ShowTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.ns = None # MultipartIdentifierContext + self.pattern = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def EXTENDED(self): + return self.getToken(SqlBaseParser.EXTENDED, 0) + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowTable" ): + listener.enterShowTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowTable" ): + listener.exitShowTable(self) + + + class HiveReplaceColumnsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.table = None # MultipartIdentifierContext + self.columns = None # QualifiedColTypeWithPositionListContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def qualifiedColTypeWithPositionList(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedColTypeWithPositionListContext,0) + + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHiveReplaceColumns" ): + listener.enterHiveReplaceColumns(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHiveReplaceColumns" ): + listener.exitHiveReplaceColumns(self) + + + class CommentNamespaceContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.comment = None # Token + self.copyFrom(ctx) + + def COMMENT(self): + return self.getToken(SqlBaseParser.COMMENT, 0) + def ON(self): + return self.getToken(SqlBaseParser.ON, 0) + def namespace(self): + return self.getTypedRuleContext(SqlBaseParser.NamespaceContext,0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def IS(self): + return self.getToken(SqlBaseParser.IS, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCommentNamespace" ): + listener.enterCommentNamespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCommentNamespace" ): + listener.exitCommentNamespace(self) + + + class CreateTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def createTableHeader(self): + return self.getTypedRuleContext(SqlBaseParser.CreateTableHeaderContext,0) + + def createTableClauses(self): + return self.getTypedRuleContext(SqlBaseParser.CreateTableClausesContext,0) + + def colTypeList(self): + return self.getTypedRuleContext(SqlBaseParser.ColTypeListContext,0) + + def tableProvider(self): + return self.getTypedRuleContext(SqlBaseParser.TableProviderContext,0) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTable" ): + listener.enterCreateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTable" ): + listener.exitCreateTable(self) + + + class DmlStatementContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def dmlStatementNoWith(self): + return self.getTypedRuleContext(SqlBaseParser.DmlStatementNoWithContext,0) + + def ctes(self): + return self.getTypedRuleContext(SqlBaseParser.CtesContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDmlStatement" ): + listener.enterDmlStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDmlStatement" ): + listener.exitDmlStatement(self) + + + class CreateTableLikeContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.target = None # TableIdentifierContext + self.source = None # TableIdentifierContext + self.tableProps = None # TablePropertyListContext + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + def tableIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TableIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TableIdentifierContext,i) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def tableProvider(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TableProviderContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TableProviderContext,i) + + def rowFormat(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.RowFormatContext) + else: + return self.getTypedRuleContext(SqlBaseParser.RowFormatContext,i) + + def createFileFormat(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.CreateFileFormatContext) + else: + return self.getTypedRuleContext(SqlBaseParser.CreateFileFormatContext,i) + + def locationSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.LocationSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.LocationSpecContext,i) + + def TBLPROPERTIES(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.TBLPROPERTIES) + else: + return self.getToken(SqlBaseParser.TBLPROPERTIES, i) + def tablePropertyList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TablePropertyListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTableLike" ): + listener.enterCreateTableLike(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTableLike" ): + listener.exitCreateTableLike(self) + + + class UncacheTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def UNCACHE(self): + return self.getToken(SqlBaseParser.UNCACHE, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUncacheTable" ): + listener.enterUncacheTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUncacheTable" ): + listener.exitUncacheTable(self) + + + class DropFunctionContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + def FUNCTION(self): + return self.getToken(SqlBaseParser.FUNCTION, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropFunction" ): + listener.enterDropFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropFunction" ): + listener.exitDropFunction(self) + + + class DescribeRelationContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.option = None # Token + self.copyFrom(ctx) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + def DESCRIBE(self): + return self.getToken(SqlBaseParser.DESCRIBE, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + def describeColName(self): + return self.getTypedRuleContext(SqlBaseParser.DescribeColNameContext,0) + + def EXTENDED(self): + return self.getToken(SqlBaseParser.EXTENDED, 0) + def FORMATTED(self): + return self.getToken(SqlBaseParser.FORMATTED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeRelation" ): + listener.enterDescribeRelation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeRelation" ): + listener.exitDescribeRelation(self) + + + class LoadDataContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.path = None # Token + self.copyFrom(ctx) + + def LOAD(self): + return self.getToken(SqlBaseParser.LOAD, 0) + def DATA(self): + return self.getToken(SqlBaseParser.DATA, 0) + def INPATH(self): + return self.getToken(SqlBaseParser.INPATH, 0) + def INTO(self): + return self.getToken(SqlBaseParser.INTO, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def LOCAL(self): + return self.getToken(SqlBaseParser.LOCAL, 0) + def OVERWRITE(self): + return self.getToken(SqlBaseParser.OVERWRITE, 0) + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLoadData" ): + listener.enterLoadData(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLoadData" ): + listener.exitLoadData(self) + + + class ShowPartitionsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def PARTITIONS(self): + return self.getToken(SqlBaseParser.PARTITIONS, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowPartitions" ): + listener.enterShowPartitions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowPartitions" ): + listener.exitShowPartitions(self) + + + class DescribeFunctionContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def FUNCTION(self): + return self.getToken(SqlBaseParser.FUNCTION, 0) + def describeFuncName(self): + return self.getTypedRuleContext(SqlBaseParser.DescribeFuncNameContext,0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + def DESCRIBE(self): + return self.getToken(SqlBaseParser.DESCRIBE, 0) + def EXTENDED(self): + return self.getToken(SqlBaseParser.EXTENDED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeFunction" ): + listener.enterDescribeFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeFunction" ): + listener.exitDescribeFunction(self) + + + class RenameTableColumnContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.table = None # MultipartIdentifierContext + self.from_ = None # MultipartIdentifierContext + self.to = None # ErrorCapturingIdentifierContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def RENAME(self): + return self.getToken(SqlBaseParser.RENAME, 0) + def COLUMN(self): + return self.getToken(SqlBaseParser.COLUMN, 0) + def TO(self): + return self.getToken(SqlBaseParser.TO, 0) + def multipartIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultipartIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,i) + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRenameTableColumn" ): + listener.enterRenameTableColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRenameTableColumn" ): + listener.exitRenameTableColumn(self) + + + class StatementDefaultContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStatementDefault" ): + listener.enterStatementDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStatementDefault" ): + listener.exitStatementDefault(self) + + + class HiveChangeColumnContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.table = None # MultipartIdentifierContext + self.colName = None # MultipartIdentifierContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def CHANGE(self): + return self.getToken(SqlBaseParser.CHANGE, 0) + def colType(self): + return self.getTypedRuleContext(SqlBaseParser.ColTypeContext,0) + + def multipartIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultipartIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,i) + + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + def COLUMN(self): + return self.getToken(SqlBaseParser.COLUMN, 0) + def colPosition(self): + return self.getTypedRuleContext(SqlBaseParser.ColPositionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHiveChangeColumn" ): + listener.enterHiveChangeColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHiveChangeColumn" ): + listener.exitHiveChangeColumn(self) + + + class DescribeQueryContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + def DESCRIBE(self): + return self.getToken(SqlBaseParser.DESCRIBE, 0) + def QUERY(self): + return self.getToken(SqlBaseParser.QUERY, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeQuery" ): + listener.enterDescribeQuery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeQuery" ): + listener.exitDescribeQuery(self) + + + class TruncateTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def TRUNCATE(self): + return self.getToken(SqlBaseParser.TRUNCATE, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTruncateTable" ): + listener.enterTruncateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTruncateTable" ): + listener.exitTruncateTable(self) + + + class SetTableSerDeContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + def SERDE(self): + return self.getToken(SqlBaseParser.SERDE, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + def WITH(self): + return self.getToken(SqlBaseParser.WITH, 0) + def SERDEPROPERTIES(self): + return self.getToken(SqlBaseParser.SERDEPROPERTIES, 0) + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetTableSerDe" ): + listener.enterSetTableSerDe(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetTableSerDe" ): + listener.exitSetTableSerDe(self) + + + class CreateViewContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def OR(self): + return self.getToken(SqlBaseParser.OR, 0) + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def identifierCommentList(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierCommentListContext,0) + + def commentSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.CommentSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,i) + + def PARTITIONED(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.PARTITIONED) + else: + return self.getToken(SqlBaseParser.PARTITIONED, i) + def ON(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.ON) + else: + return self.getToken(SqlBaseParser.ON, i) + def identifierList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,i) + + def TBLPROPERTIES(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.TBLPROPERTIES) + else: + return self.getToken(SqlBaseParser.TBLPROPERTIES, i) + def tablePropertyList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TablePropertyListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,i) + + def GLOBAL(self): + return self.getToken(SqlBaseParser.GLOBAL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateView" ): + listener.enterCreateView(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateView" ): + listener.exitCreateView(self) + + + class DropTablePartitionsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + def partitionSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.PartitionSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,i) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def PURGE(self): + return self.getToken(SqlBaseParser.PURGE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropTablePartitions" ): + listener.enterDropTablePartitions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropTablePartitions" ): + listener.exitDropTablePartitions(self) + + + class SetConfigurationContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetConfiguration" ): + listener.enterSetConfiguration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetConfiguration" ): + listener.exitSetConfiguration(self) + + + class DropTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def PURGE(self): + return self.getToken(SqlBaseParser.PURGE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropTable" ): + listener.enterDropTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropTable" ): + listener.exitDropTable(self) + + + class DescribeNamespaceContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def namespace(self): + return self.getTypedRuleContext(SqlBaseParser.NamespaceContext,0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + def DESCRIBE(self): + return self.getToken(SqlBaseParser.DESCRIBE, 0) + def EXTENDED(self): + return self.getToken(SqlBaseParser.EXTENDED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeNamespace" ): + listener.enterDescribeNamespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeNamespace" ): + listener.exitDescribeNamespace(self) + + + class AlterTableAlterColumnContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.table = None # MultipartIdentifierContext + self.column = None # MultipartIdentifierContext + self.copyFrom(ctx) + + def ALTER(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.ALTER) + else: + return self.getToken(SqlBaseParser.ALTER, i) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultipartIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,i) + + def CHANGE(self): + return self.getToken(SqlBaseParser.CHANGE, 0) + def COLUMN(self): + return self.getToken(SqlBaseParser.COLUMN, 0) + def alterColumnAction(self): + return self.getTypedRuleContext(SqlBaseParser.AlterColumnActionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterTableAlterColumn" ): + listener.enterAlterTableAlterColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterTableAlterColumn" ): + listener.exitAlterTableAlterColumn(self) + + + class CommentTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.comment = None # Token + self.copyFrom(ctx) + + def COMMENT(self): + return self.getToken(SqlBaseParser.COMMENT, 0) + def ON(self): + return self.getToken(SqlBaseParser.ON, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def IS(self): + return self.getToken(SqlBaseParser.IS, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCommentTable" ): + listener.enterCommentTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCommentTable" ): + listener.exitCommentTable(self) + + + class CreateNamespaceContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + def namespace(self): + return self.getTypedRuleContext(SqlBaseParser.NamespaceContext,0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def commentSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.CommentSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,i) + + def locationSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.LocationSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.LocationSpecContext,i) + + def WITH(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.WITH) + else: + return self.getToken(SqlBaseParser.WITH, i) + def tablePropertyList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TablePropertyListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,i) + + def DBPROPERTIES(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.DBPROPERTIES) + else: + return self.getToken(SqlBaseParser.DBPROPERTIES, i) + def PROPERTIES(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.PROPERTIES) + else: + return self.getToken(SqlBaseParser.PROPERTIES, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateNamespace" ): + listener.enterCreateNamespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateNamespace" ): + listener.exitCreateNamespace(self) + + + class ShowTblPropertiesContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.table = None # MultipartIdentifierContext + self.key = None # TablePropertyKeyContext + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def TBLPROPERTIES(self): + return self.getToken(SqlBaseParser.TBLPROPERTIES, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def tablePropertyKey(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyKeyContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowTblProperties" ): + listener.enterShowTblProperties(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowTblProperties" ): + listener.exitShowTblProperties(self) + + + class UnsetTablePropertiesContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def UNSET(self): + return self.getToken(SqlBaseParser.UNSET, 0) + def TBLPROPERTIES(self): + return self.getToken(SqlBaseParser.TBLPROPERTIES, 0) + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnsetTableProperties" ): + listener.enterUnsetTableProperties(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnsetTableProperties" ): + listener.exitUnsetTableProperties(self) + + + class SetTableLocationContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + def locationSpec(self): + return self.getTypedRuleContext(SqlBaseParser.LocationSpecContext,0) + + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetTableLocation" ): + listener.enterSetTableLocation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetTableLocation" ): + listener.exitSetTableLocation(self) + + + class DropTableColumnsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.columns = None # MultipartIdentifierListContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + def COLUMN(self): + return self.getToken(SqlBaseParser.COLUMN, 0) + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + def multipartIdentifierList(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDropTableColumns" ): + listener.enterDropTableColumns(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDropTableColumns" ): + listener.exitDropTableColumns(self) + + + class ShowViewsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.pattern = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def VIEWS(self): + return self.getToken(SqlBaseParser.VIEWS, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowViews" ): + listener.enterShowViews(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowViews" ): + listener.exitShowViews(self) + + + class ShowFunctionsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.pattern = None # Token + self.copyFrom(ctx) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + def FUNCTIONS(self): + return self.getToken(SqlBaseParser.FUNCTIONS, 0) + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShowFunctions" ): + listener.enterShowFunctions(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShowFunctions" ): + listener.exitShowFunctions(self) + + + class CacheTableContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.options = None # TablePropertyListContext + self.copyFrom(ctx) + + def CACHE(self): + return self.getToken(SqlBaseParser.CACHE, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def LAZY(self): + return self.getToken(SqlBaseParser.LAZY, 0) + def OPTIONS(self): + return self.getToken(SqlBaseParser.OPTIONS, 0) + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCacheTable" ): + listener.enterCacheTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCacheTable" ): + listener.exitCacheTable(self) + + + class AddTableColumnsContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.columns = None # QualifiedColTypeWithPositionListContext + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def ADD(self): + return self.getToken(SqlBaseParser.ADD, 0) + def COLUMN(self): + return self.getToken(SqlBaseParser.COLUMN, 0) + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + def qualifiedColTypeWithPositionList(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedColTypeWithPositionListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAddTableColumns" ): + listener.enterAddTableColumns(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAddTableColumns" ): + listener.exitAddTableColumns(self) + + + class SetTablePropertiesContext(StatementContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StatementContext + super().__init__(parser) + self.copyFrom(ctx) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + def TBLPROPERTIES(self): + return self.getToken(SqlBaseParser.TBLPROPERTIES, 0) + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetTableProperties" ): + listener.enterSetTableProperties(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetTableProperties" ): + listener.exitSetTableProperties(self) + + + + def statement(self): + + localctx = SqlBaseParser.StatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_statement) + self._la = 0 # Token type + try: + self.state = 1025 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,110,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.StatementDefaultContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 301 + self.query() + pass + + elif la_ == 2: + localctx = SqlBaseParser.DmlStatementContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 303 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.WITH: + self.state = 302 + self.ctes() + + + self.state = 305 + self.dmlStatementNoWith() + pass + + elif la_ == 3: + localctx = SqlBaseParser.UseContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 306 + self.match(SqlBaseParser.USE) + self.state = 308 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,2,self._ctx) + if la_ == 1: + self.state = 307 + self.match(SqlBaseParser.NAMESPACE) + + + self.state = 310 + self.multipartIdentifier() + pass + + elif la_ == 4: + localctx = SqlBaseParser.CreateNamespaceContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 311 + self.match(SqlBaseParser.CREATE) + self.state = 312 + self.namespace() + self.state = 316 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,3,self._ctx) + if la_ == 1: + self.state = 313 + self.match(SqlBaseParser.IF) + self.state = 314 + self.match(SqlBaseParser.NOT) + self.state = 315 + self.match(SqlBaseParser.EXISTS) + + + self.state = 318 + self.multipartIdentifier() + self.state = 326 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.COMMENT or _la==SqlBaseParser.LOCATION or _la==SqlBaseParser.WITH: + self.state = 324 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.COMMENT]: + self.state = 319 + self.commentSpec() + pass + elif token in [SqlBaseParser.LOCATION]: + self.state = 320 + self.locationSpec() + pass + elif token in [SqlBaseParser.WITH]: + self.state = 321 + self.match(SqlBaseParser.WITH) + self.state = 322 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DBPROPERTIES or _la==SqlBaseParser.PROPERTIES): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 323 + self.tablePropertyList() + pass + else: + raise NoViableAltException(self) + + self.state = 328 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 5: + localctx = SqlBaseParser.SetNamespacePropertiesContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 329 + self.match(SqlBaseParser.ALTER) + self.state = 330 + self.namespace() + self.state = 331 + self.multipartIdentifier() + self.state = 332 + self.match(SqlBaseParser.SET) + self.state = 333 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DBPROPERTIES or _la==SqlBaseParser.PROPERTIES): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 334 + self.tablePropertyList() + pass + + elif la_ == 6: + localctx = SqlBaseParser.SetNamespaceLocationContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 336 + self.match(SqlBaseParser.ALTER) + self.state = 337 + self.namespace() + self.state = 338 + self.multipartIdentifier() + self.state = 339 + self.match(SqlBaseParser.SET) + self.state = 340 + self.locationSpec() + pass + + elif la_ == 7: + localctx = SqlBaseParser.DropNamespaceContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 342 + self.match(SqlBaseParser.DROP) + self.state = 343 + self.namespace() + self.state = 346 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,6,self._ctx) + if la_ == 1: + self.state = 344 + self.match(SqlBaseParser.IF) + self.state = 345 + self.match(SqlBaseParser.EXISTS) + + + self.state = 348 + self.multipartIdentifier() + self.state = 350 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.CASCADE or _la==SqlBaseParser.RESTRICT: + self.state = 349 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.CASCADE or _la==SqlBaseParser.RESTRICT): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + pass + + elif la_ == 8: + localctx = SqlBaseParser.ShowNamespacesContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 352 + self.match(SqlBaseParser.SHOW) + self.state = 353 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DATABASES or _la==SqlBaseParser.NAMESPACES): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 356 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.FROM or _la==SqlBaseParser.IN: + self.state = 354 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FROM or _la==SqlBaseParser.IN): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 355 + self.multipartIdentifier() + + + self.state = 362 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LIKE or _la==SqlBaseParser.STRING: + self.state = 359 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LIKE: + self.state = 358 + self.match(SqlBaseParser.LIKE) + + + self.state = 361 + localctx.pattern = self.match(SqlBaseParser.STRING) + + + pass + + elif la_ == 9: + localctx = SqlBaseParser.CreateTableContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 364 + if not not self.legacy_create_hive_table_by_default_enabled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "not self.legacy_create_hive_table_by_default_enabled") + self.state = 365 + self.createTableHeader() + self.state = 370 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,11,self._ctx) + if la_ == 1: + self.state = 366 + self.match(SqlBaseParser.T__1) + self.state = 367 + self.colTypeList() + self.state = 368 + self.match(SqlBaseParser.T__2) + + + self.state = 373 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.USING: + self.state = 372 + self.tableProvider() + + + self.state = 375 + self.createTableClauses() + self.state = 380 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1 or _la==SqlBaseParser.AS or _la==SqlBaseParser.FROM or _la==SqlBaseParser.MAP or ((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & ((1 << (SqlBaseParser.REDUCE - 187)) | (1 << (SqlBaseParser.SELECT - 187)) | (1 << (SqlBaseParser.TABLE - 187)))) != 0) or _la==SqlBaseParser.VALUES or _la==SqlBaseParser.WITH: + self.state = 377 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 376 + self.match(SqlBaseParser.AS) + + + self.state = 379 + self.query() + + + pass + + elif la_ == 10: + localctx = SqlBaseParser.CreateTableContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 382 + if not self.legacy_create_hive_table_by_default_enabled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.legacy_create_hive_table_by_default_enabled") + self.state = 383 + self.createTableHeader() + self.state = 388 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1: + self.state = 384 + self.match(SqlBaseParser.T__1) + self.state = 385 + self.colTypeList() + self.state = 386 + self.match(SqlBaseParser.T__2) + + + self.state = 390 + self.tableProvider() + self.state = 391 + self.createTableClauses() + self.state = 396 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1 or _la==SqlBaseParser.AS or _la==SqlBaseParser.FROM or _la==SqlBaseParser.MAP or ((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & ((1 << (SqlBaseParser.REDUCE - 187)) | (1 << (SqlBaseParser.SELECT - 187)) | (1 << (SqlBaseParser.TABLE - 187)))) != 0) or _la==SqlBaseParser.VALUES or _la==SqlBaseParser.WITH: + self.state = 393 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 392 + self.match(SqlBaseParser.AS) + + + self.state = 395 + self.query() + + + pass + + elif la_ == 11: + localctx = SqlBaseParser.CreateHiveTableContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 398 + self.createTableHeader() + self.state = 403 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,18,self._ctx) + if la_ == 1: + self.state = 399 + self.match(SqlBaseParser.T__1) + self.state = 400 + localctx.columns = self.colTypeList() + self.state = 401 + self.match(SqlBaseParser.T__2) + + + self.state = 426 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.CLUSTERED or _la==SqlBaseParser.COMMENT or _la==SqlBaseParser.LOCATION or _la==SqlBaseParser.PARTITIONED or ((((_la - 202)) & ~0x3f) == 0 and ((1 << (_la - 202)) & ((1 << (SqlBaseParser.ROW - 202)) | (1 << (SqlBaseParser.SKEWED - 202)) | (1 << (SqlBaseParser.STORED - 202)) | (1 << (SqlBaseParser.TBLPROPERTIES - 202)))) != 0): + self.state = 424 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.COMMENT]: + self.state = 405 + self.commentSpec() + pass + elif token in [SqlBaseParser.PARTITIONED]: + self.state = 415 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,19,self._ctx) + if la_ == 1: + self.state = 406 + self.match(SqlBaseParser.PARTITIONED) + self.state = 407 + self.match(SqlBaseParser.BY) + self.state = 408 + self.match(SqlBaseParser.T__1) + self.state = 409 + localctx.partitionColumns = self.colTypeList() + self.state = 410 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 2: + self.state = 412 + self.match(SqlBaseParser.PARTITIONED) + self.state = 413 + self.match(SqlBaseParser.BY) + self.state = 414 + localctx.partitionColumnNames = self.identifierList() + pass + + + pass + elif token in [SqlBaseParser.CLUSTERED]: + self.state = 417 + self.bucketSpec() + pass + elif token in [SqlBaseParser.SKEWED]: + self.state = 418 + self.skewSpec() + pass + elif token in [SqlBaseParser.ROW]: + self.state = 419 + self.rowFormat() + pass + elif token in [SqlBaseParser.STORED]: + self.state = 420 + self.createFileFormat() + pass + elif token in [SqlBaseParser.LOCATION]: + self.state = 421 + self.locationSpec() + pass + elif token in [SqlBaseParser.TBLPROPERTIES]: + self.state = 422 + self.match(SqlBaseParser.TBLPROPERTIES) + self.state = 423 + localctx.tableProps = self.tablePropertyList() + pass + else: + raise NoViableAltException(self) + + self.state = 428 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 433 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1 or _la==SqlBaseParser.AS or _la==SqlBaseParser.FROM or _la==SqlBaseParser.MAP or ((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & ((1 << (SqlBaseParser.REDUCE - 187)) | (1 << (SqlBaseParser.SELECT - 187)) | (1 << (SqlBaseParser.TABLE - 187)))) != 0) or _la==SqlBaseParser.VALUES or _la==SqlBaseParser.WITH: + self.state = 430 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 429 + self.match(SqlBaseParser.AS) + + + self.state = 432 + self.query() + + + pass + + elif la_ == 12: + localctx = SqlBaseParser.CreateTableLikeContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 435 + self.match(SqlBaseParser.CREATE) + self.state = 436 + self.match(SqlBaseParser.TABLE) + self.state = 440 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,24,self._ctx) + if la_ == 1: + self.state = 437 + self.match(SqlBaseParser.IF) + self.state = 438 + self.match(SqlBaseParser.NOT) + self.state = 439 + self.match(SqlBaseParser.EXISTS) + + + self.state = 442 + localctx.target = self.tableIdentifier() + self.state = 443 + self.match(SqlBaseParser.LIKE) + self.state = 444 + localctx.source = self.tableIdentifier() + self.state = 453 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.LOCATION or ((((_la - 202)) & ~0x3f) == 0 and ((1 << (_la - 202)) & ((1 << (SqlBaseParser.ROW - 202)) | (1 << (SqlBaseParser.STORED - 202)) | (1 << (SqlBaseParser.TBLPROPERTIES - 202)) | (1 << (SqlBaseParser.USING - 202)))) != 0): + self.state = 451 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.USING]: + self.state = 445 + self.tableProvider() + pass + elif token in [SqlBaseParser.ROW]: + self.state = 446 + self.rowFormat() + pass + elif token in [SqlBaseParser.STORED]: + self.state = 447 + self.createFileFormat() + pass + elif token in [SqlBaseParser.LOCATION]: + self.state = 448 + self.locationSpec() + pass + elif token in [SqlBaseParser.TBLPROPERTIES]: + self.state = 449 + self.match(SqlBaseParser.TBLPROPERTIES) + self.state = 450 + localctx.tableProps = self.tablePropertyList() + pass + else: + raise NoViableAltException(self) + + self.state = 455 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 13: + localctx = SqlBaseParser.ReplaceTableContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 456 + self.replaceTableHeader() + self.state = 461 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1: + self.state = 457 + self.match(SqlBaseParser.T__1) + self.state = 458 + self.colTypeList() + self.state = 459 + self.match(SqlBaseParser.T__2) + + + self.state = 463 + self.tableProvider() + self.state = 464 + self.createTableClauses() + self.state = 469 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1 or _la==SqlBaseParser.AS or _la==SqlBaseParser.FROM or _la==SqlBaseParser.MAP or ((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & ((1 << (SqlBaseParser.REDUCE - 187)) | (1 << (SqlBaseParser.SELECT - 187)) | (1 << (SqlBaseParser.TABLE - 187)))) != 0) or _la==SqlBaseParser.VALUES or _la==SqlBaseParser.WITH: + self.state = 466 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 465 + self.match(SqlBaseParser.AS) + + + self.state = 468 + self.query() + + + pass + + elif la_ == 14: + localctx = SqlBaseParser.AnalyzeContext(self, localctx) + self.enterOuterAlt(localctx, 14) + self.state = 471 + self.match(SqlBaseParser.ANALYZE) + self.state = 472 + self.match(SqlBaseParser.TABLE) + self.state = 473 + self.multipartIdentifier() + self.state = 475 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 474 + self.partitionSpec() + + + self.state = 477 + self.match(SqlBaseParser.COMPUTE) + self.state = 478 + self.match(SqlBaseParser.STATISTICS) + self.state = 486 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,31,self._ctx) + if la_ == 1: + self.state = 479 + self.identifier() + + elif la_ == 2: + self.state = 480 + self.match(SqlBaseParser.FOR) + self.state = 481 + self.match(SqlBaseParser.COLUMNS) + self.state = 482 + self.identifierSeq() + + elif la_ == 3: + self.state = 483 + self.match(SqlBaseParser.FOR) + self.state = 484 + self.match(SqlBaseParser.ALL) + self.state = 485 + self.match(SqlBaseParser.COLUMNS) + + + pass + + elif la_ == 15: + localctx = SqlBaseParser.AddTableColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 15) + self.state = 488 + self.match(SqlBaseParser.ALTER) + self.state = 489 + self.match(SqlBaseParser.TABLE) + self.state = 490 + self.multipartIdentifier() + self.state = 491 + self.match(SqlBaseParser.ADD) + self.state = 492 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.COLUMN or _la==SqlBaseParser.COLUMNS): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 493 + localctx.columns = self.qualifiedColTypeWithPositionList() + pass + + elif la_ == 16: + localctx = SqlBaseParser.AddTableColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 16) + self.state = 495 + self.match(SqlBaseParser.ALTER) + self.state = 496 + self.match(SqlBaseParser.TABLE) + self.state = 497 + self.multipartIdentifier() + self.state = 498 + self.match(SqlBaseParser.ADD) + self.state = 499 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.COLUMN or _la==SqlBaseParser.COLUMNS): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 500 + self.match(SqlBaseParser.T__1) + self.state = 501 + localctx.columns = self.qualifiedColTypeWithPositionList() + self.state = 502 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 17: + localctx = SqlBaseParser.RenameTableColumnContext(self, localctx) + self.enterOuterAlt(localctx, 17) + self.state = 504 + self.match(SqlBaseParser.ALTER) + self.state = 505 + self.match(SqlBaseParser.TABLE) + self.state = 506 + localctx.table = self.multipartIdentifier() + self.state = 507 + self.match(SqlBaseParser.RENAME) + self.state = 508 + self.match(SqlBaseParser.COLUMN) + self.state = 509 + localctx.from_ = self.multipartIdentifier() + self.state = 510 + self.match(SqlBaseParser.TO) + self.state = 511 + localctx.to = self.errorCapturingIdentifier() + pass + + elif la_ == 18: + localctx = SqlBaseParser.DropTableColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 18) + self.state = 513 + self.match(SqlBaseParser.ALTER) + self.state = 514 + self.match(SqlBaseParser.TABLE) + self.state = 515 + self.multipartIdentifier() + self.state = 516 + self.match(SqlBaseParser.DROP) + self.state = 517 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.COLUMN or _la==SqlBaseParser.COLUMNS): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 518 + self.match(SqlBaseParser.T__1) + self.state = 519 + localctx.columns = self.multipartIdentifierList() + self.state = 520 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 19: + localctx = SqlBaseParser.DropTableColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 19) + self.state = 522 + self.match(SqlBaseParser.ALTER) + self.state = 523 + self.match(SqlBaseParser.TABLE) + self.state = 524 + self.multipartIdentifier() + self.state = 525 + self.match(SqlBaseParser.DROP) + self.state = 526 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.COLUMN or _la==SqlBaseParser.COLUMNS): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 527 + localctx.columns = self.multipartIdentifierList() + pass + + elif la_ == 20: + localctx = SqlBaseParser.RenameTableContext(self, localctx) + self.enterOuterAlt(localctx, 20) + self.state = 529 + self.match(SqlBaseParser.ALTER) + self.state = 530 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.TABLE or _la==SqlBaseParser.VIEW): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 531 + localctx.from_ = self.multipartIdentifier() + self.state = 532 + self.match(SqlBaseParser.RENAME) + self.state = 533 + self.match(SqlBaseParser.TO) + self.state = 534 + localctx.to = self.multipartIdentifier() + pass + + elif la_ == 21: + localctx = SqlBaseParser.SetTablePropertiesContext(self, localctx) + self.enterOuterAlt(localctx, 21) + self.state = 536 + self.match(SqlBaseParser.ALTER) + self.state = 537 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.TABLE or _la==SqlBaseParser.VIEW): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 538 + self.multipartIdentifier() + self.state = 539 + self.match(SqlBaseParser.SET) + self.state = 540 + self.match(SqlBaseParser.TBLPROPERTIES) + self.state = 541 + self.tablePropertyList() + pass + + elif la_ == 22: + localctx = SqlBaseParser.UnsetTablePropertiesContext(self, localctx) + self.enterOuterAlt(localctx, 22) + self.state = 543 + self.match(SqlBaseParser.ALTER) + self.state = 544 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.TABLE or _la==SqlBaseParser.VIEW): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 545 + self.multipartIdentifier() + self.state = 546 + self.match(SqlBaseParser.UNSET) + self.state = 547 + self.match(SqlBaseParser.TBLPROPERTIES) + self.state = 550 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.IF: + self.state = 548 + self.match(SqlBaseParser.IF) + self.state = 549 + self.match(SqlBaseParser.EXISTS) + + + self.state = 552 + self.tablePropertyList() + pass + + elif la_ == 23: + localctx = SqlBaseParser.AlterTableAlterColumnContext(self, localctx) + self.enterOuterAlt(localctx, 23) + self.state = 554 + self.match(SqlBaseParser.ALTER) + self.state = 555 + self.match(SqlBaseParser.TABLE) + self.state = 556 + localctx.table = self.multipartIdentifier() + self.state = 557 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.ALTER or _la==SqlBaseParser.CHANGE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 559 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,33,self._ctx) + if la_ == 1: + self.state = 558 + self.match(SqlBaseParser.COLUMN) + + + self.state = 561 + localctx.column = self.multipartIdentifier() + self.state = 563 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AFTER or _la==SqlBaseParser.COMMENT or _la==SqlBaseParser.DROP or _la==SqlBaseParser.FIRST or _la==SqlBaseParser.SET or _la==SqlBaseParser.TYPE: + self.state = 562 + self.alterColumnAction() + + + pass + + elif la_ == 24: + localctx = SqlBaseParser.HiveChangeColumnContext(self, localctx) + self.enterOuterAlt(localctx, 24) + self.state = 565 + self.match(SqlBaseParser.ALTER) + self.state = 566 + self.match(SqlBaseParser.TABLE) + self.state = 567 + localctx.table = self.multipartIdentifier() + self.state = 569 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 568 + self.partitionSpec() + + + self.state = 571 + self.match(SqlBaseParser.CHANGE) + self.state = 573 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,36,self._ctx) + if la_ == 1: + self.state = 572 + self.match(SqlBaseParser.COLUMN) + + + self.state = 575 + localctx.colName = self.multipartIdentifier() + self.state = 576 + self.colType() + self.state = 578 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AFTER or _la==SqlBaseParser.FIRST: + self.state = 577 + self.colPosition() + + + pass + + elif la_ == 25: + localctx = SqlBaseParser.HiveReplaceColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 25) + self.state = 580 + self.match(SqlBaseParser.ALTER) + self.state = 581 + self.match(SqlBaseParser.TABLE) + self.state = 582 + localctx.table = self.multipartIdentifier() + self.state = 584 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 583 + self.partitionSpec() + + + self.state = 586 + self.match(SqlBaseParser.REPLACE) + self.state = 587 + self.match(SqlBaseParser.COLUMNS) + self.state = 588 + self.match(SqlBaseParser.T__1) + self.state = 589 + localctx.columns = self.qualifiedColTypeWithPositionList() + self.state = 590 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 26: + localctx = SqlBaseParser.SetTableSerDeContext(self, localctx) + self.enterOuterAlt(localctx, 26) + self.state = 592 + self.match(SqlBaseParser.ALTER) + self.state = 593 + self.match(SqlBaseParser.TABLE) + self.state = 594 + self.multipartIdentifier() + self.state = 596 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 595 + self.partitionSpec() + + + self.state = 598 + self.match(SqlBaseParser.SET) + self.state = 599 + self.match(SqlBaseParser.SERDE) + self.state = 600 + self.match(SqlBaseParser.STRING) + self.state = 604 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.WITH: + self.state = 601 + self.match(SqlBaseParser.WITH) + self.state = 602 + self.match(SqlBaseParser.SERDEPROPERTIES) + self.state = 603 + self.tablePropertyList() + + + pass + + elif la_ == 27: + localctx = SqlBaseParser.SetTableSerDeContext(self, localctx) + self.enterOuterAlt(localctx, 27) + self.state = 606 + self.match(SqlBaseParser.ALTER) + self.state = 607 + self.match(SqlBaseParser.TABLE) + self.state = 608 + self.multipartIdentifier() + self.state = 610 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 609 + self.partitionSpec() + + + self.state = 612 + self.match(SqlBaseParser.SET) + self.state = 613 + self.match(SqlBaseParser.SERDEPROPERTIES) + self.state = 614 + self.tablePropertyList() + pass + + elif la_ == 28: + localctx = SqlBaseParser.AddTablePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 28) + self.state = 616 + self.match(SqlBaseParser.ALTER) + self.state = 617 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.TABLE or _la==SqlBaseParser.VIEW): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 618 + self.multipartIdentifier() + self.state = 619 + self.match(SqlBaseParser.ADD) + self.state = 623 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.IF: + self.state = 620 + self.match(SqlBaseParser.IF) + self.state = 621 + self.match(SqlBaseParser.NOT) + self.state = 622 + self.match(SqlBaseParser.EXISTS) + + + self.state = 626 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 625 + self.partitionSpecLocation() + self.state = 628 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==SqlBaseParser.PARTITION): + break + + pass + + elif la_ == 29: + localctx = SqlBaseParser.RenameTablePartitionContext(self, localctx) + self.enterOuterAlt(localctx, 29) + self.state = 630 + self.match(SqlBaseParser.ALTER) + self.state = 631 + self.match(SqlBaseParser.TABLE) + self.state = 632 + self.multipartIdentifier() + self.state = 633 + localctx.from_ = self.partitionSpec() + self.state = 634 + self.match(SqlBaseParser.RENAME) + self.state = 635 + self.match(SqlBaseParser.TO) + self.state = 636 + localctx.to = self.partitionSpec() + pass + + elif la_ == 30: + localctx = SqlBaseParser.DropTablePartitionsContext(self, localctx) + self.enterOuterAlt(localctx, 30) + self.state = 638 + self.match(SqlBaseParser.ALTER) + self.state = 639 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.TABLE or _la==SqlBaseParser.VIEW): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 640 + self.multipartIdentifier() + self.state = 641 + self.match(SqlBaseParser.DROP) + self.state = 644 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.IF: + self.state = 642 + self.match(SqlBaseParser.IF) + self.state = 643 + self.match(SqlBaseParser.EXISTS) + + + self.state = 646 + self.partitionSpec() + self.state = 651 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 647 + self.match(SqlBaseParser.T__3) + self.state = 648 + self.partitionSpec() + self.state = 653 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 655 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PURGE: + self.state = 654 + self.match(SqlBaseParser.PURGE) + + + pass + + elif la_ == 31: + localctx = SqlBaseParser.SetTableLocationContext(self, localctx) + self.enterOuterAlt(localctx, 31) + self.state = 657 + self.match(SqlBaseParser.ALTER) + self.state = 658 + self.match(SqlBaseParser.TABLE) + self.state = 659 + self.multipartIdentifier() + self.state = 661 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 660 + self.partitionSpec() + + + self.state = 663 + self.match(SqlBaseParser.SET) + self.state = 664 + self.locationSpec() + pass + + elif la_ == 32: + localctx = SqlBaseParser.RecoverPartitionsContext(self, localctx) + self.enterOuterAlt(localctx, 32) + self.state = 666 + self.match(SqlBaseParser.ALTER) + self.state = 667 + self.match(SqlBaseParser.TABLE) + self.state = 668 + self.multipartIdentifier() + self.state = 669 + self.match(SqlBaseParser.RECOVER) + self.state = 670 + self.match(SqlBaseParser.PARTITIONS) + pass + + elif la_ == 33: + localctx = SqlBaseParser.DropTableContext(self, localctx) + self.enterOuterAlt(localctx, 33) + self.state = 672 + self.match(SqlBaseParser.DROP) + self.state = 673 + self.match(SqlBaseParser.TABLE) + self.state = 676 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,48,self._ctx) + if la_ == 1: + self.state = 674 + self.match(SqlBaseParser.IF) + self.state = 675 + self.match(SqlBaseParser.EXISTS) + + + self.state = 678 + self.multipartIdentifier() + self.state = 680 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PURGE: + self.state = 679 + self.match(SqlBaseParser.PURGE) + + + pass + + elif la_ == 34: + localctx = SqlBaseParser.DropViewContext(self, localctx) + self.enterOuterAlt(localctx, 34) + self.state = 682 + self.match(SqlBaseParser.DROP) + self.state = 683 + self.match(SqlBaseParser.VIEW) + self.state = 686 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,50,self._ctx) + if la_ == 1: + self.state = 684 + self.match(SqlBaseParser.IF) + self.state = 685 + self.match(SqlBaseParser.EXISTS) + + + self.state = 688 + self.multipartIdentifier() + pass + + elif la_ == 35: + localctx = SqlBaseParser.CreateViewContext(self, localctx) + self.enterOuterAlt(localctx, 35) + self.state = 689 + self.match(SqlBaseParser.CREATE) + self.state = 692 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OR: + self.state = 690 + self.match(SqlBaseParser.OR) + self.state = 691 + self.match(SqlBaseParser.REPLACE) + + + self.state = 698 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.GLOBAL or _la==SqlBaseParser.TEMPORARY: + self.state = 695 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.GLOBAL: + self.state = 694 + self.match(SqlBaseParser.GLOBAL) + + + self.state = 697 + self.match(SqlBaseParser.TEMPORARY) + + + self.state = 700 + self.match(SqlBaseParser.VIEW) + self.state = 704 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,54,self._ctx) + if la_ == 1: + self.state = 701 + self.match(SqlBaseParser.IF) + self.state = 702 + self.match(SqlBaseParser.NOT) + self.state = 703 + self.match(SqlBaseParser.EXISTS) + + + self.state = 706 + self.multipartIdentifier() + self.state = 708 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1: + self.state = 707 + self.identifierCommentList() + + + self.state = 718 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.COMMENT or _la==SqlBaseParser.PARTITIONED or _la==SqlBaseParser.TBLPROPERTIES: + self.state = 716 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.COMMENT]: + self.state = 710 + self.commentSpec() + pass + elif token in [SqlBaseParser.PARTITIONED]: + self.state = 711 + self.match(SqlBaseParser.PARTITIONED) + self.state = 712 + self.match(SqlBaseParser.ON) + self.state = 713 + self.identifierList() + pass + elif token in [SqlBaseParser.TBLPROPERTIES]: + self.state = 714 + self.match(SqlBaseParser.TBLPROPERTIES) + self.state = 715 + self.tablePropertyList() + pass + else: + raise NoViableAltException(self) + + self.state = 720 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 721 + self.match(SqlBaseParser.AS) + self.state = 722 + self.query() + pass + + elif la_ == 36: + localctx = SqlBaseParser.CreateTempViewUsingContext(self, localctx) + self.enterOuterAlt(localctx, 36) + self.state = 724 + self.match(SqlBaseParser.CREATE) + self.state = 727 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OR: + self.state = 725 + self.match(SqlBaseParser.OR) + self.state = 726 + self.match(SqlBaseParser.REPLACE) + + + self.state = 730 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.GLOBAL: + self.state = 729 + self.match(SqlBaseParser.GLOBAL) + + + self.state = 732 + self.match(SqlBaseParser.TEMPORARY) + self.state = 733 + self.match(SqlBaseParser.VIEW) + self.state = 734 + self.tableIdentifier() + self.state = 739 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1: + self.state = 735 + self.match(SqlBaseParser.T__1) + self.state = 736 + self.colTypeList() + self.state = 737 + self.match(SqlBaseParser.T__2) + + + self.state = 741 + self.tableProvider() + self.state = 744 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OPTIONS: + self.state = 742 + self.match(SqlBaseParser.OPTIONS) + self.state = 743 + self.tablePropertyList() + + + pass + + elif la_ == 37: + localctx = SqlBaseParser.AlterViewQueryContext(self, localctx) + self.enterOuterAlt(localctx, 37) + self.state = 746 + self.match(SqlBaseParser.ALTER) + self.state = 747 + self.match(SqlBaseParser.VIEW) + self.state = 748 + self.multipartIdentifier() + self.state = 750 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 749 + self.match(SqlBaseParser.AS) + + + self.state = 752 + self.query() + pass + + elif la_ == 38: + localctx = SqlBaseParser.CreateFunctionContext(self, localctx) + self.enterOuterAlt(localctx, 38) + self.state = 754 + self.match(SqlBaseParser.CREATE) + self.state = 757 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OR: + self.state = 755 + self.match(SqlBaseParser.OR) + self.state = 756 + self.match(SqlBaseParser.REPLACE) + + + self.state = 760 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.TEMPORARY: + self.state = 759 + self.match(SqlBaseParser.TEMPORARY) + + + self.state = 762 + self.match(SqlBaseParser.FUNCTION) + self.state = 766 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,65,self._ctx) + if la_ == 1: + self.state = 763 + self.match(SqlBaseParser.IF) + self.state = 764 + self.match(SqlBaseParser.NOT) + self.state = 765 + self.match(SqlBaseParser.EXISTS) + + + self.state = 768 + self.multipartIdentifier() + self.state = 769 + self.match(SqlBaseParser.AS) + self.state = 770 + localctx.className = self.match(SqlBaseParser.STRING) + self.state = 780 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.USING: + self.state = 771 + self.match(SqlBaseParser.USING) + self.state = 772 + self.resource() + self.state = 777 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 773 + self.match(SqlBaseParser.T__3) + self.state = 774 + self.resource() + self.state = 779 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + pass + + elif la_ == 39: + localctx = SqlBaseParser.DropFunctionContext(self, localctx) + self.enterOuterAlt(localctx, 39) + self.state = 782 + self.match(SqlBaseParser.DROP) + self.state = 784 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.TEMPORARY: + self.state = 783 + self.match(SqlBaseParser.TEMPORARY) + + + self.state = 786 + self.match(SqlBaseParser.FUNCTION) + self.state = 789 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,69,self._ctx) + if la_ == 1: + self.state = 787 + self.match(SqlBaseParser.IF) + self.state = 788 + self.match(SqlBaseParser.EXISTS) + + + self.state = 791 + self.multipartIdentifier() + pass + + elif la_ == 40: + localctx = SqlBaseParser.ExplainContext(self, localctx) + self.enterOuterAlt(localctx, 40) + self.state = 792 + self.match(SqlBaseParser.EXPLAIN) + self.state = 794 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,70,self._ctx) + if la_ == 1: + self.state = 793 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.CODEGEN or _la==SqlBaseParser.COST or ((((_la - 86)) & ~0x3f) == 0 and ((1 << (_la - 86)) & ((1 << (SqlBaseParser.EXTENDED - 86)) | (1 << (SqlBaseParser.FORMATTED - 86)) | (1 << (SqlBaseParser.LOGICAL - 86)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 796 + self.statement() + pass + + elif la_ == 41: + localctx = SqlBaseParser.ShowTablesContext(self, localctx) + self.enterOuterAlt(localctx, 41) + self.state = 797 + self.match(SqlBaseParser.SHOW) + self.state = 798 + self.match(SqlBaseParser.TABLES) + self.state = 801 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.FROM or _la==SqlBaseParser.IN: + self.state = 799 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FROM or _la==SqlBaseParser.IN): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 800 + self.multipartIdentifier() + + + self.state = 807 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LIKE or _la==SqlBaseParser.STRING: + self.state = 804 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LIKE: + self.state = 803 + self.match(SqlBaseParser.LIKE) + + + self.state = 806 + localctx.pattern = self.match(SqlBaseParser.STRING) + + + pass + + elif la_ == 42: + localctx = SqlBaseParser.ShowTableContext(self, localctx) + self.enterOuterAlt(localctx, 42) + self.state = 809 + self.match(SqlBaseParser.SHOW) + self.state = 810 + self.match(SqlBaseParser.TABLE) + self.state = 811 + self.match(SqlBaseParser.EXTENDED) + self.state = 814 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.FROM or _la==SqlBaseParser.IN: + self.state = 812 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FROM or _la==SqlBaseParser.IN): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 813 + localctx.ns = self.multipartIdentifier() + + + self.state = 816 + self.match(SqlBaseParser.LIKE) + self.state = 817 + localctx.pattern = self.match(SqlBaseParser.STRING) + self.state = 819 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 818 + self.partitionSpec() + + + pass + + elif la_ == 43: + localctx = SqlBaseParser.ShowTblPropertiesContext(self, localctx) + self.enterOuterAlt(localctx, 43) + self.state = 821 + self.match(SqlBaseParser.SHOW) + self.state = 822 + self.match(SqlBaseParser.TBLPROPERTIES) + self.state = 823 + localctx.table = self.multipartIdentifier() + self.state = 828 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1: + self.state = 824 + self.match(SqlBaseParser.T__1) + self.state = 825 + localctx.key = self.tablePropertyKey() + self.state = 826 + self.match(SqlBaseParser.T__2) + + + pass + + elif la_ == 44: + localctx = SqlBaseParser.ShowColumnsContext(self, localctx) + self.enterOuterAlt(localctx, 44) + self.state = 830 + self.match(SqlBaseParser.SHOW) + self.state = 831 + self.match(SqlBaseParser.COLUMNS) + self.state = 832 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FROM or _la==SqlBaseParser.IN): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 833 + localctx.table = self.multipartIdentifier() + self.state = 836 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.FROM or _la==SqlBaseParser.IN: + self.state = 834 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FROM or _la==SqlBaseParser.IN): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 835 + localctx.ns = self.multipartIdentifier() + + + pass + + elif la_ == 45: + localctx = SqlBaseParser.ShowViewsContext(self, localctx) + self.enterOuterAlt(localctx, 45) + self.state = 838 + self.match(SqlBaseParser.SHOW) + self.state = 839 + self.match(SqlBaseParser.VIEWS) + self.state = 842 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.FROM or _la==SqlBaseParser.IN: + self.state = 840 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FROM or _la==SqlBaseParser.IN): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 841 + self.multipartIdentifier() + + + self.state = 848 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LIKE or _la==SqlBaseParser.STRING: + self.state = 845 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LIKE: + self.state = 844 + self.match(SqlBaseParser.LIKE) + + + self.state = 847 + localctx.pattern = self.match(SqlBaseParser.STRING) + + + pass + + elif la_ == 46: + localctx = SqlBaseParser.ShowPartitionsContext(self, localctx) + self.enterOuterAlt(localctx, 46) + self.state = 850 + self.match(SqlBaseParser.SHOW) + self.state = 851 + self.match(SqlBaseParser.PARTITIONS) + self.state = 852 + self.multipartIdentifier() + self.state = 854 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 853 + self.partitionSpec() + + + pass + + elif la_ == 47: + localctx = SqlBaseParser.ShowFunctionsContext(self, localctx) + self.enterOuterAlt(localctx, 47) + self.state = 856 + self.match(SqlBaseParser.SHOW) + self.state = 858 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,82,self._ctx) + if la_ == 1: + self.state = 857 + self.identifier() + + + self.state = 860 + self.match(SqlBaseParser.FUNCTIONS) + self.state = 868 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,85,self._ctx) + if la_ == 1: + self.state = 862 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,83,self._ctx) + if la_ == 1: + self.state = 861 + self.match(SqlBaseParser.LIKE) + + + self.state = 866 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,84,self._ctx) + if la_ == 1: + self.state = 864 + self.multipartIdentifier() + pass + + elif la_ == 2: + self.state = 865 + localctx.pattern = self.match(SqlBaseParser.STRING) + pass + + + + + pass + + elif la_ == 48: + localctx = SqlBaseParser.ShowCreateTableContext(self, localctx) + self.enterOuterAlt(localctx, 48) + self.state = 870 + self.match(SqlBaseParser.SHOW) + self.state = 871 + self.match(SqlBaseParser.CREATE) + self.state = 872 + self.match(SqlBaseParser.TABLE) + self.state = 873 + self.multipartIdentifier() + self.state = 876 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 874 + self.match(SqlBaseParser.AS) + self.state = 875 + self.match(SqlBaseParser.SERDE) + + + pass + + elif la_ == 49: + localctx = SqlBaseParser.ShowCurrentNamespaceContext(self, localctx) + self.enterOuterAlt(localctx, 49) + self.state = 878 + self.match(SqlBaseParser.SHOW) + self.state = 879 + self.match(SqlBaseParser.CURRENT) + self.state = 880 + self.match(SqlBaseParser.NAMESPACE) + pass + + elif la_ == 50: + localctx = SqlBaseParser.DescribeFunctionContext(self, localctx) + self.enterOuterAlt(localctx, 50) + self.state = 881 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DESC or _la==SqlBaseParser.DESCRIBE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 882 + self.match(SqlBaseParser.FUNCTION) + self.state = 884 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,87,self._ctx) + if la_ == 1: + self.state = 883 + self.match(SqlBaseParser.EXTENDED) + + + self.state = 886 + self.describeFuncName() + pass + + elif la_ == 51: + localctx = SqlBaseParser.DescribeNamespaceContext(self, localctx) + self.enterOuterAlt(localctx, 51) + self.state = 887 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DESC or _la==SqlBaseParser.DESCRIBE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 888 + self.namespace() + self.state = 890 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,88,self._ctx) + if la_ == 1: + self.state = 889 + self.match(SqlBaseParser.EXTENDED) + + + self.state = 892 + self.multipartIdentifier() + pass + + elif la_ == 52: + localctx = SqlBaseParser.DescribeRelationContext(self, localctx) + self.enterOuterAlt(localctx, 52) + self.state = 894 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DESC or _la==SqlBaseParser.DESCRIBE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 896 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,89,self._ctx) + if la_ == 1: + self.state = 895 + self.match(SqlBaseParser.TABLE) + + + self.state = 899 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,90,self._ctx) + if la_ == 1: + self.state = 898 + localctx.option = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.EXTENDED or _la==SqlBaseParser.FORMATTED): + localctx.option = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 901 + self.multipartIdentifier() + self.state = 903 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,91,self._ctx) + if la_ == 1: + self.state = 902 + self.partitionSpec() + + + self.state = 906 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,92,self._ctx) + if la_ == 1: + self.state = 905 + self.describeColName() + + + pass + + elif la_ == 53: + localctx = SqlBaseParser.DescribeQueryContext(self, localctx) + self.enterOuterAlt(localctx, 53) + self.state = 908 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DESC or _la==SqlBaseParser.DESCRIBE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 910 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.QUERY: + self.state = 909 + self.match(SqlBaseParser.QUERY) + + + self.state = 912 + self.query() + pass + + elif la_ == 54: + localctx = SqlBaseParser.CommentNamespaceContext(self, localctx) + self.enterOuterAlt(localctx, 54) + self.state = 913 + self.match(SqlBaseParser.COMMENT) + self.state = 914 + self.match(SqlBaseParser.ON) + self.state = 915 + self.namespace() + self.state = 916 + self.multipartIdentifier() + self.state = 917 + self.match(SqlBaseParser.IS) + self.state = 918 + localctx.comment = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.NULL or _la==SqlBaseParser.STRING): + localctx.comment = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 55: + localctx = SqlBaseParser.CommentTableContext(self, localctx) + self.enterOuterAlt(localctx, 55) + self.state = 920 + self.match(SqlBaseParser.COMMENT) + self.state = 921 + self.match(SqlBaseParser.ON) + self.state = 922 + self.match(SqlBaseParser.TABLE) + self.state = 923 + self.multipartIdentifier() + self.state = 924 + self.match(SqlBaseParser.IS) + self.state = 925 + localctx.comment = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.NULL or _la==SqlBaseParser.STRING): + localctx.comment = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 56: + localctx = SqlBaseParser.RefreshTableContext(self, localctx) + self.enterOuterAlt(localctx, 56) + self.state = 927 + self.match(SqlBaseParser.REFRESH) + self.state = 928 + self.match(SqlBaseParser.TABLE) + self.state = 929 + self.multipartIdentifier() + pass + + elif la_ == 57: + localctx = SqlBaseParser.RefreshResourceContext(self, localctx) + self.enterOuterAlt(localctx, 57) + self.state = 930 + self.match(SqlBaseParser.REFRESH) + self.state = 938 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,95,self._ctx) + if la_ == 1: + self.state = 931 + self.match(SqlBaseParser.STRING) + pass + + elif la_ == 2: + self.state = 935 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,94,self._ctx) + while _alt!=1 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1+1: + self.state = 932 + self.matchWildcard() + self.state = 937 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,94,self._ctx) + + pass + + + pass + + elif la_ == 58: + localctx = SqlBaseParser.CacheTableContext(self, localctx) + self.enterOuterAlt(localctx, 58) + self.state = 940 + self.match(SqlBaseParser.CACHE) + self.state = 942 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LAZY: + self.state = 941 + self.match(SqlBaseParser.LAZY) + + + self.state = 944 + self.match(SqlBaseParser.TABLE) + self.state = 945 + self.multipartIdentifier() + self.state = 948 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OPTIONS: + self.state = 946 + self.match(SqlBaseParser.OPTIONS) + self.state = 947 + localctx.options = self.tablePropertyList() + + + self.state = 954 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__1 or _la==SqlBaseParser.AS or _la==SqlBaseParser.FROM or _la==SqlBaseParser.MAP or ((((_la - 187)) & ~0x3f) == 0 and ((1 << (_la - 187)) & ((1 << (SqlBaseParser.REDUCE - 187)) | (1 << (SqlBaseParser.SELECT - 187)) | (1 << (SqlBaseParser.TABLE - 187)))) != 0) or _la==SqlBaseParser.VALUES or _la==SqlBaseParser.WITH: + self.state = 951 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 950 + self.match(SqlBaseParser.AS) + + + self.state = 953 + self.query() + + + pass + + elif la_ == 59: + localctx = SqlBaseParser.UncacheTableContext(self, localctx) + self.enterOuterAlt(localctx, 59) + self.state = 956 + self.match(SqlBaseParser.UNCACHE) + self.state = 957 + self.match(SqlBaseParser.TABLE) + self.state = 960 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,100,self._ctx) + if la_ == 1: + self.state = 958 + self.match(SqlBaseParser.IF) + self.state = 959 + self.match(SqlBaseParser.EXISTS) + + + self.state = 962 + self.multipartIdentifier() + pass + + elif la_ == 60: + localctx = SqlBaseParser.ClearCacheContext(self, localctx) + self.enterOuterAlt(localctx, 60) + self.state = 963 + self.match(SqlBaseParser.CLEAR) + self.state = 964 + self.match(SqlBaseParser.CACHE) + pass + + elif la_ == 61: + localctx = SqlBaseParser.LoadDataContext(self, localctx) + self.enterOuterAlt(localctx, 61) + self.state = 965 + self.match(SqlBaseParser.LOAD) + self.state = 966 + self.match(SqlBaseParser.DATA) + self.state = 968 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LOCAL: + self.state = 967 + self.match(SqlBaseParser.LOCAL) + + + self.state = 970 + self.match(SqlBaseParser.INPATH) + self.state = 971 + localctx.path = self.match(SqlBaseParser.STRING) + self.state = 973 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OVERWRITE: + self.state = 972 + self.match(SqlBaseParser.OVERWRITE) + + + self.state = 975 + self.match(SqlBaseParser.INTO) + self.state = 976 + self.match(SqlBaseParser.TABLE) + self.state = 977 + self.multipartIdentifier() + self.state = 979 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 978 + self.partitionSpec() + + + pass + + elif la_ == 62: + localctx = SqlBaseParser.TruncateTableContext(self, localctx) + self.enterOuterAlt(localctx, 62) + self.state = 981 + self.match(SqlBaseParser.TRUNCATE) + self.state = 982 + self.match(SqlBaseParser.TABLE) + self.state = 983 + self.multipartIdentifier() + self.state = 985 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 984 + self.partitionSpec() + + + pass + + elif la_ == 63: + localctx = SqlBaseParser.RepairTableContext(self, localctx) + self.enterOuterAlt(localctx, 63) + self.state = 987 + self.match(SqlBaseParser.MSCK) + self.state = 988 + self.match(SqlBaseParser.REPAIR) + self.state = 989 + self.match(SqlBaseParser.TABLE) + self.state = 990 + self.multipartIdentifier() + pass + + elif la_ == 64: + localctx = SqlBaseParser.ManageResourceContext(self, localctx) + self.enterOuterAlt(localctx, 64) + self.state = 991 + localctx.op = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.ADD or _la==SqlBaseParser.LIST): + localctx.op = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 992 + self.identifier() + self.state = 1000 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,106,self._ctx) + if la_ == 1: + self.state = 993 + self.match(SqlBaseParser.STRING) + pass + + elif la_ == 2: + self.state = 997 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,105,self._ctx) + while _alt!=1 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1+1: + self.state = 994 + self.matchWildcard() + self.state = 999 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,105,self._ctx) + + pass + + + pass + + elif la_ == 65: + localctx = SqlBaseParser.FailNativeCommandContext(self, localctx) + self.enterOuterAlt(localctx, 65) + self.state = 1002 + self.match(SqlBaseParser.SET) + self.state = 1003 + self.match(SqlBaseParser.ROLE) + self.state = 1007 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,107,self._ctx) + while _alt!=1 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1+1: + self.state = 1004 + self.matchWildcard() + self.state = 1009 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,107,self._ctx) + + pass + + elif la_ == 66: + localctx = SqlBaseParser.SetConfigurationContext(self, localctx) + self.enterOuterAlt(localctx, 66) + self.state = 1010 + self.match(SqlBaseParser.SET) + self.state = 1014 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,108,self._ctx) + while _alt!=1 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1+1: + self.state = 1011 + self.matchWildcard() + self.state = 1016 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,108,self._ctx) + + pass + + elif la_ == 67: + localctx = SqlBaseParser.ResetConfigurationContext(self, localctx) + self.enterOuterAlt(localctx, 67) + self.state = 1017 + self.match(SqlBaseParser.RESET) + pass + + elif la_ == 68: + localctx = SqlBaseParser.FailNativeCommandContext(self, localctx) + self.enterOuterAlt(localctx, 68) + self.state = 1018 + self.unsupportedHiveNativeCommands() + self.state = 1022 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,109,self._ctx) + while _alt!=1 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1+1: + self.state = 1019 + self.matchWildcard() + self.state = 1024 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,109,self._ctx) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnsupportedHiveNativeCommandsContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.kw1 = None # Token + self.kw2 = None # Token + self.kw3 = None # Token + self.kw4 = None # Token + self.kw5 = None # Token + self.kw6 = None # Token + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + + def ROLE(self): + return self.getToken(SqlBaseParser.ROLE, 0) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + + def GRANT(self): + return self.getToken(SqlBaseParser.GRANT, 0) + + def REVOKE(self): + return self.getToken(SqlBaseParser.REVOKE, 0) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + + def PRINCIPALS(self): + return self.getToken(SqlBaseParser.PRINCIPALS, 0) + + def ROLES(self): + return self.getToken(SqlBaseParser.ROLES, 0) + + def CURRENT(self): + return self.getToken(SqlBaseParser.CURRENT, 0) + + def EXPORT(self): + return self.getToken(SqlBaseParser.EXPORT, 0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + + def IMPORT(self): + return self.getToken(SqlBaseParser.IMPORT, 0) + + def COMPACTIONS(self): + return self.getToken(SqlBaseParser.COMPACTIONS, 0) + + def TRANSACTIONS(self): + return self.getToken(SqlBaseParser.TRANSACTIONS, 0) + + def INDEXES(self): + return self.getToken(SqlBaseParser.INDEXES, 0) + + def LOCKS(self): + return self.getToken(SqlBaseParser.LOCKS, 0) + + def INDEX(self): + return self.getToken(SqlBaseParser.INDEX, 0) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + + def LOCK(self): + return self.getToken(SqlBaseParser.LOCK, 0) + + def DATABASE(self): + return self.getToken(SqlBaseParser.DATABASE, 0) + + def UNLOCK(self): + return self.getToken(SqlBaseParser.UNLOCK, 0) + + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + + def MACRO(self): + return self.getToken(SqlBaseParser.MACRO, 0) + + def tableIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.TableIdentifierContext,0) + + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def CLUSTERED(self): + return self.getToken(SqlBaseParser.CLUSTERED, 0) + + def BY(self): + return self.getToken(SqlBaseParser.BY, 0) + + def SORTED(self): + return self.getToken(SqlBaseParser.SORTED, 0) + + def SKEWED(self): + return self.getToken(SqlBaseParser.SKEWED, 0) + + def STORED(self): + return self.getToken(SqlBaseParser.STORED, 0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def DIRECTORIES(self): + return self.getToken(SqlBaseParser.DIRECTORIES, 0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + + def LOCATION(self): + return self.getToken(SqlBaseParser.LOCATION, 0) + + def EXCHANGE(self): + return self.getToken(SqlBaseParser.EXCHANGE, 0) + + def PARTITION(self): + return self.getToken(SqlBaseParser.PARTITION, 0) + + def ARCHIVE(self): + return self.getToken(SqlBaseParser.ARCHIVE, 0) + + def UNARCHIVE(self): + return self.getToken(SqlBaseParser.UNARCHIVE, 0) + + def TOUCH(self): + return self.getToken(SqlBaseParser.TOUCH, 0) + + def COMPACT(self): + return self.getToken(SqlBaseParser.COMPACT, 0) + + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + + def CONCATENATE(self): + return self.getToken(SqlBaseParser.CONCATENATE, 0) + + def FILEFORMAT(self): + return self.getToken(SqlBaseParser.FILEFORMAT, 0) + + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + + def START(self): + return self.getToken(SqlBaseParser.START, 0) + + def TRANSACTION(self): + return self.getToken(SqlBaseParser.TRANSACTION, 0) + + def COMMIT(self): + return self.getToken(SqlBaseParser.COMMIT, 0) + + def ROLLBACK(self): + return self.getToken(SqlBaseParser.ROLLBACK, 0) + + def DFS(self): + return self.getToken(SqlBaseParser.DFS, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_unsupportedHiveNativeCommands + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnsupportedHiveNativeCommands" ): + listener.enterUnsupportedHiveNativeCommands(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnsupportedHiveNativeCommands" ): + listener.exitUnsupportedHiveNativeCommands(self) + + + + + def unsupportedHiveNativeCommands(self): + + localctx = SqlBaseParser.UnsupportedHiveNativeCommandsContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_unsupportedHiveNativeCommands) + self._la = 0 # Token type + try: + self.state = 1195 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,118,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1027 + localctx.kw1 = self.match(SqlBaseParser.CREATE) + self.state = 1028 + localctx.kw2 = self.match(SqlBaseParser.ROLE) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1029 + localctx.kw1 = self.match(SqlBaseParser.DROP) + self.state = 1030 + localctx.kw2 = self.match(SqlBaseParser.ROLE) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1031 + localctx.kw1 = self.match(SqlBaseParser.GRANT) + self.state = 1033 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,111,self._ctx) + if la_ == 1: + self.state = 1032 + localctx.kw2 = self.match(SqlBaseParser.ROLE) + + + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1035 + localctx.kw1 = self.match(SqlBaseParser.REVOKE) + self.state = 1037 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,112,self._ctx) + if la_ == 1: + self.state = 1036 + localctx.kw2 = self.match(SqlBaseParser.ROLE) + + + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1039 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1040 + localctx.kw2 = self.match(SqlBaseParser.GRANT) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 1041 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1042 + localctx.kw2 = self.match(SqlBaseParser.ROLE) + self.state = 1044 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,113,self._ctx) + if la_ == 1: + self.state = 1043 + localctx.kw3 = self.match(SqlBaseParser.GRANT) + + + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 1046 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1047 + localctx.kw2 = self.match(SqlBaseParser.PRINCIPALS) + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 1048 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1049 + localctx.kw2 = self.match(SqlBaseParser.ROLES) + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 1050 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1051 + localctx.kw2 = self.match(SqlBaseParser.CURRENT) + self.state = 1052 + localctx.kw3 = self.match(SqlBaseParser.ROLES) + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 1053 + localctx.kw1 = self.match(SqlBaseParser.EXPORT) + self.state = 1054 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 1055 + localctx.kw1 = self.match(SqlBaseParser.IMPORT) + self.state = 1056 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 1057 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1058 + localctx.kw2 = self.match(SqlBaseParser.COMPACTIONS) + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 1059 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1060 + localctx.kw2 = self.match(SqlBaseParser.CREATE) + self.state = 1061 + localctx.kw3 = self.match(SqlBaseParser.TABLE) + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 1062 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1063 + localctx.kw2 = self.match(SqlBaseParser.TRANSACTIONS) + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 1064 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1065 + localctx.kw2 = self.match(SqlBaseParser.INDEXES) + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 1066 + localctx.kw1 = self.match(SqlBaseParser.SHOW) + self.state = 1067 + localctx.kw2 = self.match(SqlBaseParser.LOCKS) + pass + + elif la_ == 17: + self.enterOuterAlt(localctx, 17) + self.state = 1068 + localctx.kw1 = self.match(SqlBaseParser.CREATE) + self.state = 1069 + localctx.kw2 = self.match(SqlBaseParser.INDEX) + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 1070 + localctx.kw1 = self.match(SqlBaseParser.DROP) + self.state = 1071 + localctx.kw2 = self.match(SqlBaseParser.INDEX) + pass + + elif la_ == 19: + self.enterOuterAlt(localctx, 19) + self.state = 1072 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1073 + localctx.kw2 = self.match(SqlBaseParser.INDEX) + pass + + elif la_ == 20: + self.enterOuterAlt(localctx, 20) + self.state = 1074 + localctx.kw1 = self.match(SqlBaseParser.LOCK) + self.state = 1075 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + pass + + elif la_ == 21: + self.enterOuterAlt(localctx, 21) + self.state = 1076 + localctx.kw1 = self.match(SqlBaseParser.LOCK) + self.state = 1077 + localctx.kw2 = self.match(SqlBaseParser.DATABASE) + pass + + elif la_ == 22: + self.enterOuterAlt(localctx, 22) + self.state = 1078 + localctx.kw1 = self.match(SqlBaseParser.UNLOCK) + self.state = 1079 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + pass + + elif la_ == 23: + self.enterOuterAlt(localctx, 23) + self.state = 1080 + localctx.kw1 = self.match(SqlBaseParser.UNLOCK) + self.state = 1081 + localctx.kw2 = self.match(SqlBaseParser.DATABASE) + pass + + elif la_ == 24: + self.enterOuterAlt(localctx, 24) + self.state = 1082 + localctx.kw1 = self.match(SqlBaseParser.CREATE) + self.state = 1083 + localctx.kw2 = self.match(SqlBaseParser.TEMPORARY) + self.state = 1084 + localctx.kw3 = self.match(SqlBaseParser.MACRO) + pass + + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 1085 + localctx.kw1 = self.match(SqlBaseParser.DROP) + self.state = 1086 + localctx.kw2 = self.match(SqlBaseParser.TEMPORARY) + self.state = 1087 + localctx.kw3 = self.match(SqlBaseParser.MACRO) + pass + + elif la_ == 26: + self.enterOuterAlt(localctx, 26) + self.state = 1088 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1089 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1090 + self.tableIdentifier() + self.state = 1091 + localctx.kw3 = self.match(SqlBaseParser.NOT) + self.state = 1092 + localctx.kw4 = self.match(SqlBaseParser.CLUSTERED) + pass + + elif la_ == 27: + self.enterOuterAlt(localctx, 27) + self.state = 1094 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1095 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1096 + self.tableIdentifier() + self.state = 1097 + localctx.kw3 = self.match(SqlBaseParser.CLUSTERED) + self.state = 1098 + localctx.kw4 = self.match(SqlBaseParser.BY) + pass + + elif la_ == 28: + self.enterOuterAlt(localctx, 28) + self.state = 1100 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1101 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1102 + self.tableIdentifier() + self.state = 1103 + localctx.kw3 = self.match(SqlBaseParser.NOT) + self.state = 1104 + localctx.kw4 = self.match(SqlBaseParser.SORTED) + pass + + elif la_ == 29: + self.enterOuterAlt(localctx, 29) + self.state = 1106 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1107 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1108 + self.tableIdentifier() + self.state = 1109 + localctx.kw3 = self.match(SqlBaseParser.SKEWED) + self.state = 1110 + localctx.kw4 = self.match(SqlBaseParser.BY) + pass + + elif la_ == 30: + self.enterOuterAlt(localctx, 30) + self.state = 1112 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1113 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1114 + self.tableIdentifier() + self.state = 1115 + localctx.kw3 = self.match(SqlBaseParser.NOT) + self.state = 1116 + localctx.kw4 = self.match(SqlBaseParser.SKEWED) + pass + + elif la_ == 31: + self.enterOuterAlt(localctx, 31) + self.state = 1118 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1119 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1120 + self.tableIdentifier() + self.state = 1121 + localctx.kw3 = self.match(SqlBaseParser.NOT) + self.state = 1122 + localctx.kw4 = self.match(SqlBaseParser.STORED) + self.state = 1123 + localctx.kw5 = self.match(SqlBaseParser.AS) + self.state = 1124 + localctx.kw6 = self.match(SqlBaseParser.DIRECTORIES) + pass + + elif la_ == 32: + self.enterOuterAlt(localctx, 32) + self.state = 1126 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1127 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1128 + self.tableIdentifier() + self.state = 1129 + localctx.kw3 = self.match(SqlBaseParser.SET) + self.state = 1130 + localctx.kw4 = self.match(SqlBaseParser.SKEWED) + self.state = 1131 + localctx.kw5 = self.match(SqlBaseParser.LOCATION) + pass + + elif la_ == 33: + self.enterOuterAlt(localctx, 33) + self.state = 1133 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1134 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1135 + self.tableIdentifier() + self.state = 1136 + localctx.kw3 = self.match(SqlBaseParser.EXCHANGE) + self.state = 1137 + localctx.kw4 = self.match(SqlBaseParser.PARTITION) + pass + + elif la_ == 34: + self.enterOuterAlt(localctx, 34) + self.state = 1139 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1140 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1141 + self.tableIdentifier() + self.state = 1142 + localctx.kw3 = self.match(SqlBaseParser.ARCHIVE) + self.state = 1143 + localctx.kw4 = self.match(SqlBaseParser.PARTITION) + pass + + elif la_ == 35: + self.enterOuterAlt(localctx, 35) + self.state = 1145 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1146 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1147 + self.tableIdentifier() + self.state = 1148 + localctx.kw3 = self.match(SqlBaseParser.UNARCHIVE) + self.state = 1149 + localctx.kw4 = self.match(SqlBaseParser.PARTITION) + pass + + elif la_ == 36: + self.enterOuterAlt(localctx, 36) + self.state = 1151 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1152 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1153 + self.tableIdentifier() + self.state = 1154 + localctx.kw3 = self.match(SqlBaseParser.TOUCH) + pass + + elif la_ == 37: + self.enterOuterAlt(localctx, 37) + self.state = 1156 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1157 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1158 + self.tableIdentifier() + self.state = 1160 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 1159 + self.partitionSpec() + + + self.state = 1162 + localctx.kw3 = self.match(SqlBaseParser.COMPACT) + pass + + elif la_ == 38: + self.enterOuterAlt(localctx, 38) + self.state = 1164 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1165 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1166 + self.tableIdentifier() + self.state = 1168 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 1167 + self.partitionSpec() + + + self.state = 1170 + localctx.kw3 = self.match(SqlBaseParser.CONCATENATE) + pass + + elif la_ == 39: + self.enterOuterAlt(localctx, 39) + self.state = 1172 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1173 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1174 + self.tableIdentifier() + self.state = 1176 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 1175 + self.partitionSpec() + + + self.state = 1178 + localctx.kw3 = self.match(SqlBaseParser.SET) + self.state = 1179 + localctx.kw4 = self.match(SqlBaseParser.FILEFORMAT) + pass + + elif la_ == 40: + self.enterOuterAlt(localctx, 40) + self.state = 1181 + localctx.kw1 = self.match(SqlBaseParser.ALTER) + self.state = 1182 + localctx.kw2 = self.match(SqlBaseParser.TABLE) + self.state = 1183 + self.tableIdentifier() + self.state = 1185 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 1184 + self.partitionSpec() + + + self.state = 1187 + localctx.kw3 = self.match(SqlBaseParser.REPLACE) + self.state = 1188 + localctx.kw4 = self.match(SqlBaseParser.COLUMNS) + pass + + elif la_ == 41: + self.enterOuterAlt(localctx, 41) + self.state = 1190 + localctx.kw1 = self.match(SqlBaseParser.START) + self.state = 1191 + localctx.kw2 = self.match(SqlBaseParser.TRANSACTION) + pass + + elif la_ == 42: + self.enterOuterAlt(localctx, 42) + self.state = 1192 + localctx.kw1 = self.match(SqlBaseParser.COMMIT) + pass + + elif la_ == 43: + self.enterOuterAlt(localctx, 43) + self.state = 1193 + localctx.kw1 = self.match(SqlBaseParser.ROLLBACK) + pass + + elif la_ == 44: + self.enterOuterAlt(localctx, 44) + self.state = 1194 + localctx.kw1 = self.match(SqlBaseParser.DFS) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CreateTableHeaderContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + + def EXTERNAL(self): + return self.getToken(SqlBaseParser.EXTERNAL, 0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_createTableHeader + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTableHeader" ): + listener.enterCreateTableHeader(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTableHeader" ): + listener.exitCreateTableHeader(self) + + + + + def createTableHeader(self): + + localctx = SqlBaseParser.CreateTableHeaderContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_createTableHeader) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1197 + self.match(SqlBaseParser.CREATE) + self.state = 1199 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.TEMPORARY: + self.state = 1198 + self.match(SqlBaseParser.TEMPORARY) + + + self.state = 1202 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.EXTERNAL: + self.state = 1201 + self.match(SqlBaseParser.EXTERNAL) + + + self.state = 1204 + self.match(SqlBaseParser.TABLE) + self.state = 1208 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,121,self._ctx) + if la_ == 1: + self.state = 1205 + self.match(SqlBaseParser.IF) + self.state = 1206 + self.match(SqlBaseParser.NOT) + self.state = 1207 + self.match(SqlBaseParser.EXISTS) + + + self.state = 1210 + self.multipartIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ReplaceTableHeaderContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + + def OR(self): + return self.getToken(SqlBaseParser.OR, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_replaceTableHeader + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReplaceTableHeader" ): + listener.enterReplaceTableHeader(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReplaceTableHeader" ): + listener.exitReplaceTableHeader(self) + + + + + def replaceTableHeader(self): + + localctx = SqlBaseParser.ReplaceTableHeaderContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_replaceTableHeader) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1214 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.CREATE: + self.state = 1212 + self.match(SqlBaseParser.CREATE) + self.state = 1213 + self.match(SqlBaseParser.OR) + + + self.state = 1216 + self.match(SqlBaseParser.REPLACE) + self.state = 1217 + self.match(SqlBaseParser.TABLE) + self.state = 1218 + self.multipartIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BucketSpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def CLUSTERED(self): + return self.getToken(SqlBaseParser.CLUSTERED, 0) + + def BY(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.BY) + else: + return self.getToken(SqlBaseParser.BY, i) + + def identifierList(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,0) + + + def INTO(self): + return self.getToken(SqlBaseParser.INTO, 0) + + def INTEGER_VALUE(self): + return self.getToken(SqlBaseParser.INTEGER_VALUE, 0) + + def BUCKETS(self): + return self.getToken(SqlBaseParser.BUCKETS, 0) + + def SORTED(self): + return self.getToken(SqlBaseParser.SORTED, 0) + + def orderedIdentifierList(self): + return self.getTypedRuleContext(SqlBaseParser.OrderedIdentifierListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_bucketSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBucketSpec" ): + listener.enterBucketSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBucketSpec" ): + listener.exitBucketSpec(self) + + + + + def bucketSpec(self): + + localctx = SqlBaseParser.BucketSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_bucketSpec) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1220 + self.match(SqlBaseParser.CLUSTERED) + self.state = 1221 + self.match(SqlBaseParser.BY) + self.state = 1222 + self.identifierList() + self.state = 1226 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.SORTED: + self.state = 1223 + self.match(SqlBaseParser.SORTED) + self.state = 1224 + self.match(SqlBaseParser.BY) + self.state = 1225 + self.orderedIdentifierList() + + + self.state = 1228 + self.match(SqlBaseParser.INTO) + self.state = 1229 + self.match(SqlBaseParser.INTEGER_VALUE) + self.state = 1230 + self.match(SqlBaseParser.BUCKETS) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SkewSpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SKEWED(self): + return self.getToken(SqlBaseParser.SKEWED, 0) + + def BY(self): + return self.getToken(SqlBaseParser.BY, 0) + + def identifierList(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,0) + + + def ON(self): + return self.getToken(SqlBaseParser.ON, 0) + + def constantList(self): + return self.getTypedRuleContext(SqlBaseParser.ConstantListContext,0) + + + def nestedConstantList(self): + return self.getTypedRuleContext(SqlBaseParser.NestedConstantListContext,0) + + + def STORED(self): + return self.getToken(SqlBaseParser.STORED, 0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def DIRECTORIES(self): + return self.getToken(SqlBaseParser.DIRECTORIES, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_skewSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSkewSpec" ): + listener.enterSkewSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSkewSpec" ): + listener.exitSkewSpec(self) + + + + + def skewSpec(self): + + localctx = SqlBaseParser.SkewSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_skewSpec) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1232 + self.match(SqlBaseParser.SKEWED) + self.state = 1233 + self.match(SqlBaseParser.BY) + self.state = 1234 + self.identifierList() + self.state = 1235 + self.match(SqlBaseParser.ON) + self.state = 1238 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,124,self._ctx) + if la_ == 1: + self.state = 1236 + self.constantList() + pass + + elif la_ == 2: + self.state = 1237 + self.nestedConstantList() + pass + + + self.state = 1243 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,125,self._ctx) + if la_ == 1: + self.state = 1240 + self.match(SqlBaseParser.STORED) + self.state = 1241 + self.match(SqlBaseParser.AS) + self.state = 1242 + self.match(SqlBaseParser.DIRECTORIES) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LocationSpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def LOCATION(self): + return self.getToken(SqlBaseParser.LOCATION, 0) + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_locationSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLocationSpec" ): + listener.enterLocationSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLocationSpec" ): + listener.exitLocationSpec(self) + + + + + def locationSpec(self): + + localctx = SqlBaseParser.LocationSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_locationSpec) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1245 + self.match(SqlBaseParser.LOCATION) + self.state = 1246 + self.match(SqlBaseParser.STRING) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CommentSpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def COMMENT(self): + return self.getToken(SqlBaseParser.COMMENT, 0) + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_commentSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCommentSpec" ): + listener.enterCommentSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCommentSpec" ): + listener.exitCommentSpec(self) + + + + + def commentSpec(self): + + localctx = SqlBaseParser.CommentSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_commentSpec) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1248 + self.match(SqlBaseParser.COMMENT) + self.state = 1249 + self.match(SqlBaseParser.STRING) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QueryContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def queryTerm(self): + return self.getTypedRuleContext(SqlBaseParser.QueryTermContext,0) + + + def queryOrganization(self): + return self.getTypedRuleContext(SqlBaseParser.QueryOrganizationContext,0) + + + def ctes(self): + return self.getTypedRuleContext(SqlBaseParser.CtesContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_query + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQuery" ): + listener.enterQuery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQuery" ): + listener.exitQuery(self) + + + + + def query(self): + + localctx = SqlBaseParser.QueryContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_query) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1252 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.WITH: + self.state = 1251 + self.ctes() + + + self.state = 1254 + self.queryTerm(0) + self.state = 1255 + self.queryOrganization() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InsertIntoContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_insertInto + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class InsertOverwriteHiveDirContext(InsertIntoContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.InsertIntoContext + super().__init__(parser) + self.path = None # Token + self.copyFrom(ctx) + + def INSERT(self): + return self.getToken(SqlBaseParser.INSERT, 0) + def OVERWRITE(self): + return self.getToken(SqlBaseParser.OVERWRITE, 0) + def DIRECTORY(self): + return self.getToken(SqlBaseParser.DIRECTORY, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def LOCAL(self): + return self.getToken(SqlBaseParser.LOCAL, 0) + def rowFormat(self): + return self.getTypedRuleContext(SqlBaseParser.RowFormatContext,0) + + def createFileFormat(self): + return self.getTypedRuleContext(SqlBaseParser.CreateFileFormatContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInsertOverwriteHiveDir" ): + listener.enterInsertOverwriteHiveDir(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInsertOverwriteHiveDir" ): + listener.exitInsertOverwriteHiveDir(self) + + + class InsertOverwriteDirContext(InsertIntoContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.InsertIntoContext + super().__init__(parser) + self.path = None # Token + self.options = None # TablePropertyListContext + self.copyFrom(ctx) + + def INSERT(self): + return self.getToken(SqlBaseParser.INSERT, 0) + def OVERWRITE(self): + return self.getToken(SqlBaseParser.OVERWRITE, 0) + def DIRECTORY(self): + return self.getToken(SqlBaseParser.DIRECTORY, 0) + def tableProvider(self): + return self.getTypedRuleContext(SqlBaseParser.TableProviderContext,0) + + def LOCAL(self): + return self.getToken(SqlBaseParser.LOCAL, 0) + def OPTIONS(self): + return self.getToken(SqlBaseParser.OPTIONS, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInsertOverwriteDir" ): + listener.enterInsertOverwriteDir(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInsertOverwriteDir" ): + listener.exitInsertOverwriteDir(self) + + + class InsertOverwriteTableContext(InsertIntoContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.InsertIntoContext + super().__init__(parser) + self.copyFrom(ctx) + + def INSERT(self): + return self.getToken(SqlBaseParser.INSERT, 0) + def OVERWRITE(self): + return self.getToken(SqlBaseParser.OVERWRITE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInsertOverwriteTable" ): + listener.enterInsertOverwriteTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInsertOverwriteTable" ): + listener.exitInsertOverwriteTable(self) + + + class InsertIntoTableContext(InsertIntoContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.InsertIntoContext + super().__init__(parser) + self.copyFrom(ctx) + + def INSERT(self): + return self.getToken(SqlBaseParser.INSERT, 0) + def INTO(self): + return self.getToken(SqlBaseParser.INTO, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInsertIntoTable" ): + listener.enterInsertIntoTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInsertIntoTable" ): + listener.exitInsertIntoTable(self) + + + + def insertInto(self): + + localctx = SqlBaseParser.InsertIntoContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_insertInto) + self._la = 0 # Token type + try: + self.state = 1312 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,139,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.InsertOverwriteTableContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1257 + self.match(SqlBaseParser.INSERT) + self.state = 1258 + self.match(SqlBaseParser.OVERWRITE) + self.state = 1260 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,127,self._ctx) + if la_ == 1: + self.state = 1259 + self.match(SqlBaseParser.TABLE) + + + self.state = 1262 + self.multipartIdentifier() + self.state = 1269 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 1263 + self.partitionSpec() + self.state = 1267 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.IF: + self.state = 1264 + self.match(SqlBaseParser.IF) + self.state = 1265 + self.match(SqlBaseParser.NOT) + self.state = 1266 + self.match(SqlBaseParser.EXISTS) + + + + + pass + + elif la_ == 2: + localctx = SqlBaseParser.InsertIntoTableContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1271 + self.match(SqlBaseParser.INSERT) + self.state = 1272 + self.match(SqlBaseParser.INTO) + self.state = 1274 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,130,self._ctx) + if la_ == 1: + self.state = 1273 + self.match(SqlBaseParser.TABLE) + + + self.state = 1276 + self.multipartIdentifier() + self.state = 1278 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PARTITION: + self.state = 1277 + self.partitionSpec() + + + self.state = 1283 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.IF: + self.state = 1280 + self.match(SqlBaseParser.IF) + self.state = 1281 + self.match(SqlBaseParser.NOT) + self.state = 1282 + self.match(SqlBaseParser.EXISTS) + + + pass + + elif la_ == 3: + localctx = SqlBaseParser.InsertOverwriteHiveDirContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1285 + self.match(SqlBaseParser.INSERT) + self.state = 1286 + self.match(SqlBaseParser.OVERWRITE) + self.state = 1288 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LOCAL: + self.state = 1287 + self.match(SqlBaseParser.LOCAL) + + + self.state = 1290 + self.match(SqlBaseParser.DIRECTORY) + self.state = 1291 + localctx.path = self.match(SqlBaseParser.STRING) + self.state = 1293 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ROW: + self.state = 1292 + self.rowFormat() + + + self.state = 1296 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.STORED: + self.state = 1295 + self.createFileFormat() + + + pass + + elif la_ == 4: + localctx = SqlBaseParser.InsertOverwriteDirContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 1298 + self.match(SqlBaseParser.INSERT) + self.state = 1299 + self.match(SqlBaseParser.OVERWRITE) + self.state = 1301 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LOCAL: + self.state = 1300 + self.match(SqlBaseParser.LOCAL) + + + self.state = 1303 + self.match(SqlBaseParser.DIRECTORY) + self.state = 1305 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.STRING: + self.state = 1304 + localctx.path = self.match(SqlBaseParser.STRING) + + + self.state = 1307 + self.tableProvider() + self.state = 1310 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OPTIONS: + self.state = 1308 + self.match(SqlBaseParser.OPTIONS) + self.state = 1309 + localctx.options = self.tablePropertyList() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PartitionSpecLocationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def partitionSpec(self): + return self.getTypedRuleContext(SqlBaseParser.PartitionSpecContext,0) + + + def locationSpec(self): + return self.getTypedRuleContext(SqlBaseParser.LocationSpecContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_partitionSpecLocation + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionSpecLocation" ): + listener.enterPartitionSpecLocation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionSpecLocation" ): + listener.exitPartitionSpecLocation(self) + + + + + def partitionSpecLocation(self): + + localctx = SqlBaseParser.PartitionSpecLocationContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_partitionSpecLocation) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1314 + self.partitionSpec() + self.state = 1316 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LOCATION: + self.state = 1315 + self.locationSpec() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PartitionSpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PARTITION(self): + return self.getToken(SqlBaseParser.PARTITION, 0) + + def partitionVal(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.PartitionValContext) + else: + return self.getTypedRuleContext(SqlBaseParser.PartitionValContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_partitionSpec + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionSpec" ): + listener.enterPartitionSpec(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionSpec" ): + listener.exitPartitionSpec(self) + + + + + def partitionSpec(self): + + localctx = SqlBaseParser.PartitionSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_partitionSpec) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1318 + self.match(SqlBaseParser.PARTITION) + self.state = 1319 + self.match(SqlBaseParser.T__1) + self.state = 1320 + self.partitionVal() + self.state = 1325 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1321 + self.match(SqlBaseParser.T__3) + self.state = 1322 + self.partitionVal() + self.state = 1327 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1328 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PartitionValContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def EQ(self): + return self.getToken(SqlBaseParser.EQ, 0) + + def constant(self): + return self.getTypedRuleContext(SqlBaseParser.ConstantContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_partitionVal + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPartitionVal" ): + listener.enterPartitionVal(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPartitionVal" ): + listener.exitPartitionVal(self) + + + + + def partitionVal(self): + + localctx = SqlBaseParser.PartitionValContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_partitionVal) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1330 + self.identifier() + self.state = 1333 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.EQ: + self.state = 1331 + self.match(SqlBaseParser.EQ) + self.state = 1332 + self.constant() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NamespaceContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def NAMESPACE(self): + return self.getToken(SqlBaseParser.NAMESPACE, 0) + + def DATABASE(self): + return self.getToken(SqlBaseParser.DATABASE, 0) + + def SCHEMA(self): + return self.getToken(SqlBaseParser.SCHEMA, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_namespace + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNamespace" ): + listener.enterNamespace(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNamespace" ): + listener.exitNamespace(self) + + + + + def namespace(self): + + localctx = SqlBaseParser.NamespaceContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_namespace) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1335 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DATABASE or _la==SqlBaseParser.NAMESPACE or _la==SqlBaseParser.SCHEMA): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DescribeFuncNameContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def qualifiedName(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,0) + + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def comparisonOperator(self): + return self.getTypedRuleContext(SqlBaseParser.ComparisonOperatorContext,0) + + + def arithmeticOperator(self): + return self.getTypedRuleContext(SqlBaseParser.ArithmeticOperatorContext,0) + + + def predicateOperator(self): + return self.getTypedRuleContext(SqlBaseParser.PredicateOperatorContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_describeFuncName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeFuncName" ): + listener.enterDescribeFuncName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeFuncName" ): + listener.exitDescribeFuncName(self) + + + + + def describeFuncName(self): + + localctx = SqlBaseParser.DescribeFuncNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_describeFuncName) + try: + self.state = 1342 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,143,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1337 + self.qualifiedName() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1338 + self.match(SqlBaseParser.STRING) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1339 + self.comparisonOperator() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1340 + self.arithmeticOperator() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1341 + self.predicateOperator() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DescribeColNameContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._identifier = None # IdentifierContext + self.nameParts = list() # of IdentifierContexts + + def identifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_describeColName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDescribeColName" ): + listener.enterDescribeColName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDescribeColName" ): + listener.exitDescribeColName(self) + + + + + def describeColName(self): + + localctx = SqlBaseParser.DescribeColNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_describeColName) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1344 + localctx._identifier = self.identifier() + localctx.nameParts.append(localctx._identifier) + self.state = 1349 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__4: + self.state = 1345 + self.match(SqlBaseParser.T__4) + self.state = 1346 + localctx._identifier = self.identifier() + localctx.nameParts.append(localctx._identifier) + self.state = 1351 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CtesContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WITH(self): + return self.getToken(SqlBaseParser.WITH, 0) + + def namedQuery(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.NamedQueryContext) + else: + return self.getTypedRuleContext(SqlBaseParser.NamedQueryContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_ctes + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCtes" ): + listener.enterCtes(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCtes" ): + listener.exitCtes(self) + + + + + def ctes(self): + + localctx = SqlBaseParser.CtesContext(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_ctes) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1352 + self.match(SqlBaseParser.WITH) + self.state = 1353 + self.namedQuery() + self.state = 1358 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1354 + self.match(SqlBaseParser.T__3) + self.state = 1355 + self.namedQuery() + self.state = 1360 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NamedQueryContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.name = None # ErrorCapturingIdentifierContext + self.columnAliases = None # IdentifierListContext + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def identifierList(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_namedQuery + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNamedQuery" ): + listener.enterNamedQuery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNamedQuery" ): + listener.exitNamedQuery(self) + + + + + def namedQuery(self): + + localctx = SqlBaseParser.NamedQueryContext(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_namedQuery) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1361 + localctx.name = self.errorCapturingIdentifier() + self.state = 1363 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,146,self._ctx) + if la_ == 1: + self.state = 1362 + localctx.columnAliases = self.identifierList() + + + self.state = 1366 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AS: + self.state = 1365 + self.match(SqlBaseParser.AS) + + + self.state = 1368 + self.match(SqlBaseParser.T__1) + self.state = 1369 + self.query() + self.state = 1370 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TableProviderContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def USING(self): + return self.getToken(SqlBaseParser.USING, 0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_tableProvider + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableProvider" ): + listener.enterTableProvider(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableProvider" ): + listener.exitTableProvider(self) + + + + + def tableProvider(self): + + localctx = SqlBaseParser.TableProviderContext(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_tableProvider) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1372 + self.match(SqlBaseParser.USING) + self.state = 1373 + self.multipartIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CreateTableClausesContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.options = None # TablePropertyListContext + self.partitioning = None # TransformListContext + self.tableProps = None # TablePropertyListContext + + def bucketSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.BucketSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.BucketSpecContext,i) + + + def locationSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.LocationSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.LocationSpecContext,i) + + + def commentSpec(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.CommentSpecContext) + else: + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,i) + + + def OPTIONS(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.OPTIONS) + else: + return self.getToken(SqlBaseParser.OPTIONS, i) + + def PARTITIONED(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.PARTITIONED) + else: + return self.getToken(SqlBaseParser.PARTITIONED, i) + + def BY(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.BY) + else: + return self.getToken(SqlBaseParser.BY, i) + + def TBLPROPERTIES(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.TBLPROPERTIES) + else: + return self.getToken(SqlBaseParser.TBLPROPERTIES, i) + + def tablePropertyList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TablePropertyListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,i) + + + def transformList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TransformListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TransformListContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_createTableClauses + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateTableClauses" ): + listener.enterCreateTableClauses(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateTableClauses" ): + listener.exitCreateTableClauses(self) + + + + + def createTableClauses(self): + + localctx = SqlBaseParser.CreateTableClausesContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_createTableClauses) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1387 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.CLUSTERED or _la==SqlBaseParser.COMMENT or ((((_la - 138)) & ~0x3f) == 0 and ((1 << (_la - 138)) & ((1 << (SqlBaseParser.LOCATION - 138)) | (1 << (SqlBaseParser.OPTIONS - 138)) | (1 << (SqlBaseParser.PARTITIONED - 138)))) != 0) or _la==SqlBaseParser.TBLPROPERTIES: + self.state = 1385 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.OPTIONS]: + self.state = 1375 + self.match(SqlBaseParser.OPTIONS) + self.state = 1376 + localctx.options = self.tablePropertyList() + pass + elif token in [SqlBaseParser.PARTITIONED]: + self.state = 1377 + self.match(SqlBaseParser.PARTITIONED) + self.state = 1378 + self.match(SqlBaseParser.BY) + self.state = 1379 + localctx.partitioning = self.transformList() + pass + elif token in [SqlBaseParser.CLUSTERED]: + self.state = 1380 + self.bucketSpec() + pass + elif token in [SqlBaseParser.LOCATION]: + self.state = 1381 + self.locationSpec() + pass + elif token in [SqlBaseParser.COMMENT]: + self.state = 1382 + self.commentSpec() + pass + elif token in [SqlBaseParser.TBLPROPERTIES]: + self.state = 1383 + self.match(SqlBaseParser.TBLPROPERTIES) + self.state = 1384 + localctx.tableProps = self.tablePropertyList() + pass + else: + raise NoViableAltException(self) + + self.state = 1389 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TablePropertyListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def tableProperty(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TablePropertyContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TablePropertyContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_tablePropertyList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTablePropertyList" ): + listener.enterTablePropertyList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTablePropertyList" ): + listener.exitTablePropertyList(self) + + + + + def tablePropertyList(self): + + localctx = SqlBaseParser.TablePropertyListContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_tablePropertyList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1390 + self.match(SqlBaseParser.T__1) + self.state = 1391 + self.tableProperty() + self.state = 1396 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1392 + self.match(SqlBaseParser.T__3) + self.state = 1393 + self.tableProperty() + self.state = 1398 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1399 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TablePropertyContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.key = None # TablePropertyKeyContext + self.value = None # TablePropertyValueContext + + def tablePropertyKey(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyKeyContext,0) + + + def tablePropertyValue(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyValueContext,0) + + + def EQ(self): + return self.getToken(SqlBaseParser.EQ, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_tableProperty + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableProperty" ): + listener.enterTableProperty(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableProperty" ): + listener.exitTableProperty(self) + + + + + def tableProperty(self): + + localctx = SqlBaseParser.TablePropertyContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_tableProperty) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1401 + localctx.key = self.tablePropertyKey() + self.state = 1406 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.FALSE or ((((_la - 241)) & ~0x3f) == 0 and ((1 << (_la - 241)) & ((1 << (SqlBaseParser.TRUE - 241)) | (1 << (SqlBaseParser.EQ - 241)) | (1 << (SqlBaseParser.STRING - 241)) | (1 << (SqlBaseParser.INTEGER_VALUE - 241)) | (1 << (SqlBaseParser.DECIMAL_VALUE - 241)))) != 0): + self.state = 1403 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.EQ: + self.state = 1402 + self.match(SqlBaseParser.EQ) + + + self.state = 1405 + localctx.value = self.tablePropertyValue() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TablePropertyKeyContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,i) + + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_tablePropertyKey + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTablePropertyKey" ): + listener.enterTablePropertyKey(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTablePropertyKey" ): + listener.exitTablePropertyKey(self) + + + + + def tablePropertyKey(self): + + localctx = SqlBaseParser.TablePropertyKeyContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_tablePropertyKey) + self._la = 0 # Token type + try: + self.state = 1417 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,154,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1408 + self.identifier() + self.state = 1413 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__4: + self.state = 1409 + self.match(SqlBaseParser.T__4) + self.state = 1410 + self.identifier() + self.state = 1415 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1416 + self.match(SqlBaseParser.STRING) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TablePropertyValueContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INTEGER_VALUE(self): + return self.getToken(SqlBaseParser.INTEGER_VALUE, 0) + + def DECIMAL_VALUE(self): + return self.getToken(SqlBaseParser.DECIMAL_VALUE, 0) + + def booleanValue(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanValueContext,0) + + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_tablePropertyValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTablePropertyValue" ): + listener.enterTablePropertyValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTablePropertyValue" ): + listener.exitTablePropertyValue(self) + + + + + def tablePropertyValue(self): + + localctx = SqlBaseParser.TablePropertyValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_tablePropertyValue) + try: + self.state = 1423 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.INTEGER_VALUE]: + self.enterOuterAlt(localctx, 1) + self.state = 1419 + self.match(SqlBaseParser.INTEGER_VALUE) + pass + elif token in [SqlBaseParser.DECIMAL_VALUE]: + self.enterOuterAlt(localctx, 2) + self.state = 1420 + self.match(SqlBaseParser.DECIMAL_VALUE) + pass + elif token in [SqlBaseParser.FALSE, SqlBaseParser.TRUE]: + self.enterOuterAlt(localctx, 3) + self.state = 1421 + self.booleanValue() + pass + elif token in [SqlBaseParser.STRING]: + self.enterOuterAlt(localctx, 4) + self.state = 1422 + self.match(SqlBaseParser.STRING) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstantListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def constant(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ConstantContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ConstantContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_constantList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstantList" ): + listener.enterConstantList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstantList" ): + listener.exitConstantList(self) + + + + + def constantList(self): + + localctx = SqlBaseParser.ConstantListContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_constantList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1425 + self.match(SqlBaseParser.T__1) + self.state = 1426 + self.constant() + self.state = 1431 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1427 + self.match(SqlBaseParser.T__3) + self.state = 1428 + self.constant() + self.state = 1433 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1434 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NestedConstantListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def constantList(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ConstantListContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ConstantListContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_nestedConstantList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNestedConstantList" ): + listener.enterNestedConstantList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNestedConstantList" ): + listener.exitNestedConstantList(self) + + + + + def nestedConstantList(self): + + localctx = SqlBaseParser.NestedConstantListContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_nestedConstantList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1436 + self.match(SqlBaseParser.T__1) + self.state = 1437 + self.constantList() + self.state = 1442 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1438 + self.match(SqlBaseParser.T__3) + self.state = 1439 + self.constantList() + self.state = 1444 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1445 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CreateFileFormatContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STORED(self): + return self.getToken(SqlBaseParser.STORED, 0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def fileFormat(self): + return self.getTypedRuleContext(SqlBaseParser.FileFormatContext,0) + + + def BY(self): + return self.getToken(SqlBaseParser.BY, 0) + + def storageHandler(self): + return self.getTypedRuleContext(SqlBaseParser.StorageHandlerContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_createFileFormat + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreateFileFormat" ): + listener.enterCreateFileFormat(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreateFileFormat" ): + listener.exitCreateFileFormat(self) + + + + + def createFileFormat(self): + + localctx = SqlBaseParser.CreateFileFormatContext(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_createFileFormat) + try: + self.state = 1453 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,158,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1447 + self.match(SqlBaseParser.STORED) + self.state = 1448 + self.match(SqlBaseParser.AS) + self.state = 1449 + self.fileFormat() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1450 + self.match(SqlBaseParser.STORED) + self.state = 1451 + self.match(SqlBaseParser.BY) + self.state = 1452 + self.storageHandler() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FileFormatContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_fileFormat + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class TableFileFormatContext(FileFormatContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.FileFormatContext + super().__init__(parser) + self.inFmt = None # Token + self.outFmt = None # Token + self.copyFrom(ctx) + + def INPUTFORMAT(self): + return self.getToken(SqlBaseParser.INPUTFORMAT, 0) + def OUTPUTFORMAT(self): + return self.getToken(SqlBaseParser.OUTPUTFORMAT, 0) + def STRING(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.STRING) + else: + return self.getToken(SqlBaseParser.STRING, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableFileFormat" ): + listener.enterTableFileFormat(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableFileFormat" ): + listener.exitTableFileFormat(self) + + + class GenericFileFormatContext(FileFormatContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.FileFormatContext + super().__init__(parser) + self.copyFrom(ctx) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGenericFileFormat" ): + listener.enterGenericFileFormat(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGenericFileFormat" ): + listener.exitGenericFileFormat(self) + + + + def fileFormat(self): + + localctx = SqlBaseParser.FileFormatContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_fileFormat) + try: + self.state = 1460 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,159,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.TableFileFormatContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1455 + self.match(SqlBaseParser.INPUTFORMAT) + self.state = 1456 + localctx.inFmt = self.match(SqlBaseParser.STRING) + self.state = 1457 + self.match(SqlBaseParser.OUTPUTFORMAT) + self.state = 1458 + localctx.outFmt = self.match(SqlBaseParser.STRING) + pass + + elif la_ == 2: + localctx = SqlBaseParser.GenericFileFormatContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1459 + self.identifier() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StorageHandlerContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def WITH(self): + return self.getToken(SqlBaseParser.WITH, 0) + + def SERDEPROPERTIES(self): + return self.getToken(SqlBaseParser.SERDEPROPERTIES, 0) + + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_storageHandler + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStorageHandler" ): + listener.enterStorageHandler(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStorageHandler" ): + listener.exitStorageHandler(self) + + + + + def storageHandler(self): + + localctx = SqlBaseParser.StorageHandlerContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_storageHandler) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1462 + self.match(SqlBaseParser.STRING) + self.state = 1466 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,160,self._ctx) + if la_ == 1: + self.state = 1463 + self.match(SqlBaseParser.WITH) + self.state = 1464 + self.match(SqlBaseParser.SERDEPROPERTIES) + self.state = 1465 + self.tablePropertyList() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ResourceContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_resource + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterResource" ): + listener.enterResource(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitResource" ): + listener.exitResource(self) + + + + + def resource(self): + + localctx = SqlBaseParser.ResourceContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_resource) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1468 + self.identifier() + self.state = 1469 + self.match(SqlBaseParser.STRING) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DmlStatementNoWithContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_dmlStatementNoWith + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DeleteFromTableContext(DmlStatementNoWithContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.DmlStatementNoWithContext + super().__init__(parser) + self.copyFrom(ctx) + + def DELETE(self): + return self.getToken(SqlBaseParser.DELETE, 0) + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def tableAlias(self): + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,0) + + def whereClause(self): + return self.getTypedRuleContext(SqlBaseParser.WhereClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDeleteFromTable" ): + listener.enterDeleteFromTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDeleteFromTable" ): + listener.exitDeleteFromTable(self) + + + class SingleInsertQueryContext(DmlStatementNoWithContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.DmlStatementNoWithContext + super().__init__(parser) + self.copyFrom(ctx) + + def insertInto(self): + return self.getTypedRuleContext(SqlBaseParser.InsertIntoContext,0) + + def queryTerm(self): + return self.getTypedRuleContext(SqlBaseParser.QueryTermContext,0) + + def queryOrganization(self): + return self.getTypedRuleContext(SqlBaseParser.QueryOrganizationContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSingleInsertQuery" ): + listener.enterSingleInsertQuery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSingleInsertQuery" ): + listener.exitSingleInsertQuery(self) + + + class MultiInsertQueryContext(DmlStatementNoWithContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.DmlStatementNoWithContext + super().__init__(parser) + self.copyFrom(ctx) + + def fromClause(self): + return self.getTypedRuleContext(SqlBaseParser.FromClauseContext,0) + + def multiInsertQueryBody(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultiInsertQueryBodyContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultiInsertQueryBodyContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultiInsertQuery" ): + listener.enterMultiInsertQuery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultiInsertQuery" ): + listener.exitMultiInsertQuery(self) + + + class UpdateTableContext(DmlStatementNoWithContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.DmlStatementNoWithContext + super().__init__(parser) + self.copyFrom(ctx) + + def UPDATE(self): + return self.getToken(SqlBaseParser.UPDATE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def tableAlias(self): + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,0) + + def setClause(self): + return self.getTypedRuleContext(SqlBaseParser.SetClauseContext,0) + + def whereClause(self): + return self.getTypedRuleContext(SqlBaseParser.WhereClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUpdateTable" ): + listener.enterUpdateTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUpdateTable" ): + listener.exitUpdateTable(self) + + + class MergeIntoTableContext(DmlStatementNoWithContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.DmlStatementNoWithContext + super().__init__(parser) + self.target = None # MultipartIdentifierContext + self.targetAlias = None # TableAliasContext + self.source = None # MultipartIdentifierContext + self.sourceQuery = None # QueryContext + self.sourceAlias = None # TableAliasContext + self.mergeCondition = None # BooleanExpressionContext + self.copyFrom(ctx) + + def MERGE(self): + return self.getToken(SqlBaseParser.MERGE, 0) + def INTO(self): + return self.getToken(SqlBaseParser.INTO, 0) + def USING(self): + return self.getToken(SqlBaseParser.USING, 0) + def ON(self): + return self.getToken(SqlBaseParser.ON, 0) + def multipartIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultipartIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,i) + + def tableAlias(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TableAliasContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,i) + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def matchedClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MatchedClauseContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MatchedClauseContext,i) + + def notMatchedClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.NotMatchedClauseContext) + else: + return self.getTypedRuleContext(SqlBaseParser.NotMatchedClauseContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMergeIntoTable" ): + listener.enterMergeIntoTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMergeIntoTable" ): + listener.exitMergeIntoTable(self) + + + + def dmlStatementNoWith(self): + + localctx = SqlBaseParser.DmlStatementNoWithContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_dmlStatementNoWith) + self._la = 0 # Token type + try: + self.state = 1522 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.INSERT]: + localctx = SqlBaseParser.SingleInsertQueryContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1471 + self.insertInto() + self.state = 1472 + self.queryTerm(0) + self.state = 1473 + self.queryOrganization() + pass + elif token in [SqlBaseParser.FROM]: + localctx = SqlBaseParser.MultiInsertQueryContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1475 + self.fromClause() + self.state = 1477 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1476 + self.multiInsertQueryBody() + self.state = 1479 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==SqlBaseParser.INSERT): + break + + pass + elif token in [SqlBaseParser.DELETE]: + localctx = SqlBaseParser.DeleteFromTableContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1481 + self.match(SqlBaseParser.DELETE) + self.state = 1482 + self.match(SqlBaseParser.FROM) + self.state = 1483 + self.multipartIdentifier() + self.state = 1484 + self.tableAlias() + self.state = 1486 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.WHERE: + self.state = 1485 + self.whereClause() + + + pass + elif token in [SqlBaseParser.UPDATE]: + localctx = SqlBaseParser.UpdateTableContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 1488 + self.match(SqlBaseParser.UPDATE) + self.state = 1489 + self.multipartIdentifier() + self.state = 1490 + self.tableAlias() + self.state = 1491 + self.setClause() + self.state = 1493 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.WHERE: + self.state = 1492 + self.whereClause() + + + pass + elif token in [SqlBaseParser.MERGE]: + localctx = SqlBaseParser.MergeIntoTableContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 1495 + self.match(SqlBaseParser.MERGE) + self.state = 1496 + self.match(SqlBaseParser.INTO) + self.state = 1497 + localctx.target = self.multipartIdentifier() + self.state = 1498 + localctx.targetAlias = self.tableAlias() + self.state = 1499 + self.match(SqlBaseParser.USING) + self.state = 1505 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,164,self._ctx) + if la_ == 1: + self.state = 1500 + localctx.source = self.multipartIdentifier() + pass + + elif la_ == 2: + self.state = 1501 + self.match(SqlBaseParser.T__1) + self.state = 1502 + localctx.sourceQuery = self.query() + self.state = 1503 + self.match(SqlBaseParser.T__2) + pass + + + self.state = 1507 + localctx.sourceAlias = self.tableAlias() + self.state = 1508 + self.match(SqlBaseParser.ON) + self.state = 1509 + localctx.mergeCondition = self.booleanExpression(0) + self.state = 1513 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,165,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1510 + self.matchedClause() + self.state = 1515 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,165,self._ctx) + + self.state = 1519 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.WHEN: + self.state = 1516 + self.notMatchedClause() + self.state = 1521 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QueryOrganizationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._sortItem = None # SortItemContext + self.order = list() # of SortItemContexts + self._expression = None # ExpressionContext + self.clusterBy = list() # of ExpressionContexts + self.distributeBy = list() # of ExpressionContexts + self.sort = list() # of SortItemContexts + self.limit = None # ExpressionContext + + def ORDER(self): + return self.getToken(SqlBaseParser.ORDER, 0) + + def BY(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.BY) + else: + return self.getToken(SqlBaseParser.BY, i) + + def CLUSTER(self): + return self.getToken(SqlBaseParser.CLUSTER, 0) + + def DISTRIBUTE(self): + return self.getToken(SqlBaseParser.DISTRIBUTE, 0) + + def SORT(self): + return self.getToken(SqlBaseParser.SORT, 0) + + def windowClause(self): + return self.getTypedRuleContext(SqlBaseParser.WindowClauseContext,0) + + + def LIMIT(self): + return self.getToken(SqlBaseParser.LIMIT, 0) + + def sortItem(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.SortItemContext) + else: + return self.getTypedRuleContext(SqlBaseParser.SortItemContext,i) + + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def ALL(self): + return self.getToken(SqlBaseParser.ALL, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_queryOrganization + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQueryOrganization" ): + listener.enterQueryOrganization(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQueryOrganization" ): + listener.exitQueryOrganization(self) + + + + + def queryOrganization(self): + + localctx = SqlBaseParser.QueryOrganizationContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_queryOrganization) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1534 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,169,self._ctx) + if la_ == 1: + self.state = 1524 + self.match(SqlBaseParser.ORDER) + self.state = 1525 + self.match(SqlBaseParser.BY) + self.state = 1526 + localctx._sortItem = self.sortItem() + localctx.order.append(localctx._sortItem) + self.state = 1531 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,168,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1527 + self.match(SqlBaseParser.T__3) + self.state = 1528 + localctx._sortItem = self.sortItem() + localctx.order.append(localctx._sortItem) + self.state = 1533 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,168,self._ctx) + + + + self.state = 1546 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,171,self._ctx) + if la_ == 1: + self.state = 1536 + self.match(SqlBaseParser.CLUSTER) + self.state = 1537 + self.match(SqlBaseParser.BY) + self.state = 1538 + localctx._expression = self.expression() + localctx.clusterBy.append(localctx._expression) + self.state = 1543 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,170,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1539 + self.match(SqlBaseParser.T__3) + self.state = 1540 + localctx._expression = self.expression() + localctx.clusterBy.append(localctx._expression) + self.state = 1545 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,170,self._ctx) + + + + self.state = 1558 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,173,self._ctx) + if la_ == 1: + self.state = 1548 + self.match(SqlBaseParser.DISTRIBUTE) + self.state = 1549 + self.match(SqlBaseParser.BY) + self.state = 1550 + localctx._expression = self.expression() + localctx.distributeBy.append(localctx._expression) + self.state = 1555 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,172,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1551 + self.match(SqlBaseParser.T__3) + self.state = 1552 + localctx._expression = self.expression() + localctx.distributeBy.append(localctx._expression) + self.state = 1557 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,172,self._ctx) + + + + self.state = 1570 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,175,self._ctx) + if la_ == 1: + self.state = 1560 + self.match(SqlBaseParser.SORT) + self.state = 1561 + self.match(SqlBaseParser.BY) + self.state = 1562 + localctx._sortItem = self.sortItem() + localctx.sort.append(localctx._sortItem) + self.state = 1567 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,174,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1563 + self.match(SqlBaseParser.T__3) + self.state = 1564 + localctx._sortItem = self.sortItem() + localctx.sort.append(localctx._sortItem) + self.state = 1569 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,174,self._ctx) + + + + self.state = 1573 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,176,self._ctx) + if la_ == 1: + self.state = 1572 + self.windowClause() + + + self.state = 1580 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,178,self._ctx) + if la_ == 1: + self.state = 1575 + self.match(SqlBaseParser.LIMIT) + self.state = 1578 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,177,self._ctx) + if la_ == 1: + self.state = 1576 + self.match(SqlBaseParser.ALL) + pass + + elif la_ == 2: + self.state = 1577 + localctx.limit = self.expression() + pass + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MultiInsertQueryBodyContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def insertInto(self): + return self.getTypedRuleContext(SqlBaseParser.InsertIntoContext,0) + + + def fromStatementBody(self): + return self.getTypedRuleContext(SqlBaseParser.FromStatementBodyContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_multiInsertQueryBody + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultiInsertQueryBody" ): + listener.enterMultiInsertQueryBody(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultiInsertQueryBody" ): + listener.exitMultiInsertQueryBody(self) + + + + + def multiInsertQueryBody(self): + + localctx = SqlBaseParser.MultiInsertQueryBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_multiInsertQueryBody) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1582 + self.insertInto() + self.state = 1583 + self.fromStatementBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QueryTermContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_queryTerm + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class QueryTermDefaultContext(QueryTermContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QueryTermContext + super().__init__(parser) + self.copyFrom(ctx) + + def queryPrimary(self): + return self.getTypedRuleContext(SqlBaseParser.QueryPrimaryContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQueryTermDefault" ): + listener.enterQueryTermDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQueryTermDefault" ): + listener.exitQueryTermDefault(self) + + + class SetOperationContext(QueryTermContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QueryTermContext + super().__init__(parser) + self.left = None # QueryTermContext + self.operator = None # Token + self.right = None # QueryTermContext + self.copyFrom(ctx) + + def queryTerm(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.QueryTermContext) + else: + return self.getTypedRuleContext(SqlBaseParser.QueryTermContext,i) + + def INTERSECT(self): + return self.getToken(SqlBaseParser.INTERSECT, 0) + def UNION(self): + return self.getToken(SqlBaseParser.UNION, 0) + def EXCEPT(self): + return self.getToken(SqlBaseParser.EXCEPT, 0) + def SETMINUS(self): + return self.getToken(SqlBaseParser.SETMINUS, 0) + def setQuantifier(self): + return self.getTypedRuleContext(SqlBaseParser.SetQuantifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetOperation" ): + listener.enterSetOperation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetOperation" ): + listener.exitSetOperation(self) + + + + def queryTerm(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = SqlBaseParser.QueryTermContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 80 + self.enterRecursionRule(localctx, 80, self.RULE_queryTerm, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + localctx = SqlBaseParser.QueryTermDefaultContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 1586 + self.queryPrimary() + self._ctx.stop = self._input.LT(-1) + self.state = 1611 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,183,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 1609 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,182,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.SetOperationContext(self, SqlBaseParser.QueryTermContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_queryTerm) + self.state = 1588 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 1589 + if not self.legacy_setops_precedence_enbled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.legacy_setops_precedence_enbled") + self.state = 1590 + localctx.operator = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.EXCEPT or _la==SqlBaseParser.INTERSECT or _la==SqlBaseParser.SETMINUS or _la==SqlBaseParser.UNION): + localctx.operator = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1592 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ALL or _la==SqlBaseParser.DISTINCT: + self.state = 1591 + self.setQuantifier() + + + self.state = 1594 + localctx.right = self.queryTerm(4) + pass + + elif la_ == 2: + localctx = SqlBaseParser.SetOperationContext(self, SqlBaseParser.QueryTermContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_queryTerm) + self.state = 1595 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 1596 + if not not self.legacy_setops_precedence_enbled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "not self.legacy_setops_precedence_enbled") + self.state = 1597 + localctx.operator = self.match(SqlBaseParser.INTERSECT) + self.state = 1599 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ALL or _la==SqlBaseParser.DISTINCT: + self.state = 1598 + self.setQuantifier() + + + self.state = 1601 + localctx.right = self.queryTerm(3) + pass + + elif la_ == 3: + localctx = SqlBaseParser.SetOperationContext(self, SqlBaseParser.QueryTermContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_queryTerm) + self.state = 1602 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 1603 + if not not self.legacy_setops_precedence_enbled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "not self.legacy_setops_precedence_enbled") + self.state = 1604 + localctx.operator = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.EXCEPT or _la==SqlBaseParser.SETMINUS or _la==SqlBaseParser.UNION): + localctx.operator = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1606 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ALL or _la==SqlBaseParser.DISTINCT: + self.state = 1605 + self.setQuantifier() + + + self.state = 1608 + localctx.right = self.queryTerm(2) + pass + + + self.state = 1613 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,183,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class QueryPrimaryContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_queryPrimary + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SubqueryContext(QueryPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QueryPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubquery" ): + listener.enterSubquery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubquery" ): + listener.exitSubquery(self) + + + class QueryPrimaryDefaultContext(QueryPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QueryPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def querySpecification(self): + return self.getTypedRuleContext(SqlBaseParser.QuerySpecificationContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQueryPrimaryDefault" ): + listener.enterQueryPrimaryDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQueryPrimaryDefault" ): + listener.exitQueryPrimaryDefault(self) + + + class InlineTableDefault1Context(QueryPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QueryPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def inlineTable(self): + return self.getTypedRuleContext(SqlBaseParser.InlineTableContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInlineTableDefault1" ): + listener.enterInlineTableDefault1(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInlineTableDefault1" ): + listener.exitInlineTableDefault1(self) + + + class FromStmtContext(QueryPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QueryPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def fromStatement(self): + return self.getTypedRuleContext(SqlBaseParser.FromStatementContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFromStmt" ): + listener.enterFromStmt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFromStmt" ): + listener.exitFromStmt(self) + + + class TableContext(QueryPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QueryPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTable" ): + listener.enterTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTable" ): + listener.exitTable(self) + + + + def queryPrimary(self): + + localctx = SqlBaseParser.QueryPrimaryContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_queryPrimary) + try: + self.state = 1623 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.MAP, SqlBaseParser.REDUCE, SqlBaseParser.SELECT]: + localctx = SqlBaseParser.QueryPrimaryDefaultContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1614 + self.querySpecification() + pass + elif token in [SqlBaseParser.FROM]: + localctx = SqlBaseParser.FromStmtContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1615 + self.fromStatement() + pass + elif token in [SqlBaseParser.TABLE]: + localctx = SqlBaseParser.TableContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 1616 + self.match(SqlBaseParser.TABLE) + self.state = 1617 + self.multipartIdentifier() + pass + elif token in [SqlBaseParser.VALUES]: + localctx = SqlBaseParser.InlineTableDefault1Context(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 1618 + self.inlineTable() + pass + elif token in [SqlBaseParser.T__1]: + localctx = SqlBaseParser.SubqueryContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 1619 + self.match(SqlBaseParser.T__1) + self.state = 1620 + self.query() + self.state = 1621 + self.match(SqlBaseParser.T__2) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SortItemContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.ordering = None # Token + self.nullOrder = None # Token + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def NULLS(self): + return self.getToken(SqlBaseParser.NULLS, 0) + + def ASC(self): + return self.getToken(SqlBaseParser.ASC, 0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + + def LAST(self): + return self.getToken(SqlBaseParser.LAST, 0) + + def FIRST(self): + return self.getToken(SqlBaseParser.FIRST, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_sortItem + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSortItem" ): + listener.enterSortItem(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSortItem" ): + listener.exitSortItem(self) + + + + + def sortItem(self): + + localctx = SqlBaseParser.SortItemContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_sortItem) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1625 + self.expression() + self.state = 1627 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,185,self._ctx) + if la_ == 1: + self.state = 1626 + localctx.ordering = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.ASC or _la==SqlBaseParser.DESC): + localctx.ordering = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 1631 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,186,self._ctx) + if la_ == 1: + self.state = 1629 + self.match(SqlBaseParser.NULLS) + self.state = 1630 + localctx.nullOrder = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FIRST or _la==SqlBaseParser.LAST): + localctx.nullOrder = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FromStatementContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def fromClause(self): + return self.getTypedRuleContext(SqlBaseParser.FromClauseContext,0) + + + def fromStatementBody(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.FromStatementBodyContext) + else: + return self.getTypedRuleContext(SqlBaseParser.FromStatementBodyContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_fromStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFromStatement" ): + listener.enterFromStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFromStatement" ): + listener.exitFromStatement(self) + + + + + def fromStatement(self): + + localctx = SqlBaseParser.FromStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_fromStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1633 + self.fromClause() + self.state = 1635 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1634 + self.fromStatementBody() + + else: + raise NoViableAltException(self) + self.state = 1637 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,187,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FromStatementBodyContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def transformClause(self): + return self.getTypedRuleContext(SqlBaseParser.TransformClauseContext,0) + + + def queryOrganization(self): + return self.getTypedRuleContext(SqlBaseParser.QueryOrganizationContext,0) + + + def whereClause(self): + return self.getTypedRuleContext(SqlBaseParser.WhereClauseContext,0) + + + def selectClause(self): + return self.getTypedRuleContext(SqlBaseParser.SelectClauseContext,0) + + + def lateralView(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.LateralViewContext) + else: + return self.getTypedRuleContext(SqlBaseParser.LateralViewContext,i) + + + def aggregationClause(self): + return self.getTypedRuleContext(SqlBaseParser.AggregationClauseContext,0) + + + def havingClause(self): + return self.getTypedRuleContext(SqlBaseParser.HavingClauseContext,0) + + + def windowClause(self): + return self.getTypedRuleContext(SqlBaseParser.WindowClauseContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_fromStatementBody + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFromStatementBody" ): + listener.enterFromStatementBody(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFromStatementBody" ): + listener.exitFromStatementBody(self) + + + + + def fromStatementBody(self): + + localctx = SqlBaseParser.FromStatementBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_fromStatementBody) + try: + self.state = 1666 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,194,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1639 + self.transformClause() + self.state = 1641 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,188,self._ctx) + if la_ == 1: + self.state = 1640 + self.whereClause() + + + self.state = 1643 + self.queryOrganization() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1645 + self.selectClause() + self.state = 1649 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,189,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1646 + self.lateralView() + self.state = 1651 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,189,self._ctx) + + self.state = 1653 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,190,self._ctx) + if la_ == 1: + self.state = 1652 + self.whereClause() + + + self.state = 1656 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,191,self._ctx) + if la_ == 1: + self.state = 1655 + self.aggregationClause() + + + self.state = 1659 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,192,self._ctx) + if la_ == 1: + self.state = 1658 + self.havingClause() + + + self.state = 1662 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,193,self._ctx) + if la_ == 1: + self.state = 1661 + self.windowClause() + + + self.state = 1664 + self.queryOrganization() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QuerySpecificationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_querySpecification + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class RegularQuerySpecificationContext(QuerySpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QuerySpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def selectClause(self): + return self.getTypedRuleContext(SqlBaseParser.SelectClauseContext,0) + + def fromClause(self): + return self.getTypedRuleContext(SqlBaseParser.FromClauseContext,0) + + def lateralView(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.LateralViewContext) + else: + return self.getTypedRuleContext(SqlBaseParser.LateralViewContext,i) + + def whereClause(self): + return self.getTypedRuleContext(SqlBaseParser.WhereClauseContext,0) + + def aggregationClause(self): + return self.getTypedRuleContext(SqlBaseParser.AggregationClauseContext,0) + + def havingClause(self): + return self.getTypedRuleContext(SqlBaseParser.HavingClauseContext,0) + + def windowClause(self): + return self.getTypedRuleContext(SqlBaseParser.WindowClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRegularQuerySpecification" ): + listener.enterRegularQuerySpecification(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRegularQuerySpecification" ): + listener.exitRegularQuerySpecification(self) + + + class TransformQuerySpecificationContext(QuerySpecificationContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.QuerySpecificationContext + super().__init__(parser) + self.copyFrom(ctx) + + def transformClause(self): + return self.getTypedRuleContext(SqlBaseParser.TransformClauseContext,0) + + def fromClause(self): + return self.getTypedRuleContext(SqlBaseParser.FromClauseContext,0) + + def whereClause(self): + return self.getTypedRuleContext(SqlBaseParser.WhereClauseContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransformQuerySpecification" ): + listener.enterTransformQuerySpecification(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransformQuerySpecification" ): + listener.exitTransformQuerySpecification(self) + + + + def querySpecification(self): + + localctx = SqlBaseParser.QuerySpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 90, self.RULE_querySpecification) + try: + self.state = 1697 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,203,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.TransformQuerySpecificationContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 1668 + self.transformClause() + self.state = 1670 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,195,self._ctx) + if la_ == 1: + self.state = 1669 + self.fromClause() + + + self.state = 1673 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,196,self._ctx) + if la_ == 1: + self.state = 1672 + self.whereClause() + + + pass + + elif la_ == 2: + localctx = SqlBaseParser.RegularQuerySpecificationContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 1675 + self.selectClause() + self.state = 1677 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,197,self._ctx) + if la_ == 1: + self.state = 1676 + self.fromClause() + + + self.state = 1682 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,198,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1679 + self.lateralView() + self.state = 1684 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,198,self._ctx) + + self.state = 1686 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,199,self._ctx) + if la_ == 1: + self.state = 1685 + self.whereClause() + + + self.state = 1689 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,200,self._ctx) + if la_ == 1: + self.state = 1688 + self.aggregationClause() + + + self.state = 1692 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,201,self._ctx) + if la_ == 1: + self.state = 1691 + self.havingClause() + + + self.state = 1695 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,202,self._ctx) + if la_ == 1: + self.state = 1694 + self.windowClause() + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TransformClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.kind = None # Token + self.inRowFormat = None # RowFormatContext + self.recordWriter = None # Token + self.script = None # Token + self.outRowFormat = None # RowFormatContext + self.recordReader = None # Token + + def USING(self): + return self.getToken(SqlBaseParser.USING, 0) + + def STRING(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.STRING) + else: + return self.getToken(SqlBaseParser.STRING, i) + + def SELECT(self): + return self.getToken(SqlBaseParser.SELECT, 0) + + def namedExpressionSeq(self): + return self.getTypedRuleContext(SqlBaseParser.NamedExpressionSeqContext,0) + + + def TRANSFORM(self): + return self.getToken(SqlBaseParser.TRANSFORM, 0) + + def MAP(self): + return self.getToken(SqlBaseParser.MAP, 0) + + def REDUCE(self): + return self.getToken(SqlBaseParser.REDUCE, 0) + + def RECORDWRITER(self): + return self.getToken(SqlBaseParser.RECORDWRITER, 0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def RECORDREADER(self): + return self.getToken(SqlBaseParser.RECORDREADER, 0) + + def rowFormat(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.RowFormatContext) + else: + return self.getTypedRuleContext(SqlBaseParser.RowFormatContext,i) + + + def identifierSeq(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierSeqContext,0) + + + def colTypeList(self): + return self.getTypedRuleContext(SqlBaseParser.ColTypeListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_transformClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransformClause" ): + listener.enterTransformClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransformClause" ): + listener.exitTransformClause(self) + + + + + def transformClause(self): + + localctx = SqlBaseParser.TransformClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 92, self.RULE_transformClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1709 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.SELECT]: + self.state = 1699 + self.match(SqlBaseParser.SELECT) + self.state = 1700 + localctx.kind = self.match(SqlBaseParser.TRANSFORM) + self.state = 1701 + self.match(SqlBaseParser.T__1) + self.state = 1702 + self.namedExpressionSeq() + self.state = 1703 + self.match(SqlBaseParser.T__2) + pass + elif token in [SqlBaseParser.MAP]: + self.state = 1705 + localctx.kind = self.match(SqlBaseParser.MAP) + self.state = 1706 + self.namedExpressionSeq() + pass + elif token in [SqlBaseParser.REDUCE]: + self.state = 1707 + localctx.kind = self.match(SqlBaseParser.REDUCE) + self.state = 1708 + self.namedExpressionSeq() + pass + else: + raise NoViableAltException(self) + + self.state = 1712 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ROW: + self.state = 1711 + localctx.inRowFormat = self.rowFormat() + + + self.state = 1716 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.RECORDWRITER: + self.state = 1714 + self.match(SqlBaseParser.RECORDWRITER) + self.state = 1715 + localctx.recordWriter = self.match(SqlBaseParser.STRING) + + + self.state = 1718 + self.match(SqlBaseParser.USING) + self.state = 1719 + localctx.script = self.match(SqlBaseParser.STRING) + self.state = 1732 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,209,self._ctx) + if la_ == 1: + self.state = 1720 + self.match(SqlBaseParser.AS) + self.state = 1730 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,208,self._ctx) + if la_ == 1: + self.state = 1721 + self.identifierSeq() + pass + + elif la_ == 2: + self.state = 1722 + self.colTypeList() + pass + + elif la_ == 3: + self.state = 1723 + self.match(SqlBaseParser.T__1) + self.state = 1726 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,207,self._ctx) + if la_ == 1: + self.state = 1724 + self.identifierSeq() + pass + + elif la_ == 2: + self.state = 1725 + self.colTypeList() + pass + + + self.state = 1728 + self.match(SqlBaseParser.T__2) + pass + + + + + self.state = 1735 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,210,self._ctx) + if la_ == 1: + self.state = 1734 + localctx.outRowFormat = self.rowFormat() + + + self.state = 1739 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,211,self._ctx) + if la_ == 1: + self.state = 1737 + self.match(SqlBaseParser.RECORDREADER) + self.state = 1738 + localctx.recordReader = self.match(SqlBaseParser.STRING) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SelectClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._hint = None # HintContext + self.hints = list() # of HintContexts + + def SELECT(self): + return self.getToken(SqlBaseParser.SELECT, 0) + + def namedExpressionSeq(self): + return self.getTypedRuleContext(SqlBaseParser.NamedExpressionSeqContext,0) + + + def setQuantifier(self): + return self.getTypedRuleContext(SqlBaseParser.SetQuantifierContext,0) + + + def hint(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.HintContext) + else: + return self.getTypedRuleContext(SqlBaseParser.HintContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_selectClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSelectClause" ): + listener.enterSelectClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSelectClause" ): + listener.exitSelectClause(self) + + + + + def selectClause(self): + + localctx = SqlBaseParser.SelectClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 94, self.RULE_selectClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1741 + self.match(SqlBaseParser.SELECT) + self.state = 1745 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,212,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1742 + localctx._hint = self.hint() + localctx.hints.append(localctx._hint) + self.state = 1747 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,212,self._ctx) + + self.state = 1749 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,213,self._ctx) + if la_ == 1: + self.state = 1748 + self.setQuantifier() + + + self.state = 1751 + self.namedExpressionSeq() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SetClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + + def assignmentList(self): + return self.getTypedRuleContext(SqlBaseParser.AssignmentListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_setClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetClause" ): + listener.enterSetClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetClause" ): + listener.exitSetClause(self) + + + + + def setClause(self): + + localctx = SqlBaseParser.SetClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 96, self.RULE_setClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1753 + self.match(SqlBaseParser.SET) + self.state = 1754 + self.assignmentList() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MatchedClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.matchedCond = None # BooleanExpressionContext + + def WHEN(self): + return self.getToken(SqlBaseParser.WHEN, 0) + + def MATCHED(self): + return self.getToken(SqlBaseParser.MATCHED, 0) + + def THEN(self): + return self.getToken(SqlBaseParser.THEN, 0) + + def matchedAction(self): + return self.getTypedRuleContext(SqlBaseParser.MatchedActionContext,0) + + + def AND(self): + return self.getToken(SqlBaseParser.AND, 0) + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_matchedClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMatchedClause" ): + listener.enterMatchedClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMatchedClause" ): + listener.exitMatchedClause(self) + + + + + def matchedClause(self): + + localctx = SqlBaseParser.MatchedClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 98, self.RULE_matchedClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1756 + self.match(SqlBaseParser.WHEN) + self.state = 1757 + self.match(SqlBaseParser.MATCHED) + self.state = 1760 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AND: + self.state = 1758 + self.match(SqlBaseParser.AND) + self.state = 1759 + localctx.matchedCond = self.booleanExpression(0) + + + self.state = 1762 + self.match(SqlBaseParser.THEN) + self.state = 1763 + self.matchedAction() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NotMatchedClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.notMatchedCond = None # BooleanExpressionContext + + def WHEN(self): + return self.getToken(SqlBaseParser.WHEN, 0) + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def MATCHED(self): + return self.getToken(SqlBaseParser.MATCHED, 0) + + def THEN(self): + return self.getToken(SqlBaseParser.THEN, 0) + + def notMatchedAction(self): + return self.getTypedRuleContext(SqlBaseParser.NotMatchedActionContext,0) + + + def AND(self): + return self.getToken(SqlBaseParser.AND, 0) + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_notMatchedClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNotMatchedClause" ): + listener.enterNotMatchedClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNotMatchedClause" ): + listener.exitNotMatchedClause(self) + + + + + def notMatchedClause(self): + + localctx = SqlBaseParser.NotMatchedClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 100, self.RULE_notMatchedClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1765 + self.match(SqlBaseParser.WHEN) + self.state = 1766 + self.match(SqlBaseParser.NOT) + self.state = 1767 + self.match(SqlBaseParser.MATCHED) + self.state = 1770 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AND: + self.state = 1768 + self.match(SqlBaseParser.AND) + self.state = 1769 + localctx.notMatchedCond = self.booleanExpression(0) + + + self.state = 1772 + self.match(SqlBaseParser.THEN) + self.state = 1773 + self.notMatchedAction() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MatchedActionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DELETE(self): + return self.getToken(SqlBaseParser.DELETE, 0) + + def UPDATE(self): + return self.getToken(SqlBaseParser.UPDATE, 0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + + def ASTERISK(self): + return self.getToken(SqlBaseParser.ASTERISK, 0) + + def assignmentList(self): + return self.getTypedRuleContext(SqlBaseParser.AssignmentListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_matchedAction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMatchedAction" ): + listener.enterMatchedAction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMatchedAction" ): + listener.exitMatchedAction(self) + + + + + def matchedAction(self): + + localctx = SqlBaseParser.MatchedActionContext(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_matchedAction) + try: + self.state = 1782 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,216,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1775 + self.match(SqlBaseParser.DELETE) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1776 + self.match(SqlBaseParser.UPDATE) + self.state = 1777 + self.match(SqlBaseParser.SET) + self.state = 1778 + self.match(SqlBaseParser.ASTERISK) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1779 + self.match(SqlBaseParser.UPDATE) + self.state = 1780 + self.match(SqlBaseParser.SET) + self.state = 1781 + self.assignmentList() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NotMatchedActionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.columns = None # MultipartIdentifierListContext + + def INSERT(self): + return self.getToken(SqlBaseParser.INSERT, 0) + + def ASTERISK(self): + return self.getToken(SqlBaseParser.ASTERISK, 0) + + def VALUES(self): + return self.getToken(SqlBaseParser.VALUES, 0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def multipartIdentifierList(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_notMatchedAction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNotMatchedAction" ): + listener.enterNotMatchedAction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNotMatchedAction" ): + listener.exitNotMatchedAction(self) + + + + + def notMatchedAction(self): + + localctx = SqlBaseParser.NotMatchedActionContext(self, self._ctx, self.state) + self.enterRule(localctx, 104, self.RULE_notMatchedAction) + self._la = 0 # Token type + try: + self.state = 1802 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,218,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1784 + self.match(SqlBaseParser.INSERT) + self.state = 1785 + self.match(SqlBaseParser.ASTERISK) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1786 + self.match(SqlBaseParser.INSERT) + self.state = 1787 + self.match(SqlBaseParser.T__1) + self.state = 1788 + localctx.columns = self.multipartIdentifierList() + self.state = 1789 + self.match(SqlBaseParser.T__2) + self.state = 1790 + self.match(SqlBaseParser.VALUES) + self.state = 1791 + self.match(SqlBaseParser.T__1) + self.state = 1792 + self.expression() + self.state = 1797 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1793 + self.match(SqlBaseParser.T__3) + self.state = 1794 + self.expression() + self.state = 1799 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1800 + self.match(SqlBaseParser.T__2) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AssignmentListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def assignment(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.AssignmentContext) + else: + return self.getTypedRuleContext(SqlBaseParser.AssignmentContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_assignmentList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAssignmentList" ): + listener.enterAssignmentList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAssignmentList" ): + listener.exitAssignmentList(self) + + + + + def assignmentList(self): + + localctx = SqlBaseParser.AssignmentListContext(self, self._ctx, self.state) + self.enterRule(localctx, 106, self.RULE_assignmentList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1804 + self.assignment() + self.state = 1809 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1805 + self.match(SqlBaseParser.T__3) + self.state = 1806 + self.assignment() + self.state = 1811 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AssignmentContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.key = None # MultipartIdentifierContext + self.value = None # ExpressionContext + + def EQ(self): + return self.getToken(SqlBaseParser.EQ, 0) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_assignment + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAssignment" ): + listener.enterAssignment(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAssignment" ): + listener.exitAssignment(self) + + + + + def assignment(self): + + localctx = SqlBaseParser.AssignmentContext(self, self._ctx, self.state) + self.enterRule(localctx, 108, self.RULE_assignment) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1812 + localctx.key = self.multipartIdentifier() + self.state = 1813 + self.match(SqlBaseParser.EQ) + self.state = 1814 + localctx.value = self.expression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WhereClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHERE(self): + return self.getToken(SqlBaseParser.WHERE, 0) + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_whereClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWhereClause" ): + listener.enterWhereClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWhereClause" ): + listener.exitWhereClause(self) + + + + + def whereClause(self): + + localctx = SqlBaseParser.WhereClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 110, self.RULE_whereClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1816 + self.match(SqlBaseParser.WHERE) + self.state = 1817 + self.booleanExpression(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class HavingClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def HAVING(self): + return self.getToken(SqlBaseParser.HAVING, 0) + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_havingClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHavingClause" ): + listener.enterHavingClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHavingClause" ): + listener.exitHavingClause(self) + + + + + def havingClause(self): + + localctx = SqlBaseParser.HavingClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 112, self.RULE_havingClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1819 + self.match(SqlBaseParser.HAVING) + self.state = 1820 + self.booleanExpression(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class HintContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._hintStatement = None # HintStatementContext + self.hintStatements = list() # of HintStatementContexts + + def hintStatement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.HintStatementContext) + else: + return self.getTypedRuleContext(SqlBaseParser.HintStatementContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_hint + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHint" ): + listener.enterHint(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHint" ): + listener.exitHint(self) + + + + + def hint(self): + + localctx = SqlBaseParser.HintContext(self, self._ctx, self.state) + self.enterRule(localctx, 114, self.RULE_hint) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1822 + self.match(SqlBaseParser.T__5) + self.state = 1823 + localctx._hintStatement = self.hintStatement() + localctx.hintStatements.append(localctx._hintStatement) + self.state = 1830 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,221,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1825 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,220,self._ctx) + if la_ == 1: + self.state = 1824 + self.match(SqlBaseParser.T__3) + + + self.state = 1827 + localctx._hintStatement = self.hintStatement() + localctx.hintStatements.append(localctx._hintStatement) + self.state = 1832 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,221,self._ctx) + + self.state = 1833 + self.match(SqlBaseParser.T__6) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class HintStatementContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.hintName = None # IdentifierContext + self._primaryExpression = None # PrimaryExpressionContext + self.parameters = list() # of PrimaryExpressionContexts + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def primaryExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.PrimaryExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.PrimaryExpressionContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_hintStatement + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHintStatement" ): + listener.enterHintStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHintStatement" ): + listener.exitHintStatement(self) + + + + + def hintStatement(self): + + localctx = SqlBaseParser.HintStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 116, self.RULE_hintStatement) + self._la = 0 # Token type + try: + self.state = 1848 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,223,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1835 + localctx.hintName = self.identifier() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1836 + localctx.hintName = self.identifier() + self.state = 1837 + self.match(SqlBaseParser.T__1) + self.state = 1838 + localctx._primaryExpression = self.primaryExpression(0) + localctx.parameters.append(localctx._primaryExpression) + self.state = 1843 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1839 + self.match(SqlBaseParser.T__3) + self.state = 1840 + localctx._primaryExpression = self.primaryExpression(0) + localctx.parameters.append(localctx._primaryExpression) + self.state = 1845 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1846 + self.match(SqlBaseParser.T__2) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FromClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + + def relation(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.RelationContext) + else: + return self.getTypedRuleContext(SqlBaseParser.RelationContext,i) + + + def lateralView(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.LateralViewContext) + else: + return self.getTypedRuleContext(SqlBaseParser.LateralViewContext,i) + + + def pivotClause(self): + return self.getTypedRuleContext(SqlBaseParser.PivotClauseContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_fromClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFromClause" ): + listener.enterFromClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFromClause" ): + listener.exitFromClause(self) + + + + + def fromClause(self): + + localctx = SqlBaseParser.FromClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 118, self.RULE_fromClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1850 + self.match(SqlBaseParser.FROM) + self.state = 1851 + self.relation() + self.state = 1856 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,224,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1852 + self.match(SqlBaseParser.T__3) + self.state = 1853 + self.relation() + self.state = 1858 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,224,self._ctx) + + self.state = 1862 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,225,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1859 + self.lateralView() + self.state = 1864 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,225,self._ctx) + + self.state = 1866 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,226,self._ctx) + if la_ == 1: + self.state = 1865 + self.pivotClause() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AggregationClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._expression = None # ExpressionContext + self.groupingExpressions = list() # of ExpressionContexts + self.kind = None # Token + + def GROUP(self): + return self.getToken(SqlBaseParser.GROUP, 0) + + def BY(self): + return self.getToken(SqlBaseParser.BY, 0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def WITH(self): + return self.getToken(SqlBaseParser.WITH, 0) + + def SETS(self): + return self.getToken(SqlBaseParser.SETS, 0) + + def groupingSet(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.GroupingSetContext) + else: + return self.getTypedRuleContext(SqlBaseParser.GroupingSetContext,i) + + + def ROLLUP(self): + return self.getToken(SqlBaseParser.ROLLUP, 0) + + def CUBE(self): + return self.getToken(SqlBaseParser.CUBE, 0) + + def GROUPING(self): + return self.getToken(SqlBaseParser.GROUPING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_aggregationClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAggregationClause" ): + listener.enterAggregationClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAggregationClause" ): + listener.exitAggregationClause(self) + + + + + def aggregationClause(self): + + localctx = SqlBaseParser.AggregationClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 120, self.RULE_aggregationClause) + self._la = 0 # Token type + try: + self.state = 1912 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,231,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1868 + self.match(SqlBaseParser.GROUP) + self.state = 1869 + self.match(SqlBaseParser.BY) + self.state = 1870 + localctx._expression = self.expression() + localctx.groupingExpressions.append(localctx._expression) + self.state = 1875 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,227,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1871 + self.match(SqlBaseParser.T__3) + self.state = 1872 + localctx._expression = self.expression() + localctx.groupingExpressions.append(localctx._expression) + self.state = 1877 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,227,self._ctx) + + self.state = 1895 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,229,self._ctx) + if la_ == 1: + self.state = 1878 + self.match(SqlBaseParser.WITH) + self.state = 1879 + localctx.kind = self.match(SqlBaseParser.ROLLUP) + + elif la_ == 2: + self.state = 1880 + self.match(SqlBaseParser.WITH) + self.state = 1881 + localctx.kind = self.match(SqlBaseParser.CUBE) + + elif la_ == 3: + self.state = 1882 + localctx.kind = self.match(SqlBaseParser.GROUPING) + self.state = 1883 + self.match(SqlBaseParser.SETS) + self.state = 1884 + self.match(SqlBaseParser.T__1) + self.state = 1885 + self.groupingSet() + self.state = 1890 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1886 + self.match(SqlBaseParser.T__3) + self.state = 1887 + self.groupingSet() + self.state = 1892 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1893 + self.match(SqlBaseParser.T__2) + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1897 + self.match(SqlBaseParser.GROUP) + self.state = 1898 + self.match(SqlBaseParser.BY) + self.state = 1899 + localctx.kind = self.match(SqlBaseParser.GROUPING) + self.state = 1900 + self.match(SqlBaseParser.SETS) + self.state = 1901 + self.match(SqlBaseParser.T__1) + self.state = 1902 + self.groupingSet() + self.state = 1907 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1903 + self.match(SqlBaseParser.T__3) + self.state = 1904 + self.groupingSet() + self.state = 1909 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1910 + self.match(SqlBaseParser.T__2) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class GroupingSetContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_groupingSet + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterGroupingSet" ): + listener.enterGroupingSet(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitGroupingSet" ): + listener.exitGroupingSet(self) + + + + + def groupingSet(self): + + localctx = SqlBaseParser.GroupingSetContext(self, self._ctx, self.state) + self.enterRule(localctx, 122, self.RULE_groupingSet) + self._la = 0 # Token type + try: + self.state = 1927 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,234,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1914 + self.match(SqlBaseParser.T__1) + self.state = 1923 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,233,self._ctx) + if la_ == 1: + self.state = 1915 + self.expression() + self.state = 1920 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1916 + self.match(SqlBaseParser.T__3) + self.state = 1917 + self.expression() + self.state = 1922 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 1925 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1926 + self.expression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PivotClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.aggregates = None # NamedExpressionSeqContext + self._pivotValue = None # PivotValueContext + self.pivotValues = list() # of PivotValueContexts + + def PIVOT(self): + return self.getToken(SqlBaseParser.PIVOT, 0) + + def FOR(self): + return self.getToken(SqlBaseParser.FOR, 0) + + def pivotColumn(self): + return self.getTypedRuleContext(SqlBaseParser.PivotColumnContext,0) + + + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + + def namedExpressionSeq(self): + return self.getTypedRuleContext(SqlBaseParser.NamedExpressionSeqContext,0) + + + def pivotValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.PivotValueContext) + else: + return self.getTypedRuleContext(SqlBaseParser.PivotValueContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_pivotClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPivotClause" ): + listener.enterPivotClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPivotClause" ): + listener.exitPivotClause(self) + + + + + def pivotClause(self): + + localctx = SqlBaseParser.PivotClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 124, self.RULE_pivotClause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1929 + self.match(SqlBaseParser.PIVOT) + self.state = 1930 + self.match(SqlBaseParser.T__1) + self.state = 1931 + localctx.aggregates = self.namedExpressionSeq() + self.state = 1932 + self.match(SqlBaseParser.FOR) + self.state = 1933 + self.pivotColumn() + self.state = 1934 + self.match(SqlBaseParser.IN) + self.state = 1935 + self.match(SqlBaseParser.T__1) + self.state = 1936 + localctx._pivotValue = self.pivotValue() + localctx.pivotValues.append(localctx._pivotValue) + self.state = 1941 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1937 + self.match(SqlBaseParser.T__3) + self.state = 1938 + localctx._pivotValue = self.pivotValue() + localctx.pivotValues.append(localctx._pivotValue) + self.state = 1943 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1944 + self.match(SqlBaseParser.T__2) + self.state = 1945 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PivotColumnContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._identifier = None # IdentifierContext + self.identifiers = list() # of IdentifierContexts + + def identifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_pivotColumn + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPivotColumn" ): + listener.enterPivotColumn(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPivotColumn" ): + listener.exitPivotColumn(self) + + + + + def pivotColumn(self): + + localctx = SqlBaseParser.PivotColumnContext(self, self._ctx, self.state) + self.enterRule(localctx, 126, self.RULE_pivotColumn) + self._la = 0 # Token type + try: + self.state = 1959 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,237,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1947 + localctx._identifier = self.identifier() + localctx.identifiers.append(localctx._identifier) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1948 + self.match(SqlBaseParser.T__1) + self.state = 1949 + localctx._identifier = self.identifier() + localctx.identifiers.append(localctx._identifier) + self.state = 1954 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1950 + self.match(SqlBaseParser.T__3) + self.state = 1951 + localctx._identifier = self.identifier() + localctx.identifiers.append(localctx._identifier) + self.state = 1956 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1957 + self.match(SqlBaseParser.T__2) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PivotValueContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_pivotValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPivotValue" ): + listener.enterPivotValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPivotValue" ): + listener.exitPivotValue(self) + + + + + def pivotValue(self): + + localctx = SqlBaseParser.PivotValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 128, self.RULE_pivotValue) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1961 + self.expression() + self.state = 1966 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,239,self._ctx) + if la_ == 1: + self.state = 1963 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,238,self._ctx) + if la_ == 1: + self.state = 1962 + self.match(SqlBaseParser.AS) + + + self.state = 1965 + self.identifier() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LateralViewContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.tblName = None # IdentifierContext + self._identifier = None # IdentifierContext + self.colName = list() # of IdentifierContexts + + def LATERAL(self): + return self.getToken(SqlBaseParser.LATERAL, 0) + + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + + def qualifiedName(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,0) + + + def identifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,i) + + + def OUTER(self): + return self.getToken(SqlBaseParser.OUTER, 0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_lateralView + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLateralView" ): + listener.enterLateralView(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLateralView" ): + listener.exitLateralView(self) + + + + + def lateralView(self): + + localctx = SqlBaseParser.LateralViewContext(self, self._ctx, self.state) + self.enterRule(localctx, 130, self.RULE_lateralView) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1968 + self.match(SqlBaseParser.LATERAL) + self.state = 1969 + self.match(SqlBaseParser.VIEW) + self.state = 1971 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,240,self._ctx) + if la_ == 1: + self.state = 1970 + self.match(SqlBaseParser.OUTER) + + + self.state = 1973 + self.qualifiedName() + self.state = 1974 + self.match(SqlBaseParser.T__1) + self.state = 1983 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,242,self._ctx) + if la_ == 1: + self.state = 1975 + self.expression() + self.state = 1980 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 1976 + self.match(SqlBaseParser.T__3) + self.state = 1977 + self.expression() + self.state = 1982 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 1985 + self.match(SqlBaseParser.T__2) + self.state = 1986 + localctx.tblName = self.identifier() + self.state = 1998 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,245,self._ctx) + if la_ == 1: + self.state = 1988 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,243,self._ctx) + if la_ == 1: + self.state = 1987 + self.match(SqlBaseParser.AS) + + + self.state = 1990 + localctx._identifier = self.identifier() + localctx.colName.append(localctx._identifier) + self.state = 1995 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,244,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1991 + self.match(SqlBaseParser.T__3) + self.state = 1992 + localctx._identifier = self.identifier() + localctx.colName.append(localctx._identifier) + self.state = 1997 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,244,self._ctx) + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SetQuantifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DISTINCT(self): + return self.getToken(SqlBaseParser.DISTINCT, 0) + + def ALL(self): + return self.getToken(SqlBaseParser.ALL, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_setQuantifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSetQuantifier" ): + listener.enterSetQuantifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSetQuantifier" ): + listener.exitSetQuantifier(self) + + + + + def setQuantifier(self): + + localctx = SqlBaseParser.SetQuantifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 132, self.RULE_setQuantifier) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2000 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.ALL or _la==SqlBaseParser.DISTINCT): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RelationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def relationPrimary(self): + return self.getTypedRuleContext(SqlBaseParser.RelationPrimaryContext,0) + + + def joinRelation(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.JoinRelationContext) + else: + return self.getTypedRuleContext(SqlBaseParser.JoinRelationContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_relation + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRelation" ): + listener.enterRelation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRelation" ): + listener.exitRelation(self) + + + + + def relation(self): + + localctx = SqlBaseParser.RelationContext(self, self._ctx, self.state) + self.enterRule(localctx, 134, self.RULE_relation) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2002 + self.relationPrimary() + self.state = 2006 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,246,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2003 + self.joinRelation() + self.state = 2008 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,246,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class JoinRelationContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.right = None # RelationPrimaryContext + + def JOIN(self): + return self.getToken(SqlBaseParser.JOIN, 0) + + def relationPrimary(self): + return self.getTypedRuleContext(SqlBaseParser.RelationPrimaryContext,0) + + + def joinType(self): + return self.getTypedRuleContext(SqlBaseParser.JoinTypeContext,0) + + + def joinCriteria(self): + return self.getTypedRuleContext(SqlBaseParser.JoinCriteriaContext,0) + + + def NATURAL(self): + return self.getToken(SqlBaseParser.NATURAL, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_joinRelation + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJoinRelation" ): + listener.enterJoinRelation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJoinRelation" ): + listener.exitJoinRelation(self) + + + + + def joinRelation(self): + + localctx = SqlBaseParser.JoinRelationContext(self, self._ctx, self.state) + self.enterRule(localctx, 136, self.RULE_joinRelation) + try: + self.state = 2020 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.ANTI, SqlBaseParser.CROSS, SqlBaseParser.FULL, SqlBaseParser.INNER, SqlBaseParser.JOIN, SqlBaseParser.LEFT, SqlBaseParser.RIGHT, SqlBaseParser.SEMI]: + self.enterOuterAlt(localctx, 1) + self.state = 2009 + self.joinType() + self.state = 2010 + self.match(SqlBaseParser.JOIN) + self.state = 2011 + localctx.right = self.relationPrimary() + self.state = 2013 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,247,self._ctx) + if la_ == 1: + self.state = 2012 + self.joinCriteria() + + + pass + elif token in [SqlBaseParser.NATURAL]: + self.enterOuterAlt(localctx, 2) + self.state = 2015 + self.match(SqlBaseParser.NATURAL) + self.state = 2016 + self.joinType() + self.state = 2017 + self.match(SqlBaseParser.JOIN) + self.state = 2018 + localctx.right = self.relationPrimary() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class JoinTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INNER(self): + return self.getToken(SqlBaseParser.INNER, 0) + + def CROSS(self): + return self.getToken(SqlBaseParser.CROSS, 0) + + def LEFT(self): + return self.getToken(SqlBaseParser.LEFT, 0) + + def OUTER(self): + return self.getToken(SqlBaseParser.OUTER, 0) + + def SEMI(self): + return self.getToken(SqlBaseParser.SEMI, 0) + + def RIGHT(self): + return self.getToken(SqlBaseParser.RIGHT, 0) + + def FULL(self): + return self.getToken(SqlBaseParser.FULL, 0) + + def ANTI(self): + return self.getToken(SqlBaseParser.ANTI, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_joinType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJoinType" ): + listener.enterJoinType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJoinType" ): + listener.exitJoinType(self) + + + + + def joinType(self): + + localctx = SqlBaseParser.JoinTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 138, self.RULE_joinType) + self._la = 0 # Token type + try: + self.state = 2046 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,255,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2023 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.INNER: + self.state = 2022 + self.match(SqlBaseParser.INNER) + + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2025 + self.match(SqlBaseParser.CROSS) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2026 + self.match(SqlBaseParser.LEFT) + self.state = 2028 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OUTER: + self.state = 2027 + self.match(SqlBaseParser.OUTER) + + + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2031 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LEFT: + self.state = 2030 + self.match(SqlBaseParser.LEFT) + + + self.state = 2033 + self.match(SqlBaseParser.SEMI) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2034 + self.match(SqlBaseParser.RIGHT) + self.state = 2036 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OUTER: + self.state = 2035 + self.match(SqlBaseParser.OUTER) + + + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2038 + self.match(SqlBaseParser.FULL) + self.state = 2040 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.OUTER: + self.state = 2039 + self.match(SqlBaseParser.OUTER) + + + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 2043 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.LEFT: + self.state = 2042 + self.match(SqlBaseParser.LEFT) + + + self.state = 2045 + self.match(SqlBaseParser.ANTI) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class JoinCriteriaContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ON(self): + return self.getToken(SqlBaseParser.ON, 0) + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + + def USING(self): + return self.getToken(SqlBaseParser.USING, 0) + + def identifierList(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_joinCriteria + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterJoinCriteria" ): + listener.enterJoinCriteria(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitJoinCriteria" ): + listener.exitJoinCriteria(self) + + + + + def joinCriteria(self): + + localctx = SqlBaseParser.JoinCriteriaContext(self, self._ctx, self.state) + self.enterRule(localctx, 140, self.RULE_joinCriteria) + try: + self.state = 2052 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.ON]: + self.enterOuterAlt(localctx, 1) + self.state = 2048 + self.match(SqlBaseParser.ON) + self.state = 2049 + self.booleanExpression(0) + pass + elif token in [SqlBaseParser.USING]: + self.enterOuterAlt(localctx, 2) + self.state = 2050 + self.match(SqlBaseParser.USING) + self.state = 2051 + self.identifierList() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SampleContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TABLESAMPLE(self): + return self.getToken(SqlBaseParser.TABLESAMPLE, 0) + + def sampleMethod(self): + return self.getTypedRuleContext(SqlBaseParser.SampleMethodContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_sample + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSample" ): + listener.enterSample(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSample" ): + listener.exitSample(self) + + + + + def sample(self): + + localctx = SqlBaseParser.SampleContext(self, self._ctx, self.state) + self.enterRule(localctx, 142, self.RULE_sample) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2054 + self.match(SqlBaseParser.TABLESAMPLE) + self.state = 2055 + self.match(SqlBaseParser.T__1) + self.state = 2057 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,257,self._ctx) + if la_ == 1: + self.state = 2056 + self.sampleMethod() + + + self.state = 2059 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SampleMethodContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_sampleMethod + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class SampleByRowsContext(SampleMethodContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.SampleMethodContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + def ROWS(self): + return self.getToken(SqlBaseParser.ROWS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSampleByRows" ): + listener.enterSampleByRows(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSampleByRows" ): + listener.exitSampleByRows(self) + + + class SampleByPercentileContext(SampleMethodContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.SampleMethodContext + super().__init__(parser) + self.negativeSign = None # Token + self.percentage = None # Token + self.copyFrom(ctx) + + def PERCENTLIT(self): + return self.getToken(SqlBaseParser.PERCENTLIT, 0) + def INTEGER_VALUE(self): + return self.getToken(SqlBaseParser.INTEGER_VALUE, 0) + def DECIMAL_VALUE(self): + return self.getToken(SqlBaseParser.DECIMAL_VALUE, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSampleByPercentile" ): + listener.enterSampleByPercentile(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSampleByPercentile" ): + listener.exitSampleByPercentile(self) + + + class SampleByBucketContext(SampleMethodContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.SampleMethodContext + super().__init__(parser) + self.sampleType = None # Token + self.numerator = None # Token + self.denominator = None # Token + self.copyFrom(ctx) + + def OUT(self): + return self.getToken(SqlBaseParser.OUT, 0) + def OF(self): + return self.getToken(SqlBaseParser.OF, 0) + def BUCKET(self): + return self.getToken(SqlBaseParser.BUCKET, 0) + def INTEGER_VALUE(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.INTEGER_VALUE) + else: + return self.getToken(SqlBaseParser.INTEGER_VALUE, i) + def ON(self): + return self.getToken(SqlBaseParser.ON, 0) + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def qualifiedName(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSampleByBucket" ): + listener.enterSampleByBucket(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSampleByBucket" ): + listener.exitSampleByBucket(self) + + + class SampleByBytesContext(SampleMethodContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.SampleMethodContext + super().__init__(parser) + self.bytes = None # ExpressionContext + self.copyFrom(ctx) + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSampleByBytes" ): + listener.enterSampleByBytes(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSampleByBytes" ): + listener.exitSampleByBytes(self) + + + + def sampleMethod(self): + + localctx = SqlBaseParser.SampleMethodContext(self, self._ctx, self.state) + self.enterRule(localctx, 144, self.RULE_sampleMethod) + self._la = 0 # Token type + try: + self.state = 2085 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,261,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.SampleByPercentileContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2062 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2061 + localctx.negativeSign = self.match(SqlBaseParser.MINUS) + + + self.state = 2064 + localctx.percentage = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.INTEGER_VALUE or _la==SqlBaseParser.DECIMAL_VALUE): + localctx.percentage = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2065 + self.match(SqlBaseParser.PERCENTLIT) + pass + + elif la_ == 2: + localctx = SqlBaseParser.SampleByRowsContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2066 + self.expression() + self.state = 2067 + self.match(SqlBaseParser.ROWS) + pass + + elif la_ == 3: + localctx = SqlBaseParser.SampleByBucketContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2069 + localctx.sampleType = self.match(SqlBaseParser.BUCKET) + self.state = 2070 + localctx.numerator = self.match(SqlBaseParser.INTEGER_VALUE) + self.state = 2071 + self.match(SqlBaseParser.OUT) + self.state = 2072 + self.match(SqlBaseParser.OF) + self.state = 2073 + localctx.denominator = self.match(SqlBaseParser.INTEGER_VALUE) + self.state = 2082 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ON: + self.state = 2074 + self.match(SqlBaseParser.ON) + self.state = 2080 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,259,self._ctx) + if la_ == 1: + self.state = 2075 + self.identifier() + pass + + elif la_ == 2: + self.state = 2076 + self.qualifiedName() + self.state = 2077 + self.match(SqlBaseParser.T__1) + self.state = 2078 + self.match(SqlBaseParser.T__2) + pass + + + + + pass + + elif la_ == 4: + localctx = SqlBaseParser.SampleByBytesContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2084 + localctx.bytes = self.expression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IdentifierListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifierSeq(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierSeqContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_identifierList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIdentifierList" ): + listener.enterIdentifierList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIdentifierList" ): + listener.exitIdentifierList(self) + + + + + def identifierList(self): + + localctx = SqlBaseParser.IdentifierListContext(self, self._ctx, self.state) + self.enterRule(localctx, 146, self.RULE_identifierList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2087 + self.match(SqlBaseParser.T__1) + self.state = 2088 + self.identifierSeq() + self.state = 2089 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IdentifierSeqContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._errorCapturingIdentifier = None # ErrorCapturingIdentifierContext + self.ident = list() # of ErrorCapturingIdentifierContexts + + def errorCapturingIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ErrorCapturingIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_identifierSeq + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIdentifierSeq" ): + listener.enterIdentifierSeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIdentifierSeq" ): + listener.exitIdentifierSeq(self) + + + + + def identifierSeq(self): + + localctx = SqlBaseParser.IdentifierSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 148, self.RULE_identifierSeq) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2091 + localctx._errorCapturingIdentifier = self.errorCapturingIdentifier() + localctx.ident.append(localctx._errorCapturingIdentifier) + self.state = 2096 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,262,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2092 + self.match(SqlBaseParser.T__3) + self.state = 2093 + localctx._errorCapturingIdentifier = self.errorCapturingIdentifier() + localctx.ident.append(localctx._errorCapturingIdentifier) + self.state = 2098 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,262,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class OrderedIdentifierListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def orderedIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.OrderedIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.OrderedIdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_orderedIdentifierList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOrderedIdentifierList" ): + listener.enterOrderedIdentifierList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOrderedIdentifierList" ): + listener.exitOrderedIdentifierList(self) + + + + + def orderedIdentifierList(self): + + localctx = SqlBaseParser.OrderedIdentifierListContext(self, self._ctx, self.state) + self.enterRule(localctx, 150, self.RULE_orderedIdentifierList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2099 + self.match(SqlBaseParser.T__1) + self.state = 2100 + self.orderedIdentifier() + self.state = 2105 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2101 + self.match(SqlBaseParser.T__3) + self.state = 2102 + self.orderedIdentifier() + self.state = 2107 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2108 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class OrderedIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.ident = None # ErrorCapturingIdentifierContext + self.ordering = None # Token + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def ASC(self): + return self.getToken(SqlBaseParser.ASC, 0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_orderedIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOrderedIdentifier" ): + listener.enterOrderedIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOrderedIdentifier" ): + listener.exitOrderedIdentifier(self) + + + + + def orderedIdentifier(self): + + localctx = SqlBaseParser.OrderedIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 152, self.RULE_orderedIdentifier) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2110 + localctx.ident = self.errorCapturingIdentifier() + self.state = 2112 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ASC or _la==SqlBaseParser.DESC: + self.state = 2111 + localctx.ordering = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.ASC or _la==SqlBaseParser.DESC): + localctx.ordering = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IdentifierCommentListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifierComment(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierCommentContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierCommentContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_identifierCommentList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIdentifierCommentList" ): + listener.enterIdentifierCommentList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIdentifierCommentList" ): + listener.exitIdentifierCommentList(self) + + + + + def identifierCommentList(self): + + localctx = SqlBaseParser.IdentifierCommentListContext(self, self._ctx, self.state) + self.enterRule(localctx, 154, self.RULE_identifierCommentList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2114 + self.match(SqlBaseParser.T__1) + self.state = 2115 + self.identifierComment() + self.state = 2120 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2116 + self.match(SqlBaseParser.T__3) + self.state = 2117 + self.identifierComment() + self.state = 2122 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2123 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IdentifierCommentContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def commentSpec(self): + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_identifierComment + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIdentifierComment" ): + listener.enterIdentifierComment(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIdentifierComment" ): + listener.exitIdentifierComment(self) + + + + + def identifierComment(self): + + localctx = SqlBaseParser.IdentifierCommentContext(self, self._ctx, self.state) + self.enterRule(localctx, 156, self.RULE_identifierComment) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2125 + self.identifier() + self.state = 2127 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.COMMENT: + self.state = 2126 + self.commentSpec() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RelationPrimaryContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_relationPrimary + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class TableValuedFunctionContext(RelationPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.RelationPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def functionTable(self): + return self.getTypedRuleContext(SqlBaseParser.FunctionTableContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableValuedFunction" ): + listener.enterTableValuedFunction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableValuedFunction" ): + listener.exitTableValuedFunction(self) + + + class InlineTableDefault2Context(RelationPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.RelationPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def inlineTable(self): + return self.getTypedRuleContext(SqlBaseParser.InlineTableContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInlineTableDefault2" ): + listener.enterInlineTableDefault2(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInlineTableDefault2" ): + listener.exitInlineTableDefault2(self) + + + class AliasedRelationContext(RelationPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.RelationPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def relation(self): + return self.getTypedRuleContext(SqlBaseParser.RelationContext,0) + + def tableAlias(self): + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,0) + + def sample(self): + return self.getTypedRuleContext(SqlBaseParser.SampleContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAliasedRelation" ): + listener.enterAliasedRelation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAliasedRelation" ): + listener.exitAliasedRelation(self) + + + class AliasedQueryContext(RelationPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.RelationPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + def tableAlias(self): + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,0) + + def sample(self): + return self.getTypedRuleContext(SqlBaseParser.SampleContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAliasedQuery" ): + listener.enterAliasedQuery(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAliasedQuery" ): + listener.exitAliasedQuery(self) + + + class TableNameContext(RelationPrimaryContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.RelationPrimaryContext + super().__init__(parser) + self.copyFrom(ctx) + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + def tableAlias(self): + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,0) + + def sample(self): + return self.getTypedRuleContext(SqlBaseParser.SampleContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableName" ): + listener.enterTableName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableName" ): + listener.exitTableName(self) + + + + def relationPrimary(self): + + localctx = SqlBaseParser.RelationPrimaryContext(self, self._ctx, self.state) + self.enterRule(localctx, 158, self.RULE_relationPrimary) + try: + self.state = 2153 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,270,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.TableNameContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2129 + self.multipartIdentifier() + self.state = 2131 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,267,self._ctx) + if la_ == 1: + self.state = 2130 + self.sample() + + + self.state = 2133 + self.tableAlias() + pass + + elif la_ == 2: + localctx = SqlBaseParser.AliasedQueryContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2135 + self.match(SqlBaseParser.T__1) + self.state = 2136 + self.query() + self.state = 2137 + self.match(SqlBaseParser.T__2) + self.state = 2139 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,268,self._ctx) + if la_ == 1: + self.state = 2138 + self.sample() + + + self.state = 2141 + self.tableAlias() + pass + + elif la_ == 3: + localctx = SqlBaseParser.AliasedRelationContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2143 + self.match(SqlBaseParser.T__1) + self.state = 2144 + self.relation() + self.state = 2145 + self.match(SqlBaseParser.T__2) + self.state = 2147 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,269,self._ctx) + if la_ == 1: + self.state = 2146 + self.sample() + + + self.state = 2149 + self.tableAlias() + pass + + elif la_ == 4: + localctx = SqlBaseParser.InlineTableDefault2Context(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2151 + self.inlineTable() + pass + + elif la_ == 5: + localctx = SqlBaseParser.TableValuedFunctionContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 2152 + self.functionTable() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InlineTableContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def VALUES(self): + return self.getToken(SqlBaseParser.VALUES, 0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def tableAlias(self): + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_inlineTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInlineTable" ): + listener.enterInlineTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInlineTable" ): + listener.exitInlineTable(self) + + + + + def inlineTable(self): + + localctx = SqlBaseParser.InlineTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 160, self.RULE_inlineTable) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2155 + self.match(SqlBaseParser.VALUES) + self.state = 2156 + self.expression() + self.state = 2161 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,271,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2157 + self.match(SqlBaseParser.T__3) + self.state = 2158 + self.expression() + self.state = 2163 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,271,self._ctx) + + self.state = 2164 + self.tableAlias() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FunctionTableContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.funcName = None # ErrorCapturingIdentifierContext + + def tableAlias(self): + return self.getTypedRuleContext(SqlBaseParser.TableAliasContext,0) + + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_functionTable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionTable" ): + listener.enterFunctionTable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionTable" ): + listener.exitFunctionTable(self) + + + + + def functionTable(self): + + localctx = SqlBaseParser.FunctionTableContext(self, self._ctx, self.state) + self.enterRule(localctx, 162, self.RULE_functionTable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2166 + localctx.funcName = self.errorCapturingIdentifier() + self.state = 2167 + self.match(SqlBaseParser.T__1) + self.state = 2176 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,273,self._ctx) + if la_ == 1: + self.state = 2168 + self.expression() + self.state = 2173 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2169 + self.match(SqlBaseParser.T__3) + self.state = 2170 + self.expression() + self.state = 2175 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 2178 + self.match(SqlBaseParser.T__2) + self.state = 2179 + self.tableAlias() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TableAliasContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def strictIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.StrictIdentifierContext,0) + + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def identifierList(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_tableAlias + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableAlias" ): + listener.enterTableAlias(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableAlias" ): + listener.exitTableAlias(self) + + + + + def tableAlias(self): + + localctx = SqlBaseParser.TableAliasContext(self, self._ctx, self.state) + self.enterRule(localctx, 164, self.RULE_tableAlias) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2188 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,276,self._ctx) + if la_ == 1: + self.state = 2182 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,274,self._ctx) + if la_ == 1: + self.state = 2181 + self.match(SqlBaseParser.AS) + + + self.state = 2184 + self.strictIdentifier() + self.state = 2186 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,275,self._ctx) + if la_ == 1: + self.state = 2185 + self.identifierList() + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RowFormatContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_rowFormat + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class RowFormatSerdeContext(RowFormatContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.RowFormatContext + super().__init__(parser) + self.name = None # Token + self.props = None # TablePropertyListContext + self.copyFrom(ctx) + + def ROW(self): + return self.getToken(SqlBaseParser.ROW, 0) + def FORMAT(self): + return self.getToken(SqlBaseParser.FORMAT, 0) + def SERDE(self): + return self.getToken(SqlBaseParser.SERDE, 0) + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + def WITH(self): + return self.getToken(SqlBaseParser.WITH, 0) + def SERDEPROPERTIES(self): + return self.getToken(SqlBaseParser.SERDEPROPERTIES, 0) + def tablePropertyList(self): + return self.getTypedRuleContext(SqlBaseParser.TablePropertyListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRowFormatSerde" ): + listener.enterRowFormatSerde(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRowFormatSerde" ): + listener.exitRowFormatSerde(self) + + + class RowFormatDelimitedContext(RowFormatContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.RowFormatContext + super().__init__(parser) + self.fieldsTerminatedBy = None # Token + self.escapedBy = None # Token + self.collectionItemsTerminatedBy = None # Token + self.keysTerminatedBy = None # Token + self.linesSeparatedBy = None # Token + self.nullDefinedAs = None # Token + self.copyFrom(ctx) + + def ROW(self): + return self.getToken(SqlBaseParser.ROW, 0) + def FORMAT(self): + return self.getToken(SqlBaseParser.FORMAT, 0) + def DELIMITED(self): + return self.getToken(SqlBaseParser.DELIMITED, 0) + def FIELDS(self): + return self.getToken(SqlBaseParser.FIELDS, 0) + def TERMINATED(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.TERMINATED) + else: + return self.getToken(SqlBaseParser.TERMINATED, i) + def BY(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.BY) + else: + return self.getToken(SqlBaseParser.BY, i) + def COLLECTION(self): + return self.getToken(SqlBaseParser.COLLECTION, 0) + def ITEMS(self): + return self.getToken(SqlBaseParser.ITEMS, 0) + def MAP(self): + return self.getToken(SqlBaseParser.MAP, 0) + def KEYS(self): + return self.getToken(SqlBaseParser.KEYS, 0) + def LINES(self): + return self.getToken(SqlBaseParser.LINES, 0) + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + def DEFINED(self): + return self.getToken(SqlBaseParser.DEFINED, 0) + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + def STRING(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.STRING) + else: + return self.getToken(SqlBaseParser.STRING, i) + def ESCAPED(self): + return self.getToken(SqlBaseParser.ESCAPED, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRowFormatDelimited" ): + listener.enterRowFormatDelimited(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRowFormatDelimited" ): + listener.exitRowFormatDelimited(self) + + + + def rowFormat(self): + + localctx = SqlBaseParser.RowFormatContext(self, self._ctx, self.state) + self.enterRule(localctx, 166, self.RULE_rowFormat) + try: + self.state = 2239 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,284,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.RowFormatSerdeContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2190 + self.match(SqlBaseParser.ROW) + self.state = 2191 + self.match(SqlBaseParser.FORMAT) + self.state = 2192 + self.match(SqlBaseParser.SERDE) + self.state = 2193 + localctx.name = self.match(SqlBaseParser.STRING) + self.state = 2197 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,277,self._ctx) + if la_ == 1: + self.state = 2194 + self.match(SqlBaseParser.WITH) + self.state = 2195 + self.match(SqlBaseParser.SERDEPROPERTIES) + self.state = 2196 + localctx.props = self.tablePropertyList() + + + pass + + elif la_ == 2: + localctx = SqlBaseParser.RowFormatDelimitedContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2199 + self.match(SqlBaseParser.ROW) + self.state = 2200 + self.match(SqlBaseParser.FORMAT) + self.state = 2201 + self.match(SqlBaseParser.DELIMITED) + self.state = 2211 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,279,self._ctx) + if la_ == 1: + self.state = 2202 + self.match(SqlBaseParser.FIELDS) + self.state = 2203 + self.match(SqlBaseParser.TERMINATED) + self.state = 2204 + self.match(SqlBaseParser.BY) + self.state = 2205 + localctx.fieldsTerminatedBy = self.match(SqlBaseParser.STRING) + self.state = 2209 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,278,self._ctx) + if la_ == 1: + self.state = 2206 + self.match(SqlBaseParser.ESCAPED) + self.state = 2207 + self.match(SqlBaseParser.BY) + self.state = 2208 + localctx.escapedBy = self.match(SqlBaseParser.STRING) + + + + + self.state = 2218 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,280,self._ctx) + if la_ == 1: + self.state = 2213 + self.match(SqlBaseParser.COLLECTION) + self.state = 2214 + self.match(SqlBaseParser.ITEMS) + self.state = 2215 + self.match(SqlBaseParser.TERMINATED) + self.state = 2216 + self.match(SqlBaseParser.BY) + self.state = 2217 + localctx.collectionItemsTerminatedBy = self.match(SqlBaseParser.STRING) + + + self.state = 2225 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,281,self._ctx) + if la_ == 1: + self.state = 2220 + self.match(SqlBaseParser.MAP) + self.state = 2221 + self.match(SqlBaseParser.KEYS) + self.state = 2222 + self.match(SqlBaseParser.TERMINATED) + self.state = 2223 + self.match(SqlBaseParser.BY) + self.state = 2224 + localctx.keysTerminatedBy = self.match(SqlBaseParser.STRING) + + + self.state = 2231 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,282,self._ctx) + if la_ == 1: + self.state = 2227 + self.match(SqlBaseParser.LINES) + self.state = 2228 + self.match(SqlBaseParser.TERMINATED) + self.state = 2229 + self.match(SqlBaseParser.BY) + self.state = 2230 + localctx.linesSeparatedBy = self.match(SqlBaseParser.STRING) + + + self.state = 2237 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,283,self._ctx) + if la_ == 1: + self.state = 2233 + self.match(SqlBaseParser.NULL) + self.state = 2234 + self.match(SqlBaseParser.DEFINED) + self.state = 2235 + self.match(SqlBaseParser.AS) + self.state = 2236 + localctx.nullDefinedAs = self.match(SqlBaseParser.STRING) + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MultipartIdentifierListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def multipartIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.MultipartIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_multipartIdentifierList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultipartIdentifierList" ): + listener.enterMultipartIdentifierList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultipartIdentifierList" ): + listener.exitMultipartIdentifierList(self) + + + + + def multipartIdentifierList(self): + + localctx = SqlBaseParser.MultipartIdentifierListContext(self, self._ctx, self.state) + self.enterRule(localctx, 168, self.RULE_multipartIdentifierList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2241 + self.multipartIdentifier() + self.state = 2246 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2242 + self.match(SqlBaseParser.T__3) + self.state = 2243 + self.multipartIdentifier() + self.state = 2248 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MultipartIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._errorCapturingIdentifier = None # ErrorCapturingIdentifierContext + self.parts = list() # of ErrorCapturingIdentifierContexts + + def errorCapturingIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ErrorCapturingIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_multipartIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultipartIdentifier" ): + listener.enterMultipartIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultipartIdentifier" ): + listener.exitMultipartIdentifier(self) + + + + + def multipartIdentifier(self): + + localctx = SqlBaseParser.MultipartIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 170, self.RULE_multipartIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2249 + localctx._errorCapturingIdentifier = self.errorCapturingIdentifier() + localctx.parts.append(localctx._errorCapturingIdentifier) + self.state = 2254 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,286,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2250 + self.match(SqlBaseParser.T__4) + self.state = 2251 + localctx._errorCapturingIdentifier = self.errorCapturingIdentifier() + localctx.parts.append(localctx._errorCapturingIdentifier) + self.state = 2256 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,286,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TableIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.db = None # ErrorCapturingIdentifierContext + self.table = None # ErrorCapturingIdentifierContext + + def errorCapturingIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ErrorCapturingIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_tableIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTableIdentifier" ): + listener.enterTableIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTableIdentifier" ): + listener.exitTableIdentifier(self) + + + + + def tableIdentifier(self): + + localctx = SqlBaseParser.TableIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 172, self.RULE_tableIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2260 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,287,self._ctx) + if la_ == 1: + self.state = 2257 + localctx.db = self.errorCapturingIdentifier() + self.state = 2258 + self.match(SqlBaseParser.T__4) + + + self.state = 2262 + localctx.table = self.errorCapturingIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FunctionIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.db = None # ErrorCapturingIdentifierContext + self.function = None # ErrorCapturingIdentifierContext + + def errorCapturingIdentifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ErrorCapturingIdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_functionIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionIdentifier" ): + listener.enterFunctionIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionIdentifier" ): + listener.exitFunctionIdentifier(self) + + + + + def functionIdentifier(self): + + localctx = SqlBaseParser.FunctionIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 174, self.RULE_functionIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2267 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,288,self._ctx) + if la_ == 1: + self.state = 2264 + localctx.db = self.errorCapturingIdentifier() + self.state = 2265 + self.match(SqlBaseParser.T__4) + + + self.state = 2269 + localctx.function = self.errorCapturingIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NamedExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.name = None # ErrorCapturingIdentifierContext + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def identifierList(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierListContext,0) + + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_namedExpression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNamedExpression" ): + listener.enterNamedExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNamedExpression" ): + listener.exitNamedExpression(self) + + + + + def namedExpression(self): + + localctx = SqlBaseParser.NamedExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 176, self.RULE_namedExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2271 + self.expression() + self.state = 2279 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,291,self._ctx) + if la_ == 1: + self.state = 2273 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,289,self._ctx) + if la_ == 1: + self.state = 2272 + self.match(SqlBaseParser.AS) + + + self.state = 2277 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,290,self._ctx) + if la_ == 1: + self.state = 2275 + localctx.name = self.errorCapturingIdentifier() + pass + + elif la_ == 2: + self.state = 2276 + self.identifierList() + pass + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NamedExpressionSeqContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def namedExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.NamedExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.NamedExpressionContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_namedExpressionSeq + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNamedExpressionSeq" ): + listener.enterNamedExpressionSeq(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNamedExpressionSeq" ): + listener.exitNamedExpressionSeq(self) + + + + + def namedExpressionSeq(self): + + localctx = SqlBaseParser.NamedExpressionSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 178, self.RULE_namedExpressionSeq) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2281 + self.namedExpression() + self.state = 2286 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,292,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2282 + self.match(SqlBaseParser.T__3) + self.state = 2283 + self.namedExpression() + self.state = 2288 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,292,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TransformListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self._transform = None # TransformContext + self.transforms = list() # of TransformContexts + + def transform(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TransformContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TransformContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_transformList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransformList" ): + listener.enterTransformList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransformList" ): + listener.exitTransformList(self) + + + + + def transformList(self): + + localctx = SqlBaseParser.TransformListContext(self, self._ctx, self.state) + self.enterRule(localctx, 180, self.RULE_transformList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2289 + self.match(SqlBaseParser.T__1) + self.state = 2290 + localctx._transform = self.transform() + localctx.transforms.append(localctx._transform) + self.state = 2295 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2291 + self.match(SqlBaseParser.T__3) + self.state = 2292 + localctx._transform = self.transform() + localctx.transforms.append(localctx._transform) + self.state = 2297 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2298 + self.match(SqlBaseParser.T__2) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TransformContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_transform + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class IdentityTransformContext(TransformContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.TransformContext + super().__init__(parser) + self.copyFrom(ctx) + + def qualifiedName(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIdentityTransform" ): + listener.enterIdentityTransform(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIdentityTransform" ): + listener.exitIdentityTransform(self) + + + class ApplyTransformContext(TransformContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.TransformContext + super().__init__(parser) + self.transformName = None # IdentifierContext + self._transformArgument = None # TransformArgumentContext + self.argument = list() # of TransformArgumentContexts + self.copyFrom(ctx) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def transformArgument(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.TransformArgumentContext) + else: + return self.getTypedRuleContext(SqlBaseParser.TransformArgumentContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterApplyTransform" ): + listener.enterApplyTransform(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitApplyTransform" ): + listener.exitApplyTransform(self) + + + + def transform(self): + + localctx = SqlBaseParser.TransformContext(self, self._ctx, self.state) + self.enterRule(localctx, 182, self.RULE_transform) + self._la = 0 # Token type + try: + self.state = 2313 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,295,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.IdentityTransformContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2300 + self.qualifiedName() + pass + + elif la_ == 2: + localctx = SqlBaseParser.ApplyTransformContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2301 + localctx.transformName = self.identifier() + self.state = 2302 + self.match(SqlBaseParser.T__1) + self.state = 2303 + localctx._transformArgument = self.transformArgument() + localctx.argument.append(localctx._transformArgument) + self.state = 2308 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2304 + self.match(SqlBaseParser.T__3) + self.state = 2305 + localctx._transformArgument = self.transformArgument() + localctx.argument.append(localctx._transformArgument) + self.state = 2310 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2311 + self.match(SqlBaseParser.T__2) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TransformArgumentContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def qualifiedName(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,0) + + + def constant(self): + return self.getTypedRuleContext(SqlBaseParser.ConstantContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_transformArgument + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTransformArgument" ): + listener.enterTransformArgument(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTransformArgument" ): + listener.exitTransformArgument(self) + + + + + def transformArgument(self): + + localctx = SqlBaseParser.TransformArgumentContext(self, self._ctx, self.state) + self.enterRule(localctx, 184, self.RULE_transformArgument) + try: + self.state = 2317 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,296,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2315 + self.qualifiedName() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2316 + self.constant() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_expression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExpression" ): + listener.enterExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExpression" ): + listener.exitExpression(self) + + + + + def expression(self): + + localctx = SqlBaseParser.ExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 186, self.RULE_expression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2319 + self.booleanExpression(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BooleanExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_booleanExpression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class LogicalNotContext(BooleanExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.BooleanExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLogicalNot" ): + listener.enterLogicalNot(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLogicalNot" ): + listener.exitLogicalNot(self) + + + class PredicatedContext(BooleanExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.BooleanExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def valueExpression(self): + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,0) + + def predicate(self): + return self.getTypedRuleContext(SqlBaseParser.PredicateContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPredicated" ): + listener.enterPredicated(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPredicated" ): + listener.exitPredicated(self) + + + class ExistsContext(BooleanExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.BooleanExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExists" ): + listener.enterExists(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExists" ): + listener.exitExists(self) + + + class LogicalBinaryContext(BooleanExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.BooleanExpressionContext + super().__init__(parser) + self.left = None # BooleanExpressionContext + self.operator = None # Token + self.right = None # BooleanExpressionContext + self.copyFrom(ctx) + + def booleanExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.BooleanExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,i) + + def AND(self): + return self.getToken(SqlBaseParser.AND, 0) + def OR(self): + return self.getToken(SqlBaseParser.OR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLogicalBinary" ): + listener.enterLogicalBinary(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLogicalBinary" ): + listener.exitLogicalBinary(self) + + + + def booleanExpression(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = SqlBaseParser.BooleanExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 188 + self.enterRecursionRule(localctx, 188, self.RULE_booleanExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2333 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,298,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.LogicalNotContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 2322 + self.match(SqlBaseParser.NOT) + self.state = 2323 + self.booleanExpression(5) + pass + + elif la_ == 2: + localctx = SqlBaseParser.ExistsContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2324 + self.match(SqlBaseParser.EXISTS) + self.state = 2325 + self.match(SqlBaseParser.T__1) + self.state = 2326 + self.query() + self.state = 2327 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 3: + localctx = SqlBaseParser.PredicatedContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2329 + self.valueExpression(0) + self.state = 2331 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,297,self._ctx) + if la_ == 1: + self.state = 2330 + self.predicate() + + + pass + + + self._ctx.stop = self._input.LT(-1) + self.state = 2343 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,300,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2341 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,299,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.LogicalBinaryContext(self, SqlBaseParser.BooleanExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_booleanExpression) + self.state = 2335 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 2336 + localctx.operator = self.match(SqlBaseParser.AND) + self.state = 2337 + localctx.right = self.booleanExpression(3) + pass + + elif la_ == 2: + localctx = SqlBaseParser.LogicalBinaryContext(self, SqlBaseParser.BooleanExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_booleanExpression) + self.state = 2338 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2339 + localctx.operator = self.match(SqlBaseParser.OR) + self.state = 2340 + localctx.right = self.booleanExpression(2) + pass + + + self.state = 2345 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,300,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class PredicateContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.kind = None # Token + self.lower = None # ValueExpressionContext + self.upper = None # ValueExpressionContext + self.pattern = None # ValueExpressionContext + self.quantifier = None # Token + self.escapeChar = None # Token + self.right = None # ValueExpressionContext + + def AND(self): + return self.getToken(SqlBaseParser.AND, 0) + + def BETWEEN(self): + return self.getToken(SqlBaseParser.BETWEEN, 0) + + def valueExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ValueExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,i) + + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + + def RLIKE(self): + return self.getToken(SqlBaseParser.RLIKE, 0) + + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + + def ANY(self): + return self.getToken(SqlBaseParser.ANY, 0) + + def SOME(self): + return self.getToken(SqlBaseParser.SOME, 0) + + def ALL(self): + return self.getToken(SqlBaseParser.ALL, 0) + + def ESCAPE(self): + return self.getToken(SqlBaseParser.ESCAPE, 0) + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def IS(self): + return self.getToken(SqlBaseParser.IS, 0) + + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def TRUE(self): + return self.getToken(SqlBaseParser.TRUE, 0) + + def FALSE(self): + return self.getToken(SqlBaseParser.FALSE, 0) + + def UNKNOWN(self): + return self.getToken(SqlBaseParser.UNKNOWN, 0) + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + + def DISTINCT(self): + return self.getToken(SqlBaseParser.DISTINCT, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_predicate + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPredicate" ): + listener.enterPredicate(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPredicate" ): + listener.exitPredicate(self) + + + + + def predicate(self): + + localctx = SqlBaseParser.PredicateContext(self, self._ctx, self.state) + self.enterRule(localctx, 190, self.RULE_predicate) + self._la = 0 # Token type + try: + self.state = 2428 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,314,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2347 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2346 + self.match(SqlBaseParser.NOT) + + + self.state = 2349 + localctx.kind = self.match(SqlBaseParser.BETWEEN) + self.state = 2350 + localctx.lower = self.valueExpression(0) + self.state = 2351 + self.match(SqlBaseParser.AND) + self.state = 2352 + localctx.upper = self.valueExpression(0) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2355 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2354 + self.match(SqlBaseParser.NOT) + + + self.state = 2357 + localctx.kind = self.match(SqlBaseParser.IN) + self.state = 2358 + self.match(SqlBaseParser.T__1) + self.state = 2359 + self.expression() + self.state = 2364 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2360 + self.match(SqlBaseParser.T__3) + self.state = 2361 + self.expression() + self.state = 2366 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2367 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2370 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2369 + self.match(SqlBaseParser.NOT) + + + self.state = 2372 + localctx.kind = self.match(SqlBaseParser.IN) + self.state = 2373 + self.match(SqlBaseParser.T__1) + self.state = 2374 + self.query() + self.state = 2375 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2378 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2377 + self.match(SqlBaseParser.NOT) + + + self.state = 2380 + localctx.kind = self.match(SqlBaseParser.RLIKE) + self.state = 2381 + localctx.pattern = self.valueExpression(0) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2383 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2382 + self.match(SqlBaseParser.NOT) + + + self.state = 2385 + localctx.kind = self.match(SqlBaseParser.LIKE) + self.state = 2386 + localctx.quantifier = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.ALL or _la==SqlBaseParser.ANY or _la==SqlBaseParser.SOME): + localctx.quantifier = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2400 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,308,self._ctx) + if la_ == 1: + self.state = 2387 + self.match(SqlBaseParser.T__1) + self.state = 2388 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 2: + self.state = 2389 + self.match(SqlBaseParser.T__1) + self.state = 2390 + self.expression() + self.state = 2395 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2391 + self.match(SqlBaseParser.T__3) + self.state = 2392 + self.expression() + self.state = 2397 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2398 + self.match(SqlBaseParser.T__2) + pass + + + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2403 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2402 + self.match(SqlBaseParser.NOT) + + + self.state = 2405 + localctx.kind = self.match(SqlBaseParser.LIKE) + self.state = 2406 + localctx.pattern = self.valueExpression(0) + self.state = 2409 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,310,self._ctx) + if la_ == 1: + self.state = 2407 + self.match(SqlBaseParser.ESCAPE) + self.state = 2408 + localctx.escapeChar = self.match(SqlBaseParser.STRING) + + + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 2411 + self.match(SqlBaseParser.IS) + self.state = 2413 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2412 + self.match(SqlBaseParser.NOT) + + + self.state = 2415 + localctx.kind = self.match(SqlBaseParser.NULL) + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 2416 + self.match(SqlBaseParser.IS) + self.state = 2418 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2417 + self.match(SqlBaseParser.NOT) + + + self.state = 2420 + localctx.kind = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FALSE or _la==SqlBaseParser.TRUE or _la==SqlBaseParser.UNKNOWN): + localctx.kind = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 2421 + self.match(SqlBaseParser.IS) + self.state = 2423 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2422 + self.match(SqlBaseParser.NOT) + + + self.state = 2425 + localctx.kind = self.match(SqlBaseParser.DISTINCT) + self.state = 2426 + self.match(SqlBaseParser.FROM) + self.state = 2427 + localctx.right = self.valueExpression(0) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ValueExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_valueExpression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class ValueExpressionDefaultContext(ValueExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ValueExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def primaryExpression(self): + return self.getTypedRuleContext(SqlBaseParser.PrimaryExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterValueExpressionDefault" ): + listener.enterValueExpressionDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitValueExpressionDefault" ): + listener.exitValueExpressionDefault(self) + + + class ComparisonContext(ValueExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ValueExpressionContext + super().__init__(parser) + self.left = None # ValueExpressionContext + self.right = None # ValueExpressionContext + self.copyFrom(ctx) + + def comparisonOperator(self): + return self.getTypedRuleContext(SqlBaseParser.ComparisonOperatorContext,0) + + def valueExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ValueExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComparison" ): + listener.enterComparison(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComparison" ): + listener.exitComparison(self) + + + class ArithmeticBinaryContext(ValueExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ValueExpressionContext + super().__init__(parser) + self.left = None # ValueExpressionContext + self.operator = None # Token + self.right = None # ValueExpressionContext + self.copyFrom(ctx) + + def valueExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ValueExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,i) + + def ASTERISK(self): + return self.getToken(SqlBaseParser.ASTERISK, 0) + def SLASH(self): + return self.getToken(SqlBaseParser.SLASH, 0) + def PERCENT(self): + return self.getToken(SqlBaseParser.PERCENT, 0) + def DIV(self): + return self.getToken(SqlBaseParser.DIV, 0) + def PLUS(self): + return self.getToken(SqlBaseParser.PLUS, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + def CONCAT_PIPE(self): + return self.getToken(SqlBaseParser.CONCAT_PIPE, 0) + def AMPERSAND(self): + return self.getToken(SqlBaseParser.AMPERSAND, 0) + def HAT(self): + return self.getToken(SqlBaseParser.HAT, 0) + def PIPE(self): + return self.getToken(SqlBaseParser.PIPE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArithmeticBinary" ): + listener.enterArithmeticBinary(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArithmeticBinary" ): + listener.exitArithmeticBinary(self) + + + class ArithmeticUnaryContext(ValueExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ValueExpressionContext + super().__init__(parser) + self.operator = None # Token + self.copyFrom(ctx) + + def valueExpression(self): + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,0) + + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + def PLUS(self): + return self.getToken(SqlBaseParser.PLUS, 0) + def TILDE(self): + return self.getToken(SqlBaseParser.TILDE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArithmeticUnary" ): + listener.enterArithmeticUnary(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArithmeticUnary" ): + listener.exitArithmeticUnary(self) + + + + def valueExpression(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = SqlBaseParser.ValueExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 192 + self.enterRecursionRule(localctx, 192, self.RULE_valueExpression, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2434 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,315,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.ValueExpressionDefaultContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 2431 + self.primaryExpression(0) + pass + + elif la_ == 2: + localctx = SqlBaseParser.ArithmeticUnaryContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2432 + localctx.operator = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 272)) & ~0x3f) == 0 and ((1 << (_la - 272)) & ((1 << (SqlBaseParser.PLUS - 272)) | (1 << (SqlBaseParser.MINUS - 272)) | (1 << (SqlBaseParser.TILDE - 272)))) != 0)): + localctx.operator = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2433 + self.valueExpression(7) + pass + + + self._ctx.stop = self._input.LT(-1) + self.state = 2457 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,317,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2455 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,316,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.ArithmeticBinaryContext(self, SqlBaseParser.ValueExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpression) + self.state = 2436 + if not self.precpred(self._ctx, 6): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 2437 + localctx.operator = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 274)) & ~0x3f) == 0 and ((1 << (_la - 274)) & ((1 << (SqlBaseParser.ASTERISK - 274)) | (1 << (SqlBaseParser.SLASH - 274)) | (1 << (SqlBaseParser.PERCENT - 274)) | (1 << (SqlBaseParser.DIV - 274)))) != 0)): + localctx.operator = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2438 + localctx.right = self.valueExpression(7) + pass + + elif la_ == 2: + localctx = SqlBaseParser.ArithmeticBinaryContext(self, SqlBaseParser.ValueExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpression) + self.state = 2439 + if not self.precpred(self._ctx, 5): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + self.state = 2440 + localctx.operator = self._input.LT(1) + _la = self._input.LA(1) + if not(((((_la - 272)) & ~0x3f) == 0 and ((1 << (_la - 272)) & ((1 << (SqlBaseParser.PLUS - 272)) | (1 << (SqlBaseParser.MINUS - 272)) | (1 << (SqlBaseParser.CONCAT_PIPE - 272)))) != 0)): + localctx.operator = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2441 + localctx.right = self.valueExpression(6) + pass + + elif la_ == 3: + localctx = SqlBaseParser.ArithmeticBinaryContext(self, SqlBaseParser.ValueExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpression) + self.state = 2442 + if not self.precpred(self._ctx, 4): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + self.state = 2443 + localctx.operator = self.match(SqlBaseParser.AMPERSAND) + self.state = 2444 + localctx.right = self.valueExpression(5) + pass + + elif la_ == 4: + localctx = SqlBaseParser.ArithmeticBinaryContext(self, SqlBaseParser.ValueExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpression) + self.state = 2445 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 2446 + localctx.operator = self.match(SqlBaseParser.HAT) + self.state = 2447 + localctx.right = self.valueExpression(4) + pass + + elif la_ == 5: + localctx = SqlBaseParser.ArithmeticBinaryContext(self, SqlBaseParser.ValueExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpression) + self.state = 2448 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 2449 + localctx.operator = self.match(SqlBaseParser.PIPE) + self.state = 2450 + localctx.right = self.valueExpression(3) + pass + + elif la_ == 6: + localctx = SqlBaseParser.ComparisonContext(self, SqlBaseParser.ValueExpressionContext(self, _parentctx, _parentState)) + localctx.left = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpression) + self.state = 2451 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2452 + self.comparisonOperator() + self.state = 2453 + localctx.right = self.valueExpression(2) + pass + + + self.state = 2459 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,317,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class PrimaryExpressionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_primaryExpression + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class StructContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self._namedExpression = None # NamedExpressionContext + self.argument = list() # of NamedExpressionContexts + self.copyFrom(ctx) + + def STRUCT(self): + return self.getToken(SqlBaseParser.STRUCT, 0) + def namedExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.NamedExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.NamedExpressionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStruct" ): + listener.enterStruct(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStruct" ): + listener.exitStruct(self) + + + class DereferenceContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.base = None # PrimaryExpressionContext + self.fieldName = None # IdentifierContext + self.copyFrom(ctx) + + def primaryExpression(self): + return self.getTypedRuleContext(SqlBaseParser.PrimaryExpressionContext,0) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDereference" ): + listener.enterDereference(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDereference" ): + listener.exitDereference(self) + + + class SimpleCaseContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.value = None # ExpressionContext + self.elseExpression = None # ExpressionContext + self.copyFrom(ctx) + + def CASE(self): + return self.getToken(SqlBaseParser.CASE, 0) + def END(self): + return self.getToken(SqlBaseParser.END, 0) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + def whenClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.WhenClauseContext) + else: + return self.getTypedRuleContext(SqlBaseParser.WhenClauseContext,i) + + def ELSE(self): + return self.getToken(SqlBaseParser.ELSE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleCase" ): + listener.enterSimpleCase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleCase" ): + listener.exitSimpleCase(self) + + + class ColumnReferenceContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterColumnReference" ): + listener.enterColumnReference(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitColumnReference" ): + listener.exitColumnReference(self) + + + class RowConstructorContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def namedExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.NamedExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.NamedExpressionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRowConstructor" ): + listener.enterRowConstructor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRowConstructor" ): + listener.exitRowConstructor(self) + + + class LastContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def LAST(self): + return self.getToken(SqlBaseParser.LAST, 0) + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + def IGNORE(self): + return self.getToken(SqlBaseParser.IGNORE, 0) + def NULLS(self): + return self.getToken(SqlBaseParser.NULLS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLast" ): + listener.enterLast(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLast" ): + listener.exitLast(self) + + + class StarContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def ASTERISK(self): + return self.getToken(SqlBaseParser.ASTERISK, 0) + def qualifiedName(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStar" ): + listener.enterStar(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStar" ): + listener.exitStar(self) + + + class OverlayContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.input = None # ValueExpressionContext + self.replace = None # ValueExpressionContext + self.position = None # ValueExpressionContext + self.length = None # ValueExpressionContext + self.copyFrom(ctx) + + def OVERLAY(self): + return self.getToken(SqlBaseParser.OVERLAY, 0) + def PLACING(self): + return self.getToken(SqlBaseParser.PLACING, 0) + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def valueExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ValueExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,i) + + def FOR(self): + return self.getToken(SqlBaseParser.FOR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOverlay" ): + listener.enterOverlay(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOverlay" ): + listener.exitOverlay(self) + + + class SubscriptContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.value = None # PrimaryExpressionContext + self.index = None # ValueExpressionContext + self.copyFrom(ctx) + + def primaryExpression(self): + return self.getTypedRuleContext(SqlBaseParser.PrimaryExpressionContext,0) + + def valueExpression(self): + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubscript" ): + listener.enterSubscript(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubscript" ): + listener.exitSubscript(self) + + + class SubqueryExpressionContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def query(self): + return self.getTypedRuleContext(SqlBaseParser.QueryContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubqueryExpression" ): + listener.enterSubqueryExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubqueryExpression" ): + listener.exitSubqueryExpression(self) + + + class SubstringContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.str = None # ValueExpressionContext + self.pos = None # ValueExpressionContext + self.len = None # ValueExpressionContext + self.copyFrom(ctx) + + def SUBSTR(self): + return self.getToken(SqlBaseParser.SUBSTR, 0) + def SUBSTRING(self): + return self.getToken(SqlBaseParser.SUBSTRING, 0) + def valueExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ValueExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,i) + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def FOR(self): + return self.getToken(SqlBaseParser.FOR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSubstring" ): + listener.enterSubstring(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSubstring" ): + listener.exitSubstring(self) + + + class CurrentDatetimeContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.name = None # Token + self.copyFrom(ctx) + + def CURRENT_DATE(self): + return self.getToken(SqlBaseParser.CURRENT_DATE, 0) + def CURRENT_TIMESTAMP(self): + return self.getToken(SqlBaseParser.CURRENT_TIMESTAMP, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCurrentDatetime" ): + listener.enterCurrentDatetime(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCurrentDatetime" ): + listener.exitCurrentDatetime(self) + + + class CastContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def CAST(self): + return self.getToken(SqlBaseParser.CAST, 0) + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + def dataType(self): + return self.getTypedRuleContext(SqlBaseParser.DataTypeContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCast" ): + listener.enterCast(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCast" ): + listener.exitCast(self) + + + class ConstantDefaultContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def constant(self): + return self.getTypedRuleContext(SqlBaseParser.ConstantContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterConstantDefault" ): + listener.enterConstantDefault(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitConstantDefault" ): + listener.exitConstantDefault(self) + + + class LambdaContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def identifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,i) + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLambda" ): + listener.enterLambda(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLambda" ): + listener.exitLambda(self) + + + class ParenthesizedExpressionContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterParenthesizedExpression" ): + listener.enterParenthesizedExpression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitParenthesizedExpression" ): + listener.exitParenthesizedExpression(self) + + + class ExtractContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.field = None # IdentifierContext + self.source = None # ValueExpressionContext + self.copyFrom(ctx) + + def EXTRACT(self): + return self.getToken(SqlBaseParser.EXTRACT, 0) + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def valueExpression(self): + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExtract" ): + listener.enterExtract(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExtract" ): + listener.exitExtract(self) + + + class TrimContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.trimOption = None # Token + self.trimStr = None # ValueExpressionContext + self.srcStr = None # ValueExpressionContext + self.copyFrom(ctx) + + def TRIM(self): + return self.getToken(SqlBaseParser.TRIM, 0) + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + def valueExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ValueExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,i) + + def BOTH(self): + return self.getToken(SqlBaseParser.BOTH, 0) + def LEADING(self): + return self.getToken(SqlBaseParser.LEADING, 0) + def TRAILING(self): + return self.getToken(SqlBaseParser.TRAILING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTrim" ): + listener.enterTrim(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTrim" ): + listener.exitTrim(self) + + + class FunctionCallContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self._expression = None # ExpressionContext + self.argument = list() # of ExpressionContexts + self.where = None # BooleanExpressionContext + self.copyFrom(ctx) + + def functionName(self): + return self.getTypedRuleContext(SqlBaseParser.FunctionNameContext,0) + + def FILTER(self): + return self.getToken(SqlBaseParser.FILTER, 0) + def WHERE(self): + return self.getToken(SqlBaseParser.WHERE, 0) + def OVER(self): + return self.getToken(SqlBaseParser.OVER, 0) + def windowSpec(self): + return self.getTypedRuleContext(SqlBaseParser.WindowSpecContext,0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + def booleanExpression(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanExpressionContext,0) + + def setQuantifier(self): + return self.getTypedRuleContext(SqlBaseParser.SetQuantifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionCall" ): + listener.enterFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionCall" ): + listener.exitFunctionCall(self) + + + class SearchedCaseContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.elseExpression = None # ExpressionContext + self.copyFrom(ctx) + + def CASE(self): + return self.getToken(SqlBaseParser.CASE, 0) + def END(self): + return self.getToken(SqlBaseParser.END, 0) + def whenClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.WhenClauseContext) + else: + return self.getTypedRuleContext(SqlBaseParser.WhenClauseContext,i) + + def ELSE(self): + return self.getToken(SqlBaseParser.ELSE, 0) + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSearchedCase" ): + listener.enterSearchedCase(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSearchedCase" ): + listener.exitSearchedCase(self) + + + class PositionContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.substr = None # ValueExpressionContext + self.str = None # ValueExpressionContext + self.copyFrom(ctx) + + def POSITION(self): + return self.getToken(SqlBaseParser.POSITION, 0) + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + def valueExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ValueExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ValueExpressionContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPosition" ): + listener.enterPosition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPosition" ): + listener.exitPosition(self) + + + class FirstContext(PrimaryExpressionContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.PrimaryExpressionContext + super().__init__(parser) + self.copyFrom(ctx) + + def FIRST(self): + return self.getToken(SqlBaseParser.FIRST, 0) + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + def IGNORE(self): + return self.getToken(SqlBaseParser.IGNORE, 0) + def NULLS(self): + return self.getToken(SqlBaseParser.NULLS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFirst" ): + listener.enterFirst(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFirst" ): + listener.exitFirst(self) + + + + def primaryExpression(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = SqlBaseParser.PrimaryExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 194 + self.enterRecursionRule(localctx, 194, self.RULE_primaryExpression, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2644 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,337,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.CurrentDatetimeContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 2461 + localctx.name = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.CURRENT_DATE or _la==SqlBaseParser.CURRENT_TIMESTAMP): + localctx.name = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 2: + localctx = SqlBaseParser.SearchedCaseContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2462 + self.match(SqlBaseParser.CASE) + self.state = 2464 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2463 + self.whenClause() + self.state = 2466 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==SqlBaseParser.WHEN): + break + + self.state = 2470 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ELSE: + self.state = 2468 + self.match(SqlBaseParser.ELSE) + self.state = 2469 + localctx.elseExpression = self.expression() + + + self.state = 2472 + self.match(SqlBaseParser.END) + pass + + elif la_ == 3: + localctx = SqlBaseParser.SimpleCaseContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2474 + self.match(SqlBaseParser.CASE) + self.state = 2475 + localctx.value = self.expression() + self.state = 2477 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2476 + self.whenClause() + self.state = 2479 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==SqlBaseParser.WHEN): + break + + self.state = 2483 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ELSE: + self.state = 2481 + self.match(SqlBaseParser.ELSE) + self.state = 2482 + localctx.elseExpression = self.expression() + + + self.state = 2485 + self.match(SqlBaseParser.END) + pass + + elif la_ == 4: + localctx = SqlBaseParser.CastContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2487 + self.match(SqlBaseParser.CAST) + self.state = 2488 + self.match(SqlBaseParser.T__1) + self.state = 2489 + self.expression() + self.state = 2490 + self.match(SqlBaseParser.AS) + self.state = 2491 + self.dataType() + self.state = 2492 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 5: + localctx = SqlBaseParser.StructContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2494 + self.match(SqlBaseParser.STRUCT) + self.state = 2495 + self.match(SqlBaseParser.T__1) + self.state = 2504 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,323,self._ctx) + if la_ == 1: + self.state = 2496 + localctx._namedExpression = self.namedExpression() + localctx.argument.append(localctx._namedExpression) + self.state = 2501 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2497 + self.match(SqlBaseParser.T__3) + self.state = 2498 + localctx._namedExpression = self.namedExpression() + localctx.argument.append(localctx._namedExpression) + self.state = 2503 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 2506 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 6: + localctx = SqlBaseParser.FirstContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2507 + self.match(SqlBaseParser.FIRST) + self.state = 2508 + self.match(SqlBaseParser.T__1) + self.state = 2509 + self.expression() + self.state = 2512 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.IGNORE: + self.state = 2510 + self.match(SqlBaseParser.IGNORE) + self.state = 2511 + self.match(SqlBaseParser.NULLS) + + + self.state = 2514 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 7: + localctx = SqlBaseParser.LastContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2516 + self.match(SqlBaseParser.LAST) + self.state = 2517 + self.match(SqlBaseParser.T__1) + self.state = 2518 + self.expression() + self.state = 2521 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.IGNORE: + self.state = 2519 + self.match(SqlBaseParser.IGNORE) + self.state = 2520 + self.match(SqlBaseParser.NULLS) + + + self.state = 2523 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 8: + localctx = SqlBaseParser.PositionContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2525 + self.match(SqlBaseParser.POSITION) + self.state = 2526 + self.match(SqlBaseParser.T__1) + self.state = 2527 + localctx.substr = self.valueExpression(0) + self.state = 2528 + self.match(SqlBaseParser.IN) + self.state = 2529 + localctx.str = self.valueExpression(0) + self.state = 2530 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 9: + localctx = SqlBaseParser.ConstantDefaultContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2532 + self.constant() + pass + + elif la_ == 10: + localctx = SqlBaseParser.StarContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2533 + self.match(SqlBaseParser.ASTERISK) + pass + + elif la_ == 11: + localctx = SqlBaseParser.StarContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2534 + self.qualifiedName() + self.state = 2535 + self.match(SqlBaseParser.T__4) + self.state = 2536 + self.match(SqlBaseParser.ASTERISK) + pass + + elif la_ == 12: + localctx = SqlBaseParser.RowConstructorContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2538 + self.match(SqlBaseParser.T__1) + self.state = 2539 + self.namedExpression() + self.state = 2542 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2540 + self.match(SqlBaseParser.T__3) + self.state = 2541 + self.namedExpression() + self.state = 2544 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==SqlBaseParser.T__3): + break + + self.state = 2546 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 13: + localctx = SqlBaseParser.SubqueryExpressionContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2548 + self.match(SqlBaseParser.T__1) + self.state = 2549 + self.query() + self.state = 2550 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 14: + localctx = SqlBaseParser.FunctionCallContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2552 + self.functionName() + self.state = 2553 + self.match(SqlBaseParser.T__1) + self.state = 2565 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,329,self._ctx) + if la_ == 1: + self.state = 2555 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,327,self._ctx) + if la_ == 1: + self.state = 2554 + self.setQuantifier() + + + self.state = 2557 + localctx._expression = self.expression() + localctx.argument.append(localctx._expression) + self.state = 2562 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2558 + self.match(SqlBaseParser.T__3) + self.state = 2559 + localctx._expression = self.expression() + localctx.argument.append(localctx._expression) + self.state = 2564 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 2567 + self.match(SqlBaseParser.T__2) + self.state = 2574 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,330,self._ctx) + if la_ == 1: + self.state = 2568 + self.match(SqlBaseParser.FILTER) + self.state = 2569 + self.match(SqlBaseParser.T__1) + self.state = 2570 + self.match(SqlBaseParser.WHERE) + self.state = 2571 + localctx.where = self.booleanExpression(0) + self.state = 2572 + self.match(SqlBaseParser.T__2) + + + self.state = 2578 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,331,self._ctx) + if la_ == 1: + self.state = 2576 + self.match(SqlBaseParser.OVER) + self.state = 2577 + self.windowSpec() + + + pass + + elif la_ == 15: + localctx = SqlBaseParser.LambdaContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2580 + self.identifier() + self.state = 2581 + self.match(SqlBaseParser.T__7) + self.state = 2582 + self.expression() + pass + + elif la_ == 16: + localctx = SqlBaseParser.LambdaContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2584 + self.match(SqlBaseParser.T__1) + self.state = 2585 + self.identifier() + self.state = 2588 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 2586 + self.match(SqlBaseParser.T__3) + self.state = 2587 + self.identifier() + self.state = 2590 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==SqlBaseParser.T__3): + break + + self.state = 2592 + self.match(SqlBaseParser.T__2) + self.state = 2593 + self.match(SqlBaseParser.T__7) + self.state = 2594 + self.expression() + pass + + elif la_ == 17: + localctx = SqlBaseParser.ColumnReferenceContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2596 + self.identifier() + pass + + elif la_ == 18: + localctx = SqlBaseParser.ParenthesizedExpressionContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2597 + self.match(SqlBaseParser.T__1) + self.state = 2598 + self.expression() + self.state = 2599 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 19: + localctx = SqlBaseParser.ExtractContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2601 + self.match(SqlBaseParser.EXTRACT) + self.state = 2602 + self.match(SqlBaseParser.T__1) + self.state = 2603 + localctx.field = self.identifier() + self.state = 2604 + self.match(SqlBaseParser.FROM) + self.state = 2605 + localctx.source = self.valueExpression(0) + self.state = 2606 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 20: + localctx = SqlBaseParser.SubstringContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2608 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.SUBSTR or _la==SqlBaseParser.SUBSTRING): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2609 + self.match(SqlBaseParser.T__1) + self.state = 2610 + localctx.str = self.valueExpression(0) + self.state = 2611 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.T__3 or _la==SqlBaseParser.FROM): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2612 + localctx.pos = self.valueExpression(0) + self.state = 2615 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.T__3 or _la==SqlBaseParser.FOR: + self.state = 2613 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.T__3 or _la==SqlBaseParser.FOR): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2614 + localctx.len = self.valueExpression(0) + + + self.state = 2617 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 21: + localctx = SqlBaseParser.TrimContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2619 + self.match(SqlBaseParser.TRIM) + self.state = 2620 + self.match(SqlBaseParser.T__1) + self.state = 2622 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,334,self._ctx) + if la_ == 1: + self.state = 2621 + localctx.trimOption = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.BOTH or _la==SqlBaseParser.LEADING or _la==SqlBaseParser.TRAILING): + localctx.trimOption = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2625 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,335,self._ctx) + if la_ == 1: + self.state = 2624 + localctx.trimStr = self.valueExpression(0) + + + self.state = 2627 + self.match(SqlBaseParser.FROM) + self.state = 2628 + localctx.srcStr = self.valueExpression(0) + self.state = 2629 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 22: + localctx = SqlBaseParser.OverlayContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 2631 + self.match(SqlBaseParser.OVERLAY) + self.state = 2632 + self.match(SqlBaseParser.T__1) + self.state = 2633 + localctx.input = self.valueExpression(0) + self.state = 2634 + self.match(SqlBaseParser.PLACING) + self.state = 2635 + localctx.replace = self.valueExpression(0) + self.state = 2636 + self.match(SqlBaseParser.FROM) + self.state = 2637 + localctx.position = self.valueExpression(0) + self.state = 2640 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.FOR: + self.state = 2638 + self.match(SqlBaseParser.FOR) + self.state = 2639 + localctx.length = self.valueExpression(0) + + + self.state = 2642 + self.match(SqlBaseParser.T__2) + pass + + + self._ctx.stop = self._input.LT(-1) + self.state = 2656 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,339,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2654 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,338,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.SubscriptContext(self, SqlBaseParser.PrimaryExpressionContext(self, _parentctx, _parentState)) + localctx.value = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_primaryExpression) + self.state = 2646 + if not self.precpred(self._ctx, 8): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") + self.state = 2647 + self.match(SqlBaseParser.T__8) + self.state = 2648 + localctx.index = self.valueExpression(0) + self.state = 2649 + self.match(SqlBaseParser.T__9) + pass + + elif la_ == 2: + localctx = SqlBaseParser.DereferenceContext(self, SqlBaseParser.PrimaryExpressionContext(self, _parentctx, _parentState)) + localctx.base = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_primaryExpression) + self.state = 2651 + if not self.precpred(self._ctx, 6): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 2652 + self.match(SqlBaseParser.T__4) + self.state = 2653 + localctx.fieldName = self.identifier() + pass + + + self.state = 2658 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,339,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class ConstantContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_constant + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class NullLiteralContext(ConstantContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ConstantContext + super().__init__(parser) + self.copyFrom(ctx) + + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNullLiteral" ): + listener.enterNullLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNullLiteral" ): + listener.exitNullLiteral(self) + + + class StringLiteralContext(ConstantContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ConstantContext + super().__init__(parser) + self.copyFrom(ctx) + + def STRING(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.STRING) + else: + return self.getToken(SqlBaseParser.STRING, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStringLiteral" ): + listener.enterStringLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStringLiteral" ): + listener.exitStringLiteral(self) + + + class TypeConstructorContext(ConstantContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ConstantContext + super().__init__(parser) + self.copyFrom(ctx) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTypeConstructor" ): + listener.enterTypeConstructor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTypeConstructor" ): + listener.exitTypeConstructor(self) + + + class IntervalLiteralContext(ConstantContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ConstantContext + super().__init__(parser) + self.copyFrom(ctx) + + def interval(self): + return self.getTypedRuleContext(SqlBaseParser.IntervalContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalLiteral" ): + listener.enterIntervalLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalLiteral" ): + listener.exitIntervalLiteral(self) + + + class NumericLiteralContext(ConstantContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ConstantContext + super().__init__(parser) + self.copyFrom(ctx) + + def number(self): + return self.getTypedRuleContext(SqlBaseParser.NumberContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNumericLiteral" ): + listener.enterNumericLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNumericLiteral" ): + listener.exitNumericLiteral(self) + + + class BooleanLiteralContext(ConstantContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ConstantContext + super().__init__(parser) + self.copyFrom(ctx) + + def booleanValue(self): + return self.getTypedRuleContext(SqlBaseParser.BooleanValueContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBooleanLiteral" ): + listener.enterBooleanLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBooleanLiteral" ): + listener.exitBooleanLiteral(self) + + + + def constant(self): + + localctx = SqlBaseParser.ConstantContext(self, self._ctx, self.state) + self.enterRule(localctx, 196, self.RULE_constant) + try: + self.state = 2671 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,341,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.NullLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2659 + self.match(SqlBaseParser.NULL) + pass + + elif la_ == 2: + localctx = SqlBaseParser.IntervalLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2660 + self.interval() + pass + + elif la_ == 3: + localctx = SqlBaseParser.TypeConstructorContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2661 + self.identifier() + self.state = 2662 + self.match(SqlBaseParser.STRING) + pass + + elif la_ == 4: + localctx = SqlBaseParser.NumericLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2664 + self.number() + pass + + elif la_ == 5: + localctx = SqlBaseParser.BooleanLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 2665 + self.booleanValue() + pass + + elif la_ == 6: + localctx = SqlBaseParser.StringLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 2667 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2666 + self.match(SqlBaseParser.STRING) + + else: + raise NoViableAltException(self) + self.state = 2669 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,340,self._ctx) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ComparisonOperatorContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EQ(self): + return self.getToken(SqlBaseParser.EQ, 0) + + def NEQ(self): + return self.getToken(SqlBaseParser.NEQ, 0) + + def NEQJ(self): + return self.getToken(SqlBaseParser.NEQJ, 0) + + def LT(self): + return self.getToken(SqlBaseParser.LT, 0) + + def LTE(self): + return self.getToken(SqlBaseParser.LTE, 0) + + def GT(self): + return self.getToken(SqlBaseParser.GT, 0) + + def GTE(self): + return self.getToken(SqlBaseParser.GTE, 0) + + def NSEQ(self): + return self.getToken(SqlBaseParser.NSEQ, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_comparisonOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComparisonOperator" ): + listener.enterComparisonOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComparisonOperator" ): + listener.exitComparisonOperator(self) + + + + + def comparisonOperator(self): + + localctx = SqlBaseParser.ComparisonOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 198, self.RULE_comparisonOperator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2673 + _la = self._input.LA(1) + if not(((((_la - 264)) & ~0x3f) == 0 and ((1 << (_la - 264)) & ((1 << (SqlBaseParser.EQ - 264)) | (1 << (SqlBaseParser.NSEQ - 264)) | (1 << (SqlBaseParser.NEQ - 264)) | (1 << (SqlBaseParser.NEQJ - 264)) | (1 << (SqlBaseParser.LT - 264)) | (1 << (SqlBaseParser.LTE - 264)) | (1 << (SqlBaseParser.GT - 264)) | (1 << (SqlBaseParser.GTE - 264)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArithmeticOperatorContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PLUS(self): + return self.getToken(SqlBaseParser.PLUS, 0) + + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def ASTERISK(self): + return self.getToken(SqlBaseParser.ASTERISK, 0) + + def SLASH(self): + return self.getToken(SqlBaseParser.SLASH, 0) + + def PERCENT(self): + return self.getToken(SqlBaseParser.PERCENT, 0) + + def DIV(self): + return self.getToken(SqlBaseParser.DIV, 0) + + def TILDE(self): + return self.getToken(SqlBaseParser.TILDE, 0) + + def AMPERSAND(self): + return self.getToken(SqlBaseParser.AMPERSAND, 0) + + def PIPE(self): + return self.getToken(SqlBaseParser.PIPE, 0) + + def CONCAT_PIPE(self): + return self.getToken(SqlBaseParser.CONCAT_PIPE, 0) + + def HAT(self): + return self.getToken(SqlBaseParser.HAT, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_arithmeticOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArithmeticOperator" ): + listener.enterArithmeticOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArithmeticOperator" ): + listener.exitArithmeticOperator(self) + + + + + def arithmeticOperator(self): + + localctx = SqlBaseParser.ArithmeticOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 200, self.RULE_arithmeticOperator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2675 + _la = self._input.LA(1) + if not(((((_la - 272)) & ~0x3f) == 0 and ((1 << (_la - 272)) & ((1 << (SqlBaseParser.PLUS - 272)) | (1 << (SqlBaseParser.MINUS - 272)) | (1 << (SqlBaseParser.ASTERISK - 272)) | (1 << (SqlBaseParser.SLASH - 272)) | (1 << (SqlBaseParser.PERCENT - 272)) | (1 << (SqlBaseParser.DIV - 272)) | (1 << (SqlBaseParser.TILDE - 272)) | (1 << (SqlBaseParser.AMPERSAND - 272)) | (1 << (SqlBaseParser.PIPE - 272)) | (1 << (SqlBaseParser.CONCAT_PIPE - 272)) | (1 << (SqlBaseParser.HAT - 272)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PredicateOperatorContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def OR(self): + return self.getToken(SqlBaseParser.OR, 0) + + def AND(self): + return self.getToken(SqlBaseParser.AND, 0) + + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_predicateOperator + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPredicateOperator" ): + listener.enterPredicateOperator(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPredicateOperator" ): + listener.exitPredicateOperator(self) + + + + + def predicateOperator(self): + + localctx = SqlBaseParser.PredicateOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 202, self.RULE_predicateOperator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2677 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.AND or ((((_la - 113)) & ~0x3f) == 0 and ((1 << (_la - 113)) & ((1 << (SqlBaseParser.IN - 113)) | (1 << (SqlBaseParser.NOT - 113)) | (1 << (SqlBaseParser.OR - 113)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BooleanValueContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def TRUE(self): + return self.getToken(SqlBaseParser.TRUE, 0) + + def FALSE(self): + return self.getToken(SqlBaseParser.FALSE, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_booleanValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBooleanValue" ): + listener.enterBooleanValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBooleanValue" ): + listener.exitBooleanValue(self) + + + + + def booleanValue(self): + + localctx = SqlBaseParser.BooleanValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 204, self.RULE_booleanValue) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2679 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FALSE or _la==SqlBaseParser.TRUE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IntervalContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INTERVAL(self): + return self.getToken(SqlBaseParser.INTERVAL, 0) + + def errorCapturingMultiUnitsInterval(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext,0) + + + def errorCapturingUnitToUnitInterval(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_interval + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInterval" ): + listener.enterInterval(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInterval" ): + listener.exitInterval(self) + + + + + def interval(self): + + localctx = SqlBaseParser.IntervalContext(self, self._ctx, self.state) + self.enterRule(localctx, 206, self.RULE_interval) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2681 + self.match(SqlBaseParser.INTERVAL) + self.state = 2684 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,342,self._ctx) + if la_ == 1: + self.state = 2682 + self.errorCapturingMultiUnitsInterval() + + elif la_ == 2: + self.state = 2683 + self.errorCapturingUnitToUnitInterval() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ErrorCapturingMultiUnitsIntervalContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def multiUnitsInterval(self): + return self.getTypedRuleContext(SqlBaseParser.MultiUnitsIntervalContext,0) + + + def unitToUnitInterval(self): + return self.getTypedRuleContext(SqlBaseParser.UnitToUnitIntervalContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_errorCapturingMultiUnitsInterval + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterErrorCapturingMultiUnitsInterval" ): + listener.enterErrorCapturingMultiUnitsInterval(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitErrorCapturingMultiUnitsInterval" ): + listener.exitErrorCapturingMultiUnitsInterval(self) + + + + + def errorCapturingMultiUnitsInterval(self): + + localctx = SqlBaseParser.ErrorCapturingMultiUnitsIntervalContext(self, self._ctx, self.state) + self.enterRule(localctx, 208, self.RULE_errorCapturingMultiUnitsInterval) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2686 + self.multiUnitsInterval() + self.state = 2688 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,343,self._ctx) + if la_ == 1: + self.state = 2687 + self.unitToUnitInterval() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MultiUnitsIntervalContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def intervalValue(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IntervalValueContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IntervalValueContext,i) + + + def intervalUnit(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IntervalUnitContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IntervalUnitContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_multiUnitsInterval + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultiUnitsInterval" ): + listener.enterMultiUnitsInterval(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultiUnitsInterval" ): + listener.exitMultiUnitsInterval(self) + + + + + def multiUnitsInterval(self): + + localctx = SqlBaseParser.MultiUnitsIntervalContext(self, self._ctx, self.state) + self.enterRule(localctx, 210, self.RULE_multiUnitsInterval) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2693 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2690 + self.intervalValue() + self.state = 2691 + self.intervalUnit() + + else: + raise NoViableAltException(self) + self.state = 2695 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,344,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ErrorCapturingUnitToUnitIntervalContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.body = None # UnitToUnitIntervalContext + self.error1 = None # MultiUnitsIntervalContext + self.error2 = None # UnitToUnitIntervalContext + + def unitToUnitInterval(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.UnitToUnitIntervalContext) + else: + return self.getTypedRuleContext(SqlBaseParser.UnitToUnitIntervalContext,i) + + + def multiUnitsInterval(self): + return self.getTypedRuleContext(SqlBaseParser.MultiUnitsIntervalContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_errorCapturingUnitToUnitInterval + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterErrorCapturingUnitToUnitInterval" ): + listener.enterErrorCapturingUnitToUnitInterval(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitErrorCapturingUnitToUnitInterval" ): + listener.exitErrorCapturingUnitToUnitInterval(self) + + + + + def errorCapturingUnitToUnitInterval(self): + + localctx = SqlBaseParser.ErrorCapturingUnitToUnitIntervalContext(self, self._ctx, self.state) + self.enterRule(localctx, 212, self.RULE_errorCapturingUnitToUnitInterval) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2697 + localctx.body = self.unitToUnitInterval() + self.state = 2700 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,345,self._ctx) + if la_ == 1: + self.state = 2698 + localctx.error1 = self.multiUnitsInterval() + + elif la_ == 2: + self.state = 2699 + localctx.error2 = self.unitToUnitInterval() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnitToUnitIntervalContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.value = None # IntervalValueContext + self.from_ = None # IntervalUnitContext + self.to = None # IntervalUnitContext + + def TO(self): + return self.getToken(SqlBaseParser.TO, 0) + + def intervalValue(self): + return self.getTypedRuleContext(SqlBaseParser.IntervalValueContext,0) + + + def intervalUnit(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IntervalUnitContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IntervalUnitContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_unitToUnitInterval + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnitToUnitInterval" ): + listener.enterUnitToUnitInterval(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnitToUnitInterval" ): + listener.exitUnitToUnitInterval(self) + + + + + def unitToUnitInterval(self): + + localctx = SqlBaseParser.UnitToUnitIntervalContext(self, self._ctx, self.state) + self.enterRule(localctx, 214, self.RULE_unitToUnitInterval) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2702 + localctx.value = self.intervalValue() + self.state = 2703 + localctx.from_ = self.intervalUnit() + self.state = 2704 + self.match(SqlBaseParser.TO) + self.state = 2705 + localctx.to = self.intervalUnit() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IntervalValueContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def INTEGER_VALUE(self): + return self.getToken(SqlBaseParser.INTEGER_VALUE, 0) + + def DECIMAL_VALUE(self): + return self.getToken(SqlBaseParser.DECIMAL_VALUE, 0) + + def PLUS(self): + return self.getToken(SqlBaseParser.PLUS, 0) + + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def STRING(self): + return self.getToken(SqlBaseParser.STRING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_intervalValue + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalValue" ): + listener.enterIntervalValue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalValue" ): + listener.exitIntervalValue(self) + + + + + def intervalValue(self): + + localctx = SqlBaseParser.IntervalValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 216, self.RULE_intervalValue) + self._la = 0 # Token type + try: + self.state = 2712 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.PLUS, SqlBaseParser.MINUS, SqlBaseParser.INTEGER_VALUE, SqlBaseParser.DECIMAL_VALUE]: + self.enterOuterAlt(localctx, 1) + self.state = 2708 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.PLUS or _la==SqlBaseParser.MINUS: + self.state = 2707 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.PLUS or _la==SqlBaseParser.MINUS): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + + self.state = 2710 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.INTEGER_VALUE or _la==SqlBaseParser.DECIMAL_VALUE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + elif token in [SqlBaseParser.STRING]: + self.enterOuterAlt(localctx, 2) + self.state = 2711 + self.match(SqlBaseParser.STRING) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IntervalUnitContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DAY(self): + return self.getToken(SqlBaseParser.DAY, 0) + + def HOUR(self): + return self.getToken(SqlBaseParser.HOUR, 0) + + def MINUTE(self): + return self.getToken(SqlBaseParser.MINUTE, 0) + + def MONTH(self): + return self.getToken(SqlBaseParser.MONTH, 0) + + def SECOND(self): + return self.getToken(SqlBaseParser.SECOND, 0) + + def YEAR(self): + return self.getToken(SqlBaseParser.YEAR, 0) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_intervalUnit + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntervalUnit" ): + listener.enterIntervalUnit(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntervalUnit" ): + listener.exitIntervalUnit(self) + + + + + def intervalUnit(self): + + localctx = SqlBaseParser.IntervalUnitContext(self, self._ctx, self.state) + self.enterRule(localctx, 218, self.RULE_intervalUnit) + try: + self.state = 2721 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,348,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2714 + self.match(SqlBaseParser.DAY) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2715 + self.match(SqlBaseParser.HOUR) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2716 + self.match(SqlBaseParser.MINUTE) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2717 + self.match(SqlBaseParser.MONTH) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2718 + self.match(SqlBaseParser.SECOND) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2719 + self.match(SqlBaseParser.YEAR) + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 2720 + self.identifier() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ColPositionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.position = None # Token + self.afterCol = None # ErrorCapturingIdentifierContext + + def FIRST(self): + return self.getToken(SqlBaseParser.FIRST, 0) + + def AFTER(self): + return self.getToken(SqlBaseParser.AFTER, 0) + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_colPosition + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterColPosition" ): + listener.enterColPosition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitColPosition" ): + listener.exitColPosition(self) + + + + + def colPosition(self): + + localctx = SqlBaseParser.ColPositionContext(self, self._ctx, self.state) + self.enterRule(localctx, 220, self.RULE_colPosition) + try: + self.state = 2726 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.FIRST]: + self.enterOuterAlt(localctx, 1) + self.state = 2723 + localctx.position = self.match(SqlBaseParser.FIRST) + pass + elif token in [SqlBaseParser.AFTER]: + self.enterOuterAlt(localctx, 2) + self.state = 2724 + localctx.position = self.match(SqlBaseParser.AFTER) + self.state = 2725 + localctx.afterCol = self.errorCapturingIdentifier() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DataTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_dataType + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class ComplexDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.DataTypeContext + super().__init__(parser) + self.complex = None # Token + self.copyFrom(ctx) + + def dataType(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.DataTypeContext) + else: + return self.getTypedRuleContext(SqlBaseParser.DataTypeContext,i) + + def ARRAY(self): + return self.getToken(SqlBaseParser.ARRAY, 0) + def MAP(self): + return self.getToken(SqlBaseParser.MAP, 0) + def STRUCT(self): + return self.getToken(SqlBaseParser.STRUCT, 0) + def NEQ(self): + return self.getToken(SqlBaseParser.NEQ, 0) + def complexColTypeList(self): + return self.getTypedRuleContext(SqlBaseParser.ComplexColTypeListContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComplexDataType" ): + listener.enterComplexDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComplexDataType" ): + listener.exitComplexDataType(self) + + + class PrimitiveDataTypeContext(DataTypeContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.DataTypeContext + super().__init__(parser) + self.copyFrom(ctx) + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + def INTEGER_VALUE(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.INTEGER_VALUE) + else: + return self.getToken(SqlBaseParser.INTEGER_VALUE, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPrimitiveDataType" ): + listener.enterPrimitiveDataType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPrimitiveDataType" ): + listener.exitPrimitiveDataType(self) + + + + def dataType(self): + + localctx = SqlBaseParser.DataTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 222, self.RULE_dataType) + self._la = 0 # Token type + try: + self.state = 2762 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,354,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.ComplexDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2728 + localctx.complex = self.match(SqlBaseParser.ARRAY) + self.state = 2729 + self.match(SqlBaseParser.LT) + self.state = 2730 + self.dataType() + self.state = 2731 + self.match(SqlBaseParser.GT) + pass + + elif la_ == 2: + localctx = SqlBaseParser.ComplexDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2733 + localctx.complex = self.match(SqlBaseParser.MAP) + self.state = 2734 + self.match(SqlBaseParser.LT) + self.state = 2735 + self.dataType() + self.state = 2736 + self.match(SqlBaseParser.T__3) + self.state = 2737 + self.dataType() + self.state = 2738 + self.match(SqlBaseParser.GT) + pass + + elif la_ == 3: + localctx = SqlBaseParser.ComplexDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2740 + localctx.complex = self.match(SqlBaseParser.STRUCT) + self.state = 2747 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.LT]: + self.state = 2741 + self.match(SqlBaseParser.LT) + self.state = 2743 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,350,self._ctx) + if la_ == 1: + self.state = 2742 + self.complexColTypeList() + + + self.state = 2745 + self.match(SqlBaseParser.GT) + pass + elif token in [SqlBaseParser.NEQ]: + self.state = 2746 + self.match(SqlBaseParser.NEQ) + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 4: + localctx = SqlBaseParser.PrimitiveDataTypeContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2749 + self.identifier() + self.state = 2760 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,353,self._ctx) + if la_ == 1: + self.state = 2750 + self.match(SqlBaseParser.T__1) + self.state = 2751 + self.match(SqlBaseParser.INTEGER_VALUE) + self.state = 2756 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2752 + self.match(SqlBaseParser.T__3) + self.state = 2753 + self.match(SqlBaseParser.INTEGER_VALUE) + self.state = 2758 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2759 + self.match(SqlBaseParser.T__2) + + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QualifiedColTypeWithPositionListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def qualifiedColTypeWithPosition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.QualifiedColTypeWithPositionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.QualifiedColTypeWithPositionContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_qualifiedColTypeWithPositionList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQualifiedColTypeWithPositionList" ): + listener.enterQualifiedColTypeWithPositionList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQualifiedColTypeWithPositionList" ): + listener.exitQualifiedColTypeWithPositionList(self) + + + + + def qualifiedColTypeWithPositionList(self): + + localctx = SqlBaseParser.QualifiedColTypeWithPositionListContext(self, self._ctx, self.state) + self.enterRule(localctx, 224, self.RULE_qualifiedColTypeWithPositionList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2764 + self.qualifiedColTypeWithPosition() + self.state = 2769 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2765 + self.match(SqlBaseParser.T__3) + self.state = 2766 + self.qualifiedColTypeWithPosition() + self.state = 2771 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QualifiedColTypeWithPositionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.name = None # MultipartIdentifierContext + + def dataType(self): + return self.getTypedRuleContext(SqlBaseParser.DataTypeContext,0) + + + def multipartIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.MultipartIdentifierContext,0) + + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def commentSpec(self): + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,0) + + + def colPosition(self): + return self.getTypedRuleContext(SqlBaseParser.ColPositionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_qualifiedColTypeWithPosition + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQualifiedColTypeWithPosition" ): + listener.enterQualifiedColTypeWithPosition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQualifiedColTypeWithPosition" ): + listener.exitQualifiedColTypeWithPosition(self) + + + + + def qualifiedColTypeWithPosition(self): + + localctx = SqlBaseParser.QualifiedColTypeWithPositionContext(self, self._ctx, self.state) + self.enterRule(localctx, 226, self.RULE_qualifiedColTypeWithPosition) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2772 + localctx.name = self.multipartIdentifier() + self.state = 2773 + self.dataType() + self.state = 2776 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2774 + self.match(SqlBaseParser.NOT) + self.state = 2775 + self.match(SqlBaseParser.NULL) + + + self.state = 2779 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.COMMENT: + self.state = 2778 + self.commentSpec() + + + self.state = 2782 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.AFTER or _la==SqlBaseParser.FIRST: + self.state = 2781 + self.colPosition() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ColTypeListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def colType(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ColTypeContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ColTypeContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_colTypeList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterColTypeList" ): + listener.enterColTypeList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitColTypeList" ): + listener.exitColTypeList(self) + + + + + def colTypeList(self): + + localctx = SqlBaseParser.ColTypeListContext(self, self._ctx, self.state) + self.enterRule(localctx, 228, self.RULE_colTypeList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2784 + self.colType() + self.state = 2789 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,359,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2785 + self.match(SqlBaseParser.T__3) + self.state = 2786 + self.colType() + self.state = 2791 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,359,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ColTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.colName = None # ErrorCapturingIdentifierContext + + def dataType(self): + return self.getTypedRuleContext(SqlBaseParser.DataTypeContext,0) + + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def commentSpec(self): + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_colType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterColType" ): + listener.enterColType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitColType" ): + listener.exitColType(self) + + + + + def colType(self): + + localctx = SqlBaseParser.ColTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 230, self.RULE_colType) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2792 + localctx.colName = self.errorCapturingIdentifier() + self.state = 2793 + self.dataType() + self.state = 2796 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,360,self._ctx) + if la_ == 1: + self.state = 2794 + self.match(SqlBaseParser.NOT) + self.state = 2795 + self.match(SqlBaseParser.NULL) + + + self.state = 2799 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,361,self._ctx) + if la_ == 1: + self.state = 2798 + self.commentSpec() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ComplexColTypeListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def complexColType(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ComplexColTypeContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ComplexColTypeContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_complexColTypeList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComplexColTypeList" ): + listener.enterComplexColTypeList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComplexColTypeList" ): + listener.exitComplexColTypeList(self) + + + + + def complexColTypeList(self): + + localctx = SqlBaseParser.ComplexColTypeListContext(self, self._ctx, self.state) + self.enterRule(localctx, 232, self.RULE_complexColTypeList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2801 + self.complexColType() + self.state = 2806 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2802 + self.match(SqlBaseParser.T__3) + self.state = 2803 + self.complexColType() + self.state = 2808 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ComplexColTypeContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def dataType(self): + return self.getTypedRuleContext(SqlBaseParser.DataTypeContext,0) + + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def commentSpec(self): + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_complexColType + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComplexColType" ): + listener.enterComplexColType(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComplexColType" ): + listener.exitComplexColType(self) + + + + + def complexColType(self): + + localctx = SqlBaseParser.ComplexColTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 234, self.RULE_complexColType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2809 + self.identifier() + self.state = 2810 + self.match(SqlBaseParser.T__10) + self.state = 2811 + self.dataType() + self.state = 2814 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.NOT: + self.state = 2812 + self.match(SqlBaseParser.NOT) + self.state = 2813 + self.match(SqlBaseParser.NULL) + + + self.state = 2817 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.COMMENT: + self.state = 2816 + self.commentSpec() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WhenClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.condition = None # ExpressionContext + self.result = None # ExpressionContext + + def WHEN(self): + return self.getToken(SqlBaseParser.WHEN, 0) + + def THEN(self): + return self.getToken(SqlBaseParser.THEN, 0) + + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_whenClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWhenClause" ): + listener.enterWhenClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWhenClause" ): + listener.exitWhenClause(self) + + + + + def whenClause(self): + + localctx = SqlBaseParser.WhenClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 236, self.RULE_whenClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2819 + self.match(SqlBaseParser.WHEN) + self.state = 2820 + localctx.condition = self.expression() + self.state = 2821 + self.match(SqlBaseParser.THEN) + self.state = 2822 + localctx.result = self.expression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WindowClauseContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def WINDOW(self): + return self.getToken(SqlBaseParser.WINDOW, 0) + + def namedWindow(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.NamedWindowContext) + else: + return self.getTypedRuleContext(SqlBaseParser.NamedWindowContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_windowClause + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWindowClause" ): + listener.enterWindowClause(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWindowClause" ): + listener.exitWindowClause(self) + + + + + def windowClause(self): + + localctx = SqlBaseParser.WindowClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 238, self.RULE_windowClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2824 + self.match(SqlBaseParser.WINDOW) + self.state = 2825 + self.namedWindow() + self.state = 2830 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,365,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2826 + self.match(SqlBaseParser.T__3) + self.state = 2827 + self.namedWindow() + self.state = 2832 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,365,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NamedWindowContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.name = None # ErrorCapturingIdentifierContext + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def windowSpec(self): + return self.getTypedRuleContext(SqlBaseParser.WindowSpecContext,0) + + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_namedWindow + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNamedWindow" ): + listener.enterNamedWindow(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNamedWindow" ): + listener.exitNamedWindow(self) + + + + + def namedWindow(self): + + localctx = SqlBaseParser.NamedWindowContext(self, self._ctx, self.state) + self.enterRule(localctx, 240, self.RULE_namedWindow) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2833 + localctx.name = self.errorCapturingIdentifier() + self.state = 2834 + self.match(SqlBaseParser.AS) + self.state = 2835 + self.windowSpec() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WindowSpecContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_windowSpec + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class WindowRefContext(WindowSpecContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.WindowSpecContext + super().__init__(parser) + self.name = None # ErrorCapturingIdentifierContext + self.copyFrom(ctx) + + def errorCapturingIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWindowRef" ): + listener.enterWindowRef(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWindowRef" ): + listener.exitWindowRef(self) + + + class WindowDefContext(WindowSpecContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.WindowSpecContext + super().__init__(parser) + self._expression = None # ExpressionContext + self.partition = list() # of ExpressionContexts + self.copyFrom(ctx) + + def CLUSTER(self): + return self.getToken(SqlBaseParser.CLUSTER, 0) + def BY(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.BY) + else: + return self.getToken(SqlBaseParser.BY, i) + def expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.ExpressionContext) + else: + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,i) + + def windowFrame(self): + return self.getTypedRuleContext(SqlBaseParser.WindowFrameContext,0) + + def sortItem(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.SortItemContext) + else: + return self.getTypedRuleContext(SqlBaseParser.SortItemContext,i) + + def PARTITION(self): + return self.getToken(SqlBaseParser.PARTITION, 0) + def DISTRIBUTE(self): + return self.getToken(SqlBaseParser.DISTRIBUTE, 0) + def ORDER(self): + return self.getToken(SqlBaseParser.ORDER, 0) + def SORT(self): + return self.getToken(SqlBaseParser.SORT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWindowDef" ): + listener.enterWindowDef(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWindowDef" ): + listener.exitWindowDef(self) + + + + def windowSpec(self): + + localctx = SqlBaseParser.WindowSpecContext(self, self._ctx, self.state) + self.enterRule(localctx, 242, self.RULE_windowSpec) + self._la = 0 # Token type + try: + self.state = 2883 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,373,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.WindowRefContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2837 + localctx.name = self.errorCapturingIdentifier() + pass + + elif la_ == 2: + localctx = SqlBaseParser.WindowRefContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2838 + self.match(SqlBaseParser.T__1) + self.state = 2839 + localctx.name = self.errorCapturingIdentifier() + self.state = 2840 + self.match(SqlBaseParser.T__2) + pass + + elif la_ == 3: + localctx = SqlBaseParser.WindowDefContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2842 + self.match(SqlBaseParser.T__1) + self.state = 2877 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.CLUSTER]: + self.state = 2843 + self.match(SqlBaseParser.CLUSTER) + self.state = 2844 + self.match(SqlBaseParser.BY) + self.state = 2845 + localctx._expression = self.expression() + localctx.partition.append(localctx._expression) + self.state = 2850 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2846 + self.match(SqlBaseParser.T__3) + self.state = 2847 + localctx._expression = self.expression() + localctx.partition.append(localctx._expression) + self.state = 2852 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + elif token in [SqlBaseParser.T__2, SqlBaseParser.DISTRIBUTE, SqlBaseParser.ORDER, SqlBaseParser.PARTITION, SqlBaseParser.RANGE, SqlBaseParser.ROWS, SqlBaseParser.SORT]: + self.state = 2863 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.DISTRIBUTE or _la==SqlBaseParser.PARTITION: + self.state = 2853 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DISTRIBUTE or _la==SqlBaseParser.PARTITION): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2854 + self.match(SqlBaseParser.BY) + self.state = 2855 + localctx._expression = self.expression() + localctx.partition.append(localctx._expression) + self.state = 2860 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2856 + self.match(SqlBaseParser.T__3) + self.state = 2857 + localctx._expression = self.expression() + localctx.partition.append(localctx._expression) + self.state = 2862 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + self.state = 2875 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.ORDER or _la==SqlBaseParser.SORT: + self.state = 2865 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.ORDER or _la==SqlBaseParser.SORT): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 2866 + self.match(SqlBaseParser.BY) + self.state = 2867 + self.sortItem() + self.state = 2872 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2868 + self.match(SqlBaseParser.T__3) + self.state = 2869 + self.sortItem() + self.state = 2874 + self._errHandler.sync(self) + _la = self._input.LA(1) + + + + pass + else: + raise NoViableAltException(self) + + self.state = 2880 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.RANGE or _la==SqlBaseParser.ROWS: + self.state = 2879 + self.windowFrame() + + + self.state = 2882 + self.match(SqlBaseParser.T__2) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WindowFrameContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.frameType = None # Token + self.start = None # FrameBoundContext + self.end = None # FrameBoundContext + + def RANGE(self): + return self.getToken(SqlBaseParser.RANGE, 0) + + def frameBound(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.FrameBoundContext) + else: + return self.getTypedRuleContext(SqlBaseParser.FrameBoundContext,i) + + + def ROWS(self): + return self.getToken(SqlBaseParser.ROWS, 0) + + def BETWEEN(self): + return self.getToken(SqlBaseParser.BETWEEN, 0) + + def AND(self): + return self.getToken(SqlBaseParser.AND, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_windowFrame + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWindowFrame" ): + listener.enterWindowFrame(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWindowFrame" ): + listener.exitWindowFrame(self) + + + + + def windowFrame(self): + + localctx = SqlBaseParser.WindowFrameContext(self, self._ctx, self.state) + self.enterRule(localctx, 244, self.RULE_windowFrame) + try: + self.state = 2901 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,374,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2885 + localctx.frameType = self.match(SqlBaseParser.RANGE) + self.state = 2886 + localctx.start = self.frameBound() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2887 + localctx.frameType = self.match(SqlBaseParser.ROWS) + self.state = 2888 + localctx.start = self.frameBound() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2889 + localctx.frameType = self.match(SqlBaseParser.RANGE) + self.state = 2890 + self.match(SqlBaseParser.BETWEEN) + self.state = 2891 + localctx.start = self.frameBound() + self.state = 2892 + self.match(SqlBaseParser.AND) + self.state = 2893 + localctx.end = self.frameBound() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2895 + localctx.frameType = self.match(SqlBaseParser.ROWS) + self.state = 2896 + self.match(SqlBaseParser.BETWEEN) + self.state = 2897 + localctx.start = self.frameBound() + self.state = 2898 + self.match(SqlBaseParser.AND) + self.state = 2899 + localctx.end = self.frameBound() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FrameBoundContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.boundType = None # Token + + def UNBOUNDED(self): + return self.getToken(SqlBaseParser.UNBOUNDED, 0) + + def PRECEDING(self): + return self.getToken(SqlBaseParser.PRECEDING, 0) + + def FOLLOWING(self): + return self.getToken(SqlBaseParser.FOLLOWING, 0) + + def ROW(self): + return self.getToken(SqlBaseParser.ROW, 0) + + def CURRENT(self): + return self.getToken(SqlBaseParser.CURRENT, 0) + + def expression(self): + return self.getTypedRuleContext(SqlBaseParser.ExpressionContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_frameBound + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFrameBound" ): + listener.enterFrameBound(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFrameBound" ): + listener.exitFrameBound(self) + + + + + def frameBound(self): + + localctx = SqlBaseParser.FrameBoundContext(self, self._ctx, self.state) + self.enterRule(localctx, 246, self.RULE_frameBound) + self._la = 0 # Token type + try: + self.state = 2910 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,375,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2903 + self.match(SqlBaseParser.UNBOUNDED) + self.state = 2904 + localctx.boundType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FOLLOWING or _la==SqlBaseParser.PRECEDING): + localctx.boundType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2905 + localctx.boundType = self.match(SqlBaseParser.CURRENT) + self.state = 2906 + self.match(SqlBaseParser.ROW) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2907 + self.expression() + self.state = 2908 + localctx.boundType = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.FOLLOWING or _la==SqlBaseParser.PRECEDING): + localctx.boundType = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QualifiedNameListContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def qualifiedName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.QualifiedNameContext) + else: + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_qualifiedNameList + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQualifiedNameList" ): + listener.enterQualifiedNameList(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQualifiedNameList" ): + listener.exitQualifiedNameList(self) + + + + + def qualifiedNameList(self): + + localctx = SqlBaseParser.QualifiedNameListContext(self, self._ctx, self.state) + self.enterRule(localctx, 248, self.RULE_qualifiedNameList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2912 + self.qualifiedName() + self.state = 2917 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==SqlBaseParser.T__3: + self.state = 2913 + self.match(SqlBaseParser.T__3) + self.state = 2914 + self.qualifiedName() + self.state = 2919 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FunctionNameContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def qualifiedName(self): + return self.getTypedRuleContext(SqlBaseParser.QualifiedNameContext,0) + + + def FILTER(self): + return self.getToken(SqlBaseParser.FILTER, 0) + + def LEFT(self): + return self.getToken(SqlBaseParser.LEFT, 0) + + def RIGHT(self): + return self.getToken(SqlBaseParser.RIGHT, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_functionName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionName" ): + listener.enterFunctionName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionName" ): + listener.exitFunctionName(self) + + + + + def functionName(self): + + localctx = SqlBaseParser.FunctionNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 250, self.RULE_functionName) + try: + self.state = 2924 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,377,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2920 + self.qualifiedName() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2921 + self.match(SqlBaseParser.FILTER) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2922 + self.match(SqlBaseParser.LEFT) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2923 + self.match(SqlBaseParser.RIGHT) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QualifiedNameContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,i) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_qualifiedName + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQualifiedName" ): + listener.enterQualifiedName(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQualifiedName" ): + listener.exitQualifiedName(self) + + + + + def qualifiedName(self): + + localctx = SqlBaseParser.QualifiedNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 252, self.RULE_qualifiedName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2926 + self.identifier() + self.state = 2931 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,378,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 2927 + self.match(SqlBaseParser.T__4) + self.state = 2928 + self.identifier() + self.state = 2933 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,378,self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ErrorCapturingIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def identifier(self): + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,0) + + + def errorCapturingIdentifierExtra(self): + return self.getTypedRuleContext(SqlBaseParser.ErrorCapturingIdentifierExtraContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_errorCapturingIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterErrorCapturingIdentifier" ): + listener.enterErrorCapturingIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitErrorCapturingIdentifier" ): + listener.exitErrorCapturingIdentifier(self) + + + + + def errorCapturingIdentifier(self): + + localctx = SqlBaseParser.ErrorCapturingIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 254, self.RULE_errorCapturingIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2934 + self.identifier() + self.state = 2935 + self.errorCapturingIdentifierExtra() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ErrorCapturingIdentifierExtraContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_errorCapturingIdentifierExtra + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class ErrorIdentContext(ErrorCapturingIdentifierExtraContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ErrorCapturingIdentifierExtraContext + super().__init__(parser) + self.copyFrom(ctx) + + def MINUS(self, i:int=None): + if i is None: + return self.getTokens(SqlBaseParser.MINUS) + else: + return self.getToken(SqlBaseParser.MINUS, i) + def identifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(SqlBaseParser.IdentifierContext) + else: + return self.getTypedRuleContext(SqlBaseParser.IdentifierContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterErrorIdent" ): + listener.enterErrorIdent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitErrorIdent" ): + listener.exitErrorIdent(self) + + + class RealIdentContext(ErrorCapturingIdentifierExtraContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.ErrorCapturingIdentifierExtraContext + super().__init__(parser) + self.copyFrom(ctx) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRealIdent" ): + listener.enterRealIdent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRealIdent" ): + listener.exitRealIdent(self) + + + + def errorCapturingIdentifierExtra(self): + + localctx = SqlBaseParser.ErrorCapturingIdentifierExtraContext(self, self._ctx, self.state) + self.enterRule(localctx, 256, self.RULE_errorCapturingIdentifierExtra) + try: + self.state = 2944 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,380,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.ErrorIdentContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2939 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2937 + self.match(SqlBaseParser.MINUS) + self.state = 2938 + self.identifier() + + else: + raise NoViableAltException(self) + self.state = 2941 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,379,self._ctx) + + pass + + elif la_ == 2: + localctx = SqlBaseParser.RealIdentContext(self, localctx) + self.enterOuterAlt(localctx, 2) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def strictIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.StrictIdentifierContext,0) + + + def strictNonReserved(self): + return self.getTypedRuleContext(SqlBaseParser.StrictNonReservedContext,0) + + + def getRuleIndex(self): + return SqlBaseParser.RULE_identifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIdentifier" ): + listener.enterIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIdentifier" ): + listener.exitIdentifier(self) + + + + + def identifier(self): + + localctx = SqlBaseParser.IdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 258, self.RULE_identifier) + try: + self.state = 2949 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,381,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2946 + self.strictIdentifier() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2947 + if not not self.SQL_standard_keyword_behavior: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "not self.SQL_standard_keyword_behavior") + self.state = 2948 + self.strictNonReserved() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StrictIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_strictIdentifier + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class QuotedIdentifierAlternativeContext(StrictIdentifierContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StrictIdentifierContext + super().__init__(parser) + self.copyFrom(ctx) + + def quotedIdentifier(self): + return self.getTypedRuleContext(SqlBaseParser.QuotedIdentifierContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQuotedIdentifierAlternative" ): + listener.enterQuotedIdentifierAlternative(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQuotedIdentifierAlternative" ): + listener.exitQuotedIdentifierAlternative(self) + + + class UnquotedIdentifierContext(StrictIdentifierContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.StrictIdentifierContext + super().__init__(parser) + self.copyFrom(ctx) + + def IDENTIFIER(self): + return self.getToken(SqlBaseParser.IDENTIFIER, 0) + def ansiNonReserved(self): + return self.getTypedRuleContext(SqlBaseParser.AnsiNonReservedContext,0) + + def nonReserved(self): + return self.getTypedRuleContext(SqlBaseParser.NonReservedContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnquotedIdentifier" ): + listener.enterUnquotedIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnquotedIdentifier" ): + listener.exitUnquotedIdentifier(self) + + + + def strictIdentifier(self): + + localctx = SqlBaseParser.StrictIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 260, self.RULE_strictIdentifier) + try: + self.state = 2957 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,382,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.UnquotedIdentifierContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2951 + self.match(SqlBaseParser.IDENTIFIER) + pass + + elif la_ == 2: + localctx = SqlBaseParser.QuotedIdentifierAlternativeContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2952 + self.quotedIdentifier() + pass + + elif la_ == 3: + localctx = SqlBaseParser.UnquotedIdentifierContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2953 + if not self.SQL_standard_keyword_behavior: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.SQL_standard_keyword_behavior") + self.state = 2954 + self.ansiNonReserved() + pass + + elif la_ == 4: + localctx = SqlBaseParser.UnquotedIdentifierContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2955 + if not not self.SQL_standard_keyword_behavior: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "not self.SQL_standard_keyword_behavior") + self.state = 2956 + self.nonReserved() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class QuotedIdentifierContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def BACKQUOTED_IDENTIFIER(self): + return self.getToken(SqlBaseParser.BACKQUOTED_IDENTIFIER, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_quotedIdentifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterQuotedIdentifier" ): + listener.enterQuotedIdentifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitQuotedIdentifier" ): + listener.exitQuotedIdentifier(self) + + + + + def quotedIdentifier(self): + + localctx = SqlBaseParser.QuotedIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 262, self.RULE_quotedIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2959 + self.match(SqlBaseParser.BACKQUOTED_IDENTIFIER) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NumberContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return SqlBaseParser.RULE_number + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + + class DecimalLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def DECIMAL_VALUE(self): + return self.getToken(SqlBaseParser.DECIMAL_VALUE, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDecimalLiteral" ): + listener.enterDecimalLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDecimalLiteral" ): + listener.exitDecimalLiteral(self) + + + class BigIntLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def BIGINT_LITERAL(self): + return self.getToken(SqlBaseParser.BIGINT_LITERAL, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBigIntLiteral" ): + listener.enterBigIntLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBigIntLiteral" ): + listener.exitBigIntLiteral(self) + + + class TinyIntLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def TINYINT_LITERAL(self): + return self.getToken(SqlBaseParser.TINYINT_LITERAL, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTinyIntLiteral" ): + listener.enterTinyIntLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTinyIntLiteral" ): + listener.exitTinyIntLiteral(self) + + + class LegacyDecimalLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def EXPONENT_VALUE(self): + return self.getToken(SqlBaseParser.EXPONENT_VALUE, 0) + def DECIMAL_VALUE(self): + return self.getToken(SqlBaseParser.DECIMAL_VALUE, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLegacyDecimalLiteral" ): + listener.enterLegacyDecimalLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLegacyDecimalLiteral" ): + listener.exitLegacyDecimalLiteral(self) + + + class BigDecimalLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def BIGDECIMAL_LITERAL(self): + return self.getToken(SqlBaseParser.BIGDECIMAL_LITERAL, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBigDecimalLiteral" ): + listener.enterBigDecimalLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBigDecimalLiteral" ): + listener.exitBigDecimalLiteral(self) + + + class ExponentLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def EXPONENT_VALUE(self): + return self.getToken(SqlBaseParser.EXPONENT_VALUE, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExponentLiteral" ): + listener.enterExponentLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExponentLiteral" ): + listener.exitExponentLiteral(self) + + + class DoubleLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def DOUBLE_LITERAL(self): + return self.getToken(SqlBaseParser.DOUBLE_LITERAL, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDoubleLiteral" ): + listener.enterDoubleLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDoubleLiteral" ): + listener.exitDoubleLiteral(self) + + + class IntegerLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def INTEGER_VALUE(self): + return self.getToken(SqlBaseParser.INTEGER_VALUE, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIntegerLiteral" ): + listener.enterIntegerLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIntegerLiteral" ): + listener.exitIntegerLiteral(self) + + + class SmallIntLiteralContext(NumberContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a SqlBaseParser.NumberContext + super().__init__(parser) + self.copyFrom(ctx) + + def SMALLINT_LITERAL(self): + return self.getToken(SqlBaseParser.SMALLINT_LITERAL, 0) + def MINUS(self): + return self.getToken(SqlBaseParser.MINUS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSmallIntLiteral" ): + listener.enterSmallIntLiteral(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSmallIntLiteral" ): + listener.exitSmallIntLiteral(self) + + + + def number(self): + + localctx = SqlBaseParser.NumberContext(self, self._ctx, self.state) + self.enterRule(localctx, 264, self.RULE_number) + self._la = 0 # Token type + try: + self.state = 3000 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,392,self._ctx) + if la_ == 1: + localctx = SqlBaseParser.ExponentLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 2961 + if not not self.legacy_exponent_literal_as_decimal_enabled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "not self.legacy_exponent_literal_as_decimal_enabled") + self.state = 2963 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2962 + self.match(SqlBaseParser.MINUS) + + + self.state = 2965 + self.match(SqlBaseParser.EXPONENT_VALUE) + pass + + elif la_ == 2: + localctx = SqlBaseParser.DecimalLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 2966 + if not not self.legacy_exponent_literal_as_decimal_enabled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "not self.legacy_exponent_literal_as_decimal_enabled") + self.state = 2968 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2967 + self.match(SqlBaseParser.MINUS) + + + self.state = 2970 + self.match(SqlBaseParser.DECIMAL_VALUE) + pass + + elif la_ == 3: + localctx = SqlBaseParser.LegacyDecimalLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 2971 + if not self.legacy_exponent_literal_as_decimal_enabled: + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.legacy_exponent_literal_as_decimal_enabled") + self.state = 2973 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2972 + self.match(SqlBaseParser.MINUS) + + + self.state = 2975 + _la = self._input.LA(1) + if not(_la==SqlBaseParser.EXPONENT_VALUE or _la==SqlBaseParser.DECIMAL_VALUE): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + pass + + elif la_ == 4: + localctx = SqlBaseParser.IntegerLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 2977 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2976 + self.match(SqlBaseParser.MINUS) + + + self.state = 2979 + self.match(SqlBaseParser.INTEGER_VALUE) + pass + + elif la_ == 5: + localctx = SqlBaseParser.BigIntLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 2981 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2980 + self.match(SqlBaseParser.MINUS) + + + self.state = 2983 + self.match(SqlBaseParser.BIGINT_LITERAL) + pass + + elif la_ == 6: + localctx = SqlBaseParser.SmallIntLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 2985 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2984 + self.match(SqlBaseParser.MINUS) + + + self.state = 2987 + self.match(SqlBaseParser.SMALLINT_LITERAL) + pass + + elif la_ == 7: + localctx = SqlBaseParser.TinyIntLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 2989 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2988 + self.match(SqlBaseParser.MINUS) + + + self.state = 2991 + self.match(SqlBaseParser.TINYINT_LITERAL) + pass + + elif la_ == 8: + localctx = SqlBaseParser.DoubleLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 2993 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2992 + self.match(SqlBaseParser.MINUS) + + + self.state = 2995 + self.match(SqlBaseParser.DOUBLE_LITERAL) + pass + + elif la_ == 9: + localctx = SqlBaseParser.BigDecimalLiteralContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 2997 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==SqlBaseParser.MINUS: + self.state = 2996 + self.match(SqlBaseParser.MINUS) + + + self.state = 2999 + self.match(SqlBaseParser.BIGDECIMAL_LITERAL) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AlterColumnActionContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.setOrDrop = None # Token + + def TYPE(self): + return self.getToken(SqlBaseParser.TYPE, 0) + + def dataType(self): + return self.getTypedRuleContext(SqlBaseParser.DataTypeContext,0) + + + def commentSpec(self): + return self.getTypedRuleContext(SqlBaseParser.CommentSpecContext,0) + + + def colPosition(self): + return self.getTypedRuleContext(SqlBaseParser.ColPositionContext,0) + + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_alterColumnAction + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAlterColumnAction" ): + listener.enterAlterColumnAction(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAlterColumnAction" ): + listener.exitAlterColumnAction(self) + + + + + def alterColumnAction(self): + + localctx = SqlBaseParser.AlterColumnActionContext(self, self._ctx, self.state) + self.enterRule(localctx, 266, self.RULE_alterColumnAction) + self._la = 0 # Token type + try: + self.state = 3009 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [SqlBaseParser.TYPE]: + self.enterOuterAlt(localctx, 1) + self.state = 3002 + self.match(SqlBaseParser.TYPE) + self.state = 3003 + self.dataType() + pass + elif token in [SqlBaseParser.COMMENT]: + self.enterOuterAlt(localctx, 2) + self.state = 3004 + self.commentSpec() + pass + elif token in [SqlBaseParser.AFTER, SqlBaseParser.FIRST]: + self.enterOuterAlt(localctx, 3) + self.state = 3005 + self.colPosition() + pass + elif token in [SqlBaseParser.DROP, SqlBaseParser.SET]: + self.enterOuterAlt(localctx, 4) + self.state = 3006 + localctx.setOrDrop = self._input.LT(1) + _la = self._input.LA(1) + if not(_la==SqlBaseParser.DROP or _la==SqlBaseParser.SET): + localctx.setOrDrop = self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 3007 + self.match(SqlBaseParser.NOT) + self.state = 3008 + self.match(SqlBaseParser.NULL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnsiNonReservedContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ADD(self): + return self.getToken(SqlBaseParser.ADD, 0) + + def AFTER(self): + return self.getToken(SqlBaseParser.AFTER, 0) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + + def ANALYZE(self): + return self.getToken(SqlBaseParser.ANALYZE, 0) + + def ARCHIVE(self): + return self.getToken(SqlBaseParser.ARCHIVE, 0) + + def ARRAY(self): + return self.getToken(SqlBaseParser.ARRAY, 0) + + def ASC(self): + return self.getToken(SqlBaseParser.ASC, 0) + + def AT(self): + return self.getToken(SqlBaseParser.AT, 0) + + def BETWEEN(self): + return self.getToken(SqlBaseParser.BETWEEN, 0) + + def BUCKET(self): + return self.getToken(SqlBaseParser.BUCKET, 0) + + def BUCKETS(self): + return self.getToken(SqlBaseParser.BUCKETS, 0) + + def BY(self): + return self.getToken(SqlBaseParser.BY, 0) + + def CACHE(self): + return self.getToken(SqlBaseParser.CACHE, 0) + + def CASCADE(self): + return self.getToken(SqlBaseParser.CASCADE, 0) + + def CHANGE(self): + return self.getToken(SqlBaseParser.CHANGE, 0) + + def CLEAR(self): + return self.getToken(SqlBaseParser.CLEAR, 0) + + def CLUSTER(self): + return self.getToken(SqlBaseParser.CLUSTER, 0) + + def CLUSTERED(self): + return self.getToken(SqlBaseParser.CLUSTERED, 0) + + def CODEGEN(self): + return self.getToken(SqlBaseParser.CODEGEN, 0) + + def COLLECTION(self): + return self.getToken(SqlBaseParser.COLLECTION, 0) + + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + + def COMMENT(self): + return self.getToken(SqlBaseParser.COMMENT, 0) + + def COMMIT(self): + return self.getToken(SqlBaseParser.COMMIT, 0) + + def COMPACT(self): + return self.getToken(SqlBaseParser.COMPACT, 0) + + def COMPACTIONS(self): + return self.getToken(SqlBaseParser.COMPACTIONS, 0) + + def COMPUTE(self): + return self.getToken(SqlBaseParser.COMPUTE, 0) + + def CONCATENATE(self): + return self.getToken(SqlBaseParser.CONCATENATE, 0) + + def COST(self): + return self.getToken(SqlBaseParser.COST, 0) + + def CUBE(self): + return self.getToken(SqlBaseParser.CUBE, 0) + + def CURRENT(self): + return self.getToken(SqlBaseParser.CURRENT, 0) + + def DATA(self): + return self.getToken(SqlBaseParser.DATA, 0) + + def DATABASE(self): + return self.getToken(SqlBaseParser.DATABASE, 0) + + def DATABASES(self): + return self.getToken(SqlBaseParser.DATABASES, 0) + + def DBPROPERTIES(self): + return self.getToken(SqlBaseParser.DBPROPERTIES, 0) + + def DEFINED(self): + return self.getToken(SqlBaseParser.DEFINED, 0) + + def DELETE(self): + return self.getToken(SqlBaseParser.DELETE, 0) + + def DELIMITED(self): + return self.getToken(SqlBaseParser.DELIMITED, 0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + + def DESCRIBE(self): + return self.getToken(SqlBaseParser.DESCRIBE, 0) + + def DFS(self): + return self.getToken(SqlBaseParser.DFS, 0) + + def DIRECTORIES(self): + return self.getToken(SqlBaseParser.DIRECTORIES, 0) + + def DIRECTORY(self): + return self.getToken(SqlBaseParser.DIRECTORY, 0) + + def DISTRIBUTE(self): + return self.getToken(SqlBaseParser.DISTRIBUTE, 0) + + def DIV(self): + return self.getToken(SqlBaseParser.DIV, 0) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + + def ESCAPED(self): + return self.getToken(SqlBaseParser.ESCAPED, 0) + + def EXCHANGE(self): + return self.getToken(SqlBaseParser.EXCHANGE, 0) + + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def EXPLAIN(self): + return self.getToken(SqlBaseParser.EXPLAIN, 0) + + def EXPORT(self): + return self.getToken(SqlBaseParser.EXPORT, 0) + + def EXTENDED(self): + return self.getToken(SqlBaseParser.EXTENDED, 0) + + def EXTERNAL(self): + return self.getToken(SqlBaseParser.EXTERNAL, 0) + + def EXTRACT(self): + return self.getToken(SqlBaseParser.EXTRACT, 0) + + def FIELDS(self): + return self.getToken(SqlBaseParser.FIELDS, 0) + + def FILEFORMAT(self): + return self.getToken(SqlBaseParser.FILEFORMAT, 0) + + def FIRST(self): + return self.getToken(SqlBaseParser.FIRST, 0) + + def FOLLOWING(self): + return self.getToken(SqlBaseParser.FOLLOWING, 0) + + def FORMAT(self): + return self.getToken(SqlBaseParser.FORMAT, 0) + + def FORMATTED(self): + return self.getToken(SqlBaseParser.FORMATTED, 0) + + def FUNCTION(self): + return self.getToken(SqlBaseParser.FUNCTION, 0) + + def FUNCTIONS(self): + return self.getToken(SqlBaseParser.FUNCTIONS, 0) + + def GLOBAL(self): + return self.getToken(SqlBaseParser.GLOBAL, 0) + + def GROUPING(self): + return self.getToken(SqlBaseParser.GROUPING, 0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + + def IGNORE(self): + return self.getToken(SqlBaseParser.IGNORE, 0) + + def IMPORT(self): + return self.getToken(SqlBaseParser.IMPORT, 0) + + def INDEX(self): + return self.getToken(SqlBaseParser.INDEX, 0) + + def INDEXES(self): + return self.getToken(SqlBaseParser.INDEXES, 0) + + def INPATH(self): + return self.getToken(SqlBaseParser.INPATH, 0) + + def INPUTFORMAT(self): + return self.getToken(SqlBaseParser.INPUTFORMAT, 0) + + def INSERT(self): + return self.getToken(SqlBaseParser.INSERT, 0) + + def INTERVAL(self): + return self.getToken(SqlBaseParser.INTERVAL, 0) + + def ITEMS(self): + return self.getToken(SqlBaseParser.ITEMS, 0) + + def KEYS(self): + return self.getToken(SqlBaseParser.KEYS, 0) + + def LAST(self): + return self.getToken(SqlBaseParser.LAST, 0) + + def LATERAL(self): + return self.getToken(SqlBaseParser.LATERAL, 0) + + def LAZY(self): + return self.getToken(SqlBaseParser.LAZY, 0) + + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + + def LIMIT(self): + return self.getToken(SqlBaseParser.LIMIT, 0) + + def LINES(self): + return self.getToken(SqlBaseParser.LINES, 0) + + def LIST(self): + return self.getToken(SqlBaseParser.LIST, 0) + + def LOAD(self): + return self.getToken(SqlBaseParser.LOAD, 0) + + def LOCAL(self): + return self.getToken(SqlBaseParser.LOCAL, 0) + + def LOCATION(self): + return self.getToken(SqlBaseParser.LOCATION, 0) + + def LOCK(self): + return self.getToken(SqlBaseParser.LOCK, 0) + + def LOCKS(self): + return self.getToken(SqlBaseParser.LOCKS, 0) + + def LOGICAL(self): + return self.getToken(SqlBaseParser.LOGICAL, 0) + + def MACRO(self): + return self.getToken(SqlBaseParser.MACRO, 0) + + def MAP(self): + return self.getToken(SqlBaseParser.MAP, 0) + + def MATCHED(self): + return self.getToken(SqlBaseParser.MATCHED, 0) + + def MERGE(self): + return self.getToken(SqlBaseParser.MERGE, 0) + + def MSCK(self): + return self.getToken(SqlBaseParser.MSCK, 0) + + def NAMESPACE(self): + return self.getToken(SqlBaseParser.NAMESPACE, 0) + + def NAMESPACES(self): + return self.getToken(SqlBaseParser.NAMESPACES, 0) + + def NO(self): + return self.getToken(SqlBaseParser.NO, 0) + + def NULLS(self): + return self.getToken(SqlBaseParser.NULLS, 0) + + def OF(self): + return self.getToken(SqlBaseParser.OF, 0) + + def OPTION(self): + return self.getToken(SqlBaseParser.OPTION, 0) + + def OPTIONS(self): + return self.getToken(SqlBaseParser.OPTIONS, 0) + + def OUT(self): + return self.getToken(SqlBaseParser.OUT, 0) + + def OUTPUTFORMAT(self): + return self.getToken(SqlBaseParser.OUTPUTFORMAT, 0) + + def OVER(self): + return self.getToken(SqlBaseParser.OVER, 0) + + def OVERLAY(self): + return self.getToken(SqlBaseParser.OVERLAY, 0) + + def OVERWRITE(self): + return self.getToken(SqlBaseParser.OVERWRITE, 0) + + def PARTITION(self): + return self.getToken(SqlBaseParser.PARTITION, 0) + + def PARTITIONED(self): + return self.getToken(SqlBaseParser.PARTITIONED, 0) + + def PARTITIONS(self): + return self.getToken(SqlBaseParser.PARTITIONS, 0) + + def PERCENTLIT(self): + return self.getToken(SqlBaseParser.PERCENTLIT, 0) + + def PIVOT(self): + return self.getToken(SqlBaseParser.PIVOT, 0) + + def PLACING(self): + return self.getToken(SqlBaseParser.PLACING, 0) + + def POSITION(self): + return self.getToken(SqlBaseParser.POSITION, 0) + + def PRECEDING(self): + return self.getToken(SqlBaseParser.PRECEDING, 0) + + def PRINCIPALS(self): + return self.getToken(SqlBaseParser.PRINCIPALS, 0) + + def PROPERTIES(self): + return self.getToken(SqlBaseParser.PROPERTIES, 0) + + def PURGE(self): + return self.getToken(SqlBaseParser.PURGE, 0) + + def QUERY(self): + return self.getToken(SqlBaseParser.QUERY, 0) + + def RANGE(self): + return self.getToken(SqlBaseParser.RANGE, 0) + + def RECORDREADER(self): + return self.getToken(SqlBaseParser.RECORDREADER, 0) + + def RECORDWRITER(self): + return self.getToken(SqlBaseParser.RECORDWRITER, 0) + + def RECOVER(self): + return self.getToken(SqlBaseParser.RECOVER, 0) + + def REDUCE(self): + return self.getToken(SqlBaseParser.REDUCE, 0) + + def REFRESH(self): + return self.getToken(SqlBaseParser.REFRESH, 0) + + def RENAME(self): + return self.getToken(SqlBaseParser.RENAME, 0) + + def REPAIR(self): + return self.getToken(SqlBaseParser.REPAIR, 0) + + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + + def RESET(self): + return self.getToken(SqlBaseParser.RESET, 0) + + def RESTRICT(self): + return self.getToken(SqlBaseParser.RESTRICT, 0) + + def REVOKE(self): + return self.getToken(SqlBaseParser.REVOKE, 0) + + def RLIKE(self): + return self.getToken(SqlBaseParser.RLIKE, 0) + + def ROLE(self): + return self.getToken(SqlBaseParser.ROLE, 0) + + def ROLES(self): + return self.getToken(SqlBaseParser.ROLES, 0) + + def ROLLBACK(self): + return self.getToken(SqlBaseParser.ROLLBACK, 0) + + def ROLLUP(self): + return self.getToken(SqlBaseParser.ROLLUP, 0) + + def ROW(self): + return self.getToken(SqlBaseParser.ROW, 0) + + def ROWS(self): + return self.getToken(SqlBaseParser.ROWS, 0) + + def SCHEMA(self): + return self.getToken(SqlBaseParser.SCHEMA, 0) + + def SEPARATED(self): + return self.getToken(SqlBaseParser.SEPARATED, 0) + + def SERDE(self): + return self.getToken(SqlBaseParser.SERDE, 0) + + def SERDEPROPERTIES(self): + return self.getToken(SqlBaseParser.SERDEPROPERTIES, 0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + + def SETS(self): + return self.getToken(SqlBaseParser.SETS, 0) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + + def SKEWED(self): + return self.getToken(SqlBaseParser.SKEWED, 0) + + def SORT(self): + return self.getToken(SqlBaseParser.SORT, 0) + + def SORTED(self): + return self.getToken(SqlBaseParser.SORTED, 0) + + def START(self): + return self.getToken(SqlBaseParser.START, 0) + + def STATISTICS(self): + return self.getToken(SqlBaseParser.STATISTICS, 0) + + def STORED(self): + return self.getToken(SqlBaseParser.STORED, 0) + + def STRATIFY(self): + return self.getToken(SqlBaseParser.STRATIFY, 0) + + def STRUCT(self): + return self.getToken(SqlBaseParser.STRUCT, 0) + + def SUBSTR(self): + return self.getToken(SqlBaseParser.SUBSTR, 0) + + def SUBSTRING(self): + return self.getToken(SqlBaseParser.SUBSTRING, 0) + + def TABLES(self): + return self.getToken(SqlBaseParser.TABLES, 0) + + def TABLESAMPLE(self): + return self.getToken(SqlBaseParser.TABLESAMPLE, 0) + + def TBLPROPERTIES(self): + return self.getToken(SqlBaseParser.TBLPROPERTIES, 0) + + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + + def TERMINATED(self): + return self.getToken(SqlBaseParser.TERMINATED, 0) + + def TOUCH(self): + return self.getToken(SqlBaseParser.TOUCH, 0) + + def TRANSACTION(self): + return self.getToken(SqlBaseParser.TRANSACTION, 0) + + def TRANSACTIONS(self): + return self.getToken(SqlBaseParser.TRANSACTIONS, 0) + + def TRANSFORM(self): + return self.getToken(SqlBaseParser.TRANSFORM, 0) + + def TRIM(self): + return self.getToken(SqlBaseParser.TRIM, 0) + + def TRUE(self): + return self.getToken(SqlBaseParser.TRUE, 0) + + def TRUNCATE(self): + return self.getToken(SqlBaseParser.TRUNCATE, 0) + + def UNARCHIVE(self): + return self.getToken(SqlBaseParser.UNARCHIVE, 0) + + def UNBOUNDED(self): + return self.getToken(SqlBaseParser.UNBOUNDED, 0) + + def UNCACHE(self): + return self.getToken(SqlBaseParser.UNCACHE, 0) + + def UNLOCK(self): + return self.getToken(SqlBaseParser.UNLOCK, 0) + + def UNSET(self): + return self.getToken(SqlBaseParser.UNSET, 0) + + def UPDATE(self): + return self.getToken(SqlBaseParser.UPDATE, 0) + + def USE(self): + return self.getToken(SqlBaseParser.USE, 0) + + def VALUES(self): + return self.getToken(SqlBaseParser.VALUES, 0) + + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + + def VIEWS(self): + return self.getToken(SqlBaseParser.VIEWS, 0) + + def WINDOW(self): + return self.getToken(SqlBaseParser.WINDOW, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_ansiNonReserved + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAnsiNonReserved" ): + listener.enterAnsiNonReserved(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAnsiNonReserved" ): + listener.exitAnsiNonReserved(self) + + + + + def ansiNonReserved(self): + + localctx = SqlBaseParser.AnsiNonReservedContext(self, self._ctx, self.state) + self.enterRule(localctx, 268, self.RULE_ansiNonReserved) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3011 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.AFTER) | (1 << SqlBaseParser.ALTER) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.ARCHIVE) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.BETWEEN) | (1 << SqlBaseParser.BUCKET) | (1 << SqlBaseParser.BUCKETS) | (1 << SqlBaseParser.BY) | (1 << SqlBaseParser.CACHE) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CHANGE) | (1 << SqlBaseParser.CLEAR) | (1 << SqlBaseParser.CLUSTER) | (1 << SqlBaseParser.CLUSTERED) | (1 << SqlBaseParser.CODEGEN) | (1 << SqlBaseParser.COLLECTION) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT) | (1 << SqlBaseParser.COMPACT) | (1 << SqlBaseParser.COMPACTIONS) | (1 << SqlBaseParser.COMPUTE) | (1 << SqlBaseParser.CONCATENATE) | (1 << SqlBaseParser.COST) | (1 << SqlBaseParser.CUBE) | (1 << SqlBaseParser.CURRENT) | (1 << SqlBaseParser.DATA) | (1 << SqlBaseParser.DATABASE) | (1 << SqlBaseParser.DATABASES))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (SqlBaseParser.DBPROPERTIES - 65)) | (1 << (SqlBaseParser.DEFINED - 65)) | (1 << (SqlBaseParser.DELETE - 65)) | (1 << (SqlBaseParser.DELIMITED - 65)) | (1 << (SqlBaseParser.DESC - 65)) | (1 << (SqlBaseParser.DESCRIBE - 65)) | (1 << (SqlBaseParser.DFS - 65)) | (1 << (SqlBaseParser.DIRECTORIES - 65)) | (1 << (SqlBaseParser.DIRECTORY - 65)) | (1 << (SqlBaseParser.DISTRIBUTE - 65)) | (1 << (SqlBaseParser.DROP - 65)) | (1 << (SqlBaseParser.ESCAPED - 65)) | (1 << (SqlBaseParser.EXCHANGE - 65)) | (1 << (SqlBaseParser.EXISTS - 65)) | (1 << (SqlBaseParser.EXPLAIN - 65)) | (1 << (SqlBaseParser.EXPORT - 65)) | (1 << (SqlBaseParser.EXTENDED - 65)) | (1 << (SqlBaseParser.EXTERNAL - 65)) | (1 << (SqlBaseParser.EXTRACT - 65)) | (1 << (SqlBaseParser.FIELDS - 65)) | (1 << (SqlBaseParser.FILEFORMAT - 65)) | (1 << (SqlBaseParser.FIRST - 65)) | (1 << (SqlBaseParser.FOLLOWING - 65)) | (1 << (SqlBaseParser.FORMAT - 65)) | (1 << (SqlBaseParser.FORMATTED - 65)) | (1 << (SqlBaseParser.FUNCTION - 65)) | (1 << (SqlBaseParser.FUNCTIONS - 65)) | (1 << (SqlBaseParser.GLOBAL - 65)) | (1 << (SqlBaseParser.GROUPING - 65)) | (1 << (SqlBaseParser.IF - 65)) | (1 << (SqlBaseParser.IGNORE - 65)) | (1 << (SqlBaseParser.IMPORT - 65)) | (1 << (SqlBaseParser.INDEX - 65)) | (1 << (SqlBaseParser.INDEXES - 65)) | (1 << (SqlBaseParser.INPATH - 65)) | (1 << (SqlBaseParser.INPUTFORMAT - 65)) | (1 << (SqlBaseParser.INSERT - 65)) | (1 << (SqlBaseParser.INTERVAL - 65)) | (1 << (SqlBaseParser.ITEMS - 65)) | (1 << (SqlBaseParser.KEYS - 65)) | (1 << (SqlBaseParser.LAST - 65)) | (1 << (SqlBaseParser.LATERAL - 65)))) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & ((1 << (SqlBaseParser.LAZY - 129)) | (1 << (SqlBaseParser.LIKE - 129)) | (1 << (SqlBaseParser.LIMIT - 129)) | (1 << (SqlBaseParser.LINES - 129)) | (1 << (SqlBaseParser.LIST - 129)) | (1 << (SqlBaseParser.LOAD - 129)) | (1 << (SqlBaseParser.LOCAL - 129)) | (1 << (SqlBaseParser.LOCATION - 129)) | (1 << (SqlBaseParser.LOCK - 129)) | (1 << (SqlBaseParser.LOCKS - 129)) | (1 << (SqlBaseParser.LOGICAL - 129)) | (1 << (SqlBaseParser.MACRO - 129)) | (1 << (SqlBaseParser.MAP - 129)) | (1 << (SqlBaseParser.MATCHED - 129)) | (1 << (SqlBaseParser.MERGE - 129)) | (1 << (SqlBaseParser.MSCK - 129)) | (1 << (SqlBaseParser.NAMESPACE - 129)) | (1 << (SqlBaseParser.NAMESPACES - 129)) | (1 << (SqlBaseParser.NO - 129)) | (1 << (SqlBaseParser.NULLS - 129)) | (1 << (SqlBaseParser.OF - 129)) | (1 << (SqlBaseParser.OPTION - 129)) | (1 << (SqlBaseParser.OPTIONS - 129)) | (1 << (SqlBaseParser.OUT - 129)) | (1 << (SqlBaseParser.OUTPUTFORMAT - 129)) | (1 << (SqlBaseParser.OVER - 129)) | (1 << (SqlBaseParser.OVERLAY - 129)) | (1 << (SqlBaseParser.OVERWRITE - 129)) | (1 << (SqlBaseParser.PARTITION - 129)) | (1 << (SqlBaseParser.PARTITIONED - 129)) | (1 << (SqlBaseParser.PARTITIONS - 129)) | (1 << (SqlBaseParser.PERCENTLIT - 129)) | (1 << (SqlBaseParser.PIVOT - 129)) | (1 << (SqlBaseParser.PLACING - 129)) | (1 << (SqlBaseParser.POSITION - 129)) | (1 << (SqlBaseParser.PRECEDING - 129)) | (1 << (SqlBaseParser.PRINCIPALS - 129)) | (1 << (SqlBaseParser.PROPERTIES - 129)) | (1 << (SqlBaseParser.PURGE - 129)) | (1 << (SqlBaseParser.QUERY - 129)) | (1 << (SqlBaseParser.RANGE - 129)) | (1 << (SqlBaseParser.RECORDREADER - 129)) | (1 << (SqlBaseParser.RECORDWRITER - 129)) | (1 << (SqlBaseParser.RECOVER - 129)) | (1 << (SqlBaseParser.REDUCE - 129)) | (1 << (SqlBaseParser.REFRESH - 129)) | (1 << (SqlBaseParser.RENAME - 129)) | (1 << (SqlBaseParser.REPAIR - 129)) | (1 << (SqlBaseParser.REPLACE - 129)))) != 0) or ((((_la - 193)) & ~0x3f) == 0 and ((1 << (_la - 193)) & ((1 << (SqlBaseParser.RESET - 193)) | (1 << (SqlBaseParser.RESTRICT - 193)) | (1 << (SqlBaseParser.REVOKE - 193)) | (1 << (SqlBaseParser.RLIKE - 193)) | (1 << (SqlBaseParser.ROLE - 193)) | (1 << (SqlBaseParser.ROLES - 193)) | (1 << (SqlBaseParser.ROLLBACK - 193)) | (1 << (SqlBaseParser.ROLLUP - 193)) | (1 << (SqlBaseParser.ROW - 193)) | (1 << (SqlBaseParser.ROWS - 193)) | (1 << (SqlBaseParser.SCHEMA - 193)) | (1 << (SqlBaseParser.SEPARATED - 193)) | (1 << (SqlBaseParser.SERDE - 193)) | (1 << (SqlBaseParser.SERDEPROPERTIES - 193)) | (1 << (SqlBaseParser.SET - 193)) | (1 << (SqlBaseParser.SETS - 193)) | (1 << (SqlBaseParser.SHOW - 193)) | (1 << (SqlBaseParser.SKEWED - 193)) | (1 << (SqlBaseParser.SORT - 193)) | (1 << (SqlBaseParser.SORTED - 193)) | (1 << (SqlBaseParser.START - 193)) | (1 << (SqlBaseParser.STATISTICS - 193)) | (1 << (SqlBaseParser.STORED - 193)) | (1 << (SqlBaseParser.STRATIFY - 193)) | (1 << (SqlBaseParser.STRUCT - 193)) | (1 << (SqlBaseParser.SUBSTR - 193)) | (1 << (SqlBaseParser.SUBSTRING - 193)) | (1 << (SqlBaseParser.TABLES - 193)) | (1 << (SqlBaseParser.TABLESAMPLE - 193)) | (1 << (SqlBaseParser.TBLPROPERTIES - 193)) | (1 << (SqlBaseParser.TEMPORARY - 193)) | (1 << (SqlBaseParser.TERMINATED - 193)) | (1 << (SqlBaseParser.TOUCH - 193)) | (1 << (SqlBaseParser.TRANSACTION - 193)) | (1 << (SqlBaseParser.TRANSACTIONS - 193)) | (1 << (SqlBaseParser.TRANSFORM - 193)) | (1 << (SqlBaseParser.TRIM - 193)) | (1 << (SqlBaseParser.TRUE - 193)) | (1 << (SqlBaseParser.TRUNCATE - 193)) | (1 << (SqlBaseParser.UNARCHIVE - 193)) | (1 << (SqlBaseParser.UNBOUNDED - 193)) | (1 << (SqlBaseParser.UNCACHE - 193)) | (1 << (SqlBaseParser.UNLOCK - 193)) | (1 << (SqlBaseParser.UNSET - 193)) | (1 << (SqlBaseParser.UPDATE - 193)) | (1 << (SqlBaseParser.USE - 193)) | (1 << (SqlBaseParser.VALUES - 193)))) != 0) or ((((_la - 257)) & ~0x3f) == 0 and ((1 << (_la - 257)) & ((1 << (SqlBaseParser.VIEW - 257)) | (1 << (SqlBaseParser.VIEWS - 257)) | (1 << (SqlBaseParser.WINDOW - 257)) | (1 << (SqlBaseParser.DIV - 257)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StrictNonReservedContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ANTI(self): + return self.getToken(SqlBaseParser.ANTI, 0) + + def CROSS(self): + return self.getToken(SqlBaseParser.CROSS, 0) + + def EXCEPT(self): + return self.getToken(SqlBaseParser.EXCEPT, 0) + + def FULL(self): + return self.getToken(SqlBaseParser.FULL, 0) + + def INNER(self): + return self.getToken(SqlBaseParser.INNER, 0) + + def INTERSECT(self): + return self.getToken(SqlBaseParser.INTERSECT, 0) + + def JOIN(self): + return self.getToken(SqlBaseParser.JOIN, 0) + + def LEFT(self): + return self.getToken(SqlBaseParser.LEFT, 0) + + def NATURAL(self): + return self.getToken(SqlBaseParser.NATURAL, 0) + + def ON(self): + return self.getToken(SqlBaseParser.ON, 0) + + def RIGHT(self): + return self.getToken(SqlBaseParser.RIGHT, 0) + + def SEMI(self): + return self.getToken(SqlBaseParser.SEMI, 0) + + def SETMINUS(self): + return self.getToken(SqlBaseParser.SETMINUS, 0) + + def UNION(self): + return self.getToken(SqlBaseParser.UNION, 0) + + def USING(self): + return self.getToken(SqlBaseParser.USING, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_strictNonReserved + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStrictNonReserved" ): + listener.enterStrictNonReserved(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStrictNonReserved" ): + listener.exitStrictNonReserved(self) + + + + + def strictNonReserved(self): + + localctx = SqlBaseParser.StrictNonReservedContext(self, self._ctx, self.state) + self.enterRule(localctx, 270, self.RULE_strictNonReserved) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3013 + _la = self._input.LA(1) + if not(((((_la - 18)) & ~0x3f) == 0 and ((1 << (_la - 18)) & ((1 << (SqlBaseParser.ANTI - 18)) | (1 << (SqlBaseParser.CROSS - 18)) | (1 << (SqlBaseParser.EXCEPT - 18)))) != 0) or ((((_la - 101)) & ~0x3f) == 0 and ((1 << (_la - 101)) & ((1 << (SqlBaseParser.FULL - 101)) | (1 << (SqlBaseParser.INNER - 101)) | (1 << (SqlBaseParser.INTERSECT - 101)) | (1 << (SqlBaseParser.JOIN - 101)) | (1 << (SqlBaseParser.LEFT - 101)) | (1 << (SqlBaseParser.NATURAL - 101)) | (1 << (SqlBaseParser.ON - 101)))) != 0) or ((((_la - 196)) & ~0x3f) == 0 and ((1 << (_la - 196)) & ((1 << (SqlBaseParser.RIGHT - 196)) | (1 << (SqlBaseParser.SEMI - 196)) | (1 << (SqlBaseParser.SETMINUS - 196)) | (1 << (SqlBaseParser.UNION - 196)) | (1 << (SqlBaseParser.USING - 196)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NonReservedContext(ParserRuleContext): + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ADD(self): + return self.getToken(SqlBaseParser.ADD, 0) + + def AFTER(self): + return self.getToken(SqlBaseParser.AFTER, 0) + + def ALL(self): + return self.getToken(SqlBaseParser.ALL, 0) + + def ALTER(self): + return self.getToken(SqlBaseParser.ALTER, 0) + + def ANALYZE(self): + return self.getToken(SqlBaseParser.ANALYZE, 0) + + def AND(self): + return self.getToken(SqlBaseParser.AND, 0) + + def ANY(self): + return self.getToken(SqlBaseParser.ANY, 0) + + def ARCHIVE(self): + return self.getToken(SqlBaseParser.ARCHIVE, 0) + + def ARRAY(self): + return self.getToken(SqlBaseParser.ARRAY, 0) + + def AS(self): + return self.getToken(SqlBaseParser.AS, 0) + + def ASC(self): + return self.getToken(SqlBaseParser.ASC, 0) + + def AT(self): + return self.getToken(SqlBaseParser.AT, 0) + + def AUTHORIZATION(self): + return self.getToken(SqlBaseParser.AUTHORIZATION, 0) + + def BETWEEN(self): + return self.getToken(SqlBaseParser.BETWEEN, 0) + + def BOTH(self): + return self.getToken(SqlBaseParser.BOTH, 0) + + def BUCKET(self): + return self.getToken(SqlBaseParser.BUCKET, 0) + + def BUCKETS(self): + return self.getToken(SqlBaseParser.BUCKETS, 0) + + def BY(self): + return self.getToken(SqlBaseParser.BY, 0) + + def CACHE(self): + return self.getToken(SqlBaseParser.CACHE, 0) + + def CASCADE(self): + return self.getToken(SqlBaseParser.CASCADE, 0) + + def CASE(self): + return self.getToken(SqlBaseParser.CASE, 0) + + def CAST(self): + return self.getToken(SqlBaseParser.CAST, 0) + + def CHANGE(self): + return self.getToken(SqlBaseParser.CHANGE, 0) + + def CHECK(self): + return self.getToken(SqlBaseParser.CHECK, 0) + + def CLEAR(self): + return self.getToken(SqlBaseParser.CLEAR, 0) + + def CLUSTER(self): + return self.getToken(SqlBaseParser.CLUSTER, 0) + + def CLUSTERED(self): + return self.getToken(SqlBaseParser.CLUSTERED, 0) + + def CODEGEN(self): + return self.getToken(SqlBaseParser.CODEGEN, 0) + + def COLLATE(self): + return self.getToken(SqlBaseParser.COLLATE, 0) + + def COLLECTION(self): + return self.getToken(SqlBaseParser.COLLECTION, 0) + + def COLUMN(self): + return self.getToken(SqlBaseParser.COLUMN, 0) + + def COLUMNS(self): + return self.getToken(SqlBaseParser.COLUMNS, 0) + + def COMMENT(self): + return self.getToken(SqlBaseParser.COMMENT, 0) + + def COMMIT(self): + return self.getToken(SqlBaseParser.COMMIT, 0) + + def COMPACT(self): + return self.getToken(SqlBaseParser.COMPACT, 0) + + def COMPACTIONS(self): + return self.getToken(SqlBaseParser.COMPACTIONS, 0) + + def COMPUTE(self): + return self.getToken(SqlBaseParser.COMPUTE, 0) + + def CONCATENATE(self): + return self.getToken(SqlBaseParser.CONCATENATE, 0) + + def CONSTRAINT(self): + return self.getToken(SqlBaseParser.CONSTRAINT, 0) + + def COST(self): + return self.getToken(SqlBaseParser.COST, 0) + + def CREATE(self): + return self.getToken(SqlBaseParser.CREATE, 0) + + def CUBE(self): + return self.getToken(SqlBaseParser.CUBE, 0) + + def CURRENT(self): + return self.getToken(SqlBaseParser.CURRENT, 0) + + def CURRENT_DATE(self): + return self.getToken(SqlBaseParser.CURRENT_DATE, 0) + + def CURRENT_TIME(self): + return self.getToken(SqlBaseParser.CURRENT_TIME, 0) + + def CURRENT_TIMESTAMP(self): + return self.getToken(SqlBaseParser.CURRENT_TIMESTAMP, 0) + + def CURRENT_USER(self): + return self.getToken(SqlBaseParser.CURRENT_USER, 0) + + def DATA(self): + return self.getToken(SqlBaseParser.DATA, 0) + + def DATABASE(self): + return self.getToken(SqlBaseParser.DATABASE, 0) + + def DATABASES(self): + return self.getToken(SqlBaseParser.DATABASES, 0) + + def DAY(self): + return self.getToken(SqlBaseParser.DAY, 0) + + def DBPROPERTIES(self): + return self.getToken(SqlBaseParser.DBPROPERTIES, 0) + + def DEFINED(self): + return self.getToken(SqlBaseParser.DEFINED, 0) + + def DELETE(self): + return self.getToken(SqlBaseParser.DELETE, 0) + + def DELIMITED(self): + return self.getToken(SqlBaseParser.DELIMITED, 0) + + def DESC(self): + return self.getToken(SqlBaseParser.DESC, 0) + + def DESCRIBE(self): + return self.getToken(SqlBaseParser.DESCRIBE, 0) + + def DFS(self): + return self.getToken(SqlBaseParser.DFS, 0) + + def DIRECTORIES(self): + return self.getToken(SqlBaseParser.DIRECTORIES, 0) + + def DIRECTORY(self): + return self.getToken(SqlBaseParser.DIRECTORY, 0) + + def DISTINCT(self): + return self.getToken(SqlBaseParser.DISTINCT, 0) + + def DISTRIBUTE(self): + return self.getToken(SqlBaseParser.DISTRIBUTE, 0) + + def DIV(self): + return self.getToken(SqlBaseParser.DIV, 0) + + def DROP(self): + return self.getToken(SqlBaseParser.DROP, 0) + + def ELSE(self): + return self.getToken(SqlBaseParser.ELSE, 0) + + def END(self): + return self.getToken(SqlBaseParser.END, 0) + + def ESCAPE(self): + return self.getToken(SqlBaseParser.ESCAPE, 0) + + def ESCAPED(self): + return self.getToken(SqlBaseParser.ESCAPED, 0) + + def EXCHANGE(self): + return self.getToken(SqlBaseParser.EXCHANGE, 0) + + def EXISTS(self): + return self.getToken(SqlBaseParser.EXISTS, 0) + + def EXPLAIN(self): + return self.getToken(SqlBaseParser.EXPLAIN, 0) + + def EXPORT(self): + return self.getToken(SqlBaseParser.EXPORT, 0) + + def EXTENDED(self): + return self.getToken(SqlBaseParser.EXTENDED, 0) + + def EXTERNAL(self): + return self.getToken(SqlBaseParser.EXTERNAL, 0) + + def EXTRACT(self): + return self.getToken(SqlBaseParser.EXTRACT, 0) + + def FALSE(self): + return self.getToken(SqlBaseParser.FALSE, 0) + + def FETCH(self): + return self.getToken(SqlBaseParser.FETCH, 0) + + def FILTER(self): + return self.getToken(SqlBaseParser.FILTER, 0) + + def FIELDS(self): + return self.getToken(SqlBaseParser.FIELDS, 0) + + def FILEFORMAT(self): + return self.getToken(SqlBaseParser.FILEFORMAT, 0) + + def FIRST(self): + return self.getToken(SqlBaseParser.FIRST, 0) + + def FOLLOWING(self): + return self.getToken(SqlBaseParser.FOLLOWING, 0) + + def FOR(self): + return self.getToken(SqlBaseParser.FOR, 0) + + def FOREIGN(self): + return self.getToken(SqlBaseParser.FOREIGN, 0) + + def FORMAT(self): + return self.getToken(SqlBaseParser.FORMAT, 0) + + def FORMATTED(self): + return self.getToken(SqlBaseParser.FORMATTED, 0) + + def FROM(self): + return self.getToken(SqlBaseParser.FROM, 0) + + def FUNCTION(self): + return self.getToken(SqlBaseParser.FUNCTION, 0) + + def FUNCTIONS(self): + return self.getToken(SqlBaseParser.FUNCTIONS, 0) + + def GLOBAL(self): + return self.getToken(SqlBaseParser.GLOBAL, 0) + + def GRANT(self): + return self.getToken(SqlBaseParser.GRANT, 0) + + def GROUP(self): + return self.getToken(SqlBaseParser.GROUP, 0) + + def GROUPING(self): + return self.getToken(SqlBaseParser.GROUPING, 0) + + def HAVING(self): + return self.getToken(SqlBaseParser.HAVING, 0) + + def HOUR(self): + return self.getToken(SqlBaseParser.HOUR, 0) + + def IF(self): + return self.getToken(SqlBaseParser.IF, 0) + + def IGNORE(self): + return self.getToken(SqlBaseParser.IGNORE, 0) + + def IMPORT(self): + return self.getToken(SqlBaseParser.IMPORT, 0) + + def IN(self): + return self.getToken(SqlBaseParser.IN, 0) + + def INDEX(self): + return self.getToken(SqlBaseParser.INDEX, 0) + + def INDEXES(self): + return self.getToken(SqlBaseParser.INDEXES, 0) + + def INPATH(self): + return self.getToken(SqlBaseParser.INPATH, 0) + + def INPUTFORMAT(self): + return self.getToken(SqlBaseParser.INPUTFORMAT, 0) + + def INSERT(self): + return self.getToken(SqlBaseParser.INSERT, 0) + + def INTERVAL(self): + return self.getToken(SqlBaseParser.INTERVAL, 0) + + def INTO(self): + return self.getToken(SqlBaseParser.INTO, 0) + + def IS(self): + return self.getToken(SqlBaseParser.IS, 0) + + def ITEMS(self): + return self.getToken(SqlBaseParser.ITEMS, 0) + + def KEYS(self): + return self.getToken(SqlBaseParser.KEYS, 0) + + def LAST(self): + return self.getToken(SqlBaseParser.LAST, 0) + + def LATERAL(self): + return self.getToken(SqlBaseParser.LATERAL, 0) + + def LAZY(self): + return self.getToken(SqlBaseParser.LAZY, 0) + + def LEADING(self): + return self.getToken(SqlBaseParser.LEADING, 0) + + def LIKE(self): + return self.getToken(SqlBaseParser.LIKE, 0) + + def LIMIT(self): + return self.getToken(SqlBaseParser.LIMIT, 0) + + def LINES(self): + return self.getToken(SqlBaseParser.LINES, 0) + + def LIST(self): + return self.getToken(SqlBaseParser.LIST, 0) + + def LOAD(self): + return self.getToken(SqlBaseParser.LOAD, 0) + + def LOCAL(self): + return self.getToken(SqlBaseParser.LOCAL, 0) + + def LOCATION(self): + return self.getToken(SqlBaseParser.LOCATION, 0) + + def LOCK(self): + return self.getToken(SqlBaseParser.LOCK, 0) + + def LOCKS(self): + return self.getToken(SqlBaseParser.LOCKS, 0) + + def LOGICAL(self): + return self.getToken(SqlBaseParser.LOGICAL, 0) + + def MACRO(self): + return self.getToken(SqlBaseParser.MACRO, 0) + + def MAP(self): + return self.getToken(SqlBaseParser.MAP, 0) + + def MATCHED(self): + return self.getToken(SqlBaseParser.MATCHED, 0) + + def MERGE(self): + return self.getToken(SqlBaseParser.MERGE, 0) + + def MINUTE(self): + return self.getToken(SqlBaseParser.MINUTE, 0) + + def MONTH(self): + return self.getToken(SqlBaseParser.MONTH, 0) + + def MSCK(self): + return self.getToken(SqlBaseParser.MSCK, 0) + + def NAMESPACE(self): + return self.getToken(SqlBaseParser.NAMESPACE, 0) + + def NAMESPACES(self): + return self.getToken(SqlBaseParser.NAMESPACES, 0) + + def NO(self): + return self.getToken(SqlBaseParser.NO, 0) + + def NOT(self): + return self.getToken(SqlBaseParser.NOT, 0) + + def NULL(self): + return self.getToken(SqlBaseParser.NULL, 0) + + def NULLS(self): + return self.getToken(SqlBaseParser.NULLS, 0) + + def OF(self): + return self.getToken(SqlBaseParser.OF, 0) + + def ONLY(self): + return self.getToken(SqlBaseParser.ONLY, 0) + + def OPTION(self): + return self.getToken(SqlBaseParser.OPTION, 0) + + def OPTIONS(self): + return self.getToken(SqlBaseParser.OPTIONS, 0) + + def OR(self): + return self.getToken(SqlBaseParser.OR, 0) + + def ORDER(self): + return self.getToken(SqlBaseParser.ORDER, 0) + + def OUT(self): + return self.getToken(SqlBaseParser.OUT, 0) + + def OUTER(self): + return self.getToken(SqlBaseParser.OUTER, 0) + + def OUTPUTFORMAT(self): + return self.getToken(SqlBaseParser.OUTPUTFORMAT, 0) + + def OVER(self): + return self.getToken(SqlBaseParser.OVER, 0) + + def OVERLAPS(self): + return self.getToken(SqlBaseParser.OVERLAPS, 0) + + def OVERLAY(self): + return self.getToken(SqlBaseParser.OVERLAY, 0) + + def OVERWRITE(self): + return self.getToken(SqlBaseParser.OVERWRITE, 0) + + def PARTITION(self): + return self.getToken(SqlBaseParser.PARTITION, 0) + + def PARTITIONED(self): + return self.getToken(SqlBaseParser.PARTITIONED, 0) + + def PARTITIONS(self): + return self.getToken(SqlBaseParser.PARTITIONS, 0) + + def PERCENTLIT(self): + return self.getToken(SqlBaseParser.PERCENTLIT, 0) + + def PIVOT(self): + return self.getToken(SqlBaseParser.PIVOT, 0) + + def PLACING(self): + return self.getToken(SqlBaseParser.PLACING, 0) + + def POSITION(self): + return self.getToken(SqlBaseParser.POSITION, 0) + + def PRECEDING(self): + return self.getToken(SqlBaseParser.PRECEDING, 0) + + def PRIMARY(self): + return self.getToken(SqlBaseParser.PRIMARY, 0) + + def PRINCIPALS(self): + return self.getToken(SqlBaseParser.PRINCIPALS, 0) + + def PROPERTIES(self): + return self.getToken(SqlBaseParser.PROPERTIES, 0) + + def PURGE(self): + return self.getToken(SqlBaseParser.PURGE, 0) + + def QUERY(self): + return self.getToken(SqlBaseParser.QUERY, 0) + + def RANGE(self): + return self.getToken(SqlBaseParser.RANGE, 0) + + def RECORDREADER(self): + return self.getToken(SqlBaseParser.RECORDREADER, 0) + + def RECORDWRITER(self): + return self.getToken(SqlBaseParser.RECORDWRITER, 0) + + def RECOVER(self): + return self.getToken(SqlBaseParser.RECOVER, 0) + + def REDUCE(self): + return self.getToken(SqlBaseParser.REDUCE, 0) + + def REFERENCES(self): + return self.getToken(SqlBaseParser.REFERENCES, 0) + + def REFRESH(self): + return self.getToken(SqlBaseParser.REFRESH, 0) + + def RENAME(self): + return self.getToken(SqlBaseParser.RENAME, 0) + + def REPAIR(self): + return self.getToken(SqlBaseParser.REPAIR, 0) + + def REPLACE(self): + return self.getToken(SqlBaseParser.REPLACE, 0) + + def RESET(self): + return self.getToken(SqlBaseParser.RESET, 0) + + def RESTRICT(self): + return self.getToken(SqlBaseParser.RESTRICT, 0) + + def REVOKE(self): + return self.getToken(SqlBaseParser.REVOKE, 0) + + def RLIKE(self): + return self.getToken(SqlBaseParser.RLIKE, 0) + + def ROLE(self): + return self.getToken(SqlBaseParser.ROLE, 0) + + def ROLES(self): + return self.getToken(SqlBaseParser.ROLES, 0) + + def ROLLBACK(self): + return self.getToken(SqlBaseParser.ROLLBACK, 0) + + def ROLLUP(self): + return self.getToken(SqlBaseParser.ROLLUP, 0) + + def ROW(self): + return self.getToken(SqlBaseParser.ROW, 0) + + def ROWS(self): + return self.getToken(SqlBaseParser.ROWS, 0) + + def SCHEMA(self): + return self.getToken(SqlBaseParser.SCHEMA, 0) + + def SECOND(self): + return self.getToken(SqlBaseParser.SECOND, 0) + + def SELECT(self): + return self.getToken(SqlBaseParser.SELECT, 0) + + def SEPARATED(self): + return self.getToken(SqlBaseParser.SEPARATED, 0) + + def SERDE(self): + return self.getToken(SqlBaseParser.SERDE, 0) + + def SERDEPROPERTIES(self): + return self.getToken(SqlBaseParser.SERDEPROPERTIES, 0) + + def SESSION_USER(self): + return self.getToken(SqlBaseParser.SESSION_USER, 0) + + def SET(self): + return self.getToken(SqlBaseParser.SET, 0) + + def SETS(self): + return self.getToken(SqlBaseParser.SETS, 0) + + def SHOW(self): + return self.getToken(SqlBaseParser.SHOW, 0) + + def SKEWED(self): + return self.getToken(SqlBaseParser.SKEWED, 0) + + def SOME(self): + return self.getToken(SqlBaseParser.SOME, 0) + + def SORT(self): + return self.getToken(SqlBaseParser.SORT, 0) + + def SORTED(self): + return self.getToken(SqlBaseParser.SORTED, 0) + + def START(self): + return self.getToken(SqlBaseParser.START, 0) + + def STATISTICS(self): + return self.getToken(SqlBaseParser.STATISTICS, 0) + + def STORED(self): + return self.getToken(SqlBaseParser.STORED, 0) + + def STRATIFY(self): + return self.getToken(SqlBaseParser.STRATIFY, 0) + + def STRUCT(self): + return self.getToken(SqlBaseParser.STRUCT, 0) + + def SUBSTR(self): + return self.getToken(SqlBaseParser.SUBSTR, 0) + + def SUBSTRING(self): + return self.getToken(SqlBaseParser.SUBSTRING, 0) + + def TABLE(self): + return self.getToken(SqlBaseParser.TABLE, 0) + + def TABLES(self): + return self.getToken(SqlBaseParser.TABLES, 0) + + def TABLESAMPLE(self): + return self.getToken(SqlBaseParser.TABLESAMPLE, 0) + + def TBLPROPERTIES(self): + return self.getToken(SqlBaseParser.TBLPROPERTIES, 0) + + def TEMPORARY(self): + return self.getToken(SqlBaseParser.TEMPORARY, 0) + + def TERMINATED(self): + return self.getToken(SqlBaseParser.TERMINATED, 0) + + def THEN(self): + return self.getToken(SqlBaseParser.THEN, 0) + + def TO(self): + return self.getToken(SqlBaseParser.TO, 0) + + def TOUCH(self): + return self.getToken(SqlBaseParser.TOUCH, 0) + + def TRAILING(self): + return self.getToken(SqlBaseParser.TRAILING, 0) + + def TRANSACTION(self): + return self.getToken(SqlBaseParser.TRANSACTION, 0) + + def TRANSACTIONS(self): + return self.getToken(SqlBaseParser.TRANSACTIONS, 0) + + def TRANSFORM(self): + return self.getToken(SqlBaseParser.TRANSFORM, 0) + + def TRIM(self): + return self.getToken(SqlBaseParser.TRIM, 0) + + def TRUE(self): + return self.getToken(SqlBaseParser.TRUE, 0) + + def TRUNCATE(self): + return self.getToken(SqlBaseParser.TRUNCATE, 0) + + def TYPE(self): + return self.getToken(SqlBaseParser.TYPE, 0) + + def UNARCHIVE(self): + return self.getToken(SqlBaseParser.UNARCHIVE, 0) + + def UNBOUNDED(self): + return self.getToken(SqlBaseParser.UNBOUNDED, 0) + + def UNCACHE(self): + return self.getToken(SqlBaseParser.UNCACHE, 0) + + def UNIQUE(self): + return self.getToken(SqlBaseParser.UNIQUE, 0) + + def UNKNOWN(self): + return self.getToken(SqlBaseParser.UNKNOWN, 0) + + def UNLOCK(self): + return self.getToken(SqlBaseParser.UNLOCK, 0) + + def UNSET(self): + return self.getToken(SqlBaseParser.UNSET, 0) + + def UPDATE(self): + return self.getToken(SqlBaseParser.UPDATE, 0) + + def USE(self): + return self.getToken(SqlBaseParser.USE, 0) + + def USER(self): + return self.getToken(SqlBaseParser.USER, 0) + + def VALUES(self): + return self.getToken(SqlBaseParser.VALUES, 0) + + def VIEW(self): + return self.getToken(SqlBaseParser.VIEW, 0) + + def VIEWS(self): + return self.getToken(SqlBaseParser.VIEWS, 0) + + def WHEN(self): + return self.getToken(SqlBaseParser.WHEN, 0) + + def WHERE(self): + return self.getToken(SqlBaseParser.WHERE, 0) + + def WINDOW(self): + return self.getToken(SqlBaseParser.WINDOW, 0) + + def WITH(self): + return self.getToken(SqlBaseParser.WITH, 0) + + def YEAR(self): + return self.getToken(SqlBaseParser.YEAR, 0) + + def getRuleIndex(self): + return SqlBaseParser.RULE_nonReserved + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNonReserved" ): + listener.enterNonReserved(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNonReserved" ): + listener.exitNonReserved(self) + + + + + def nonReserved(self): + + localctx = SqlBaseParser.NonReservedContext(self, self._ctx, self.state) + self.enterRule(localctx, 272, self.RULE_nonReserved) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 3015 + _la = self._input.LA(1) + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << SqlBaseParser.ADD) | (1 << SqlBaseParser.AFTER) | (1 << SqlBaseParser.ALL) | (1 << SqlBaseParser.ALTER) | (1 << SqlBaseParser.ANALYZE) | (1 << SqlBaseParser.AND) | (1 << SqlBaseParser.ANY) | (1 << SqlBaseParser.ARCHIVE) | (1 << SqlBaseParser.ARRAY) | (1 << SqlBaseParser.AS) | (1 << SqlBaseParser.ASC) | (1 << SqlBaseParser.AT) | (1 << SqlBaseParser.AUTHORIZATION) | (1 << SqlBaseParser.BETWEEN) | (1 << SqlBaseParser.BOTH) | (1 << SqlBaseParser.BUCKET) | (1 << SqlBaseParser.BUCKETS) | (1 << SqlBaseParser.BY) | (1 << SqlBaseParser.CACHE) | (1 << SqlBaseParser.CASCADE) | (1 << SqlBaseParser.CASE) | (1 << SqlBaseParser.CAST) | (1 << SqlBaseParser.CHANGE) | (1 << SqlBaseParser.CHECK) | (1 << SqlBaseParser.CLEAR) | (1 << SqlBaseParser.CLUSTER) | (1 << SqlBaseParser.CLUSTERED) | (1 << SqlBaseParser.CODEGEN) | (1 << SqlBaseParser.COLLATE) | (1 << SqlBaseParser.COLLECTION) | (1 << SqlBaseParser.COLUMN) | (1 << SqlBaseParser.COLUMNS) | (1 << SqlBaseParser.COMMENT) | (1 << SqlBaseParser.COMMIT) | (1 << SqlBaseParser.COMPACT) | (1 << SqlBaseParser.COMPACTIONS) | (1 << SqlBaseParser.COMPUTE) | (1 << SqlBaseParser.CONCATENATE) | (1 << SqlBaseParser.CONSTRAINT) | (1 << SqlBaseParser.COST) | (1 << SqlBaseParser.CREATE) | (1 << SqlBaseParser.CUBE) | (1 << SqlBaseParser.CURRENT) | (1 << SqlBaseParser.CURRENT_DATE) | (1 << SqlBaseParser.CURRENT_TIME) | (1 << SqlBaseParser.CURRENT_TIMESTAMP) | (1 << SqlBaseParser.CURRENT_USER) | (1 << SqlBaseParser.DATA) | (1 << SqlBaseParser.DATABASE) | (1 << SqlBaseParser.DATABASES))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (SqlBaseParser.DAY - 64)) | (1 << (SqlBaseParser.DBPROPERTIES - 64)) | (1 << (SqlBaseParser.DEFINED - 64)) | (1 << (SqlBaseParser.DELETE - 64)) | (1 << (SqlBaseParser.DELIMITED - 64)) | (1 << (SqlBaseParser.DESC - 64)) | (1 << (SqlBaseParser.DESCRIBE - 64)) | (1 << (SqlBaseParser.DFS - 64)) | (1 << (SqlBaseParser.DIRECTORIES - 64)) | (1 << (SqlBaseParser.DIRECTORY - 64)) | (1 << (SqlBaseParser.DISTINCT - 64)) | (1 << (SqlBaseParser.DISTRIBUTE - 64)) | (1 << (SqlBaseParser.DROP - 64)) | (1 << (SqlBaseParser.ELSE - 64)) | (1 << (SqlBaseParser.END - 64)) | (1 << (SqlBaseParser.ESCAPE - 64)) | (1 << (SqlBaseParser.ESCAPED - 64)) | (1 << (SqlBaseParser.EXCHANGE - 64)) | (1 << (SqlBaseParser.EXISTS - 64)) | (1 << (SqlBaseParser.EXPLAIN - 64)) | (1 << (SqlBaseParser.EXPORT - 64)) | (1 << (SqlBaseParser.EXTENDED - 64)) | (1 << (SqlBaseParser.EXTERNAL - 64)) | (1 << (SqlBaseParser.EXTRACT - 64)) | (1 << (SqlBaseParser.FALSE - 64)) | (1 << (SqlBaseParser.FETCH - 64)) | (1 << (SqlBaseParser.FIELDS - 64)) | (1 << (SqlBaseParser.FILTER - 64)) | (1 << (SqlBaseParser.FILEFORMAT - 64)) | (1 << (SqlBaseParser.FIRST - 64)) | (1 << (SqlBaseParser.FOLLOWING - 64)) | (1 << (SqlBaseParser.FOR - 64)) | (1 << (SqlBaseParser.FOREIGN - 64)) | (1 << (SqlBaseParser.FORMAT - 64)) | (1 << (SqlBaseParser.FORMATTED - 64)) | (1 << (SqlBaseParser.FROM - 64)) | (1 << (SqlBaseParser.FUNCTION - 64)) | (1 << (SqlBaseParser.FUNCTIONS - 64)) | (1 << (SqlBaseParser.GLOBAL - 64)) | (1 << (SqlBaseParser.GRANT - 64)) | (1 << (SqlBaseParser.GROUP - 64)) | (1 << (SqlBaseParser.GROUPING - 64)) | (1 << (SqlBaseParser.HAVING - 64)) | (1 << (SqlBaseParser.HOUR - 64)) | (1 << (SqlBaseParser.IF - 64)) | (1 << (SqlBaseParser.IGNORE - 64)) | (1 << (SqlBaseParser.IMPORT - 64)) | (1 << (SqlBaseParser.IN - 64)) | (1 << (SqlBaseParser.INDEX - 64)) | (1 << (SqlBaseParser.INDEXES - 64)) | (1 << (SqlBaseParser.INPATH - 64)) | (1 << (SqlBaseParser.INPUTFORMAT - 64)) | (1 << (SqlBaseParser.INSERT - 64)) | (1 << (SqlBaseParser.INTERVAL - 64)) | (1 << (SqlBaseParser.INTO - 64)) | (1 << (SqlBaseParser.IS - 64)) | (1 << (SqlBaseParser.ITEMS - 64)) | (1 << (SqlBaseParser.KEYS - 64)) | (1 << (SqlBaseParser.LAST - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (SqlBaseParser.LATERAL - 128)) | (1 << (SqlBaseParser.LAZY - 128)) | (1 << (SqlBaseParser.LEADING - 128)) | (1 << (SqlBaseParser.LIKE - 128)) | (1 << (SqlBaseParser.LIMIT - 128)) | (1 << (SqlBaseParser.LINES - 128)) | (1 << (SqlBaseParser.LIST - 128)) | (1 << (SqlBaseParser.LOAD - 128)) | (1 << (SqlBaseParser.LOCAL - 128)) | (1 << (SqlBaseParser.LOCATION - 128)) | (1 << (SqlBaseParser.LOCK - 128)) | (1 << (SqlBaseParser.LOCKS - 128)) | (1 << (SqlBaseParser.LOGICAL - 128)) | (1 << (SqlBaseParser.MACRO - 128)) | (1 << (SqlBaseParser.MAP - 128)) | (1 << (SqlBaseParser.MATCHED - 128)) | (1 << (SqlBaseParser.MERGE - 128)) | (1 << (SqlBaseParser.MINUTE - 128)) | (1 << (SqlBaseParser.MONTH - 128)) | (1 << (SqlBaseParser.MSCK - 128)) | (1 << (SqlBaseParser.NAMESPACE - 128)) | (1 << (SqlBaseParser.NAMESPACES - 128)) | (1 << (SqlBaseParser.NO - 128)) | (1 << (SqlBaseParser.NOT - 128)) | (1 << (SqlBaseParser.NULL - 128)) | (1 << (SqlBaseParser.NULLS - 128)) | (1 << (SqlBaseParser.OF - 128)) | (1 << (SqlBaseParser.ONLY - 128)) | (1 << (SqlBaseParser.OPTION - 128)) | (1 << (SqlBaseParser.OPTIONS - 128)) | (1 << (SqlBaseParser.OR - 128)) | (1 << (SqlBaseParser.ORDER - 128)) | (1 << (SqlBaseParser.OUT - 128)) | (1 << (SqlBaseParser.OUTER - 128)) | (1 << (SqlBaseParser.OUTPUTFORMAT - 128)) | (1 << (SqlBaseParser.OVER - 128)) | (1 << (SqlBaseParser.OVERLAPS - 128)) | (1 << (SqlBaseParser.OVERLAY - 128)) | (1 << (SqlBaseParser.OVERWRITE - 128)) | (1 << (SqlBaseParser.PARTITION - 128)) | (1 << (SqlBaseParser.PARTITIONED - 128)) | (1 << (SqlBaseParser.PARTITIONS - 128)) | (1 << (SqlBaseParser.PERCENTLIT - 128)) | (1 << (SqlBaseParser.PIVOT - 128)) | (1 << (SqlBaseParser.PLACING - 128)) | (1 << (SqlBaseParser.POSITION - 128)) | (1 << (SqlBaseParser.PRECEDING - 128)) | (1 << (SqlBaseParser.PRIMARY - 128)) | (1 << (SqlBaseParser.PRINCIPALS - 128)) | (1 << (SqlBaseParser.PROPERTIES - 128)) | (1 << (SqlBaseParser.PURGE - 128)) | (1 << (SqlBaseParser.QUERY - 128)) | (1 << (SqlBaseParser.RANGE - 128)) | (1 << (SqlBaseParser.RECORDREADER - 128)) | (1 << (SqlBaseParser.RECORDWRITER - 128)) | (1 << (SqlBaseParser.RECOVER - 128)) | (1 << (SqlBaseParser.REDUCE - 128)) | (1 << (SqlBaseParser.REFERENCES - 128)) | (1 << (SqlBaseParser.REFRESH - 128)) | (1 << (SqlBaseParser.RENAME - 128)) | (1 << (SqlBaseParser.REPAIR - 128)))) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & ((1 << (SqlBaseParser.REPLACE - 192)) | (1 << (SqlBaseParser.RESET - 192)) | (1 << (SqlBaseParser.RESTRICT - 192)) | (1 << (SqlBaseParser.REVOKE - 192)) | (1 << (SqlBaseParser.RLIKE - 192)) | (1 << (SqlBaseParser.ROLE - 192)) | (1 << (SqlBaseParser.ROLES - 192)) | (1 << (SqlBaseParser.ROLLBACK - 192)) | (1 << (SqlBaseParser.ROLLUP - 192)) | (1 << (SqlBaseParser.ROW - 192)) | (1 << (SqlBaseParser.ROWS - 192)) | (1 << (SqlBaseParser.SCHEMA - 192)) | (1 << (SqlBaseParser.SECOND - 192)) | (1 << (SqlBaseParser.SELECT - 192)) | (1 << (SqlBaseParser.SEPARATED - 192)) | (1 << (SqlBaseParser.SERDE - 192)) | (1 << (SqlBaseParser.SERDEPROPERTIES - 192)) | (1 << (SqlBaseParser.SESSION_USER - 192)) | (1 << (SqlBaseParser.SET - 192)) | (1 << (SqlBaseParser.SETS - 192)) | (1 << (SqlBaseParser.SHOW - 192)) | (1 << (SqlBaseParser.SKEWED - 192)) | (1 << (SqlBaseParser.SOME - 192)) | (1 << (SqlBaseParser.SORT - 192)) | (1 << (SqlBaseParser.SORTED - 192)) | (1 << (SqlBaseParser.START - 192)) | (1 << (SqlBaseParser.STATISTICS - 192)) | (1 << (SqlBaseParser.STORED - 192)) | (1 << (SqlBaseParser.STRATIFY - 192)) | (1 << (SqlBaseParser.STRUCT - 192)) | (1 << (SqlBaseParser.SUBSTR - 192)) | (1 << (SqlBaseParser.SUBSTRING - 192)) | (1 << (SqlBaseParser.TABLE - 192)) | (1 << (SqlBaseParser.TABLES - 192)) | (1 << (SqlBaseParser.TABLESAMPLE - 192)) | (1 << (SqlBaseParser.TBLPROPERTIES - 192)) | (1 << (SqlBaseParser.TEMPORARY - 192)) | (1 << (SqlBaseParser.TERMINATED - 192)) | (1 << (SqlBaseParser.THEN - 192)) | (1 << (SqlBaseParser.TO - 192)) | (1 << (SqlBaseParser.TOUCH - 192)) | (1 << (SqlBaseParser.TRAILING - 192)) | (1 << (SqlBaseParser.TRANSACTION - 192)) | (1 << (SqlBaseParser.TRANSACTIONS - 192)) | (1 << (SqlBaseParser.TRANSFORM - 192)) | (1 << (SqlBaseParser.TRIM - 192)) | (1 << (SqlBaseParser.TRUE - 192)) | (1 << (SqlBaseParser.TRUNCATE - 192)) | (1 << (SqlBaseParser.TYPE - 192)) | (1 << (SqlBaseParser.UNARCHIVE - 192)) | (1 << (SqlBaseParser.UNBOUNDED - 192)) | (1 << (SqlBaseParser.UNCACHE - 192)) | (1 << (SqlBaseParser.UNIQUE - 192)) | (1 << (SqlBaseParser.UNKNOWN - 192)) | (1 << (SqlBaseParser.UNLOCK - 192)) | (1 << (SqlBaseParser.UNSET - 192)) | (1 << (SqlBaseParser.UPDATE - 192)) | (1 << (SqlBaseParser.USE - 192)) | (1 << (SqlBaseParser.USER - 192)))) != 0) or ((((_la - 256)) & ~0x3f) == 0 and ((1 << (_la - 256)) & ((1 << (SqlBaseParser.VALUES - 256)) | (1 << (SqlBaseParser.VIEW - 256)) | (1 << (SqlBaseParser.VIEWS - 256)) | (1 << (SqlBaseParser.WHEN - 256)) | (1 << (SqlBaseParser.WHERE - 256)) | (1 << (SqlBaseParser.WINDOW - 256)) | (1 << (SqlBaseParser.WITH - 256)) | (1 << (SqlBaseParser.YEAR - 256)) | (1 << (SqlBaseParser.DIV - 256)))) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates == None: + self._predicates = dict() + self._predicates[7] = self.statement_sempred + self._predicates[40] = self.queryTerm_sempred + self._predicates[94] = self.booleanExpression_sempred + self._predicates[96] = self.valueExpression_sempred + self._predicates[97] = self.primaryExpression_sempred + self._predicates[129] = self.identifier_sempred + self._predicates[130] = self.strictIdentifier_sempred + self._predicates[132] = self.number_sempred + pred = self._predicates.get(ruleIndex, None) + if pred is None: + raise Exception("No predicate with index:" + str(ruleIndex)) + else: + return pred(localctx, predIndex) + + def statement_sempred(self, localctx:StatementContext, predIndex:int): + if predIndex == 0: + return not self.legacy_create_hive_table_by_default_enabled + + + if predIndex == 1: + return self.legacy_create_hive_table_by_default_enabled + + + def queryTerm_sempred(self, localctx:QueryTermContext, predIndex:int): + if predIndex == 2: + return self.precpred(self._ctx, 3) + + + if predIndex == 3: + return self.legacy_setops_precedence_enbled + + + if predIndex == 4: + return self.precpred(self._ctx, 2) + + + if predIndex == 5: + return not self.legacy_setops_precedence_enbled + + + if predIndex == 6: + return self.precpred(self._ctx, 1) + + + if predIndex == 7: + return not self.legacy_setops_precedence_enbled + + + def booleanExpression_sempred(self, localctx:BooleanExpressionContext, predIndex:int): + if predIndex == 8: + return self.precpred(self._ctx, 2) + + + if predIndex == 9: + return self.precpred(self._ctx, 1) + + + def valueExpression_sempred(self, localctx:ValueExpressionContext, predIndex:int): + if predIndex == 10: + return self.precpred(self._ctx, 6) + + + if predIndex == 11: + return self.precpred(self._ctx, 5) + + + if predIndex == 12: + return self.precpred(self._ctx, 4) + + + if predIndex == 13: + return self.precpred(self._ctx, 3) + + + if predIndex == 14: + return self.precpred(self._ctx, 2) + + + if predIndex == 15: + return self.precpred(self._ctx, 1) + + + def primaryExpression_sempred(self, localctx:PrimaryExpressionContext, predIndex:int): + if predIndex == 16: + return self.precpred(self._ctx, 8) + + + if predIndex == 17: + return self.precpred(self._ctx, 6) + + + def identifier_sempred(self, localctx:IdentifierContext, predIndex:int): + if predIndex == 18: + return not self.SQL_standard_keyword_behavior + + + def strictIdentifier_sempred(self, localctx:StrictIdentifierContext, predIndex:int): + if predIndex == 19: + return self.SQL_standard_keyword_behavior + + + if predIndex == 20: + return not self.SQL_standard_keyword_behavior + + + def number_sempred(self, localctx:NumberContext, predIndex:int): + if predIndex == 21: + return not self.legacy_exponent_literal_as_decimal_enabled + + + if predIndex == 22: + return not self.legacy_exponent_literal_as_decimal_enabled + + + if predIndex == 23: + return self.legacy_exponent_literal_as_decimal_enabled + + + + +