// Generated from dt-sql-parser/src/grammar/hive/HiveSqlParser.g4 by ANTLR 4.13.1

// @ts-nocheck

import * as antlr from "antlr4ng";
import { Token } from "antlr4ng";

import { HiveSqlParserListener } from "./HiveSqlParserListener.js";
import { HiveSqlParserVisitor } from "./HiveSqlParserVisitor.js";

// for running tests with parameters, TODO: discuss strategy for typed parameters in CI
// eslint-disable-next-line no-unused-vars
type int = number;


import { SQLParserBase } from '../SQLParserBase';


export class HiveSqlParser extends SQLParserBase {
    public static readonly KW_ABORT = 1;
    public static readonly KW_ACTIVATE = 2;
    public static readonly KW_ACTIVE = 3;
    public static readonly KW_ADD = 4;
    public static readonly KW_ADMIN = 5;
    public static readonly KW_AFTER = 6;
    public static readonly KW_ALL = 7;
    public static readonly KW_ALLOC_FRACTION = 8;
    public static readonly KW_ALTER = 9;
    public static readonly KW_ANALYZE = 10;
    public static readonly KW_AND = 11;
    public static readonly KW_ANTI = 12;
    public static readonly KW_ANY = 13;
    public static readonly KW_APPLICATION = 14;
    public static readonly KW_ARCHIVE = 15;
    public static readonly KW_ARRAY = 16;
    public static readonly KW_AS = 17;
    public static readonly KW_ASC = 18;
    public static readonly KW_AST = 19;
    public static readonly KW_AT = 20;
    public static readonly KW_AUTHORIZATION = 21;
    public static readonly KW_AUTOCOMMIT = 22;
    public static readonly KW_BATCH = 23;
    public static readonly KW_BEFORE = 24;
    public static readonly KW_BETWEEN = 25;
    public static readonly KW_BIGINT = 26;
    public static readonly KW_BINARY = 27;
    public static readonly KW_BOOLEAN = 28;
    public static readonly KW_BOTH = 29;
    public static readonly KW_BUCKET = 30;
    public static readonly KW_BUCKETS = 31;
    public static readonly KW_BY = 32;
    public static readonly KW_CACHE = 33;
    public static readonly KW_CASCADE = 34;
    public static readonly KW_CASE = 35;
    public static readonly KW_CAST = 36;
    public static readonly KW_CBO = 37;
    public static readonly KW_CHANGE = 38;
    public static readonly KW_CHAR = 39;
    public static readonly KW_CHECK = 40;
    public static readonly KW_CLUSTER = 41;
    public static readonly KW_CLUSTERED = 42;
    public static readonly KW_CLUSTERSTATUS = 43;
    public static readonly KW_COLLECTION = 44;
    public static readonly KW_COLUMN = 45;
    public static readonly KW_COLUMNS = 46;
    public static readonly KW_COMMENT = 47;
    public static readonly KW_COMMIT = 48;
    public static readonly KW_COMPACT = 49;
    public static readonly KW_COMPACTIONS = 50;
    public static readonly KW_COMPACT_ID = 51;
    public static readonly KW_COMPUTE = 52;
    public static readonly KW_CONCATENATE = 53;
    public static readonly KW_CONF = 54;
    public static readonly KW_CONSTRAINT = 55;
    public static readonly KW_CONTINUE = 56;
    public static readonly KW_COST = 57;
    public static readonly KW_CREATE = 58;
    public static readonly KW_CRON = 59;
    public static readonly KW_CROSS = 60;
    public static readonly KW_CUBE = 61;
    public static readonly KW_CURRENT = 62;
    public static readonly KW_CURRENT_DATE = 63;
    public static readonly KW_CURRENT_TIMESTAMP = 64;
    public static readonly KW_CURSOR = 65;
    public static readonly KW_DATA = 66;
    public static readonly KW_DATABASE = 67;
    public static readonly KW_DATABASES = 68;
    public static readonly KW_DATACONNECTOR = 69;
    public static readonly KW_DATACONNECTORS = 70;
    public static readonly KW_DATE = 71;
    public static readonly KW_DATETIME = 72;
    public static readonly KW_DAY = 73;
    public static readonly KW_DAYS = 74;
    public static readonly KW_DAYOFWEEK = 75;
    public static readonly KW_DBPROPERTIES = 76;
    public static readonly KW_DCPROPERTIES = 77;
    public static readonly KW_DDL = 78;
    public static readonly KW_DEBUG = 79;
    public static readonly KW_DEC = 80;
    public static readonly KW_DECIMAL = 81;
    public static readonly KW_NUMERIC = 82;
    public static readonly KW_DEFAULT = 83;
    public static readonly KW_DEFERRED = 84;
    public static readonly KW_DEFINED = 85;
    public static readonly KW_DELETE = 86;
    public static readonly KW_DELIMITED = 87;
    public static readonly KW_DEPENDENCY = 88;
    public static readonly KW_DESC = 89;
    public static readonly KW_DESCRIBE = 90;
    public static readonly KW_DETAIL = 91;
    public static readonly KW_DIRECTORIES = 92;
    public static readonly KW_DIRECTORY = 93;
    public static readonly KW_DISABLE = 94;
    public static readonly KW_DISABLED = 95;
    public static readonly KW_DISTINCT = 96;
    public static readonly KW_DISTRIBUTE = 97;
    public static readonly KW_DISTRIBUTED = 98;
    public static readonly KW_DO = 99;
    public static readonly KW_DOUBLE = 100;
    public static readonly KW_DROP = 101;
    public static readonly KW_RECOVER = 102;
    public static readonly KW_DUMP = 103;
    public static readonly KW_ELEM_TYPE = 104;
    public static readonly KW_ELSE = 105;
    public static readonly KW_ENABLE = 106;
    public static readonly KW_ENABLED = 107;
    public static readonly KW_END = 108;
    public static readonly KW_ENFORCED = 109;
    public static readonly KW_ESCAPED = 110;
    public static readonly KW_EVERY = 111;
    public static readonly KW_EXCEPT = 112;
    public static readonly KW_EXCHANGE = 113;
    public static readonly KW_EXCLUSIVE = 114;
    public static readonly KW_EXECUTE = 115;
    public static readonly KW_EXECUTED = 116;
    public static readonly KW_EXISTS = 117;
    public static readonly KW_EXPIRE_SNAPSHOTS = 118;
    public static readonly KW_EXPLAIN = 119;
    public static readonly KW_EXPORT = 120;
    public static readonly KW_EXPRESSION = 121;
    public static readonly KW_EXTENDED = 122;
    public static readonly KW_EXTERNAL = 123;
    public static readonly KW_EXTRACT = 124;
    public static readonly KW_FALSE = 125;
    public static readonly KW_FETCH = 126;
    public static readonly KW_FIELDS = 127;
    public static readonly KW_FILE = 128;
    public static readonly KW_FILEFORMAT = 129;
    public static readonly KW_FIRST = 130;
    public static readonly KW_FLOAT = 131;
    public static readonly KW_FLOOR = 132;
    public static readonly KW_FOLLOWING = 133;
    public static readonly KW_FOR = 134;
    public static readonly KW_FORCE = 135;
    public static readonly KW_FOREIGN = 136;
    public static readonly KW_FORMAT = 137;
    public static readonly KW_FORMATTED = 138;
    public static readonly KW_FROM = 139;
    public static readonly KW_FULL = 140;
    public static readonly KW_FUNCTION = 141;
    public static readonly KW_FUNCTIONS = 142;
    public static readonly KW_GRANT = 143;
    public static readonly KW_GROUP = 144;
    public static readonly KW_GROUPING = 145;
    public static readonly KW_HAVING = 146;
    public static readonly KW_HOLD_DDLTIME = 147;
    public static readonly KW_HOUR = 148;
    public static readonly KW_HOURS = 149;
    public static readonly KW_IDXPROPERTIES = 150;
    public static readonly KW_IF = 151;
    public static readonly KW_IGNORE = 152;
    public static readonly KW_IMPORT = 153;
    public static readonly KW_IN = 154;
    public static readonly KW_INDEX = 155;
    public static readonly KW_INDEXES = 156;
    public static readonly KW_INNER = 157;
    public static readonly KW_INPATH = 158;
    public static readonly KW_INPUTDRIVER = 159;
    public static readonly KW_INPUTFORMAT = 160;
    public static readonly KW_INSERT = 161;
    public static readonly KW_INT = 162;
    public static readonly KW_INTEGER = 163;
    public static readonly KW_INTERSECT = 164;
    public static readonly KW_INTERVAL = 165;
    public static readonly KW_INTO = 166;
    public static readonly KW_IS = 167;
    public static readonly KW_ISOLATION = 168;
    public static readonly KW_ITEMS = 169;
    public static readonly KW_JAR = 170;
    public static readonly KW_JOIN = 171;
    public static readonly KW_JOINCOST = 172;
    public static readonly KW_KEY = 173;
    public static readonly KW_KEYS = 174;
    public static readonly KW_KEY_TYPE = 175;
    public static readonly KW_KILL = 176;
    public static readonly KW_LAST = 177;
    public static readonly KW_LATERAL = 178;
    public static readonly KW_LEADING = 179;
    public static readonly KW_LEFT = 180;
    public static readonly KW_LESS = 181;
    public static readonly KW_LEVEL = 182;
    public static readonly KW_LIFECYCLE = 183;
    public static readonly KW_LIKE = 184;
    public static readonly KW_LIMIT = 185;
    public static readonly KW_LINES = 186;
    public static readonly KW_LOAD = 187;
    public static readonly KW_LOCAL = 188;
    public static readonly KW_LOCATION = 189;
    public static readonly KW_LOCK = 190;
    public static readonly KW_LOCKS = 191;
    public static readonly KW_LOGICAL = 192;
    public static readonly KW_LONG = 193;
    public static readonly KW_MACRO = 194;
    public static readonly KW_MANAGED = 195;
    public static readonly KW_MANAGEDLOCATION = 196;
    public static readonly KW_MANAGEMENT = 197;
    public static readonly KW_MAP = 198;
    public static readonly KW_MAPJOIN = 199;
    public static readonly KW_MAPPING = 200;
    public static readonly KW_MATCHED = 201;
    public static readonly KW_MATERIALIZED = 202;
    public static readonly KW_MERGE = 203;
    public static readonly KW_METADATA = 204;
    public static readonly KW_MINUS = 205;
    public static readonly KW_MINUTE = 206;
    public static readonly KW_MINUTES = 207;
    public static readonly KW_MONTH = 208;
    public static readonly KW_MONTHS = 209;
    public static readonly KW_MORE = 210;
    public static readonly KW_MOVE = 211;
    public static readonly KW_MSCK = 212;
    public static readonly KW_NONE = 213;
    public static readonly KW_NORELY = 214;
    public static readonly KW_NOSCAN = 215;
    public static readonly KW_NOT = 216;
    public static readonly KW_NOVALIDATE = 217;
    public static readonly KW_NO_DROP = 218;
    public static readonly KW_NULL = 219;
    public static readonly KW_NULLS = 220;
    public static readonly KW_OF = 221;
    public static readonly KW_OFFLINE = 222;
    public static readonly KW_OFFSET = 223;
    public static readonly KW_ON = 224;
    public static readonly KW_ONLY = 225;
    public static readonly KW_OPERATOR = 226;
    public static readonly KW_OPTION = 227;
    public static readonly KW_OR = 228;
    public static readonly KW_ORDER = 229;
    public static readonly KW_OUT = 230;
    public static readonly KW_OUTER = 231;
    public static readonly KW_OUTPUTDRIVER = 232;
    public static readonly KW_OUTPUTFORMAT = 233;
    public static readonly KW_OVER = 234;
    public static readonly KW_OVERWRITE = 235;
    public static readonly KW_OWNER = 236;
    public static readonly KW_PARTITION = 237;
    public static readonly KW_PARTITIONED = 238;
    public static readonly KW_PARTITIONS = 239;
    public static readonly KW_PATH = 240;
    public static readonly KW_PERCENT = 241;
    public static readonly KW_PKFK_JOIN = 242;
    public static readonly KW_PLAN = 243;
    public static readonly KW_PLANS = 244;
    public static readonly KW_PLUS = 245;
    public static readonly KW_POOL = 246;
    public static readonly KW_PRECEDING = 247;
    public static readonly KW_PRECISION = 248;
    public static readonly KW_PREPARE = 249;
    public static readonly KW_PRESERVE = 250;
    public static readonly KW_PRIMARY = 251;
    public static readonly KW_PRINCIPALS = 252;
    public static readonly KW_PROCEDURE = 253;
    public static readonly KW_PROTECTION = 254;
    public static readonly KW_PURGE = 255;
    public static readonly KW_QUALIFY = 256;
    public static readonly KW_QUARTER = 257;
    public static readonly KW_QUERY = 258;
    public static readonly KW_QUERY_PARALLELISM = 259;
    public static readonly KW_RANGE = 260;
    public static readonly KW_READ = 261;
    public static readonly KW_READONLY = 262;
    public static readonly KW_READS = 263;
    public static readonly KW_REAL = 264;
    public static readonly KW_REBUILD = 265;
    public static readonly KW_RECORDREADER = 266;
    public static readonly KW_RECORDWRITER = 267;
    public static readonly KW_REDUCE = 268;
    public static readonly KW_REFERENCES = 269;
    public static readonly KW_REGEXP = 270;
    public static readonly KW_RELOAD = 271;
    public static readonly KW_RELY = 272;
    public static readonly KW_REMOTE = 273;
    public static readonly KW_RENAME = 274;
    public static readonly KW_REOPTIMIZATION = 275;
    public static readonly KW_REPAIR = 276;
    public static readonly KW_REPL = 277;
    public static readonly KW_REPLACE = 278;
    public static readonly KW_REPLICATION = 279;
    public static readonly KW_RESOURCE = 280;
    public static readonly KW_RESPECT = 281;
    public static readonly KW_RESTRICT = 282;
    public static readonly KW_REVOKE = 283;
    public static readonly KW_REWRITE = 284;
    public static readonly KW_RIGHT = 285;
    public static readonly KW_RLIKE = 286;
    public static readonly KW_ROLE = 287;
    public static readonly KW_ROLES = 288;
    public static readonly KW_ROLLBACK = 289;
    public static readonly KW_ROLLUP = 290;
    public static readonly KW_ROW = 291;
    public static readonly KW_ROWS = 292;
    public static readonly KW_SCHEDULED = 293;
    public static readonly KW_SCHEDULING_POLICY = 294;
    public static readonly KW_SCHEMA = 295;
    public static readonly KW_SCHEMAS = 296;
    public static readonly KW_SECOND = 297;
    public static readonly KW_SECONDS = 298;
    public static readonly KW_SELECT = 299;
    public static readonly KW_SEMI = 300;
    public static readonly KW_SERDE = 301;
    public static readonly KW_SERDEPROPERTIES = 302;
    public static readonly KW_SERVER = 303;
    public static readonly KW_SET = 304;
    public static readonly KW_SETS = 305;
    public static readonly KW_SET_CURRENT_SNAPSHOT = 306;
    public static readonly KW_SHARED = 307;
    public static readonly KW_SHOW = 308;
    public static readonly KW_SHOW_DATABASE = 309;
    public static readonly KW_SKEWED = 310;
    public static readonly KW_SMALLINT = 311;
    public static readonly KW_SNAPSHOT = 312;
    public static readonly KW_SOME = 313;
    public static readonly KW_SORT = 314;
    public static readonly KW_SORTED = 315;
    public static readonly KW_SPEC = 316;
    public static readonly KW_SSL = 317;
    public static readonly KW_START = 318;
    public static readonly KW_STATISTICS = 319;
    public static readonly KW_STATUS = 320;
    public static readonly KW_STORED = 321;
    public static readonly KW_STREAMTABLE = 322;
    public static readonly KW_STRING = 323;
    public static readonly KW_STRUCT = 324;
    public static readonly KW_SUMMARY = 325;
    public static readonly KW_SYNC = 326;
    public static readonly KW_SYSTEM_TIME = 327;
    public static readonly KW_SYSTEM_VERSION = 328;
    public static readonly KW_TABLE = 329;
    public static readonly KW_TABLES = 330;
    public static readonly KW_TABLESAMPLE = 331;
    public static readonly KW_TBLPROPERTIES = 332;
    public static readonly KW_TEMPORARY = 333;
    public static readonly KW_TERMINATED = 334;
    public static readonly KW_THEN = 335;
    public static readonly KW_TIME = 336;
    public static readonly KW_TIMESTAMP = 337;
    public static readonly KW_TIMESTAMPLOCALTZ = 338;
    public static readonly KW_TIMESTAMPTZ = 339;
    public static readonly KW_TINYINT = 340;
    public static readonly KW_TO = 341;
    public static readonly KW_TOUCH = 342;
    public static readonly KW_TRAILING = 343;
    public static readonly KW_TRANSACTION = 344;
    public static readonly KW_TRANSACTIONAL = 345;
    public static readonly KW_TRANSACTIONS = 346;
    public static readonly KW_TRANSFORM = 347;
    public static readonly KW_TRIGGER = 348;
    public static readonly KW_TRIM = 349;
    public static readonly KW_TRUE = 350;
    public static readonly KW_TRUNCATE = 351;
    public static readonly KW_TYPE = 352;
    public static readonly KW_UNARCHIVE = 353;
    public static readonly KW_UNBOUNDED = 354;
    public static readonly KW_UNDO = 355;
    public static readonly KW_UNION = 356;
    public static readonly KW_UNIONTYPE = 357;
    public static readonly KW_UNIQUE = 358;
    public static readonly KW_UNIQUEJOIN = 359;
    public static readonly KW_UNKNOWN = 360;
    public static readonly KW_UNLOCK = 361;
    public static readonly KW_UNMANAGED = 362;
    public static readonly KW_UNSET = 363;
    public static readonly KW_UNSIGNED = 364;
    public static readonly KW_UPDATE = 365;
    public static readonly KW_URI = 366;
    public static readonly KW_URL = 367;
    public static readonly KW_USE = 368;
    public static readonly KW_USER = 369;
    public static readonly KW_USING = 370;
    public static readonly KW_UTC = 371;
    public static readonly KW_UTCTIMESTAMP = 372;
    public static readonly KW_VALIDATE = 373;
    public static readonly KW_VALUES = 374;
    public static readonly KW_VALUE_TYPE = 375;
    public static readonly KW_VARCHAR = 376;
    public static readonly KW_VECTORIZATION = 377;
    public static readonly KW_VIEW = 378;
    public static readonly KW_VIEWS = 379;
    public static readonly KW_WAIT = 380;
    public static readonly KW_WEEK = 381;
    public static readonly KW_WEEKS = 382;
    public static readonly KW_WHEN = 383;
    public static readonly KW_WHERE = 384;
    public static readonly KW_WHILE = 385;
    public static readonly KW_WINDOW = 386;
    public static readonly KW_WITH = 387;
    public static readonly KW_WITHIN = 388;
    public static readonly KW_WORK = 389;
    public static readonly KW_WORKLOAD = 390;
    public static readonly KW_WRITE = 391;
    public static readonly KW_YEAR = 392;
    public static readonly KW_YEARS = 393;
    public static readonly KW_ZONE = 394;
    public static readonly DOT = 395;
    public static readonly COLON = 396;
    public static readonly COMMA = 397;
    public static readonly SEMICOLON = 398;
    public static readonly LPAREN = 399;
    public static readonly RPAREN = 400;
    public static readonly LSQUARE = 401;
    public static readonly RSQUARE = 402;
    public static readonly LCURLY = 403;
    public static readonly RCURLY = 404;
    public static readonly EQUAL = 405;
    public static readonly EQUAL_NS = 406;
    public static readonly NOTEQUAL = 407;
    public static readonly LESSTHANOREQUALTO = 408;
    public static readonly LESSTHAN = 409;
    public static readonly GREATERTHANOREQUALTO = 410;
    public static readonly GREATERTHAN = 411;
    public static readonly DIVIDE = 412;
    public static readonly PLUS = 413;
    public static readonly MINUS = 414;
    public static readonly STAR = 415;
    public static readonly MOD = 416;
    public static readonly DIV = 417;
    public static readonly BITWISENOT = 418;
    public static readonly AMPERSAND = 419;
    public static readonly TILDE = 420;
    public static readonly BITWISEOR = 421;
    public static readonly CONCATENATE = 422;
    public static readonly BITWISEXOR = 423;
    public static readonly QUESTION = 424;
    public static readonly DOLLAR = 425;
    public static readonly StringLiteral = 426;
    public static readonly CharSetLiteral = 427;
    public static readonly IntegralLiteral = 428;
    public static readonly NumberLiteral = 429;
    public static readonly ByteLengthLiteral = 430;
    public static readonly Number = 431;
    public static readonly Identifier = 432;
    public static readonly CharSetName = 433;
    public static readonly WHITE_SPACE = 434;
    public static readonly LINE_COMMENT = 435;
    public static readonly QUERY_HINT = 436;
    public static readonly SHOW_HINT = 437;
    public static readonly HIDDEN_HINT = 438;
    public static readonly RULE_program = 0;
    public static readonly RULE_statement = 1;
    public static readonly RULE_explainStatement = 2;
    public static readonly RULE_explainOption = 3;
    public static readonly RULE_vectorizationOnly = 4;
    public static readonly RULE_vectorizatonDetail = 5;
    public static readonly RULE_execStatement = 6;
    public static readonly RULE_loadStatement = 7;
    public static readonly RULE_dropPartitionsIgnoreClause = 8;
    public static readonly RULE_replicationClause = 9;
    public static readonly RULE_exportStatement = 10;
    public static readonly RULE_importStatement = 11;
    public static readonly RULE_replDumpStatement = 12;
    public static readonly RULE_replDbPolicy = 13;
    public static readonly RULE_replLoadStatement = 14;
    public static readonly RULE_replConfigs = 15;
    public static readonly RULE_replConfigsList = 16;
    public static readonly RULE_replTableLevelPolicy = 17;
    public static readonly RULE_replStatusStatement = 18;
    public static readonly RULE_ddlStatement = 19;
    public static readonly RULE_ifExists = 20;
    public static readonly RULE_restrictOrCascade = 21;
    public static readonly RULE_ifNotExists = 22;
    public static readonly RULE_force = 23;
    public static readonly RULE_rewriteEnabled = 24;
    public static readonly RULE_rewriteDisabled = 25;
    public static readonly RULE_storedAsDirs = 26;
    public static readonly RULE_orReplace = 27;
    public static readonly RULE_createDatabaseStatement = 28;
    public static readonly RULE_dbLocation = 29;
    public static readonly RULE_dbManagedLocation = 30;
    public static readonly RULE_dbProperties = 31;
    public static readonly RULE_dbPropertiesList = 32;
    public static readonly RULE_dbConnectorName = 33;
    public static readonly RULE_switchDatabaseStatement = 34;
    public static readonly RULE_dropDatabaseStatement = 35;
    public static readonly RULE_databaseComment = 36;
    public static readonly RULE_truncateTableStatement = 37;
    public static readonly RULE_dropTableStatement = 38;
    public static readonly RULE_inputFileFormat = 39;
    public static readonly RULE_tabTypeExpr = 40;
    public static readonly RULE_partTypeExpr = 41;
    public static readonly RULE_tabPartColTypeExpr = 42;
    public static readonly RULE_descStatement = 43;
    public static readonly RULE_analyzeStatement = 44;
    public static readonly RULE_from_in = 45;
    public static readonly RULE_db_schema = 46;
    public static readonly RULE_showStatement = 47;
    public static readonly RULE_showTablesFilterExpr = 48;
    public static readonly RULE_lockStatement = 49;
    public static readonly RULE_lockDatabase = 50;
    public static readonly RULE_lockMode = 51;
    public static readonly RULE_unlockStatement = 52;
    public static readonly RULE_unlockDatabase = 53;
    public static readonly RULE_createRoleStatement = 54;
    public static readonly RULE_dropRoleStatement = 55;
    public static readonly RULE_grantPrivileges = 56;
    public static readonly RULE_revokePrivileges = 57;
    public static readonly RULE_grantRole = 58;
    public static readonly RULE_revokeRole = 59;
    public static readonly RULE_showRoleGrants = 60;
    public static readonly RULE_showRoles = 61;
    public static readonly RULE_showCurrentRole = 62;
    public static readonly RULE_setRole = 63;
    public static readonly RULE_showGrants = 64;
    public static readonly RULE_showRolePrincipals = 65;
    public static readonly RULE_privilegeIncludeColObject = 66;
    public static readonly RULE_privilegeObject = 67;
    public static readonly RULE_privObject = 68;
    public static readonly RULE_privObjectCols = 69;
    public static readonly RULE_privilegeList = 70;
    public static readonly RULE_privlegeDef = 71;
    public static readonly RULE_privilegeType = 72;
    public static readonly RULE_principalSpecification = 73;
    public static readonly RULE_principalName = 74;
    public static readonly RULE_principalAlterName = 75;
    public static readonly RULE_withGrantOption = 76;
    public static readonly RULE_grantOptionFor = 77;
    public static readonly RULE_adminOptionFor = 78;
    public static readonly RULE_withAdminOption = 79;
    public static readonly RULE_metastoreCheck = 80;
    public static readonly RULE_resourceList = 81;
    public static readonly RULE_resource = 82;
    public static readonly RULE_resourceType = 83;
    public static readonly RULE_createFunctionStatement = 84;
    public static readonly RULE_dropFunctionStatement = 85;
    public static readonly RULE_reloadFunctionsStatement = 86;
    public static readonly RULE_createMacroStatement = 87;
    public static readonly RULE_dropMacroStatement = 88;
    public static readonly RULE_createIndexStatement = 89;
    public static readonly RULE_dropIndexStatement = 90;
    public static readonly RULE_createViewStatement = 91;
    public static readonly RULE_viewPartition = 92;
    public static readonly RULE_viewOrganization = 93;
    public static readonly RULE_viewClusterSpec = 94;
    public static readonly RULE_viewComplexSpec = 95;
    public static readonly RULE_viewDistSpec = 96;
    public static readonly RULE_viewSortSpec = 97;
    public static readonly RULE_dropViewStatement = 98;
    public static readonly RULE_createMaterializedViewStatement = 99;
    public static readonly RULE_dropMaterializedViewStatement = 100;
    public static readonly RULE_createScheduledQueryStatement = 101;
    public static readonly RULE_dropScheduledQueryStatement = 102;
    public static readonly RULE_alterScheduledQueryStatement = 103;
    public static readonly RULE_alterScheduledQueryChange = 104;
    public static readonly RULE_scheduleSpec = 105;
    public static readonly RULE_executedAsSpec = 106;
    public static readonly RULE_definedAsSpec = 107;
    public static readonly RULE_showStmtIdentifier = 108;
    public static readonly RULE_tableComment = 109;
    public static readonly RULE_tableLifecycle = 110;
    public static readonly RULE_createTablePartitionSpec = 111;
    public static readonly RULE_createTablePartitionColumnTypeSpec = 112;
    public static readonly RULE_createTablePartitionColumnSpec = 113;
    public static readonly RULE_partitionTransformSpec = 114;
    public static readonly RULE_columnNameTransformConstraint = 115;
    public static readonly RULE_partitionTransformType = 116;
    public static readonly RULE_tableBuckets = 117;
    public static readonly RULE_tableImplBuckets = 118;
    public static readonly RULE_tableSkewed = 119;
    public static readonly RULE_rowFormat = 120;
    public static readonly RULE_recordReader = 121;
    public static readonly RULE_recordWriter = 122;
    public static readonly RULE_rowFormatSerde = 123;
    public static readonly RULE_rowFormatDelimited = 124;
    public static readonly RULE_tableRowFormat = 125;
    public static readonly RULE_tablePropertiesPrefixed = 126;
    public static readonly RULE_tableProperties = 127;
    public static readonly RULE_tablePropertiesList = 128;
    public static readonly RULE_keyValueProperty = 129;
    public static readonly RULE_keyProperty = 130;
    public static readonly RULE_tableRowFormatFieldIdentifier = 131;
    public static readonly RULE_tableRowFormatCollItemsIdentifier = 132;
    public static readonly RULE_tableRowFormatMapKeysIdentifier = 133;
    public static readonly RULE_tableRowFormatLinesIdentifier = 134;
    public static readonly RULE_tableRowNullFormat = 135;
    public static readonly RULE_tableFileFormat = 136;
    public static readonly RULE_tableLocation = 137;
    public static readonly RULE_columnNameTypeList = 138;
    public static readonly RULE_columnNameTypeOrConstraintList = 139;
    public static readonly RULE_columnNameColonTypeList = 140;
    public static readonly RULE_columnNameList = 141;
    public static readonly RULE_columnName = 142;
    public static readonly RULE_columnNameCreate = 143;
    public static readonly RULE_extColumnName = 144;
    public static readonly RULE_columnNameOrderList = 145;
    public static readonly RULE_columnParenthesesList = 146;
    public static readonly RULE_enableValidateSpecification = 147;
    public static readonly RULE_enableSpecification = 148;
    public static readonly RULE_validateSpecification = 149;
    public static readonly RULE_enforcedSpecification = 150;
    public static readonly RULE_relySpecification = 151;
    public static readonly RULE_createConstraint = 152;
    public static readonly RULE_alterConstraintWithName = 153;
    public static readonly RULE_tableLevelConstraint = 154;
    public static readonly RULE_pkUkConstraint = 155;
    public static readonly RULE_checkConstraint = 156;
    public static readonly RULE_createForeignKey = 157;
    public static readonly RULE_alterForeignKeyWithName = 158;
    public static readonly RULE_skewedValueElement = 159;
    public static readonly RULE_skewedColumnValuePairList = 160;
    public static readonly RULE_skewedColumnValuePair = 161;
    public static readonly RULE_skewedColumnValues = 162;
    public static readonly RULE_skewedColumnValue = 163;
    public static readonly RULE_skewedValueLocationElement = 164;
    public static readonly RULE_orderSpecification = 165;
    public static readonly RULE_nullOrdering = 166;
    public static readonly RULE_columnNameOrder = 167;
    public static readonly RULE_columnNameCommentList = 168;
    public static readonly RULE_columnNameComment = 169;
    public static readonly RULE_orderSpecificationRewrite = 170;
    public static readonly RULE_columnRefOrder = 171;
    public static readonly RULE_columnNameType = 172;
    public static readonly RULE_columnNameTypeOrConstraint = 173;
    public static readonly RULE_tableConstraint = 174;
    public static readonly RULE_columnNameTypeConstraint = 175;
    public static readonly RULE_columnConstraint = 176;
    public static readonly RULE_foreignKeyConstraint = 177;
    public static readonly RULE_colConstraint = 178;
    public static readonly RULE_alterColumnConstraint = 179;
    public static readonly RULE_alterForeignKeyConstraint = 180;
    public static readonly RULE_alterColConstraint = 181;
    public static readonly RULE_columnConstraintType = 182;
    public static readonly RULE_defaultVal = 183;
    public static readonly RULE_tableConstraintType = 184;
    public static readonly RULE_constraintOptsCreate = 185;
    public static readonly RULE_constraintOptsAlter = 186;
    public static readonly RULE_columnNameColonType = 187;
    public static readonly RULE_colType = 188;
    public static readonly RULE_colTypeList = 189;
    public static readonly RULE_type = 190;
    public static readonly RULE_primitiveType = 191;
    public static readonly RULE_listType = 192;
    public static readonly RULE_structType = 193;
    public static readonly RULE_mapType = 194;
    public static readonly RULE_unionType = 195;
    public static readonly RULE_setOperator = 196;
    public static readonly RULE_queryStatementExpression = 197;
    public static readonly RULE_queryStatementExpressionBody = 198;
    public static readonly RULE_withClause = 199;
    public static readonly RULE_cteStatement = 200;
    public static readonly RULE_fromStatement = 201;
    public static readonly RULE_singleFromStatement = 202;
    public static readonly RULE_regularBody = 203;
    public static readonly RULE_atomSelectStatement = 204;
    public static readonly RULE_selectStatement = 205;
    public static readonly RULE_setOpSelectStatement = 206;
    public static readonly RULE_selectStatementWithCTE = 207;
    public static readonly RULE_insertClause = 208;
    public static readonly RULE_destination = 209;
    public static readonly RULE_limitClause = 210;
    public static readonly RULE_deleteStatement = 211;
    public static readonly RULE_columnAssignmentClause = 212;
    public static readonly RULE_precedencePlusExpressionOrDefault = 213;
    public static readonly RULE_setColumnsClause = 214;
    public static readonly RULE_updateStatement = 215;
    public static readonly RULE_sqlTransactionStatement = 216;
    public static readonly RULE_startTransactionStatement = 217;
    public static readonly RULE_transactionMode = 218;
    public static readonly RULE_transactionAccessMode = 219;
    public static readonly RULE_isolationLevel = 220;
    public static readonly RULE_levelOfIsolation = 221;
    public static readonly RULE_commitStatement = 222;
    public static readonly RULE_rollbackStatement = 223;
    public static readonly RULE_setAutoCommitStatement = 224;
    public static readonly RULE_abortTransactionStatement = 225;
    public static readonly RULE_abortCompactionStatement = 226;
    public static readonly RULE_mergeStatement = 227;
    public static readonly RULE_whenClauses = 228;
    public static readonly RULE_whenNotMatchedClause = 229;
    public static readonly RULE_whenMatchedAndClause = 230;
    public static readonly RULE_whenMatchedThenClause = 231;
    public static readonly RULE_updateOrDelete = 232;
    public static readonly RULE_killQueryStatement = 233;
    public static readonly RULE_compactionId = 234;
    public static readonly RULE_compactionPool = 235;
    public static readonly RULE_compactionType = 236;
    public static readonly RULE_compactionStatus = 237;
    public static readonly RULE_alterStatement = 238;
    public static readonly RULE_alterTableStatementSuffix = 239;
    public static readonly RULE_alterTblPartitionStatementSuffix = 240;
    public static readonly RULE_alterStatementPartitionKeyType = 241;
    public static readonly RULE_alterViewStatementSuffix = 242;
    public static readonly RULE_alterMaterializedViewStatementSuffix = 243;
    public static readonly RULE_alterMaterializedViewSuffixRewrite = 244;
    public static readonly RULE_alterMaterializedViewSuffixRebuild = 245;
    public static readonly RULE_alterDatabaseStatementSuffix = 246;
    public static readonly RULE_alterDatabaseSuffixProperties = 247;
    public static readonly RULE_alterDatabaseSuffixSetOwner = 248;
    public static readonly RULE_alterDatabaseSuffixSetLocation = 249;
    public static readonly RULE_alterDatabaseSuffixSetManagedLocation = 250;
    public static readonly RULE_alterStatementSuffixRename = 251;
    public static readonly RULE_alterStatementSuffixAddCol = 252;
    public static readonly RULE_alterStatementSuffixAddConstraint = 253;
    public static readonly RULE_alterStatementSuffixUpdateColumns = 254;
    public static readonly RULE_alterStatementSuffixProtections = 255;
    public static readonly RULE_alterStatementSuffixDropConstraint = 256;
    public static readonly RULE_alterStatementSuffixRenameCol = 257;
    public static readonly RULE_alterStatementSuffixUpdateStatsCol = 258;
    public static readonly RULE_alterStatementSuffixUpdateStats = 259;
    public static readonly RULE_alterStatementChangeColPosition = 260;
    public static readonly RULE_alterStatementSuffixAddPartitions = 261;
    public static readonly RULE_alterStatementSuffixAddPartitionsElement = 262;
    public static readonly RULE_alterStatementSuffixTouch = 263;
    public static readonly RULE_alterStatementSuffixArchive = 264;
    public static readonly RULE_alterStatementSuffixUnArchive = 265;
    public static readonly RULE_partitionLocation = 266;
    public static readonly RULE_alterStatementSuffixRecoverPartitions = 267;
    public static readonly RULE_alterStatementSuffixDropPartitions = 268;
    public static readonly RULE_alterStatementSuffixProperties = 269;
    public static readonly RULE_alterViewSuffixProperties = 270;
    public static readonly RULE_alterStatementSuffixSerdeProperties = 271;
    public static readonly RULE_tablePartitionPrefix = 272;
    public static readonly RULE_alterStatementSuffixFileFormat = 273;
    public static readonly RULE_alterStatementSuffixClusterbySortby = 274;
    public static readonly RULE_alterTblPartitionStatementSuffixSkewedLocation = 275;
    public static readonly RULE_skewedLocations = 276;
    public static readonly RULE_skewedLocationsList = 277;
    public static readonly RULE_skewedLocationMap = 278;
    public static readonly RULE_alterStatementSuffixLocation = 279;
    public static readonly RULE_alterStatementSuffixSkewedby = 280;
    public static readonly RULE_alterStatementSuffixExchangePartition = 281;
    public static readonly RULE_alterStatementSuffixRenamePart = 282;
    public static readonly RULE_alterStatementSuffixStatsPart = 283;
    public static readonly RULE_alterStatementSuffixMergeFiles = 284;
    public static readonly RULE_alterStatementSuffixBucketNum = 285;
    public static readonly RULE_blocking = 286;
    public static readonly RULE_compactPool = 287;
    public static readonly RULE_alterStatementSuffixCompact = 288;
    public static readonly RULE_alterStatementSuffixSetOwner = 289;
    public static readonly RULE_alterStatementSuffixSetPartSpec = 290;
    public static readonly RULE_alterStatementSuffixExecute = 291;
    public static readonly RULE_alterIndexStatementSuffix = 292;
    public static readonly RULE_fileFormat = 293;
    public static readonly RULE_alterDataConnectorStatementSuffix = 294;
    public static readonly RULE_alterDataConnectorSuffixProperties = 295;
    public static readonly RULE_alterDataConnectorSuffixSetOwner = 296;
    public static readonly RULE_alterDataConnectorSuffixSetUrl = 297;
    public static readonly RULE_likeTableOrFile = 298;
    public static readonly RULE_createTableStatement = 299;
    public static readonly RULE_createDataConnectorStatement = 300;
    public static readonly RULE_dataConnectorComment = 301;
    public static readonly RULE_dataConnectorUrl = 302;
    public static readonly RULE_dataConnectorType = 303;
    public static readonly RULE_dcProperties = 304;
    public static readonly RULE_dropDataConnectorStatement = 305;
    public static readonly RULE_tableAllColumns = 306;
    public static readonly RULE_defaultValue = 307;
    public static readonly RULE_expressionList = 308;
    public static readonly RULE_aliasList = 309;
    public static readonly RULE_fromClause = 310;
    public static readonly RULE_fromSource = 311;
    public static readonly RULE_atomjoinSource = 312;
    public static readonly RULE_joinSource = 313;
    public static readonly RULE_joinSourcePart = 314;
    public static readonly RULE_uniqueJoinSource = 315;
    public static readonly RULE_uniqueJoinExpr = 316;
    public static readonly RULE_uniqueJoinToken = 317;
    public static readonly RULE_joinToken = 318;
    public static readonly RULE_lateralView = 319;
    public static readonly RULE_tableAlias = 320;
    public static readonly RULE_tableBucketSample = 321;
    public static readonly RULE_splitSample = 322;
    public static readonly RULE_tableSample = 323;
    public static readonly RULE_tableSource = 324;
    public static readonly RULE_asOfClause = 325;
    public static readonly RULE_uniqueJoinTableSource = 326;
    public static readonly RULE_dbSchemaName = 327;
    public static readonly RULE_dbSchemaNameCreate = 328;
    public static readonly RULE_tableOrView = 329;
    public static readonly RULE_tableName = 330;
    public static readonly RULE_tableNameCreate = 331;
    public static readonly RULE_viewName = 332;
    public static readonly RULE_viewNameCreate = 333;
    public static readonly RULE_subQuerySource = 334;
    public static readonly RULE_partitioningSpec = 335;
    public static readonly RULE_partitionTableFunctionSource = 336;
    public static readonly RULE_partitionedTableFunction = 337;
    public static readonly RULE_whereClause = 338;
    public static readonly RULE_searchCondition = 339;
    public static readonly RULE_valuesSource = 340;
    public static readonly RULE_valuesClause = 341;
    public static readonly RULE_valuesTableConstructor = 342;
    public static readonly RULE_valueRowConstructor = 343;
    public static readonly RULE_firstValueRowConstructor = 344;
    public static readonly RULE_virtualTableSource = 345;
    public static readonly RULE_selectClause = 346;
    public static readonly RULE_all_distinct = 347;
    public static readonly RULE_selectList = 348;
    public static readonly RULE_selectTrfmClause = 349;
    public static readonly RULE_selectItem = 350;
    public static readonly RULE_trfmClause = 351;
    public static readonly RULE_selectExpression = 352;
    public static readonly RULE_selectExpressionList = 353;
    public static readonly RULE_window_clause = 354;
    public static readonly RULE_window_defn = 355;
    public static readonly RULE_window_specification = 356;
    public static readonly RULE_window_frame = 357;
    public static readonly RULE_window_range_expression = 358;
    public static readonly RULE_window_value_expression = 359;
    public static readonly RULE_window_frame_start_boundary = 360;
    public static readonly RULE_window_frame_boundary = 361;
    public static readonly RULE_groupByClause = 362;
    public static readonly RULE_groupby_expression = 363;
    public static readonly RULE_groupByEmpty = 364;
    public static readonly RULE_rollupStandard = 365;
    public static readonly RULE_rollupOldSyntax = 366;
    public static readonly RULE_groupingSetExpression = 367;
    public static readonly RULE_groupingSetExpressionMultiple = 368;
    public static readonly RULE_groupingExpressionSingle = 369;
    public static readonly RULE_havingClause = 370;
    public static readonly RULE_qualifyClause = 371;
    public static readonly RULE_havingCondition = 372;
    public static readonly RULE_expressionsInParenthesis = 373;
    public static readonly RULE_expressionsNotInParenthesis = 374;
    public static readonly RULE_expressionPart = 375;
    public static readonly RULE_expressionOrDefault = 376;
    public static readonly RULE_firstExpressionsWithAlias = 377;
    public static readonly RULE_expressionWithAlias = 378;
    public static readonly RULE_expressions = 379;
    public static readonly RULE_columnRefOrderInParenthesis = 380;
    public static readonly RULE_columnRefOrderNotInParenthesis = 381;
    public static readonly RULE_orderByClause = 382;
    public static readonly RULE_clusterByClause = 383;
    public static readonly RULE_partitionByClause = 384;
    public static readonly RULE_distributeByClause = 385;
    public static readonly RULE_sortByClause = 386;
    public static readonly RULE_trimFunction = 387;
    public static readonly RULE_function_ = 388;
    public static readonly RULE_null_treatment = 389;
    public static readonly RULE_functionNameCreate = 390;
    public static readonly RULE_functionNameForDDL = 391;
    public static readonly RULE_functionNameForInvoke = 392;
    public static readonly RULE_userDefinedFuncName = 393;
    public static readonly RULE_internalFunctionName = 394;
    public static readonly RULE_castExpression = 395;
    public static readonly RULE_caseExpression = 396;
    public static readonly RULE_whenExpression = 397;
    public static readonly RULE_floorExpression = 398;
    public static readonly RULE_floorDateQualifiers = 399;
    public static readonly RULE_extractExpression = 400;
    public static readonly RULE_timeQualifiers = 401;
    public static readonly RULE_constant = 402;
    public static readonly RULE_prepareStmtParam = 403;
    public static readonly RULE_parameterIdx = 404;
    public static readonly RULE_stringLiteralSequence = 405;
    public static readonly RULE_charSetStringLiteral = 406;
    public static readonly RULE_dateLiteral = 407;
    public static readonly RULE_timestampLiteral = 408;
    public static readonly RULE_timestampLocalTZLiteral = 409;
    public static readonly RULE_intervalValue = 410;
    public static readonly RULE_intervalLiteral = 411;
    public static readonly RULE_intervalExpression = 412;
    public static readonly RULE_intervalQualifiers = 413;
    public static readonly RULE_expression = 414;
    public static readonly RULE_atomExpression = 415;
    public static readonly RULE_precedenceFieldExpression = 416;
    public static readonly RULE_precedenceUnaryOperator = 417;
    public static readonly RULE_precedenceUnaryPrefixExpression = 418;
    public static readonly RULE_precedenceBitwiseXorOperator = 419;
    public static readonly RULE_precedenceBitwiseXorExpression = 420;
    public static readonly RULE_precedenceStarOperator = 421;
    public static readonly RULE_precedenceStarExpression = 422;
    public static readonly RULE_precedencePlusOperator = 423;
    public static readonly RULE_precedencePlusExpression = 424;
    public static readonly RULE_precedenceConcatenateOperator = 425;
    public static readonly RULE_precedenceConcatenateExpression = 426;
    public static readonly RULE_precedenceAmpersandOperator = 427;
    public static readonly RULE_precedenceAmpersandExpression = 428;
    public static readonly RULE_precedenceBitwiseOrOperator = 429;
    public static readonly RULE_precedenceBitwiseOrExpression = 430;
    public static readonly RULE_precedenceRegexpOperator = 431;
    public static readonly RULE_precedenceSimilarOperator = 432;
    public static readonly RULE_subQueryExpression = 433;
    public static readonly RULE_precedenceSimilarExpression = 434;
    public static readonly RULE_precedenceSimilarExpressionMain = 435;
    public static readonly RULE_precedenceSimilarExpressionPart = 436;
    public static readonly RULE_precedenceSimilarExpressionAtom = 437;
    public static readonly RULE_precedenceSimilarExpressionQuantifierPredicate = 438;
    public static readonly RULE_quantifierType = 439;
    public static readonly RULE_precedenceSimilarExpressionIn = 440;
    public static readonly RULE_precedenceSimilarExpressionPartNot = 441;
    public static readonly RULE_precedenceDistinctOperator = 442;
    public static readonly RULE_precedenceEqualOperator = 443;
    public static readonly RULE_precedenceEqualExpression = 444;
    public static readonly RULE_isCondition = 445;
    public static readonly RULE_precedenceUnarySuffixExpression = 446;
    public static readonly RULE_precedenceNotOperator = 447;
    public static readonly RULE_precedenceNotExpression = 448;
    public static readonly RULE_precedenceAndOperator = 449;
    public static readonly RULE_precedenceAndExpression = 450;
    public static readonly RULE_precedenceOrOperator = 451;
    public static readonly RULE_precedenceOrExpression = 452;
    public static readonly RULE_booleanValue = 453;
    public static readonly RULE_booleanValueTok = 454;
    public static readonly RULE_tableOrPartition = 455;
    public static readonly RULE_partitionSpec = 456;
    public static readonly RULE_partitionVal = 457;
    public static readonly RULE_partitionSelectorSpec = 458;
    public static readonly RULE_partitionSelectorVal = 459;
    public static readonly RULE_partitionSelectorOperator = 460;
    public static readonly RULE_subQuerySelectorOperator = 461;
    public static readonly RULE_sysFuncNames = 462;
    public static readonly RULE_id_ = 463;
    public static readonly RULE_functionIdentifier = 464;
    public static readonly RULE_principalIdentifier = 465;
    public static readonly RULE_nonReserved = 466;
    public static readonly RULE_sql11ReservedKeywordsUsedAsFunctionName = 467;
    public static readonly RULE_hint = 468;
    public static readonly RULE_hintList = 469;
    public static readonly RULE_hintItem = 470;
    public static readonly RULE_hintName = 471;
    public static readonly RULE_hintArgs = 472;
    public static readonly RULE_hintArgName = 473;
    public static readonly RULE_prepareStatement = 474;
    public static readonly RULE_executeStatement = 475;
    public static readonly RULE_executeParamList = 476;
    public static readonly RULE_resourcePlanDdlStatements = 477;
    public static readonly RULE_rpAssign = 478;
    public static readonly RULE_rpAssignList = 479;
    public static readonly RULE_rpUnassign = 480;
    public static readonly RULE_rpUnassignList = 481;
    public static readonly RULE_createResourcePlanStatement = 482;
    public static readonly RULE_withReplace = 483;
    public static readonly RULE_activate = 484;
    public static readonly RULE_enable = 485;
    public static readonly RULE_disable = 486;
    public static readonly RULE_unmanaged = 487;
    public static readonly RULE_year = 488;
    public static readonly RULE_month = 489;
    public static readonly RULE_week = 490;
    public static readonly RULE_day = 491;
    public static readonly RULE_hour = 492;
    public static readonly RULE_minute = 493;
    public static readonly RULE_second = 494;
    public static readonly RULE_decimal = 495;
    public static readonly RULE_alterResourcePlanStatement = 496;
    public static readonly RULE_globalWmStatement = 497;
    public static readonly RULE_replaceResourcePlanStatement = 498;
    public static readonly RULE_dropResourcePlanStatement = 499;
    public static readonly RULE_poolPath = 500;
    public static readonly RULE_triggerExpression = 501;
    public static readonly RULE_triggerExpressionStandalone = 502;
    public static readonly RULE_triggerOrExpression = 503;
    public static readonly RULE_triggerAndExpression = 504;
    public static readonly RULE_triggerAtomExpression = 505;
    public static readonly RULE_triggerLiteral = 506;
    public static readonly RULE_comparisionOperator = 507;
    public static readonly RULE_triggerActionExpression = 508;
    public static readonly RULE_triggerActionExpressionStandalone = 509;
    public static readonly RULE_createTriggerStatement = 510;
    public static readonly RULE_alterTriggerStatement = 511;
    public static readonly RULE_dropTriggerStatement = 512;
    public static readonly RULE_poolAssign = 513;
    public static readonly RULE_poolAssignList = 514;
    public static readonly RULE_createPoolStatement = 515;
    public static readonly RULE_alterPoolStatement = 516;
    public static readonly RULE_dropPoolStatement = 517;
    public static readonly RULE_createMappingStatement = 518;
    public static readonly RULE_alterMappingStatement = 519;
    public static readonly RULE_dropMappingStatement = 520;

    public static readonly literalNames = [
        null, "'ABORT'", "'ACTIVATE'", "'ACTIVE'", "'ADD'", "'ADMIN'", "'AFTER'", 
        "'ALL'", "'ALLOC_FRACTION'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANTI'", 
        "'ANY'", "'APPLICATION'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'", 
        "'AST'", "'AT'", "'AUTHORIZATION'", "'AUTOCOMMIT'", "'BATCH'", "'BEFORE'", 
        "'BETWEEN'", "'BIGINT'", "'BINARY'", "'BOOLEAN'", "'BOTH'", "'BUCKET'", 
        "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", "'CASE'", "'CAST'", 
        "'CBO'", "'CHANGE'", "'CHAR'", "'CHECK'", "'CLUSTER'", "'CLUSTERED'", 
        "'CLUSTERSTATUS'", "'COLLECTION'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", 
        "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", "'COMPACTIONID'", "'COMPUTE'", 
        "'CONCATENATE'", "'CONF'", "'CONSTRAINT'", "'CONTINUE'", "'COST'", 
        "'CREATE'", "'CRON'", "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_DATE'", 
        "'CURRENT_TIMESTAMP'", "'CURSOR'", "'DATA'", "'DATABASE'", "'DATABASES'", 
        "'CONNECTOR'", "'CONNECTORS'", "'DATE'", "'DATETIME'", "'DAY'", 
        "'DAYS'", "'DAYOFWEEK'", "'DBPROPERTIES'", "'DCPROPERTIES'", "'DDL'", 
        "'DEBUG'", "'DEC'", "'DECIMAL'", "'NUMERIC'", "'DEFAULT'", "'DEFERRED'", 
        "'DEFINED'", "'DELETE'", "'DELIMITED'", "'DEPENDENCY'", "'DESC'", 
        "'DESCRIBE'", "'DETAIL'", "'DIRECTORIES'", "'DIRECTORY'", "'DISABLE'", 
        "'DISABLED'", "'DISTINCT'", "'DISTRIBUTE'", "'DISTRIBUTED'", "'DO'", 
        "'DOUBLE'", "'DROP'", "'RECOVER'", "'DUMP'", "'$ELEM$'", "'ELSE'", 
        "'ENABLE'", "'ENABLED'", "'END'", "'ENFORCED'", "'ESCAPED'", "'EVERY'", 
        "'EXCEPT'", "'EXCHANGE'", "'EXCLUSIVE'", "'EXECUTE'", "'EXECUTED'", 
        "'EXISTS'", "'EXPIRE_SNAPSHOTS'", "'EXPLAIN'", "'EXPORT'", "'EXPRESSION'", 
        "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FIELDS'", 
        "'FILE'", "'FILEFORMAT'", "'FIRST'", "'FLOAT'", "'FLOOR'", "'FOLLOWING'", 
        "'FOR'", "'FORCE'", "'FOREIGN'", "'FORMAT'", "'FORMATTED'", "'FROM'", 
        "'FULL'", "'FUNCTION'", "'FUNCTIONS'", "'GRANT'", "'GROUP'", "'GROUPING'", 
        "'HAVING'", "'HOLD_DDLTIME'", "'HOUR'", "'HOURS'", "'IDXPROPERTIES'", 
        "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", "'INDEX'", "'INDEXES'", 
        "'INNER'", "'INPATH'", "'INPUTDRIVER'", "'INPUTFORMAT'", "'INSERT'", 
        "'INT'", "'INTEGER'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'IS'", 
        "'ISOLATION'", "'ITEMS'", "'JAR'", "'JOIN'", "'JOINCOST'", "'KEY'", 
        "'KEYS'", "'$KEY$'", "'KILL'", "'LAST'", "'LATERAL'", "'LEADING'", 
        "'LEFT'", "'LESS'", "'LEVEL'", "'LIFECYCLE'", "'LIKE'", "'LIMIT'", 
        "'LINES'", "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCKS'", 
        "'LOGICAL'", "'LONG'", "'MACRO'", "'MANAGED'", "'MANAGEDLOCATION'", 
        "'MANAGEMENT'", "'MAP'", "'MAPJOIN'", "'MAPPING'", "'MATCHED'", 
        "'MATERIALIZED'", "'MERGE'", "'METADATA'", "'MINUS'", "'MINUTE'", 
        "'MINUTES'", "'MONTH'", "'MONTHS'", "'MORE'", "'MOVE'", "'MSCK'", 
        "'NONE'", "'NORELY'", "'NOSCAN'", "'NOT'", "'NOVALIDATE'", "'NO_DROP'", 
        "'NULL'", "'NULLS'", "'OF'", "'OFFLINE'", "'OFFSET'", "'ON'", "'ONLY'", 
        "'OPERATOR'", "'OPTION'", "'OR'", "'ORDER'", "'OUT'", "'OUTER'", 
        "'OUTPUTDRIVER'", "'OUTPUTFORMAT'", "'OVER'", "'OVERWRITE'", "'OWNER'", 
        "'PARTITION'", "'PARTITIONED'", "'PARTITIONS'", "'PATH'", "'PERCENT'", 
        "'PKFK_JOIN'", "'PLAN'", "'PLANS'", "'PLUS'", "'POOL'", "'PRECEDING'", 
        "'PRECISION'", "'PREPARE'", "'PRESERVE'", "'PRIMARY'", "'PRINCIPALS'", 
        "'PROCEDURE'", "'PROTECTION'", "'PURGE'", "'QUALIFY'", "'QUARTER'", 
        "'QUERY'", "'QUERY_PARALLELISM'", "'RANGE'", "'READ'", "'READONLY'", 
        "'READS'", "'REAL'", "'REBUILD'", "'RECORDREADER'", "'RECORDWRITER'", 
        "'REDUCE'", "'REFERENCES'", "'REGEXP'", "'RELOAD'", "'RELY'", "'REMOTE'", 
        "'RENAME'", "'REOPTIMIZATION'", "'REPAIR'", "'REPL'", "'REPLACE'", 
        "'REPLICATION'", "'RESOURCE'", "'RESPECT'", "'RESTRICT'", "'REVOKE'", 
        "'REWRITE'", "'RIGHT'", "'RLIKE'", "'ROLE'", "'ROLES'", "'ROLLBACK'", 
        "'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEDULED'", "'SCHEDULING_POLICY'", 
        "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECONDS'", "'SELECT'", "'SEMI'", 
        "'SERDE'", "'SERDEPROPERTIES'", "'SERVER'", "'SET'", "'SETS'", "'SET_CURRENT_SNAPSHOT'", 
        "'SHARED'", "'SHOW'", "'SHOW_DATABASE'", "'SKEWED'", "'SMALLINT'", 
        "'SNAPSHOT'", "'SOME'", "'SORT'", "'SORTED'", "'SPEC'", "'SSL'", 
        "'START'", "'STATISTICS'", "'STATUS'", "'STORED'", "'STREAMTABLE'", 
        "'STRING'", "'STRUCT'", "'SUMMARY'", "'SYNC'", "'SYSTEM_TIME'", 
        "'SYSTEM_VERSION'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'", 
        "'TEMPORARY'", "'TERMINATED'", "'THEN'", "'TIME'", "'TIMESTAMP'", 
        "'TIMESTAMPLOCALTZ'", "'TIMESTAMPTZ'", "'TINYINT'", "'TO'", "'TOUCH'", 
        "'TRAILING'", "'TRANSACTION'", "'TRANSACTIONAL'", "'TRANSACTIONS'", 
        "'TRANSFORM'", "'TRIGGER'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", 
        "'UNARCHIVE'", "'UNBOUNDED'", "'UNDO'", "'UNION'", "'UNIONTYPE'", 
        "'UNIQUE'", "'UNIQUEJOIN'", "'UNKNOWN'", "'UNLOCK'", "'UNMANAGED'", 
        "'UNSET'", "'UNSIGNED'", "'UPDATE'", "'URI'", "'URL'", "'USE'", 
        "'USER'", "'USING'", "'UTC'", "'UTC_TMESTAMP'", "'VALIDATE'", "'VALUES'", 
        "'$VALUE$'", "'VARCHAR'", "'VECTORIZATION'", "'VIEW'", "'VIEWS'", 
        "'WAIT'", "'WEEK'", "'WEEKS'", "'WHEN'", "'WHERE'", "'WHILE'", "'WINDOW'", 
        "'WITH'", "'WITHIN'", "'WORK'", "'WORKLOAD'", "'WRITE'", "'YEAR'", 
        "'YEARS'", "'ZONE'", "'.'", "':'", "','", "';'", "'('", "')'", "'['", 
        "']'", "'{'", "'}'", null, "'<=>'", null, "'<='", "'<'", "'>='", 
        "'>'", "'/'", "'+'", "'-'", "'*'", "'%'", "'DIV'", "'!'", "'&'", 
        "'~'", "'|'", "'||'", "'^'", "'?'", "'$'"
    ];

    public static readonly symbolicNames = [
        null, "KW_ABORT", "KW_ACTIVATE", "KW_ACTIVE", "KW_ADD", "KW_ADMIN", 
        "KW_AFTER", "KW_ALL", "KW_ALLOC_FRACTION", "KW_ALTER", "KW_ANALYZE", 
        "KW_AND", "KW_ANTI", "KW_ANY", "KW_APPLICATION", "KW_ARCHIVE", "KW_ARRAY", 
        "KW_AS", "KW_ASC", "KW_AST", "KW_AT", "KW_AUTHORIZATION", "KW_AUTOCOMMIT", 
        "KW_BATCH", "KW_BEFORE", "KW_BETWEEN", "KW_BIGINT", "KW_BINARY", 
        "KW_BOOLEAN", "KW_BOTH", "KW_BUCKET", "KW_BUCKETS", "KW_BY", "KW_CACHE", 
        "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CBO", "KW_CHANGE", "KW_CHAR", 
        "KW_CHECK", "KW_CLUSTER", "KW_CLUSTERED", "KW_CLUSTERSTATUS", "KW_COLLECTION", 
        "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMPACT", 
        "KW_COMPACTIONS", "KW_COMPACT_ID", "KW_COMPUTE", "KW_CONCATENATE", 
        "KW_CONF", "KW_CONSTRAINT", "KW_CONTINUE", "KW_COST", "KW_CREATE", 
        "KW_CRON", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_DATE", 
        "KW_CURRENT_TIMESTAMP", "KW_CURSOR", "KW_DATA", "KW_DATABASE", "KW_DATABASES", 
        "KW_DATACONNECTOR", "KW_DATACONNECTORS", "KW_DATE", "KW_DATETIME", 
        "KW_DAY", "KW_DAYS", "KW_DAYOFWEEK", "KW_DBPROPERTIES", "KW_DCPROPERTIES", 
        "KW_DDL", "KW_DEBUG", "KW_DEC", "KW_DECIMAL", "KW_NUMERIC", "KW_DEFAULT", 
        "KW_DEFERRED", "KW_DEFINED", "KW_DELETE", "KW_DELIMITED", "KW_DEPENDENCY", 
        "KW_DESC", "KW_DESCRIBE", "KW_DETAIL", "KW_DIRECTORIES", "KW_DIRECTORY", 
        "KW_DISABLE", "KW_DISABLED", "KW_DISTINCT", "KW_DISTRIBUTE", "KW_DISTRIBUTED", 
        "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_RECOVER", "KW_DUMP", "KW_ELEM_TYPE", 
        "KW_ELSE", "KW_ENABLE", "KW_ENABLED", "KW_END", "KW_ENFORCED", "KW_ESCAPED", 
        "KW_EVERY", "KW_EXCEPT", "KW_EXCHANGE", "KW_EXCLUSIVE", "KW_EXECUTE", 
        "KW_EXECUTED", "KW_EXISTS", "KW_EXPIRE_SNAPSHOTS", "KW_EXPLAIN", 
        "KW_EXPORT", "KW_EXPRESSION", "KW_EXTENDED", "KW_EXTERNAL", "KW_EXTRACT", 
        "KW_FALSE", "KW_FETCH", "KW_FIELDS", "KW_FILE", "KW_FILEFORMAT", 
        "KW_FIRST", "KW_FLOAT", "KW_FLOOR", "KW_FOLLOWING", "KW_FOR", "KW_FORCE", 
        "KW_FOREIGN", "KW_FORMAT", "KW_FORMATTED", "KW_FROM", "KW_FULL", 
        "KW_FUNCTION", "KW_FUNCTIONS", "KW_GRANT", "KW_GROUP", "KW_GROUPING", 
        "KW_HAVING", "KW_HOLD_DDLTIME", "KW_HOUR", "KW_HOURS", "KW_IDXPROPERTIES", 
        "KW_IF", "KW_IGNORE", "KW_IMPORT", "KW_IN", "KW_INDEX", "KW_INDEXES", 
        "KW_INNER", "KW_INPATH", "KW_INPUTDRIVER", "KW_INPUTFORMAT", "KW_INSERT", 
        "KW_INT", "KW_INTEGER", "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", 
        "KW_IS", "KW_ISOLATION", "KW_ITEMS", "KW_JAR", "KW_JOIN", "KW_JOINCOST", 
        "KW_KEY", "KW_KEYS", "KW_KEY_TYPE", "KW_KILL", "KW_LAST", "KW_LATERAL", 
        "KW_LEADING", "KW_LEFT", "KW_LESS", "KW_LEVEL", "KW_LIFECYCLE", 
        "KW_LIKE", "KW_LIMIT", "KW_LINES", "KW_LOAD", "KW_LOCAL", "KW_LOCATION", 
        "KW_LOCK", "KW_LOCKS", "KW_LOGICAL", "KW_LONG", "KW_MACRO", "KW_MANAGED", 
        "KW_MANAGEDLOCATION", "KW_MANAGEMENT", "KW_MAP", "KW_MAPJOIN", "KW_MAPPING", 
        "KW_MATCHED", "KW_MATERIALIZED", "KW_MERGE", "KW_METADATA", "KW_MINUS", 
        "KW_MINUTE", "KW_MINUTES", "KW_MONTH", "KW_MONTHS", "KW_MORE", "KW_MOVE", 
        "KW_MSCK", "KW_NONE", "KW_NORELY", "KW_NOSCAN", "KW_NOT", "KW_NOVALIDATE", 
        "KW_NO_DROP", "KW_NULL", "KW_NULLS", "KW_OF", "KW_OFFLINE", "KW_OFFSET", 
        "KW_ON", "KW_ONLY", "KW_OPERATOR", "KW_OPTION", "KW_OR", "KW_ORDER", 
        "KW_OUT", "KW_OUTER", "KW_OUTPUTDRIVER", "KW_OUTPUTFORMAT", "KW_OVER", 
        "KW_OVERWRITE", "KW_OWNER", "KW_PARTITION", "KW_PARTITIONED", "KW_PARTITIONS", 
        "KW_PATH", "KW_PERCENT", "KW_PKFK_JOIN", "KW_PLAN", "KW_PLANS", 
        "KW_PLUS", "KW_POOL", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", 
        "KW_PRESERVE", "KW_PRIMARY", "KW_PRINCIPALS", "KW_PROCEDURE", "KW_PROTECTION", 
        "KW_PURGE", "KW_QUALIFY", "KW_QUARTER", "KW_QUERY", "KW_QUERY_PARALLELISM", 
        "KW_RANGE", "KW_READ", "KW_READONLY", "KW_READS", "KW_REAL", "KW_REBUILD", 
        "KW_RECORDREADER", "KW_RECORDWRITER", "KW_REDUCE", "KW_REFERENCES", 
        "KW_REGEXP", "KW_RELOAD", "KW_RELY", "KW_REMOTE", "KW_RENAME", "KW_REOPTIMIZATION", 
        "KW_REPAIR", "KW_REPL", "KW_REPLACE", "KW_REPLICATION", "KW_RESOURCE", 
        "KW_RESPECT", "KW_RESTRICT", "KW_REVOKE", "KW_REWRITE", "KW_RIGHT", 
        "KW_RLIKE", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", "KW_ROLLUP", "KW_ROW", 
        "KW_ROWS", "KW_SCHEDULED", "KW_SCHEDULING_POLICY", "KW_SCHEMA", 
        "KW_SCHEMAS", "KW_SECOND", "KW_SECONDS", "KW_SELECT", "KW_SEMI", 
        "KW_SERDE", "KW_SERDEPROPERTIES", "KW_SERVER", "KW_SET", "KW_SETS", 
        "KW_SET_CURRENT_SNAPSHOT", "KW_SHARED", "KW_SHOW", "KW_SHOW_DATABASE", 
        "KW_SKEWED", "KW_SMALLINT", "KW_SNAPSHOT", "KW_SOME", "KW_SORT", 
        "KW_SORTED", "KW_SPEC", "KW_SSL", "KW_START", "KW_STATISTICS", "KW_STATUS", 
        "KW_STORED", "KW_STREAMTABLE", "KW_STRING", "KW_STRUCT", "KW_SUMMARY", 
        "KW_SYNC", "KW_SYSTEM_TIME", "KW_SYSTEM_VERSION", "KW_TABLE", "KW_TABLES", 
        "KW_TABLESAMPLE", "KW_TBLPROPERTIES", "KW_TEMPORARY", "KW_TERMINATED", 
        "KW_THEN", "KW_TIME", "KW_TIMESTAMP", "KW_TIMESTAMPLOCALTZ", "KW_TIMESTAMPTZ", 
        "KW_TINYINT", "KW_TO", "KW_TOUCH", "KW_TRAILING", "KW_TRANSACTION", 
        "KW_TRANSACTIONAL", "KW_TRANSACTIONS", "KW_TRANSFORM", "KW_TRIGGER", 
        "KW_TRIM", "KW_TRUE", "KW_TRUNCATE", "KW_TYPE", "KW_UNARCHIVE", 
        "KW_UNBOUNDED", "KW_UNDO", "KW_UNION", "KW_UNIONTYPE", "KW_UNIQUE", 
        "KW_UNIQUEJOIN", "KW_UNKNOWN", "KW_UNLOCK", "KW_UNMANAGED", "KW_UNSET", 
        "KW_UNSIGNED", "KW_UPDATE", "KW_URI", "KW_URL", "KW_USE", "KW_USER", 
        "KW_USING", "KW_UTC", "KW_UTCTIMESTAMP", "KW_VALIDATE", "KW_VALUES", 
        "KW_VALUE_TYPE", "KW_VARCHAR", "KW_VECTORIZATION", "KW_VIEW", "KW_VIEWS", 
        "KW_WAIT", "KW_WEEK", "KW_WEEKS", "KW_WHEN", "KW_WHERE", "KW_WHILE", 
        "KW_WINDOW", "KW_WITH", "KW_WITHIN", "KW_WORK", "KW_WORKLOAD", "KW_WRITE", 
        "KW_YEAR", "KW_YEARS", "KW_ZONE", "DOT", "COLON", "COMMA", "SEMICOLON", 
        "LPAREN", "RPAREN", "LSQUARE", "RSQUARE", "LCURLY", "RCURLY", "EQUAL", 
        "EQUAL_NS", "NOTEQUAL", "LESSTHANOREQUALTO", "LESSTHAN", "GREATERTHANOREQUALTO", 
        "GREATERTHAN", "DIVIDE", "PLUS", "MINUS", "STAR", "MOD", "DIV", 
        "BITWISENOT", "AMPERSAND", "TILDE", "BITWISEOR", "CONCATENATE", 
        "BITWISEXOR", "QUESTION", "DOLLAR", "StringLiteral", "CharSetLiteral", 
        "IntegralLiteral", "NumberLiteral", "ByteLengthLiteral", "Number", 
        "Identifier", "CharSetName", "WHITE_SPACE", "LINE_COMMENT", "QUERY_HINT", 
        "SHOW_HINT", "HIDDEN_HINT"
    ];
    public static readonly ruleNames = [
        "program", "statement", "explainStatement", "explainOption", "vectorizationOnly", 
        "vectorizatonDetail", "execStatement", "loadStatement", "dropPartitionsIgnoreClause", 
        "replicationClause", "exportStatement", "importStatement", "replDumpStatement", 
        "replDbPolicy", "replLoadStatement", "replConfigs", "replConfigsList", 
        "replTableLevelPolicy", "replStatusStatement", "ddlStatement", "ifExists", 
        "restrictOrCascade", "ifNotExists", "force", "rewriteEnabled", "rewriteDisabled", 
        "storedAsDirs", "orReplace", "createDatabaseStatement", "dbLocation", 
        "dbManagedLocation", "dbProperties", "dbPropertiesList", "dbConnectorName", 
        "switchDatabaseStatement", "dropDatabaseStatement", "databaseComment", 
        "truncateTableStatement", "dropTableStatement", "inputFileFormat", 
        "tabTypeExpr", "partTypeExpr", "tabPartColTypeExpr", "descStatement", 
        "analyzeStatement", "from_in", "db_schema", "showStatement", "showTablesFilterExpr", 
        "lockStatement", "lockDatabase", "lockMode", "unlockStatement", 
        "unlockDatabase", "createRoleStatement", "dropRoleStatement", "grantPrivileges", 
        "revokePrivileges", "grantRole", "revokeRole", "showRoleGrants", 
        "showRoles", "showCurrentRole", "setRole", "showGrants", "showRolePrincipals", 
        "privilegeIncludeColObject", "privilegeObject", "privObject", "privObjectCols", 
        "privilegeList", "privlegeDef", "privilegeType", "principalSpecification", 
        "principalName", "principalAlterName", "withGrantOption", "grantOptionFor", 
        "adminOptionFor", "withAdminOption", "metastoreCheck", "resourceList", 
        "resource", "resourceType", "createFunctionStatement", "dropFunctionStatement", 
        "reloadFunctionsStatement", "createMacroStatement", "dropMacroStatement", 
        "createIndexStatement", "dropIndexStatement", "createViewStatement", 
        "viewPartition", "viewOrganization", "viewClusterSpec", "viewComplexSpec", 
        "viewDistSpec", "viewSortSpec", "dropViewStatement", "createMaterializedViewStatement", 
        "dropMaterializedViewStatement", "createScheduledQueryStatement", 
        "dropScheduledQueryStatement", "alterScheduledQueryStatement", "alterScheduledQueryChange", 
        "scheduleSpec", "executedAsSpec", "definedAsSpec", "showStmtIdentifier", 
        "tableComment", "tableLifecycle", "createTablePartitionSpec", "createTablePartitionColumnTypeSpec", 
        "createTablePartitionColumnSpec", "partitionTransformSpec", "columnNameTransformConstraint", 
        "partitionTransformType", "tableBuckets", "tableImplBuckets", "tableSkewed", 
        "rowFormat", "recordReader", "recordWriter", "rowFormatSerde", "rowFormatDelimited", 
        "tableRowFormat", "tablePropertiesPrefixed", "tableProperties", 
        "tablePropertiesList", "keyValueProperty", "keyProperty", "tableRowFormatFieldIdentifier", 
        "tableRowFormatCollItemsIdentifier", "tableRowFormatMapKeysIdentifier", 
        "tableRowFormatLinesIdentifier", "tableRowNullFormat", "tableFileFormat", 
        "tableLocation", "columnNameTypeList", "columnNameTypeOrConstraintList", 
        "columnNameColonTypeList", "columnNameList", "columnName", "columnNameCreate", 
        "extColumnName", "columnNameOrderList", "columnParenthesesList", 
        "enableValidateSpecification", "enableSpecification", "validateSpecification", 
        "enforcedSpecification", "relySpecification", "createConstraint", 
        "alterConstraintWithName", "tableLevelConstraint", "pkUkConstraint", 
        "checkConstraint", "createForeignKey", "alterForeignKeyWithName", 
        "skewedValueElement", "skewedColumnValuePairList", "skewedColumnValuePair", 
        "skewedColumnValues", "skewedColumnValue", "skewedValueLocationElement", 
        "orderSpecification", "nullOrdering", "columnNameOrder", "columnNameCommentList", 
        "columnNameComment", "orderSpecificationRewrite", "columnRefOrder", 
        "columnNameType", "columnNameTypeOrConstraint", "tableConstraint", 
        "columnNameTypeConstraint", "columnConstraint", "foreignKeyConstraint", 
        "colConstraint", "alterColumnConstraint", "alterForeignKeyConstraint", 
        "alterColConstraint", "columnConstraintType", "defaultVal", "tableConstraintType", 
        "constraintOptsCreate", "constraintOptsAlter", "columnNameColonType", 
        "colType", "colTypeList", "type", "primitiveType", "listType", "structType", 
        "mapType", "unionType", "setOperator", "queryStatementExpression", 
        "queryStatementExpressionBody", "withClause", "cteStatement", "fromStatement", 
        "singleFromStatement", "regularBody", "atomSelectStatement", "selectStatement", 
        "setOpSelectStatement", "selectStatementWithCTE", "insertClause", 
        "destination", "limitClause", "deleteStatement", "columnAssignmentClause", 
        "precedencePlusExpressionOrDefault", "setColumnsClause", "updateStatement", 
        "sqlTransactionStatement", "startTransactionStatement", "transactionMode", 
        "transactionAccessMode", "isolationLevel", "levelOfIsolation", "commitStatement", 
        "rollbackStatement", "setAutoCommitStatement", "abortTransactionStatement", 
        "abortCompactionStatement", "mergeStatement", "whenClauses", "whenNotMatchedClause", 
        "whenMatchedAndClause", "whenMatchedThenClause", "updateOrDelete", 
        "killQueryStatement", "compactionId", "compactionPool", "compactionType", 
        "compactionStatus", "alterStatement", "alterTableStatementSuffix", 
        "alterTblPartitionStatementSuffix", "alterStatementPartitionKeyType", 
        "alterViewStatementSuffix", "alterMaterializedViewStatementSuffix", 
        "alterMaterializedViewSuffixRewrite", "alterMaterializedViewSuffixRebuild", 
        "alterDatabaseStatementSuffix", "alterDatabaseSuffixProperties", 
        "alterDatabaseSuffixSetOwner", "alterDatabaseSuffixSetLocation", 
        "alterDatabaseSuffixSetManagedLocation", "alterStatementSuffixRename", 
        "alterStatementSuffixAddCol", "alterStatementSuffixAddConstraint", 
        "alterStatementSuffixUpdateColumns", "alterStatementSuffixProtections", 
        "alterStatementSuffixDropConstraint", "alterStatementSuffixRenameCol", 
        "alterStatementSuffixUpdateStatsCol", "alterStatementSuffixUpdateStats", 
        "alterStatementChangeColPosition", "alterStatementSuffixAddPartitions", 
        "alterStatementSuffixAddPartitionsElement", "alterStatementSuffixTouch", 
        "alterStatementSuffixArchive", "alterStatementSuffixUnArchive", 
        "partitionLocation", "alterStatementSuffixRecoverPartitions", "alterStatementSuffixDropPartitions", 
        "alterStatementSuffixProperties", "alterViewSuffixProperties", "alterStatementSuffixSerdeProperties", 
        "tablePartitionPrefix", "alterStatementSuffixFileFormat", "alterStatementSuffixClusterbySortby", 
        "alterTblPartitionStatementSuffixSkewedLocation", "skewedLocations", 
        "skewedLocationsList", "skewedLocationMap", "alterStatementSuffixLocation", 
        "alterStatementSuffixSkewedby", "alterStatementSuffixExchangePartition", 
        "alterStatementSuffixRenamePart", "alterStatementSuffixStatsPart", 
        "alterStatementSuffixMergeFiles", "alterStatementSuffixBucketNum", 
        "blocking", "compactPool", "alterStatementSuffixCompact", "alterStatementSuffixSetOwner", 
        "alterStatementSuffixSetPartSpec", "alterStatementSuffixExecute", 
        "alterIndexStatementSuffix", "fileFormat", "alterDataConnectorStatementSuffix", 
        "alterDataConnectorSuffixProperties", "alterDataConnectorSuffixSetOwner", 
        "alterDataConnectorSuffixSetUrl", "likeTableOrFile", "createTableStatement", 
        "createDataConnectorStatement", "dataConnectorComment", "dataConnectorUrl", 
        "dataConnectorType", "dcProperties", "dropDataConnectorStatement", 
        "tableAllColumns", "defaultValue", "expressionList", "aliasList", 
        "fromClause", "fromSource", "atomjoinSource", "joinSource", "joinSourcePart", 
        "uniqueJoinSource", "uniqueJoinExpr", "uniqueJoinToken", "joinToken", 
        "lateralView", "tableAlias", "tableBucketSample", "splitSample", 
        "tableSample", "tableSource", "asOfClause", "uniqueJoinTableSource", 
        "dbSchemaName", "dbSchemaNameCreate", "tableOrView", "tableName", 
        "tableNameCreate", "viewName", "viewNameCreate", "subQuerySource", 
        "partitioningSpec", "partitionTableFunctionSource", "partitionedTableFunction", 
        "whereClause", "searchCondition", "valuesSource", "valuesClause", 
        "valuesTableConstructor", "valueRowConstructor", "firstValueRowConstructor", 
        "virtualTableSource", "selectClause", "all_distinct", "selectList", 
        "selectTrfmClause", "selectItem", "trfmClause", "selectExpression", 
        "selectExpressionList", "window_clause", "window_defn", "window_specification", 
        "window_frame", "window_range_expression", "window_value_expression", 
        "window_frame_start_boundary", "window_frame_boundary", "groupByClause", 
        "groupby_expression", "groupByEmpty", "rollupStandard", "rollupOldSyntax", 
        "groupingSetExpression", "groupingSetExpressionMultiple", "groupingExpressionSingle", 
        "havingClause", "qualifyClause", "havingCondition", "expressionsInParenthesis", 
        "expressionsNotInParenthesis", "expressionPart", "expressionOrDefault", 
        "firstExpressionsWithAlias", "expressionWithAlias", "expressions", 
        "columnRefOrderInParenthesis", "columnRefOrderNotInParenthesis", 
        "orderByClause", "clusterByClause", "partitionByClause", "distributeByClause", 
        "sortByClause", "trimFunction", "function_", "null_treatment", "functionNameCreate", 
        "functionNameForDDL", "functionNameForInvoke", "userDefinedFuncName", 
        "internalFunctionName", "castExpression", "caseExpression", "whenExpression", 
        "floorExpression", "floorDateQualifiers", "extractExpression", "timeQualifiers", 
        "constant", "prepareStmtParam", "parameterIdx", "stringLiteralSequence", 
        "charSetStringLiteral", "dateLiteral", "timestampLiteral", "timestampLocalTZLiteral", 
        "intervalValue", "intervalLiteral", "intervalExpression", "intervalQualifiers", 
        "expression", "atomExpression", "precedenceFieldExpression", "precedenceUnaryOperator", 
        "precedenceUnaryPrefixExpression", "precedenceBitwiseXorOperator", 
        "precedenceBitwiseXorExpression", "precedenceStarOperator", "precedenceStarExpression", 
        "precedencePlusOperator", "precedencePlusExpression", "precedenceConcatenateOperator", 
        "precedenceConcatenateExpression", "precedenceAmpersandOperator", 
        "precedenceAmpersandExpression", "precedenceBitwiseOrOperator", 
        "precedenceBitwiseOrExpression", "precedenceRegexpOperator", "precedenceSimilarOperator", 
        "subQueryExpression", "precedenceSimilarExpression", "precedenceSimilarExpressionMain", 
        "precedenceSimilarExpressionPart", "precedenceSimilarExpressionAtom", 
        "precedenceSimilarExpressionQuantifierPredicate", "quantifierType", 
        "precedenceSimilarExpressionIn", "precedenceSimilarExpressionPartNot", 
        "precedenceDistinctOperator", "precedenceEqualOperator", "precedenceEqualExpression", 
        "isCondition", "precedenceUnarySuffixExpression", "precedenceNotOperator", 
        "precedenceNotExpression", "precedenceAndOperator", "precedenceAndExpression", 
        "precedenceOrOperator", "precedenceOrExpression", "booleanValue", 
        "booleanValueTok", "tableOrPartition", "partitionSpec", "partitionVal", 
        "partitionSelectorSpec", "partitionSelectorVal", "partitionSelectorOperator", 
        "subQuerySelectorOperator", "sysFuncNames", "id_", "functionIdentifier", 
        "principalIdentifier", "nonReserved", "sql11ReservedKeywordsUsedAsFunctionName", 
        "hint", "hintList", "hintItem", "hintName", "hintArgs", "hintArgName", 
        "prepareStatement", "executeStatement", "executeParamList", "resourcePlanDdlStatements", 
        "rpAssign", "rpAssignList", "rpUnassign", "rpUnassignList", "createResourcePlanStatement", 
        "withReplace", "activate", "enable", "disable", "unmanaged", "year", 
        "month", "week", "day", "hour", "minute", "second", "decimal", "alterResourcePlanStatement", 
        "globalWmStatement", "replaceResourcePlanStatement", "dropResourcePlanStatement", 
        "poolPath", "triggerExpression", "triggerExpressionStandalone", 
        "triggerOrExpression", "triggerAndExpression", "triggerAtomExpression", 
        "triggerLiteral", "comparisionOperator", "triggerActionExpression", 
        "triggerActionExpressionStandalone", "createTriggerStatement", "alterTriggerStatement", 
        "dropTriggerStatement", "poolAssign", "poolAssignList", "createPoolStatement", 
        "alterPoolStatement", "dropPoolStatement", "createMappingStatement", 
        "alterMappingStatement", "dropMappingStatement",
    ];

    public get grammarFileName(): string { return "HiveSqlParser.g4"; }
    public get literalNames(): (string | null)[] { return HiveSqlParser.literalNames; }
    public get symbolicNames(): (string | null)[] { return HiveSqlParser.symbolicNames; }
    public get ruleNames(): string[] { return HiveSqlParser.ruleNames; }
    public get serializedATN(): number[] { return HiveSqlParser._serializedATN; }

    protected createFailedPredicateException(predicate?: string, message?: string): antlr.FailedPredicateException {
        return new antlr.FailedPredicateException(this, predicate, message);
    }

    public constructor(input: antlr.TokenStream) {
        super(input);
        this.interpreter = new antlr.ParserATNSimulator(this, HiveSqlParser._ATN, HiveSqlParser.decisionsToDFA, new antlr.PredictionContextCache());
    }
    public program(): ProgramContext {
        let localContext = new ProgramContext(this.context, this.state);
        this.enterRule(localContext, 0, HiveSqlParser.RULE_program);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1045;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1538) !== 0) || _la === 48 || _la === 58 || ((((_la - 86)) & ~0x1F) === 0 && ((1 << (_la - 86)) & 540050201) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 17825795) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 8388865) !== 0) || ((((_la - 187)) & ~0x1F) === 0 && ((1 << (_la - 187)) & 33622025) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 810024961) !== 0) || ((((_la - 283)) & ~0x1F) === 0 && ((1 << (_la - 283)) & 35717185) !== 0) || _la === 318 || ((((_la - 351)) & ~0x1F) === 0 && ((1 << (_la - 351)) & 8537089) !== 0) || _la === 387 || _la === 399) {
                {
                {
                this.state = 1042;
                this.statement();
                }
                }
                this.state = 1047;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 1048;
            this.match(HiveSqlParser.EOF);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public statement(): StatementContext {
        let localContext = new StatementContext(this.context, this.state);
        this.enterRule(localContext, 2, HiveSqlParser.RULE_statement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1052;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_EXPLAIN:
                {
                this.state = 1050;
                this.explainStatement();
                }
                break;
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ALTER:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_COMMIT:
            case HiveSqlParser.KW_CREATE:
            case HiveSqlParser.KW_DELETE:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DESCRIBE:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DROP:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_FROM:
            case HiveSqlParser.KW_GRANT:
            case HiveSqlParser.KW_IMPORT:
            case HiveSqlParser.KW_INSERT:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_MERGE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_PREPARE:
            case HiveSqlParser.KW_REDUCE:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REVOKE:
            case HiveSqlParser.KW_ROLLBACK:
            case HiveSqlParser.KW_SELECT:
            case HiveSqlParser.KW_SET:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_START:
            case HiveSqlParser.KW_TRUNCATE:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UPDATE:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_VALUES:
            case HiveSqlParser.KW_WITH:
            case HiveSqlParser.LPAREN:
                {
                this.state = 1051;
                this.execStatement();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 1055;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context) ) {
            case 1:
                {
                this.state = 1054;
                this.match(HiveSqlParser.SEMICOLON);
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public explainStatement(): ExplainStatementContext {
        let localContext = new ExplainStatementContext(this.context, this.state);
        this.enterRule(localContext, 4, HiveSqlParser.RULE_explainStatement);
        try {
            let alternative: number;
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1057;
            this.match(HiveSqlParser.KW_EXPLAIN);
            this.state = 1067;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ALTER:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AUTHORIZATION:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_COMMIT:
            case HiveSqlParser.KW_CREATE:
            case HiveSqlParser.KW_DDL:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DELETE:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DESCRIBE:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DROP:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXTENDED:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FROM:
            case HiveSqlParser.KW_GRANT:
            case HiveSqlParser.KW_IMPORT:
            case HiveSqlParser.KW_INSERT:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_MERGE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_PREPARE:
            case HiveSqlParser.KW_REDUCE:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REVOKE:
            case HiveSqlParser.KW_ROLLBACK:
            case HiveSqlParser.KW_SELECT:
            case HiveSqlParser.KW_SET:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_START:
            case HiveSqlParser.KW_TRUNCATE:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UPDATE:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_VALUES:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_WITH:
            case HiveSqlParser.LPAREN:
                {
                this.state = 1061;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                        {
                        this.state = 1058;
                        this.explainOption();
                        }
                        }
                    }
                    this.state = 1063;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context);
                }
                this.state = 1064;
                this.execStatement();
                }
                break;
            case HiveSqlParser.KW_REWRITE:
                {
                this.state = 1065;
                this.match(HiveSqlParser.KW_REWRITE);
                this.state = 1066;
                this.queryStatementExpression();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public explainOption(): ExplainOptionContext {
        let localContext = new ExplainOptionContext(this.context, this.state);
        this.enterRule(localContext, 6, HiveSqlParser.RULE_explainOption);
        let _la: number;
        try {
            this.state = 1091;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_EXTENDED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1069;
                this.match(HiveSqlParser.KW_EXTENDED);
                }
                break;
            case HiveSqlParser.KW_FORMATTED:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1070;
                this.match(HiveSqlParser.KW_FORMATTED);
                }
                break;
            case HiveSqlParser.KW_DEPENDENCY:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1071;
                this.match(HiveSqlParser.KW_DEPENDENCY);
                }
                break;
            case HiveSqlParser.KW_CBO:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 1072;
                this.match(HiveSqlParser.KW_CBO);
                this.state = 1074;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 57 || _la === 172) {
                    {
                    this.state = 1073;
                    _la = this.tokenStream.LA(1);
                    if(!(_la === 57 || _la === 172)) {
                    this.errorHandler.recoverInline(this);
                    }
                    else {
                        this.errorHandler.reportMatch(this);
                        this.consume();
                    }
                    }
                }

                }
                break;
            case HiveSqlParser.KW_LOGICAL:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 1076;
                this.match(HiveSqlParser.KW_LOGICAL);
                }
                break;
            case HiveSqlParser.KW_AUTHORIZATION:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 1077;
                this.match(HiveSqlParser.KW_AUTHORIZATION);
                }
                break;
            case HiveSqlParser.KW_ANALYZE:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 1078;
                this.match(HiveSqlParser.KW_ANALYZE);
                }
                break;
            case HiveSqlParser.KW_REOPTIMIZATION:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 1079;
                this.match(HiveSqlParser.KW_REOPTIMIZATION);
                }
                break;
            case HiveSqlParser.KW_LOCKS:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 1080;
                this.match(HiveSqlParser.KW_LOCKS);
                }
                break;
            case HiveSqlParser.KW_AST:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 1081;
                this.match(HiveSqlParser.KW_AST);
                }
                break;
            case HiveSqlParser.KW_VECTORIZATION:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 1082;
                this.match(HiveSqlParser.KW_VECTORIZATION);
                this.state = 1084;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 225) {
                    {
                    this.state = 1083;
                    this.vectorizationOnly();
                    }
                }

                this.state = 1087;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 91 || _la === 121 || _la === 226 || _la === 325) {
                    {
                    this.state = 1086;
                    this.vectorizatonDetail();
                    }
                }

                }
                break;
            case HiveSqlParser.KW_DEBUG:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 1089;
                this.match(HiveSqlParser.KW_DEBUG);
                }
                break;
            case HiveSqlParser.KW_DDL:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 1090;
                this.match(HiveSqlParser.KW_DDL);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public vectorizationOnly(): VectorizationOnlyContext {
        let localContext = new VectorizationOnlyContext(this.context, this.state);
        this.enterRule(localContext, 8, HiveSqlParser.RULE_vectorizationOnly);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1093;
            this.match(HiveSqlParser.KW_ONLY);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public vectorizatonDetail(): VectorizatonDetailContext {
        let localContext = new VectorizatonDetailContext(this.context, this.state);
        this.enterRule(localContext, 10, HiveSqlParser.RULE_vectorizatonDetail);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1095;
            _la = this.tokenStream.LA(1);
            if(!(_la === 91 || _la === 121 || _la === 226 || _la === 325)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public execStatement(): ExecStatementContext {
        let localContext = new ExecStatementContext(this.context, this.state);
        this.enterRule(localContext, 12, HiveSqlParser.RULE_execStatement);
        try {
            this.state = 1111;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1097;
                this.queryStatementExpression();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1098;
                this.loadStatement();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1099;
                this.exportStatement();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 1100;
                this.importStatement();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 1101;
                this.replDumpStatement();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 1102;
                this.replLoadStatement();
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 1103;
                this.replStatusStatement();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 1104;
                this.ddlStatement();
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 1105;
                this.deleteStatement();
                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 1106;
                this.updateStatement();
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 1107;
                this.sqlTransactionStatement();
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 1108;
                this.mergeStatement();
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 1109;
                this.prepareStatement();
                }
                break;
            case 14:
                this.enterOuterAlt(localContext, 14);
                {
                this.state = 1110;
                this.executeStatement();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public loadStatement(): LoadStatementContext {
        let localContext = new LoadStatementContext(this.context, this.state);
        this.enterRule(localContext, 14, HiveSqlParser.RULE_loadStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1113;
            this.match(HiveSqlParser.KW_LOAD);
            this.state = 1114;
            this.match(HiveSqlParser.KW_DATA);
            this.state = 1116;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 188) {
                {
                this.state = 1115;
                this.match(HiveSqlParser.KW_LOCAL);
                }
            }

            this.state = 1118;
            this.match(HiveSqlParser.KW_INPATH);
            this.state = 1119;
            this.match(HiveSqlParser.StringLiteral);
            this.state = 1121;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 235) {
                {
                this.state = 1120;
                this.match(HiveSqlParser.KW_OVERWRITE);
                }
            }

            this.state = 1123;
            this.match(HiveSqlParser.KW_INTO);
            this.state = 1124;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1125;
            this.tableOrPartition();
            this.state = 1127;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 160) {
                {
                this.state = 1126;
                this.inputFileFormat();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropPartitionsIgnoreClause(): DropPartitionsIgnoreClauseContext {
        let localContext = new DropPartitionsIgnoreClauseContext(this.context, this.state);
        this.enterRule(localContext, 16, HiveSqlParser.RULE_dropPartitionsIgnoreClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1129;
            this.match(HiveSqlParser.KW_IGNORE);
            this.state = 1130;
            this.match(HiveSqlParser.KW_PROTECTION);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replicationClause(): ReplicationClauseContext {
        let localContext = new ReplicationClauseContext(this.context, this.state);
        this.enterRule(localContext, 18, HiveSqlParser.RULE_replicationClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1132;
            this.match(HiveSqlParser.KW_FOR);
            this.state = 1134;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 204) {
                {
                this.state = 1133;
                this.match(HiveSqlParser.KW_METADATA);
                }
            }

            this.state = 1136;
            this.match(HiveSqlParser.KW_REPLICATION);
            this.state = 1137;
            this.match(HiveSqlParser.LPAREN);
            this.state = 1138;
            this.match(HiveSqlParser.StringLiteral);
            this.state = 1139;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public exportStatement(): ExportStatementContext {
        let localContext = new ExportStatementContext(this.context, this.state);
        this.enterRule(localContext, 20, HiveSqlParser.RULE_exportStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1141;
            this.match(HiveSqlParser.KW_EXPORT);
            this.state = 1142;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1143;
            this.tableOrPartition();
            this.state = 1144;
            this.match(HiveSqlParser.KW_TO);
            this.state = 1145;
            this.match(HiveSqlParser.StringLiteral);
            this.state = 1147;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 134) {
                {
                this.state = 1146;
                this.replicationClause();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public importStatement(): ImportStatementContext {
        let localContext = new ImportStatementContext(this.context, this.state);
        this.enterRule(localContext, 22, HiveSqlParser.RULE_importStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1149;
            this.match(HiveSqlParser.KW_IMPORT);
            this.state = 1155;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 123 || _la === 329) {
                {
                this.state = 1151;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 123) {
                    {
                    this.state = 1150;
                    this.match(HiveSqlParser.KW_EXTERNAL);
                    }
                }

                this.state = 1153;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1154;
                this.tableOrPartition();
                }
            }

            this.state = 1157;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 1158;
            localContext._path = this.match(HiveSqlParser.StringLiteral);
            this.state = 1160;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 189) {
                {
                this.state = 1159;
                this.tableLocation();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replDumpStatement(): ReplDumpStatementContext {
        let localContext = new ReplDumpStatementContext(this.context, this.state);
        this.enterRule(localContext, 24, HiveSqlParser.RULE_replDumpStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1162;
            this.match(HiveSqlParser.KW_REPL);
            this.state = 1163;
            this.match(HiveSqlParser.KW_DUMP);
            this.state = 1164;
            localContext._dbPolicy = this.replDbPolicy();
            this.state = 1167;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) {
            case 1:
                {
                this.state = 1165;
                this.match(HiveSqlParser.KW_REPLACE);
                this.state = 1166;
                localContext._oldDbPolicy = this.replDbPolicy();
                }
                break;
            }
            this.state = 1171;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 19, this.context) ) {
            case 1:
                {
                this.state = 1169;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 1170;
                localContext._replConf = this.replConfigs();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replDbPolicy(): ReplDbPolicyContext {
        let localContext = new ReplDbPolicyContext(this.context, this.state);
        this.enterRule(localContext, 26, HiveSqlParser.RULE_replDbPolicy);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1173;
            localContext._dbName = this.dbSchemaName();
            this.state = 1176;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 395) {
                {
                this.state = 1174;
                this.match(HiveSqlParser.DOT);
                this.state = 1175;
                localContext._tablePolicy = this.replTableLevelPolicy();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replLoadStatement(): ReplLoadStatementContext {
        let localContext = new ReplLoadStatementContext(this.context, this.state);
        this.enterRule(localContext, 28, HiveSqlParser.RULE_replLoadStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1178;
            this.match(HiveSqlParser.KW_REPL);
            this.state = 1179;
            this.match(HiveSqlParser.KW_LOAD);
            this.state = 1180;
            localContext._sourceDbPolicy = this.replDbPolicy();
            this.state = 1183;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 166) {
                {
                this.state = 1181;
                this.match(HiveSqlParser.KW_INTO);
                this.state = 1182;
                localContext._dbName = this.dbSchemaName();
                }
            }

            this.state = 1187;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) {
            case 1:
                {
                this.state = 1185;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 1186;
                localContext._replConf = this.replConfigs();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replConfigs(): ReplConfigsContext {
        let localContext = new ReplConfigsContext(this.context, this.state);
        this.enterRule(localContext, 30, HiveSqlParser.RULE_replConfigs);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1189;
            this.match(HiveSqlParser.LPAREN);
            this.state = 1190;
            this.replConfigsList();
            this.state = 1191;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replConfigsList(): ReplConfigsListContext {
        let localContext = new ReplConfigsListContext(this.context, this.state);
        this.enterRule(localContext, 32, HiveSqlParser.RULE_replConfigsList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1193;
            this.keyValueProperty();
            this.state = 1198;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 1194;
                this.match(HiveSqlParser.COMMA);
                this.state = 1195;
                this.keyValueProperty();
                }
                }
                this.state = 1200;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replTableLevelPolicy(): ReplTableLevelPolicyContext {
        let localContext = new ReplTableLevelPolicyContext(this.context, this.state);
        this.enterRule(localContext, 34, HiveSqlParser.RULE_replTableLevelPolicy);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1201;
            localContext._replTablesIncludeList = this.match(HiveSqlParser.StringLiteral);
            this.state = 1204;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 395) {
                {
                this.state = 1202;
                this.match(HiveSqlParser.DOT);
                this.state = 1203;
                localContext._replTablesExcludeList = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replStatusStatement(): ReplStatusStatementContext {
        let localContext = new ReplStatusStatementContext(this.context, this.state);
        this.enterRule(localContext, 36, HiveSqlParser.RULE_replStatusStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1206;
            this.match(HiveSqlParser.KW_REPL);
            this.state = 1207;
            this.match(HiveSqlParser.KW_STATUS);
            this.state = 1208;
            localContext._dbName = this.dbSchemaName();
            this.state = 1211;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) {
            case 1:
                {
                this.state = 1209;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 1210;
                localContext._replConf = this.replConfigs();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public ddlStatement(): DdlStatementContext {
        let localContext = new DdlStatementContext(this.context, this.state);
        this.enterRule(localContext, 38, HiveSqlParser.RULE_ddlStatement);
        try {
            this.state = 1260;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1213;
                this.createDatabaseStatement();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1214;
                this.switchDatabaseStatement();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1215;
                this.dropDatabaseStatement();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 1216;
                this.createTableStatement();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 1217;
                this.dropTableStatement();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 1218;
                this.truncateTableStatement();
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 1219;
                this.alterStatement();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 1220;
                this.descStatement();
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 1221;
                this.showStatement();
                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 1222;
                this.metastoreCheck();
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 1223;
                this.createViewStatement();
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 1224;
                this.createMaterializedViewStatement();
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 1225;
                this.createScheduledQueryStatement();
                }
                break;
            case 14:
                this.enterOuterAlt(localContext, 14);
                {
                this.state = 1226;
                this.alterScheduledQueryStatement();
                }
                break;
            case 15:
                this.enterOuterAlt(localContext, 15);
                {
                this.state = 1227;
                this.dropScheduledQueryStatement();
                }
                break;
            case 16:
                this.enterOuterAlt(localContext, 16);
                {
                this.state = 1228;
                this.dropViewStatement();
                }
                break;
            case 17:
                this.enterOuterAlt(localContext, 17);
                {
                this.state = 1229;
                this.dropMaterializedViewStatement();
                }
                break;
            case 18:
                this.enterOuterAlt(localContext, 18);
                {
                this.state = 1230;
                this.createFunctionStatement();
                }
                break;
            case 19:
                this.enterOuterAlt(localContext, 19);
                {
                this.state = 1231;
                this.createMacroStatement();
                }
                break;
            case 20:
                this.enterOuterAlt(localContext, 20);
                {
                this.state = 1232;
                this.dropFunctionStatement();
                }
                break;
            case 21:
                this.enterOuterAlt(localContext, 21);
                {
                this.state = 1233;
                this.reloadFunctionsStatement();
                }
                break;
            case 22:
                this.enterOuterAlt(localContext, 22);
                {
                this.state = 1234;
                this.dropMacroStatement();
                }
                break;
            case 23:
                this.enterOuterAlt(localContext, 23);
                {
                this.state = 1235;
                this.createIndexStatement();
                }
                break;
            case 24:
                this.enterOuterAlt(localContext, 24);
                {
                this.state = 1236;
                this.dropIndexStatement();
                }
                break;
            case 25:
                this.enterOuterAlt(localContext, 25);
                {
                this.state = 1237;
                this.analyzeStatement();
                }
                break;
            case 26:
                this.enterOuterAlt(localContext, 26);
                {
                this.state = 1238;
                this.lockStatement();
                }
                break;
            case 27:
                this.enterOuterAlt(localContext, 27);
                {
                this.state = 1239;
                this.unlockStatement();
                }
                break;
            case 28:
                this.enterOuterAlt(localContext, 28);
                {
                this.state = 1240;
                this.lockDatabase();
                }
                break;
            case 29:
                this.enterOuterAlt(localContext, 29);
                {
                this.state = 1241;
                this.unlockDatabase();
                }
                break;
            case 30:
                this.enterOuterAlt(localContext, 30);
                {
                this.state = 1242;
                this.createRoleStatement();
                }
                break;
            case 31:
                this.enterOuterAlt(localContext, 31);
                {
                this.state = 1243;
                this.dropRoleStatement();
                }
                break;
            case 32:
                this.enterOuterAlt(localContext, 32);
                {
                this.state = 1244;
                this.grantPrivileges();
                }
                break;
            case 33:
                this.enterOuterAlt(localContext, 33);
                {
                this.state = 1245;
                this.revokePrivileges();
                }
                break;
            case 34:
                this.enterOuterAlt(localContext, 34);
                {
                this.state = 1246;
                this.showGrants();
                }
                break;
            case 35:
                this.enterOuterAlt(localContext, 35);
                {
                this.state = 1247;
                this.showRoleGrants();
                }
                break;
            case 36:
                this.enterOuterAlt(localContext, 36);
                {
                this.state = 1248;
                this.showRolePrincipals();
                }
                break;
            case 37:
                this.enterOuterAlt(localContext, 37);
                {
                this.state = 1249;
                this.showRoles();
                }
                break;
            case 38:
                this.enterOuterAlt(localContext, 38);
                {
                this.state = 1250;
                this.grantRole();
                }
                break;
            case 39:
                this.enterOuterAlt(localContext, 39);
                {
                this.state = 1251;
                this.revokeRole();
                }
                break;
            case 40:
                this.enterOuterAlt(localContext, 40);
                {
                this.state = 1252;
                this.setRole();
                }
                break;
            case 41:
                this.enterOuterAlt(localContext, 41);
                {
                this.state = 1253;
                this.showCurrentRole();
                }
                break;
            case 42:
                this.enterOuterAlt(localContext, 42);
                {
                this.state = 1254;
                this.abortTransactionStatement();
                }
                break;
            case 43:
                this.enterOuterAlt(localContext, 43);
                {
                this.state = 1255;
                this.abortCompactionStatement();
                }
                break;
            case 44:
                this.enterOuterAlt(localContext, 44);
                {
                this.state = 1256;
                this.killQueryStatement();
                }
                break;
            case 45:
                this.enterOuterAlt(localContext, 45);
                {
                this.state = 1257;
                this.resourcePlanDdlStatements();
                }
                break;
            case 46:
                this.enterOuterAlt(localContext, 46);
                {
                this.state = 1258;
                this.createDataConnectorStatement();
                }
                break;
            case 47:
                this.enterOuterAlt(localContext, 47);
                {
                this.state = 1259;
                this.dropDataConnectorStatement();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public ifExists(): IfExistsContext {
        let localContext = new IfExistsContext(this.context, this.state);
        this.enterRule(localContext, 40, HiveSqlParser.RULE_ifExists);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1262;
            this.match(HiveSqlParser.KW_IF);
            this.state = 1263;
            this.match(HiveSqlParser.KW_EXISTS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public restrictOrCascade(): RestrictOrCascadeContext {
        let localContext = new RestrictOrCascadeContext(this.context, this.state);
        this.enterRule(localContext, 42, HiveSqlParser.RULE_restrictOrCascade);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1265;
            _la = this.tokenStream.LA(1);
            if(!(_la === 34 || _la === 282)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public ifNotExists(): IfNotExistsContext {
        let localContext = new IfNotExistsContext(this.context, this.state);
        this.enterRule(localContext, 44, HiveSqlParser.RULE_ifNotExists);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1267;
            this.match(HiveSqlParser.KW_IF);
            this.state = 1268;
            this.match(HiveSqlParser.KW_NOT);
            this.state = 1269;
            this.match(HiveSqlParser.KW_EXISTS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public force(): ForceContext {
        let localContext = new ForceContext(this.context, this.state);
        this.enterRule(localContext, 46, HiveSqlParser.RULE_force);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1271;
            this.match(HiveSqlParser.KW_FORCE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rewriteEnabled(): RewriteEnabledContext {
        let localContext = new RewriteEnabledContext(this.context, this.state);
        this.enterRule(localContext, 48, HiveSqlParser.RULE_rewriteEnabled);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1273;
            this.enable();
            this.state = 1274;
            this.match(HiveSqlParser.KW_REWRITE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rewriteDisabled(): RewriteDisabledContext {
        let localContext = new RewriteDisabledContext(this.context, this.state);
        this.enterRule(localContext, 50, HiveSqlParser.RULE_rewriteDisabled);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1276;
            this.disable();
            this.state = 1277;
            this.match(HiveSqlParser.KW_REWRITE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public storedAsDirs(): StoredAsDirsContext {
        let localContext = new StoredAsDirsContext(this.context, this.state);
        this.enterRule(localContext, 52, HiveSqlParser.RULE_storedAsDirs);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1279;
            this.match(HiveSqlParser.KW_STORED);
            this.state = 1280;
            this.match(HiveSqlParser.KW_AS);
            this.state = 1281;
            this.match(HiveSqlParser.KW_DIRECTORIES);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public orReplace(): OrReplaceContext {
        let localContext = new OrReplaceContext(this.context, this.state);
        this.enterRule(localContext, 54, HiveSqlParser.RULE_orReplace);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1283;
            this.match(HiveSqlParser.KW_OR);
            this.state = 1284;
            this.match(HiveSqlParser.KW_REPLACE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createDatabaseStatement(): CreateDatabaseStatementContext {
        let localContext = new CreateDatabaseStatementContext(this.context, this.state);
        this.enterRule(localContext, 56, HiveSqlParser.RULE_createDatabaseStatement);
        let _la: number;
        try {
            this.state = 1325;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 36, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1286;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1288;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 273) {
                    {
                    this.state = 1287;
                    this.match(HiveSqlParser.KW_REMOTE);
                    }
                }

                this.state = 1290;
                this.db_schema();
                this.state = 1292;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                    this.state = 1291;
                    this.ifNotExists();
                    }
                }

                this.state = 1294;
                localContext._name = this.dbSchemaNameCreate();
                this.state = 1296;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                    this.state = 1295;
                    this.databaseComment();
                    }
                }

                this.state = 1299;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 189) {
                    {
                    this.state = 1298;
                    this.dbLocation();
                    }
                }

                this.state = 1302;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 196) {
                    {
                    this.state = 1301;
                    this.dbManagedLocation();
                    }
                }

                this.state = 1307;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) {
                case 1:
                    {
                    this.state = 1304;
                    this.match(HiveSqlParser.KW_WITH);
                    this.state = 1305;
                    this.match(HiveSqlParser.KW_DBPROPERTIES);
                    this.state = 1306;
                    localContext._dbprops = this.dbProperties();
                    }
                    break;
                }
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1309;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1310;
                this.match(HiveSqlParser.KW_REMOTE);
                this.state = 1311;
                this.db_schema();
                this.state = 1313;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                    this.state = 1312;
                    this.ifNotExists();
                    }
                }

                this.state = 1315;
                localContext._name = this.dbSchemaNameCreate();
                this.state = 1317;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                    this.state = 1316;
                    this.databaseComment();
                    }
                }

                this.state = 1319;
                this.dbConnectorName();
                this.state = 1323;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 35, this.context) ) {
                case 1:
                    {
                    this.state = 1320;
                    this.match(HiveSqlParser.KW_WITH);
                    this.state = 1321;
                    this.match(HiveSqlParser.KW_DBPROPERTIES);
                    this.state = 1322;
                    localContext._dbprops = this.dbProperties();
                    }
                    break;
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dbLocation(): DbLocationContext {
        let localContext = new DbLocationContext(this.context, this.state);
        this.enterRule(localContext, 58, HiveSqlParser.RULE_dbLocation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1327;
            this.match(HiveSqlParser.KW_LOCATION);
            this.state = 1328;
            localContext._locn = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dbManagedLocation(): DbManagedLocationContext {
        let localContext = new DbManagedLocationContext(this.context, this.state);
        this.enterRule(localContext, 60, HiveSqlParser.RULE_dbManagedLocation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1330;
            this.match(HiveSqlParser.KW_MANAGEDLOCATION);
            this.state = 1331;
            localContext._locn = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dbProperties(): DbPropertiesContext {
        let localContext = new DbPropertiesContext(this.context, this.state);
        this.enterRule(localContext, 62, HiveSqlParser.RULE_dbProperties);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1333;
            this.match(HiveSqlParser.LPAREN);
            this.state = 1334;
            this.dbPropertiesList();
            this.state = 1335;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dbPropertiesList(): DbPropertiesListContext {
        let localContext = new DbPropertiesListContext(this.context, this.state);
        this.enterRule(localContext, 64, HiveSqlParser.RULE_dbPropertiesList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1337;
            this.keyValueProperty();
            this.state = 1342;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 1338;
                this.match(HiveSqlParser.COMMA);
                this.state = 1339;
                this.keyValueProperty();
                }
                }
                this.state = 1344;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dbConnectorName(): DbConnectorNameContext {
        let localContext = new DbConnectorNameContext(this.context, this.state);
        this.enterRule(localContext, 66, HiveSqlParser.RULE_dbConnectorName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1345;
            this.match(HiveSqlParser.KW_USING);
            this.state = 1346;
            localContext._dcName = this.dbSchemaName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public switchDatabaseStatement(): SwitchDatabaseStatementContext {
        let localContext = new SwitchDatabaseStatementContext(this.context, this.state);
        this.enterRule(localContext, 68, HiveSqlParser.RULE_switchDatabaseStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1348;
            this.match(HiveSqlParser.KW_USE);
            this.state = 1349;
            this.dbSchemaName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropDatabaseStatement(): DropDatabaseStatementContext {
        let localContext = new DropDatabaseStatementContext(this.context, this.state);
        this.enterRule(localContext, 70, HiveSqlParser.RULE_dropDatabaseStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1351;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 1352;
            this.db_schema();
            this.state = 1354;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 1353;
                this.ifExists();
                }
            }

            this.state = 1356;
            this.dbSchemaName();
            this.state = 1358;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 34 || _la === 282) {
                {
                this.state = 1357;
                this.restrictOrCascade();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public databaseComment(): DatabaseCommentContext {
        let localContext = new DatabaseCommentContext(this.context, this.state);
        this.enterRule(localContext, 72, HiveSqlParser.RULE_databaseComment);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1360;
            this.match(HiveSqlParser.KW_COMMENT);
            this.state = 1361;
            localContext._comment = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public truncateTableStatement(): TruncateTableStatementContext {
        let localContext = new TruncateTableStatementContext(this.context, this.state);
        this.enterRule(localContext, 74, HiveSqlParser.RULE_truncateTableStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1363;
            this.match(HiveSqlParser.KW_TRUNCATE);
            this.state = 1365;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 329) {
                {
                this.state = 1364;
                this.match(HiveSqlParser.KW_TABLE);
                }
            }

            this.state = 1367;
            this.tablePartitionPrefix();
            this.state = 1373;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 46) {
                {
                this.state = 1368;
                this.match(HiveSqlParser.KW_COLUMNS);
                this.state = 1369;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1370;
                this.columnNameList();
                this.state = 1371;
                this.match(HiveSqlParser.RPAREN);
                }
            }

            this.state = 1376;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 135) {
                {
                this.state = 1375;
                this.force();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropTableStatement(): DropTableStatementContext {
        let localContext = new DropTableStatementContext(this.context, this.state);
        this.enterRule(localContext, 76, HiveSqlParser.RULE_dropTableStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1378;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 1379;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1381;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 1380;
                this.ifExists();
                }
            }

            this.state = 1383;
            this.tableName();
            this.state = 1385;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 255) {
                {
                this.state = 1384;
                this.match(HiveSqlParser.KW_PURGE);
                }
            }

            this.state = 1388;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 134) {
                {
                this.state = 1387;
                this.replicationClause();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public inputFileFormat(): InputFileFormatContext {
        let localContext = new InputFileFormatContext(this.context, this.state);
        this.enterRule(localContext, 78, HiveSqlParser.RULE_inputFileFormat);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1390;
            this.match(HiveSqlParser.KW_INPUTFORMAT);
            this.state = 1391;
            localContext._inFmt = this.match(HiveSqlParser.StringLiteral);
            this.state = 1392;
            this.match(HiveSqlParser.KW_SERDE);
            this.state = 1393;
            localContext._serdeCls = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tabTypeExpr(): TabTypeExprContext {
        let localContext = new TabTypeExprContext(this.context, this.state);
        this.enterRule(localContext, 80, HiveSqlParser.RULE_tabTypeExpr);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1395;
            this.id_();
            this.state = 1398;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 395) {
                {
                this.state = 1396;
                this.match(HiveSqlParser.DOT);
                this.state = 1397;
                this.id_();
                }
            }

            this.state = 1413;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) {
            case 1:
                {
                this.state = 1400;
                this.id_();
                this.state = 1410;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 395) {
                    {
                    {
                    this.state = 1401;
                    this.match(HiveSqlParser.DOT);
                    this.state = 1406;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) {
                    case 1:
                        {
                        this.state = 1402;
                        this.match(HiveSqlParser.KW_ELEM_TYPE);
                        }
                        break;
                    case 2:
                        {
                        this.state = 1403;
                        this.match(HiveSqlParser.KW_KEY_TYPE);
                        }
                        break;
                    case 3:
                        {
                        this.state = 1404;
                        this.match(HiveSqlParser.KW_VALUE_TYPE);
                        }
                        break;
                    case 4:
                        {
                        this.state = 1405;
                        this.id_();
                        }
                        break;
                    }
                    }
                    }
                    this.state = 1412;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partTypeExpr(): PartTypeExprContext {
        let localContext = new PartTypeExprContext(this.context, this.state);
        this.enterRule(localContext, 82, HiveSqlParser.RULE_partTypeExpr);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1415;
            this.tabTypeExpr();
            this.state = 1417;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 237) {
                {
                this.state = 1416;
                this.partitionSpec();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tabPartColTypeExpr(): TabPartColTypeExprContext {
        let localContext = new TabPartColTypeExprContext(this.context, this.state);
        this.enterRule(localContext, 84, HiveSqlParser.RULE_tabPartColTypeExpr);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1419;
            this.tableOrView();
            this.state = 1421;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context) ) {
            case 1:
                {
                this.state = 1420;
                this.partitionSpec();
                }
                break;
            }
            this.state = 1424;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context) ) {
            case 1:
                {
                this.state = 1423;
                this.extColumnName();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public descStatement(): DescStatementContext {
        let localContext = new DescStatementContext(this.context, this.state);
        this.enterRule(localContext, 86, HiveSqlParser.RULE_descStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1426;
            _la = this.tokenStream.LA(1);
            if(!(_la === 89 || _la === 90)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1449;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) {
            case 1:
                {
                this.state = 1427;
                this.db_schema();
                this.state = 1429;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 122) {
                    {
                    this.state = 1428;
                    this.match(HiveSqlParser.KW_EXTENDED);
                    }
                }

                this.state = 1431;
                localContext._dbName = this.dbSchemaName();
                }
                break;
            case 2:
                {
                this.state = 1433;
                this.match(HiveSqlParser.KW_DATACONNECTOR);
                this.state = 1435;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 122) {
                    {
                    this.state = 1434;
                    this.match(HiveSqlParser.KW_EXTENDED);
                    }
                }

                this.state = 1437;
                localContext._dcName = this.dbSchemaName();
                }
                break;
            case 3:
                {
                this.state = 1438;
                this.match(HiveSqlParser.KW_FUNCTION);
                this.state = 1440;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 122) {
                    {
                    this.state = 1439;
                    this.match(HiveSqlParser.KW_EXTENDED);
                    }
                }

                this.state = 1442;
                localContext._name = this.functionNameForDDL();
                }
                break;
            case 4:
                {
                this.state = 1445;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_FORMATTED:
                    {
                    this.state = 1443;
                    localContext._descOptions = this.match(HiveSqlParser.KW_FORMATTED);
                    }
                    break;
                case HiveSqlParser.KW_EXTENDED:
                    {
                    this.state = 1444;
                    localContext._descOptions = this.match(HiveSqlParser.KW_EXTENDED);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                this.state = 1447;
                localContext._parttype = this.tabPartColTypeExpr();
                }
                break;
            case 5:
                {
                this.state = 1448;
                localContext._parttype = this.tabPartColTypeExpr();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public analyzeStatement(): AnalyzeStatementContext {
        let localContext = new AnalyzeStatementContext(this.context, this.state);
        this.enterRule(localContext, 88, HiveSqlParser.RULE_analyzeStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1451;
            this.match(HiveSqlParser.KW_ANALYZE);
            this.state = 1452;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1453;
            localContext._parttype = this.tableOrPartition();
            this.state = 1466;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_COMPUTE:
                {
                this.state = 1454;
                this.match(HiveSqlParser.KW_COMPUTE);
                this.state = 1455;
                this.match(HiveSqlParser.KW_STATISTICS);
                this.state = 1462;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_NOSCAN:
                    {
                    this.state = 1456;
                    localContext._noscan = this.match(HiveSqlParser.KW_NOSCAN);
                    }
                    break;
                case HiveSqlParser.KW_FOR:
                    {
                    this.state = 1457;
                    this.match(HiveSqlParser.KW_FOR);
                    this.state = 1458;
                    this.match(HiveSqlParser.KW_COLUMNS);
                    this.state = 1460;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) {
                    case 1:
                        {
                        this.state = 1459;
                        localContext._statsColumnName = this.columnNameList();
                        }
                        break;
                    }
                    }
                    break;
                case HiveSqlParser.EOF:
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ALTER:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_COMMIT:
                case HiveSqlParser.KW_CREATE:
                case HiveSqlParser.KW_DELETE:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DESCRIBE:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DROP:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_FROM:
                case HiveSqlParser.KW_GRANT:
                case HiveSqlParser.KW_IMPORT:
                case HiveSqlParser.KW_INSERT:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_MERGE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_PREPARE:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REVOKE:
                case HiveSqlParser.KW_ROLLBACK:
                case HiveSqlParser.KW_SELECT:
                case HiveSqlParser.KW_SET:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_START:
                case HiveSqlParser.KW_TRUNCATE:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UPDATE:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_VALUES:
                case HiveSqlParser.KW_WITH:
                case HiveSqlParser.SEMICOLON:
                case HiveSqlParser.LPAREN:
                    break;
                default:
                    break;
                }
                }
                break;
            case HiveSqlParser.KW_CACHE:
                {
                this.state = 1464;
                this.match(HiveSqlParser.KW_CACHE);
                this.state = 1465;
                this.match(HiveSqlParser.KW_METADATA);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public from_in(): From_inContext {
        let localContext = new From_inContext(this.context, this.state);
        this.enterRule(localContext, 90, HiveSqlParser.RULE_from_in);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1468;
            _la = this.tokenStream.LA(1);
            if(!(_la === 139 || _la === 154)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public db_schema(): Db_schemaContext {
        let localContext = new Db_schemaContext(this.context, this.state);
        this.enterRule(localContext, 92, HiveSqlParser.RULE_db_schema);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1470;
            _la = this.tokenStream.LA(1);
            if(!(_la === 67 || _la === 295)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showStatement(): ShowStatementContext {
        let localContext = new ShowStatementContext(this.context, this.state);
        this.enterRule(localContext, 94, HiveSqlParser.RULE_showStatement);
        let _la: number;
        try {
            this.state = 1665;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 100, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1472;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1473;
                _la = this.tokenStream.LA(1);
                if(!(_la === 68 || _la === 296)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 1476;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 184) {
                    {
                    this.state = 1474;
                    this.match(HiveSqlParser.KW_LIKE);
                    this.state = 1475;
                    this.showStmtIdentifier();
                    }
                }

                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1478;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1480;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 122) {
                    {
                    this.state = 1479;
                    localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
                    }
                }

                this.state = 1482;
                this.match(HiveSqlParser.KW_TABLES);
                this.state = 1486;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context) ) {
                case 1:
                    {
                    this.state = 1483;
                    this.from_in();
                    this.state = 1484;
                    localContext._db_name = this.dbSchemaName();
                    }
                    break;
                }
                this.state = 1489;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context) ) {
                case 1:
                    {
                    this.state = 1488;
                    localContext._filter = this.showTablesFilterExpr();
                    }
                    break;
                }
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1491;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1492;
                this.match(HiveSqlParser.KW_VIEWS);
                this.state = 1496;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) {
                case 1:
                    {
                    this.state = 1493;
                    this.from_in();
                    this.state = 1494;
                    localContext._db_name = this.dbSchemaName();
                    }
                    break;
                }
                this.state = 1501;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) {
                case 1:
                    {
                    this.state = 1498;
                    this.match(HiveSqlParser.KW_LIKE);
                    this.state = 1499;
                    this.showStmtIdentifier();
                    }
                    break;
                case 2:
                    {
                    this.state = 1500;
                    this.showStmtIdentifier();
                    }
                    break;
                }
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 1503;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1504;
                this.match(HiveSqlParser.KW_MATERIALIZED);
                this.state = 1505;
                this.match(HiveSqlParser.KW_VIEWS);
                this.state = 1509;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 67, this.context) ) {
                case 1:
                    {
                    this.state = 1506;
                    this.from_in();
                    this.state = 1507;
                    localContext._db_name = this.dbSchemaName();
                    }
                    break;
                }
                this.state = 1514;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) {
                case 1:
                    {
                    this.state = 1511;
                    this.match(HiveSqlParser.KW_LIKE);
                    this.state = 1512;
                    this.showStmtIdentifier();
                    }
                    break;
                case 2:
                    {
                    this.state = 1513;
                    this.showStmtIdentifier();
                    }
                    break;
                }
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 1516;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1518;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 315) {
                    {
                    this.state = 1517;
                    this.match(HiveSqlParser.KW_SORTED);
                    }
                }

                this.state = 1520;
                this.match(HiveSqlParser.KW_COLUMNS);
                this.state = 1521;
                this.from_in();
                this.state = 1522;
                this.tableOrView();
                this.state = 1526;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) {
                case 1:
                    {
                    this.state = 1523;
                    this.from_in();
                    this.state = 1524;
                    localContext._db_name = this.dbSchemaName();
                    }
                    break;
                }
                this.state = 1531;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) {
                case 1:
                    {
                    this.state = 1528;
                    this.match(HiveSqlParser.KW_LIKE);
                    this.state = 1529;
                    this.showStmtIdentifier();
                    }
                    break;
                case 2:
                    {
                    this.state = 1530;
                    this.showStmtIdentifier();
                    }
                    break;
                }
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 1533;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1534;
                this.match(HiveSqlParser.KW_FUNCTIONS);
                this.state = 1537;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 184) {
                    {
                    this.state = 1535;
                    this.match(HiveSqlParser.KW_LIKE);
                    this.state = 1536;
                    this.functionNameForDDL();
                    }
                }

                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 1539;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1540;
                this.match(HiveSqlParser.KW_PARTITIONS);
                this.state = 1541;
                localContext._tabOrViewName = this.tableOrView();
                this.state = 1543;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 237) {
                    {
                    this.state = 1542;
                    this.partitionSpec();
                    }
                }

                this.state = 1546;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 384) {
                    {
                    this.state = 1545;
                    this.whereClause();
                    }
                }

                this.state = 1549;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 229) {
                    {
                    this.state = 1548;
                    this.orderByClause();
                    }
                }

                this.state = 1552;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 185) {
                    {
                    this.state = 1551;
                    this.limitClause();
                    }
                }

                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 1554;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1555;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1561;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_DATABASE:
                case HiveSqlParser.KW_SCHEMA:
                    {
                    this.state = 1556;
                    this.db_schema();
                    this.state = 1557;
                    localContext._db_name = this.dbSchemaName();
                    }
                    break;
                case HiveSqlParser.KW_TABLE:
                    {
                    this.state = 1559;
                    this.match(HiveSqlParser.KW_TABLE);
                    this.state = 1560;
                    localContext._tabName = this.tableName();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 1563;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1564;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1565;
                this.match(HiveSqlParser.KW_EXTENDED);
                this.state = 1569;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 139 || _la === 154) {
                    {
                    this.state = 1566;
                    this.from_in();
                    this.state = 1567;
                    localContext._db_name = this.dbSchemaName();
                    }
                }

                this.state = 1571;
                this.match(HiveSqlParser.KW_LIKE);
                this.state = 1572;
                this.showStmtIdentifier();
                this.state = 1574;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 237) {
                    {
                    this.state = 1573;
                    this.partitionSpec();
                    }
                }

                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 1576;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1577;
                this.match(HiveSqlParser.KW_TBLPROPERTIES);
                this.state = 1578;
                this.tableName();
                this.state = 1582;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context) ) {
                case 1:
                    {
                    this.state = 1579;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 1580;
                    localContext._prptyName = this.match(HiveSqlParser.StringLiteral);
                    this.state = 1581;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                }
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 1584;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1585;
                this.match(HiveSqlParser.KW_LOCKS);
                this.state = 1597;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 84, this.context) ) {
                case 1:
                    {
                    this.state = 1586;
                    this.db_schema();
                    this.state = 1587;
                    localContext._dbName = this.dbSchemaName();
                    this.state = 1589;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 122) {
                        {
                        this.state = 1588;
                        localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
                        }
                    }

                    }
                    break;
                case 2:
                    {
                    this.state = 1592;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 82, this.context) ) {
                    case 1:
                        {
                        this.state = 1591;
                        localContext._parttype = this.partTypeExpr();
                        }
                        break;
                    }
                    this.state = 1595;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 122) {
                        {
                        this.state = 1594;
                        localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
                        }
                    }

                    }
                    break;
                }
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 1599;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1600;
                this.match(HiveSqlParser.KW_COMPACTIONS);
                this.state = 1637;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) {
                case 1:
                    {
                    this.state = 1601;
                    this.compactionId();
                    }
                    break;
                case 2:
                    {
                    this.state = 1602;
                    this.db_schema();
                    this.state = 1603;
                    localContext._dbName = this.dbSchemaName();
                    this.state = 1605;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 246) {
                        {
                        this.state = 1604;
                        this.compactionPool();
                        }
                    }

                    this.state = 1608;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 352) {
                        {
                        this.state = 1607;
                        this.compactionType();
                        }
                    }

                    this.state = 1611;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 320) {
                        {
                        this.state = 1610;
                        this.compactionStatus();
                        }
                    }

                    this.state = 1614;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 229) {
                        {
                        this.state = 1613;
                        this.orderByClause();
                        }
                    }

                    this.state = 1617;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 185) {
                        {
                        this.state = 1616;
                        this.limitClause();
                        }
                    }

                    }
                    break;
                case 3:
                    {
                    this.state = 1620;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) {
                    case 1:
                        {
                        this.state = 1619;
                        localContext._parttype = this.partTypeExpr();
                        }
                        break;
                    }
                    this.state = 1623;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 246) {
                        {
                        this.state = 1622;
                        this.compactionPool();
                        }
                    }

                    this.state = 1626;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 352) {
                        {
                        this.state = 1625;
                        this.compactionType();
                        }
                    }

                    this.state = 1629;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 320) {
                        {
                        this.state = 1628;
                        this.compactionStatus();
                        }
                    }

                    this.state = 1632;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 229) {
                        {
                        this.state = 1631;
                        this.orderByClause();
                        }
                    }

                    this.state = 1635;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 185) {
                        {
                        this.state = 1634;
                        this.limitClause();
                        }
                    }

                    }
                    break;
                }
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 1639;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1640;
                this.match(HiveSqlParser.KW_TRANSACTIONS);
                }
                break;
            case 14:
                this.enterOuterAlt(localContext, 14);
                {
                this.state = 1641;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1642;
                this.match(HiveSqlParser.KW_CONF);
                this.state = 1643;
                this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case 15:
                this.enterOuterAlt(localContext, 15);
                {
                this.state = 1644;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1645;
                this.match(HiveSqlParser.KW_RESOURCE);
                this.state = 1649;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_PLAN:
                    {
                    this.state = 1646;
                    this.match(HiveSqlParser.KW_PLAN);
                    this.state = 1647;
                    localContext._rp_name = this.id_();
                    }
                    break;
                case HiveSqlParser.KW_PLANS:
                    {
                    this.state = 1648;
                    this.match(HiveSqlParser.KW_PLANS);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            case 16:
                this.enterOuterAlt(localContext, 16);
                {
                this.state = 1651;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1652;
                this.match(HiveSqlParser.KW_DATACONNECTORS);
                }
                break;
            case 17:
                this.enterOuterAlt(localContext, 17);
                {
                this.state = 1653;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1655;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 138) {
                    {
                    this.state = 1654;
                    this.match(HiveSqlParser.KW_FORMATTED);
                    }
                }

                this.state = 1657;
                _la = this.tokenStream.LA(1);
                if(!(_la === 155 || _la === 156)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 1658;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1659;
                this.tableName();
                this.state = 1663;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 99, this.context) ) {
                case 1:
                    {
                    this.state = 1660;
                    this.from_in();
                    this.state = 1661;
                    this.dbSchemaName();
                    }
                    break;
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showTablesFilterExpr(): ShowTablesFilterExprContext {
        let localContext = new ShowTablesFilterExprContext(this.context, this.state);
        this.enterRule(localContext, 96, HiveSqlParser.RULE_showTablesFilterExpr);
        try {
            this.state = 1675;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_WHERE:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1667;
                this.match(HiveSqlParser.KW_WHERE);
                this.state = 1668;
                this.id_();
                this.state = 1669;
                this.match(HiveSqlParser.EQUAL);
                this.state = 1670;
                this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case HiveSqlParser.KW_LIKE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1672;
                this.match(HiveSqlParser.KW_LIKE);
                this.state = 1673;
                this.showStmtIdentifier();
                }
                break;
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.StringLiteral:
            case HiveSqlParser.Identifier:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1674;
                this.showStmtIdentifier();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public lockStatement(): LockStatementContext {
        let localContext = new LockStatementContext(this.context, this.state);
        this.enterRule(localContext, 98, HiveSqlParser.RULE_lockStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1677;
            this.match(HiveSqlParser.KW_LOCK);
            this.state = 1678;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1679;
            this.tableName();
            this.state = 1681;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 237) {
                {
                this.state = 1680;
                this.partitionSpec();
                }
            }

            this.state = 1683;
            this.lockMode();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public lockDatabase(): LockDatabaseContext {
        let localContext = new LockDatabaseContext(this.context, this.state);
        this.enterRule(localContext, 100, HiveSqlParser.RULE_lockDatabase);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1685;
            this.match(HiveSqlParser.KW_LOCK);
            this.state = 1686;
            this.db_schema();
            this.state = 1687;
            localContext._dbName = this.dbSchemaName();
            this.state = 1688;
            this.lockMode();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public lockMode(): LockModeContext {
        let localContext = new LockModeContext(this.context, this.state);
        this.enterRule(localContext, 102, HiveSqlParser.RULE_lockMode);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1690;
            _la = this.tokenStream.LA(1);
            if(!(_la === 114 || _la === 307)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public unlockStatement(): UnlockStatementContext {
        let localContext = new UnlockStatementContext(this.context, this.state);
        this.enterRule(localContext, 104, HiveSqlParser.RULE_unlockStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1692;
            this.match(HiveSqlParser.KW_UNLOCK);
            this.state = 1693;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1694;
            this.tableName();
            this.state = 1696;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 237) {
                {
                this.state = 1695;
                this.partitionSpec();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public unlockDatabase(): UnlockDatabaseContext {
        let localContext = new UnlockDatabaseContext(this.context, this.state);
        this.enterRule(localContext, 106, HiveSqlParser.RULE_unlockDatabase);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1698;
            this.match(HiveSqlParser.KW_UNLOCK);
            this.state = 1699;
            this.db_schema();
            this.state = 1700;
            localContext._dbName = this.dbSchemaName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createRoleStatement(): CreateRoleStatementContext {
        let localContext = new CreateRoleStatementContext(this.context, this.state);
        this.enterRule(localContext, 108, HiveSqlParser.RULE_createRoleStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1702;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 1703;
            this.match(HiveSqlParser.KW_ROLE);
            this.state = 1704;
            localContext._roleName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropRoleStatement(): DropRoleStatementContext {
        let localContext = new DropRoleStatementContext(this.context, this.state);
        this.enterRule(localContext, 110, HiveSqlParser.RULE_dropRoleStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1706;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 1707;
            this.match(HiveSqlParser.KW_ROLE);
            this.state = 1708;
            localContext._roleName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public grantPrivileges(): GrantPrivilegesContext {
        let localContext = new GrantPrivilegesContext(this.context, this.state);
        this.enterRule(localContext, 112, HiveSqlParser.RULE_grantPrivileges);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1710;
            this.match(HiveSqlParser.KW_GRANT);
            this.state = 1711;
            localContext._privList = this.privilegeList();
            this.state = 1713;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 224) {
                {
                this.state = 1712;
                this.privilegeObject();
                }
            }

            this.state = 1715;
            this.match(HiveSqlParser.KW_TO);
            this.state = 1716;
            this.principalSpecification();
            this.state = 1718;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 105, this.context) ) {
            case 1:
                {
                this.state = 1717;
                this.withGrantOption();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public revokePrivileges(): RevokePrivilegesContext {
        let localContext = new RevokePrivilegesContext(this.context, this.state);
        this.enterRule(localContext, 114, HiveSqlParser.RULE_revokePrivileges);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1720;
            this.match(HiveSqlParser.KW_REVOKE);
            this.state = 1722;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 143) {
                {
                this.state = 1721;
                this.grantOptionFor();
                }
            }

            this.state = 1724;
            this.privilegeList();
            this.state = 1726;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 224) {
                {
                this.state = 1725;
                this.privilegeObject();
                }
            }

            this.state = 1728;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 1729;
            this.principalSpecification();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public grantRole(): GrantRoleContext {
        let localContext = new GrantRoleContext(this.context, this.state);
        this.enterRule(localContext, 116, HiveSqlParser.RULE_grantRole);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1731;
            this.match(HiveSqlParser.KW_GRANT);
            this.state = 1733;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 108, this.context) ) {
            case 1:
                {
                this.state = 1732;
                this.match(HiveSqlParser.KW_ROLE);
                }
                break;
            }
            this.state = 1735;
            this.id_();
            this.state = 1740;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 1736;
                this.match(HiveSqlParser.COMMA);
                this.state = 1737;
                this.id_();
                }
                }
                this.state = 1742;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 1743;
            this.match(HiveSqlParser.KW_TO);
            this.state = 1744;
            this.principalSpecification();
            this.state = 1746;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 110, this.context) ) {
            case 1:
                {
                this.state = 1745;
                this.withAdminOption();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public revokeRole(): RevokeRoleContext {
        let localContext = new RevokeRoleContext(this.context, this.state);
        this.enterRule(localContext, 118, HiveSqlParser.RULE_revokeRole);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1748;
            this.match(HiveSqlParser.KW_REVOKE);
            this.state = 1750;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) {
            case 1:
                {
                this.state = 1749;
                this.adminOptionFor();
                }
                break;
            }
            this.state = 1753;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 112, this.context) ) {
            case 1:
                {
                this.state = 1752;
                this.match(HiveSqlParser.KW_ROLE);
                }
                break;
            }
            this.state = 1755;
            this.id_();
            this.state = 1760;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 1756;
                this.match(HiveSqlParser.COMMA);
                this.state = 1757;
                this.id_();
                }
                }
                this.state = 1762;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 1763;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 1764;
            this.principalSpecification();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showRoleGrants(): ShowRoleGrantsContext {
        let localContext = new ShowRoleGrantsContext(this.context, this.state);
        this.enterRule(localContext, 120, HiveSqlParser.RULE_showRoleGrants);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1766;
            this.match(HiveSqlParser.KW_SHOW);
            this.state = 1767;
            this.match(HiveSqlParser.KW_ROLE);
            this.state = 1768;
            this.match(HiveSqlParser.KW_GRANT);
            this.state = 1769;
            this.principalName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showRoles(): ShowRolesContext {
        let localContext = new ShowRolesContext(this.context, this.state);
        this.enterRule(localContext, 122, HiveSqlParser.RULE_showRoles);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1771;
            this.match(HiveSqlParser.KW_SHOW);
            this.state = 1772;
            this.match(HiveSqlParser.KW_ROLES);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showCurrentRole(): ShowCurrentRoleContext {
        let localContext = new ShowCurrentRoleContext(this.context, this.state);
        this.enterRule(localContext, 124, HiveSqlParser.RULE_showCurrentRole);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1774;
            this.match(HiveSqlParser.KW_SHOW);
            this.state = 1775;
            this.match(HiveSqlParser.KW_CURRENT);
            this.state = 1776;
            this.match(HiveSqlParser.KW_ROLES);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public setRole(): SetRoleContext {
        let localContext = new SetRoleContext(this.context, this.state);
        this.enterRule(localContext, 126, HiveSqlParser.RULE_setRole);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1778;
            this.match(HiveSqlParser.KW_SET);
            this.state = 1779;
            this.match(HiveSqlParser.KW_ROLE);
            this.state = 1783;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ALL:
                {
                this.state = 1780;
                localContext._all = this.match(HiveSqlParser.KW_ALL);
                }
                break;
            case HiveSqlParser.KW_NONE:
                {
                this.state = 1781;
                localContext._none = this.match(HiveSqlParser.KW_NONE);
                }
                break;
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.Identifier:
                {
                this.state = 1782;
                this.id_();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showGrants(): ShowGrantsContext {
        let localContext = new ShowGrantsContext(this.context, this.state);
        this.enterRule(localContext, 128, HiveSqlParser.RULE_showGrants);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1785;
            this.match(HiveSqlParser.KW_SHOW);
            this.state = 1786;
            this.match(HiveSqlParser.KW_GRANT);
            this.state = 1788;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 144 || _la === 287 || _la === 369) {
                {
                this.state = 1787;
                this.principalName();
                }
            }

            this.state = 1792;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 224) {
                {
                this.state = 1790;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1791;
                this.privilegeIncludeColObject();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showRolePrincipals(): ShowRolePrincipalsContext {
        let localContext = new ShowRolePrincipalsContext(this.context, this.state);
        this.enterRule(localContext, 130, HiveSqlParser.RULE_showRolePrincipals);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1794;
            this.match(HiveSqlParser.KW_SHOW);
            this.state = 1795;
            this.match(HiveSqlParser.KW_PRINCIPALS);
            this.state = 1796;
            localContext._roleName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public privilegeIncludeColObject(): PrivilegeIncludeColObjectContext {
        let localContext = new PrivilegeIncludeColObjectContext(this.context, this.state);
        this.enterRule(localContext, 132, HiveSqlParser.RULE_privilegeIncludeColObject);
        try {
            this.state = 1800;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ALL:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1798;
                this.match(HiveSqlParser.KW_ALL);
                }
                break;
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASE:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLE:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.Identifier:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1799;
                this.privObjectCols();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public privilegeObject(): PrivilegeObjectContext {
        let localContext = new PrivilegeObjectContext(this.context, this.state);
        this.enterRule(localContext, 134, HiveSqlParser.RULE_privilegeObject);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1802;
            this.match(HiveSqlParser.KW_ON);
            this.state = 1803;
            this.privObject();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public privObject(): PrivObjectContext {
        let localContext = new PrivObjectContext(this.context, this.state);
        this.enterRule(localContext, 136, HiveSqlParser.RULE_privObject);
        let _la: number;
        try {
            this.state = 1819;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 120, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1805;
                this.db_schema();
                this.state = 1806;
                this.dbSchemaName();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1809;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 329) {
                    {
                    this.state = 1808;
                    this.match(HiveSqlParser.KW_TABLE);
                    }
                }

                this.state = 1811;
                this.tableName();
                this.state = 1813;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 237) {
                    {
                    this.state = 1812;
                    this.partitionSpec();
                    }
                }

                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1815;
                this.match(HiveSqlParser.KW_URI);
                this.state = 1816;
                localContext._path = this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 1817;
                this.match(HiveSqlParser.KW_SERVER);
                this.state = 1818;
                this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public privObjectCols(): PrivObjectColsContext {
        let localContext = new PrivObjectColsContext(this.context, this.state);
        this.enterRule(localContext, 138, HiveSqlParser.RULE_privObjectCols);
        let _la: number;
        try {
            this.state = 1841;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1821;
                this.db_schema();
                this.state = 1822;
                this.dbSchemaName();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1825;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 329) {
                    {
                    this.state = 1824;
                    this.match(HiveSqlParser.KW_TABLE);
                    }
                }

                this.state = 1827;
                this.tableName();
                this.state = 1832;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 122, this.context) ) {
                case 1:
                    {
                    this.state = 1828;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 1829;
                    localContext._cols = this.columnNameList();
                    this.state = 1830;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                }
                this.state = 1835;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 237) {
                    {
                    this.state = 1834;
                    this.partitionSpec();
                    }
                }

                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1837;
                this.match(HiveSqlParser.KW_URI);
                this.state = 1838;
                localContext._path = this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 1839;
                this.match(HiveSqlParser.KW_SERVER);
                this.state = 1840;
                this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public privilegeList(): PrivilegeListContext {
        let localContext = new PrivilegeListContext(this.context, this.state);
        this.enterRule(localContext, 140, HiveSqlParser.RULE_privilegeList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1843;
            this.privlegeDef();
            this.state = 1848;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 1844;
                this.match(HiveSqlParser.COMMA);
                this.state = 1845;
                this.privlegeDef();
                }
                }
                this.state = 1850;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public privlegeDef(): PrivlegeDefContext {
        let localContext = new PrivlegeDefContext(this.context, this.state);
        this.enterRule(localContext, 142, HiveSqlParser.RULE_privlegeDef);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1851;
            this.privilegeType();
            this.state = 1856;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 399) {
                {
                this.state = 1852;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1853;
                localContext._cols = this.columnNameList();
                this.state = 1854;
                this.match(HiveSqlParser.RPAREN);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public privilegeType(): PrivilegeTypeContext {
        let localContext = new PrivilegeTypeContext(this.context, this.state);
        this.enterRule(localContext, 144, HiveSqlParser.RULE_privilegeType);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1858;
            _la = this.tokenStream.LA(1);
            if(!(_la === 7 || _la === 9 || _la === 58 || _la === 86 || _la === 101 || _la === 155 || _la === 161 || _la === 190 || _la === 299 || _la === 309 || _la === 365)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public principalSpecification(): PrincipalSpecificationContext {
        let localContext = new PrincipalSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 146, HiveSqlParser.RULE_principalSpecification);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1860;
            this.principalName();
            this.state = 1865;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 1861;
                this.match(HiveSqlParser.COMMA);
                this.state = 1862;
                this.principalName();
                }
                }
                this.state = 1867;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public principalName(): PrincipalNameContext {
        let localContext = new PrincipalNameContext(this.context, this.state);
        this.enterRule(localContext, 148, HiveSqlParser.RULE_principalName);
        try {
            this.state = 1874;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_USER:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1868;
                this.match(HiveSqlParser.KW_USER);
                this.state = 1869;
                this.principalIdentifier();
                }
                break;
            case HiveSqlParser.KW_GROUP:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1870;
                this.match(HiveSqlParser.KW_GROUP);
                this.state = 1871;
                this.principalIdentifier();
                }
                break;
            case HiveSqlParser.KW_ROLE:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1872;
                this.match(HiveSqlParser.KW_ROLE);
                this.state = 1873;
                this.id_();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public principalAlterName(): PrincipalAlterNameContext {
        let localContext = new PrincipalAlterNameContext(this.context, this.state);
        this.enterRule(localContext, 150, HiveSqlParser.RULE_principalAlterName);
        try {
            this.state = 1881;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 1876;
                this.match(HiveSqlParser.KW_USER);
                this.state = 1877;
                this.principalIdentifier();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 1878;
                this.match(HiveSqlParser.KW_ROLE);
                this.state = 1879;
                this.id_();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 1880;
                this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public withGrantOption(): WithGrantOptionContext {
        let localContext = new WithGrantOptionContext(this.context, this.state);
        this.enterRule(localContext, 152, HiveSqlParser.RULE_withGrantOption);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1883;
            this.match(HiveSqlParser.KW_WITH);
            this.state = 1884;
            this.match(HiveSqlParser.KW_GRANT);
            this.state = 1885;
            this.match(HiveSqlParser.KW_OPTION);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public grantOptionFor(): GrantOptionForContext {
        let localContext = new GrantOptionForContext(this.context, this.state);
        this.enterRule(localContext, 154, HiveSqlParser.RULE_grantOptionFor);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1887;
            this.match(HiveSqlParser.KW_GRANT);
            this.state = 1888;
            this.match(HiveSqlParser.KW_OPTION);
            this.state = 1889;
            this.match(HiveSqlParser.KW_FOR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public adminOptionFor(): AdminOptionForContext {
        let localContext = new AdminOptionForContext(this.context, this.state);
        this.enterRule(localContext, 156, HiveSqlParser.RULE_adminOptionFor);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1891;
            this.match(HiveSqlParser.KW_ADMIN);
            this.state = 1892;
            this.match(HiveSqlParser.KW_OPTION);
            this.state = 1893;
            this.match(HiveSqlParser.KW_FOR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public withAdminOption(): WithAdminOptionContext {
        let localContext = new WithAdminOptionContext(this.context, this.state);
        this.enterRule(localContext, 158, HiveSqlParser.RULE_withAdminOption);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1895;
            this.match(HiveSqlParser.KW_WITH);
            this.state = 1896;
            this.match(HiveSqlParser.KW_ADMIN);
            this.state = 1897;
            this.match(HiveSqlParser.KW_OPTION);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public metastoreCheck(): MetastoreCheckContext {
        let localContext = new MetastoreCheckContext(this.context, this.state);
        this.enterRule(localContext, 160, HiveSqlParser.RULE_metastoreCheck);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1899;
            this.match(HiveSqlParser.KW_MSCK);
            this.state = 1901;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 276) {
                {
                this.state = 1900;
                localContext._repair = this.match(HiveSqlParser.KW_REPAIR);
                }
            }

            {
            this.state = 1903;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1904;
            this.tableName();
            this.state = 1910;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 132, this.context) ) {
            case 1:
                {
                this.state = 1905;
                localContext._opt = this.tokenStream.LT(1);
                _la = this.tokenStream.LA(1);
                if(!(_la === 4 || _la === 101 || _la === 326)) {
                    localContext._opt = this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 1906;
                localContext._parts = this.match(HiveSqlParser.KW_PARTITIONS);
                this.state = 1908;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 131, this.context) ) {
                case 1:
                    {
                    this.state = 1907;
                    this.partitionSelectorSpec();
                    }
                    break;
                }
                }
                break;
            }
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public resourceList(): ResourceListContext {
        let localContext = new ResourceListContext(this.context, this.state);
        this.enterRule(localContext, 162, HiveSqlParser.RULE_resourceList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1912;
            this.resource();
            this.state = 1917;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 1913;
                this.match(HiveSqlParser.COMMA);
                this.state = 1914;
                this.resource();
                }
                }
                this.state = 1919;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public resource(): ResourceContext {
        let localContext = new ResourceContext(this.context, this.state);
        this.enterRule(localContext, 164, HiveSqlParser.RULE_resource);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1920;
            localContext._resType = this.resourceType();
            this.state = 1921;
            localContext._resPath = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public resourceType(): ResourceTypeContext {
        let localContext = new ResourceTypeContext(this.context, this.state);
        this.enterRule(localContext, 166, HiveSqlParser.RULE_resourceType);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1923;
            _la = this.tokenStream.LA(1);
            if(!(_la === 15 || _la === 128 || _la === 170)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createFunctionStatement(): CreateFunctionStatementContext {
        let localContext = new CreateFunctionStatementContext(this.context, this.state);
        this.enterRule(localContext, 168, HiveSqlParser.RULE_createFunctionStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1925;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 1927;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 333) {
                {
                this.state = 1926;
                localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY);
                }
            }

            this.state = 1929;
            this.match(HiveSqlParser.KW_FUNCTION);
            this.state = 1930;
            this.functionNameCreate();
            this.state = 1931;
            this.match(HiveSqlParser.KW_AS);
            this.state = 1932;
            this.match(HiveSqlParser.StringLiteral);
            this.state = 1935;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 370) {
                {
                this.state = 1933;
                this.match(HiveSqlParser.KW_USING);
                this.state = 1934;
                localContext._rList = this.resourceList();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropFunctionStatement(): DropFunctionStatementContext {
        let localContext = new DropFunctionStatementContext(this.context, this.state);
        this.enterRule(localContext, 170, HiveSqlParser.RULE_dropFunctionStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1937;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 1939;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 333) {
                {
                this.state = 1938;
                localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY);
                }
            }

            this.state = 1941;
            this.match(HiveSqlParser.KW_FUNCTION);
            this.state = 1943;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 1942;
                this.ifExists();
                }
            }

            this.state = 1945;
            this.functionNameForDDL();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public reloadFunctionsStatement(): ReloadFunctionsStatementContext {
        let localContext = new ReloadFunctionsStatementContext(this.context, this.state);
        this.enterRule(localContext, 172, HiveSqlParser.RULE_reloadFunctionsStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1947;
            this.match(HiveSqlParser.KW_RELOAD);
            this.state = 1948;
            _la = this.tokenStream.LA(1);
            if(!(_la === 141 || _la === 142)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createMacroStatement(): CreateMacroStatementContext {
        let localContext = new CreateMacroStatementContext(this.context, this.state);
        this.enterRule(localContext, 174, HiveSqlParser.RULE_createMacroStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1950;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 1951;
            this.match(HiveSqlParser.KW_TEMPORARY);
            this.state = 1952;
            this.match(HiveSqlParser.KW_MACRO);
            this.state = 1953;
            this.match(HiveSqlParser.Identifier);
            this.state = 1954;
            this.match(HiveSqlParser.LPAREN);
            this.state = 1956;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                {
                this.state = 1955;
                this.columnNameTypeList();
                }
            }

            this.state = 1958;
            this.match(HiveSqlParser.RPAREN);
            this.state = 1959;
            this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropMacroStatement(): DropMacroStatementContext {
        let localContext = new DropMacroStatementContext(this.context, this.state);
        this.enterRule(localContext, 176, HiveSqlParser.RULE_dropMacroStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1961;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 1962;
            this.match(HiveSqlParser.KW_TEMPORARY);
            this.state = 1963;
            this.match(HiveSqlParser.KW_MACRO);
            this.state = 1965;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 1964;
                this.ifExists();
                }
            }

            this.state = 1967;
            this.match(HiveSqlParser.Identifier);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createIndexStatement(): CreateIndexStatementContext {
        let localContext = new CreateIndexStatementContext(this.context, this.state);
        this.enterRule(localContext, 178, HiveSqlParser.RULE_createIndexStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 1969;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 1970;
            this.match(HiveSqlParser.KW_INDEX);
            this.state = 1971;
            this.id_();
            this.state = 1972;
            this.match(HiveSqlParser.KW_ON);
            this.state = 1973;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 1974;
            this.tableName();
            this.state = 1975;
            this.columnParenthesesList();
            this.state = 1976;
            this.match(HiveSqlParser.KW_AS);
            this.state = 1977;
            localContext._indextype = this.match(HiveSqlParser.StringLiteral);
            this.state = 1981;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 140, this.context) ) {
            case 1:
                {
                this.state = 1978;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 1979;
                this.match(HiveSqlParser.KW_DEFERRED);
                this.state = 1980;
                this.match(HiveSqlParser.KW_REBUILD);
                }
                break;
            }
            this.state = 1985;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 150) {
                {
                this.state = 1983;
                this.match(HiveSqlParser.KW_IDXPROPERTIES);
                this.state = 1984;
                this.tableProperties();
                }
            }

            this.state = 1990;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 154) {
                {
                this.state = 1987;
                this.match(HiveSqlParser.KW_IN);
                this.state = 1988;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1989;
                this.tableName();
                }
            }

            this.state = 1995;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 238) {
                {
                this.state = 1992;
                this.match(HiveSqlParser.KW_PARTITIONED);
                this.state = 1993;
                this.match(HiveSqlParser.KW_BY);
                this.state = 1994;
                this.columnParenthesesList();
                }
            }

            this.state = 2001;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 291 || _la === 321) {
                {
                this.state = 1998;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 291) {
                    {
                    this.state = 1997;
                    this.tableRowFormat();
                    }
                }

                this.state = 2000;
                this.tableFileFormat();
                }
            }

            this.state = 2005;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 189) {
                {
                this.state = 2003;
                this.match(HiveSqlParser.KW_LOCATION);
                this.state = 2004;
                localContext._locn = this.match(HiveSqlParser.StringLiteral);
                }
            }

            this.state = 2008;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 332) {
                {
                this.state = 2007;
                this.tablePropertiesPrefixed();
                }
            }

            this.state = 2011;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 2010;
                this.tableComment();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropIndexStatement(): DropIndexStatementContext {
        let localContext = new DropIndexStatementContext(this.context, this.state);
        this.enterRule(localContext, 180, HiveSqlParser.RULE_dropIndexStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2013;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 2014;
            this.match(HiveSqlParser.KW_INDEX);
            this.state = 2016;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 2015;
                this.ifExists();
                }
            }

            this.state = 2018;
            this.id_();
            this.state = 2019;
            this.match(HiveSqlParser.KW_ON);
            this.state = 2020;
            this.tableName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createViewStatement(): CreateViewStatementContext {
        let localContext = new CreateViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 182, HiveSqlParser.RULE_createViewStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2022;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 2024;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 228) {
                {
                this.state = 2023;
                this.orReplace();
                }
            }

            this.state = 2026;
            this.match(HiveSqlParser.KW_VIEW);
            this.state = 2028;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 2027;
                this.ifNotExists();
                }
            }

            this.state = 2030;
            localContext._name = this.viewNameCreate();
            this.state = 2035;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 399) {
                {
                this.state = 2031;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2032;
                this.columnNameCommentList();
                this.state = 2033;
                this.match(HiveSqlParser.RPAREN);
                }
            }

            this.state = 2038;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 2037;
                this.tableComment();
                }
            }

            this.state = 2041;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 238) {
                {
                this.state = 2040;
                this.viewPartition();
                }
            }

            this.state = 2044;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 332) {
                {
                this.state = 2043;
                this.tablePropertiesPrefixed();
                }
            }

            this.state = 2046;
            this.match(HiveSqlParser.KW_AS);
            this.state = 2047;
            this.selectStatementWithCTE();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewPartition(): ViewPartitionContext {
        let localContext = new ViewPartitionContext(this.context, this.state);
        this.enterRule(localContext, 184, HiveSqlParser.RULE_viewPartition);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2049;
            this.match(HiveSqlParser.KW_PARTITIONED);
            this.state = 2050;
            this.match(HiveSqlParser.KW_ON);
            this.state = 2056;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.LPAREN:
                {
                this.state = 2051;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2052;
                this.columnNameList();
                }
                break;
            case HiveSqlParser.KW_SPEC:
                {
                this.state = 2053;
                this.match(HiveSqlParser.KW_SPEC);
                this.state = 2054;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2055;
                localContext._spec = this.partitionTransformSpec();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 2058;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewOrganization(): ViewOrganizationContext {
        let localContext = new ViewOrganizationContext(this.context, this.state);
        this.enterRule(localContext, 186, HiveSqlParser.RULE_viewOrganization);
        try {
            this.state = 2062;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_CLUSTERED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2060;
                this.viewClusterSpec();
                }
                break;
            case HiveSqlParser.KW_DISTRIBUTED:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2061;
                this.viewComplexSpec();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewClusterSpec(): ViewClusterSpecContext {
        let localContext = new ViewClusterSpecContext(this.context, this.state);
        this.enterRule(localContext, 188, HiveSqlParser.RULE_viewClusterSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2064;
            this.match(HiveSqlParser.KW_CLUSTERED);
            this.state = 2065;
            this.match(HiveSqlParser.KW_ON);
            this.state = 2066;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2067;
            this.columnNameList();
            this.state = 2068;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewComplexSpec(): ViewComplexSpecContext {
        let localContext = new ViewComplexSpecContext(this.context, this.state);
        this.enterRule(localContext, 190, HiveSqlParser.RULE_viewComplexSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2070;
            this.viewDistSpec();
            this.state = 2071;
            this.viewSortSpec();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewDistSpec(): ViewDistSpecContext {
        let localContext = new ViewDistSpecContext(this.context, this.state);
        this.enterRule(localContext, 192, HiveSqlParser.RULE_viewDistSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2073;
            this.match(HiveSqlParser.KW_DISTRIBUTED);
            this.state = 2074;
            this.match(HiveSqlParser.KW_ON);
            this.state = 2075;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2076;
            localContext._colList = this.columnNameList();
            this.state = 2077;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewSortSpec(): ViewSortSpecContext {
        let localContext = new ViewSortSpecContext(this.context, this.state);
        this.enterRule(localContext, 194, HiveSqlParser.RULE_viewSortSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2079;
            this.match(HiveSqlParser.KW_SORTED);
            this.state = 2080;
            this.match(HiveSqlParser.KW_ON);
            this.state = 2081;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2082;
            localContext._colList = this.columnNameList();
            this.state = 2083;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropViewStatement(): DropViewStatementContext {
        let localContext = new DropViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 196, HiveSqlParser.RULE_dropViewStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2085;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 2086;
            this.match(HiveSqlParser.KW_VIEW);
            this.state = 2088;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 2087;
                this.ifExists();
                }
            }

            this.state = 2090;
            this.viewName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createMaterializedViewStatement(): CreateMaterializedViewStatementContext {
        let localContext = new CreateMaterializedViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 198, HiveSqlParser.RULE_createMaterializedViewStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2092;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 2093;
            this.match(HiveSqlParser.KW_MATERIALIZED);
            this.state = 2094;
            this.match(HiveSqlParser.KW_VIEW);
            this.state = 2096;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 2095;
                this.ifNotExists();
                }
            }

            this.state = 2098;
            localContext._name = this.viewNameCreate();
            this.state = 2100;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 94 || _la === 95) {
                {
                this.state = 2099;
                this.rewriteDisabled();
                }
            }

            this.state = 2103;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 2102;
                this.tableComment();
                }
            }

            this.state = 2106;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 238) {
                {
                this.state = 2105;
                this.viewPartition();
                }
            }

            this.state = 2109;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 42 || _la === 98) {
                {
                this.state = 2108;
                this.viewOrganization();
                }
            }

            this.state = 2112;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 291) {
                {
                this.state = 2111;
                this.tableRowFormat();
                }
            }

            this.state = 2115;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 321) {
                {
                this.state = 2114;
                this.tableFileFormat();
                }
            }

            this.state = 2118;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 189) {
                {
                this.state = 2117;
                this.tableLocation();
                }
            }

            this.state = 2121;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 332) {
                {
                this.state = 2120;
                this.tablePropertiesPrefixed();
                }
            }

            this.state = 2123;
            this.match(HiveSqlParser.KW_AS);
            this.state = 2124;
            this.selectStatementWithCTE();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropMaterializedViewStatement(): DropMaterializedViewStatementContext {
        let localContext = new DropMaterializedViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 200, HiveSqlParser.RULE_dropMaterializedViewStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2126;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 2127;
            this.match(HiveSqlParser.KW_MATERIALIZED);
            this.state = 2128;
            this.match(HiveSqlParser.KW_VIEW);
            this.state = 2130;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 2129;
                this.ifExists();
                }
            }

            this.state = 2132;
            this.viewName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createScheduledQueryStatement(): CreateScheduledQueryStatementContext {
        let localContext = new CreateScheduledQueryStatementContext(this.context, this.state);
        this.enterRule(localContext, 202, HiveSqlParser.RULE_createScheduledQueryStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2134;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 2135;
            this.match(HiveSqlParser.KW_SCHEDULED);
            this.state = 2136;
            this.match(HiveSqlParser.KW_QUERY);
            this.state = 2137;
            localContext._name = this.id_();
            this.state = 2138;
            this.scheduleSpec();
            this.state = 2140;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 116) {
                {
                this.state = 2139;
                this.executedAsSpec();
                }
            }

            this.state = 2143;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 12291) !== 0)) {
                {
                this.state = 2142;
                this.enableSpecification();
                }
            }

            this.state = 2145;
            this.definedAsSpec();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropScheduledQueryStatement(): DropScheduledQueryStatementContext {
        let localContext = new DropScheduledQueryStatementContext(this.context, this.state);
        this.enterRule(localContext, 204, HiveSqlParser.RULE_dropScheduledQueryStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2147;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 2148;
            this.match(HiveSqlParser.KW_SCHEDULED);
            this.state = 2149;
            this.match(HiveSqlParser.KW_QUERY);
            this.state = 2150;
            localContext._name = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterScheduledQueryStatement(): AlterScheduledQueryStatementContext {
        let localContext = new AlterScheduledQueryStatementContext(this.context, this.state);
        this.enterRule(localContext, 206, HiveSqlParser.RULE_alterScheduledQueryStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2152;
            this.match(HiveSqlParser.KW_ALTER);
            this.state = 2153;
            this.match(HiveSqlParser.KW_SCHEDULED);
            this.state = 2154;
            this.match(HiveSqlParser.KW_QUERY);
            this.state = 2155;
            localContext._name = this.id_();
            this.state = 2156;
            localContext._mod = this.alterScheduledQueryChange();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterScheduledQueryChange(): AlterScheduledQueryChangeContext {
        let localContext = new AlterScheduledQueryChangeContext(this.context, this.state);
        this.enterRule(localContext, 208, HiveSqlParser.RULE_alterScheduledQueryChange);
        try {
            this.state = 2163;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_EVERY:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2158;
                this.scheduleSpec();
                }
                break;
            case HiveSqlParser.KW_EXECUTED:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2159;
                this.executedAsSpec();
                }
                break;
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2160;
                this.enableSpecification();
                }
                break;
            case HiveSqlParser.KW_AS:
            case HiveSqlParser.KW_DEFINED:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 2161;
                this.definedAsSpec();
                }
                break;
            case HiveSqlParser.KW_EXECUTE:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 2162;
                this.match(HiveSqlParser.KW_EXECUTE);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public scheduleSpec(): ScheduleSpecContext {
        let localContext = new ScheduleSpecContext(this.context, this.state);
        this.enterRule(localContext, 210, HiveSqlParser.RULE_scheduleSpec);
        let _la: number;
        try {
            this.state = 2180;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_CRON:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2165;
                this.match(HiveSqlParser.KW_CRON);
                this.state = 2166;
                localContext._cronString = this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case HiveSqlParser.KW_EVERY:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2167;
                this.match(HiveSqlParser.KW_EVERY);
                this.state = 2169;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 431) {
                    {
                    this.state = 2168;
                    localContext._value = this.match(HiveSqlParser.Number);
                    }
                }

                this.state = 2171;
                localContext._qualifier = this.intervalQualifiers();
                this.state = 2178;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 20 || _la === 223) {
                    {
                    this.state = 2175;
                    this.errorHandler.sync(this);
                    switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_AT:
                        {
                        this.state = 2172;
                        this.match(HiveSqlParser.KW_AT);
                        }
                        break;
                    case HiveSqlParser.KW_OFFSET:
                        {
                        this.state = 2173;
                        this.match(HiveSqlParser.KW_OFFSET);
                        this.state = 2174;
                        this.match(HiveSqlParser.KW_BY);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                    }
                    this.state = 2177;
                    localContext._offsetTs = this.match(HiveSqlParser.StringLiteral);
                    }
                }

                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public executedAsSpec(): ExecutedAsSpecContext {
        let localContext = new ExecutedAsSpecContext(this.context, this.state);
        this.enterRule(localContext, 212, HiveSqlParser.RULE_executedAsSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2182;
            this.match(HiveSqlParser.KW_EXECUTED);
            this.state = 2183;
            this.match(HiveSqlParser.KW_AS);
            this.state = 2184;
            localContext._executedAs = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public definedAsSpec(): DefinedAsSpecContext {
        let localContext = new DefinedAsSpecContext(this.context, this.state);
        this.enterRule(localContext, 214, HiveSqlParser.RULE_definedAsSpec);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2187;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 85) {
                {
                this.state = 2186;
                this.match(HiveSqlParser.KW_DEFINED);
                }
            }

            this.state = 2189;
            this.match(HiveSqlParser.KW_AS);
            this.state = 2190;
            this.statement();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public showStmtIdentifier(): ShowStmtIdentifierContext {
        let localContext = new ShowStmtIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 216, HiveSqlParser.RULE_showStmtIdentifier);
        try {
            this.state = 2194;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.Identifier:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2192;
                this.id_();
                }
                break;
            case HiveSqlParser.StringLiteral:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2193;
                this.match(HiveSqlParser.StringLiteral);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableComment(): TableCommentContext {
        let localContext = new TableCommentContext(this.context, this.state);
        this.enterRule(localContext, 218, HiveSqlParser.RULE_tableComment);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2196;
            this.match(HiveSqlParser.KW_COMMENT);
            this.state = 2197;
            localContext._comment = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableLifecycle(): TableLifecycleContext {
        let localContext = new TableLifecycleContext(this.context, this.state);
        this.enterRule(localContext, 220, HiveSqlParser.RULE_tableLifecycle);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2199;
            this.match(HiveSqlParser.KW_LIFECYCLE);
            this.state = 2200;
            this.match(HiveSqlParser.Number);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createTablePartitionSpec(): CreateTablePartitionSpecContext {
        let localContext = new CreateTablePartitionSpecContext(this.context, this.state);
        this.enterRule(localContext, 222, HiveSqlParser.RULE_createTablePartitionSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2202;
            this.match(HiveSqlParser.KW_PARTITIONED);
            this.state = 2203;
            this.match(HiveSqlParser.KW_BY);
            this.state = 2212;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.LPAREN:
                {
                this.state = 2204;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2207;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 178, this.context) ) {
                case 1:
                    {
                    this.state = 2205;
                    localContext._opt1 = this.createTablePartitionColumnTypeSpec();
                    }
                    break;
                case 2:
                    {
                    this.state = 2206;
                    localContext._opt2 = this.createTablePartitionColumnSpec();
                    }
                    break;
                }
                }
                break;
            case HiveSqlParser.KW_SPEC:
                {
                this.state = 2209;
                this.match(HiveSqlParser.KW_SPEC);
                this.state = 2210;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2211;
                localContext._spec = this.partitionTransformSpec();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 2214;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createTablePartitionColumnTypeSpec(): CreateTablePartitionColumnTypeSpecContext {
        let localContext = new CreateTablePartitionColumnTypeSpecContext(this.context, this.state);
        this.enterRule(localContext, 224, HiveSqlParser.RULE_createTablePartitionColumnTypeSpec);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2216;
            this.columnNameTypeConstraint();
            this.state = 2221;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2217;
                this.match(HiveSqlParser.COMMA);
                this.state = 2218;
                this.columnNameTypeConstraint();
                }
                }
                this.state = 2223;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createTablePartitionColumnSpec(): CreateTablePartitionColumnSpecContext {
        let localContext = new CreateTablePartitionColumnSpecContext(this.context, this.state);
        this.enterRule(localContext, 226, HiveSqlParser.RULE_createTablePartitionColumnSpec);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2224;
            this.columnName();
            this.state = 2229;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2225;
                this.match(HiveSqlParser.COMMA);
                this.state = 2226;
                this.columnName();
                }
                }
                this.state = 2231;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionTransformSpec(): PartitionTransformSpecContext {
        let localContext = new PartitionTransformSpecContext(this.context, this.state);
        this.enterRule(localContext, 228, HiveSqlParser.RULE_partitionTransformSpec);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2232;
            this.columnNameTransformConstraint();
            this.state = 2237;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2233;
                this.match(HiveSqlParser.COMMA);
                this.state = 2234;
                this.columnNameTransformConstraint();
                }
                }
                this.state = 2239;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameTransformConstraint(): ColumnNameTransformConstraintContext {
        let localContext = new ColumnNameTransformConstraintContext(this.context, this.state);
        this.enterRule(localContext, 230, HiveSqlParser.RULE_columnNameTransformConstraint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2240;
            this.partitionTransformType();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionTransformType(): PartitionTransformTypeContext {
        let localContext = new PartitionTransformTypeContext(this.context, this.state);
        this.enterRule(localContext, 232, HiveSqlParser.RULE_partitionTransformType);
        let _la: number;
        try {
            this.state = 2260;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2242;
                this.columnName();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2247;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                    {
                    this.state = 2243;
                    this.year();
                    }
                    break;
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                    {
                    this.state = 2244;
                    this.month();
                    }
                    break;
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                    {
                    this.state = 2245;
                    this.day();
                    }
                    break;
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                    {
                    this.state = 2246;
                    this.hour();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                this.state = 2249;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2250;
                this.columnName();
                this.state = 2251;
                this.match(HiveSqlParser.RPAREN);
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2253;
                _la = this.tokenStream.LA(1);
                if(!(_la === 30 || _la === 351)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 2254;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2255;
                localContext._value = this.match(HiveSqlParser.Number);
                this.state = 2256;
                this.match(HiveSqlParser.COMMA);
                this.state = 2257;
                this.columnName();
                this.state = 2258;
                this.match(HiveSqlParser.RPAREN);
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableBuckets(): TableBucketsContext {
        let localContext = new TableBucketsContext(this.context, this.state);
        this.enterRule(localContext, 234, HiveSqlParser.RULE_tableBuckets);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2262;
            this.match(HiveSqlParser.KW_CLUSTERED);
            this.state = 2263;
            this.match(HiveSqlParser.KW_BY);
            this.state = 2264;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2265;
            localContext._bucketCols = this.columnNameList();
            this.state = 2266;
            this.match(HiveSqlParser.RPAREN);
            this.state = 2273;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 315) {
                {
                this.state = 2267;
                this.match(HiveSqlParser.KW_SORTED);
                this.state = 2268;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2269;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2270;
                localContext._sortCols = this.columnNameOrderList();
                this.state = 2271;
                this.match(HiveSqlParser.RPAREN);
                }
            }

            this.state = 2275;
            this.match(HiveSqlParser.KW_INTO);
            this.state = 2276;
            localContext._num = this.match(HiveSqlParser.Number);
            this.state = 2277;
            this.match(HiveSqlParser.KW_BUCKETS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableImplBuckets(): TableImplBucketsContext {
        let localContext = new TableImplBucketsContext(this.context, this.state);
        this.enterRule(localContext, 236, HiveSqlParser.RULE_tableImplBuckets);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2279;
            this.match(HiveSqlParser.KW_CLUSTERED);
            this.state = 2280;
            this.match(HiveSqlParser.KW_INTO);
            this.state = 2281;
            localContext._num = this.match(HiveSqlParser.Number);
            this.state = 2282;
            this.match(HiveSqlParser.KW_BUCKETS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableSkewed(): TableSkewedContext {
        let localContext = new TableSkewedContext(this.context, this.state);
        this.enterRule(localContext, 238, HiveSqlParser.RULE_tableSkewed);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2284;
            this.match(HiveSqlParser.KW_SKEWED);
            this.state = 2285;
            this.match(HiveSqlParser.KW_BY);
            this.state = 2286;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2287;
            localContext._skewedCols = this.columnNameList();
            this.state = 2288;
            this.match(HiveSqlParser.RPAREN);
            this.state = 2289;
            this.match(HiveSqlParser.KW_ON);
            this.state = 2290;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2291;
            localContext._skewedValues = this.skewedValueElement();
            this.state = 2292;
            this.match(HiveSqlParser.RPAREN);
            this.state = 2294;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) {
            case 1:
                {
                this.state = 2293;
                this.storedAsDirs();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rowFormat(): RowFormatContext {
        let localContext = new RowFormatContext(this.context, this.state);
        this.enterRule(localContext, 240, HiveSqlParser.RULE_rowFormat);
        try {
            this.state = 2298;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2296;
                this.rowFormatSerde();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2297;
                this.rowFormatDelimited();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public recordReader(): RecordReaderContext {
        let localContext = new RecordReaderContext(this.context, this.state);
        this.enterRule(localContext, 242, HiveSqlParser.RULE_recordReader);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2300;
            this.match(HiveSqlParser.KW_RECORDREADER);
            this.state = 2301;
            this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public recordWriter(): RecordWriterContext {
        let localContext = new RecordWriterContext(this.context, this.state);
        this.enterRule(localContext, 244, HiveSqlParser.RULE_recordWriter);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2303;
            this.match(HiveSqlParser.KW_RECORDWRITER);
            this.state = 2304;
            this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rowFormatSerde(): RowFormatSerdeContext {
        let localContext = new RowFormatSerdeContext(this.context, this.state);
        this.enterRule(localContext, 246, HiveSqlParser.RULE_rowFormatSerde);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2306;
            this.match(HiveSqlParser.KW_ROW);
            this.state = 2307;
            this.match(HiveSqlParser.KW_FORMAT);
            this.state = 2308;
            this.match(HiveSqlParser.KW_SERDE);
            this.state = 2309;
            localContext._name = this.match(HiveSqlParser.StringLiteral);
            this.state = 2313;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 188, this.context) ) {
            case 1:
                {
                this.state = 2310;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 2311;
                this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                this.state = 2312;
                localContext._serdeprops = this.tableProperties();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rowFormatDelimited(): RowFormatDelimitedContext {
        let localContext = new RowFormatDelimitedContext(this.context, this.state);
        this.enterRule(localContext, 248, HiveSqlParser.RULE_rowFormatDelimited);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2315;
            this.match(HiveSqlParser.KW_ROW);
            this.state = 2316;
            this.match(HiveSqlParser.KW_FORMAT);
            this.state = 2317;
            this.match(HiveSqlParser.KW_DELIMITED);
            this.state = 2319;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 127) {
                {
                this.state = 2318;
                this.tableRowFormatFieldIdentifier();
                }
            }

            this.state = 2322;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 44) {
                {
                this.state = 2321;
                this.tableRowFormatCollItemsIdentifier();
                }
            }

            this.state = 2325;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 191, this.context) ) {
            case 1:
                {
                this.state = 2324;
                this.tableRowFormatMapKeysIdentifier();
                }
                break;
            }
            this.state = 2328;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 186) {
                {
                this.state = 2327;
                this.tableRowFormatLinesIdentifier();
                }
            }

            this.state = 2331;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 219) {
                {
                this.state = 2330;
                this.tableRowNullFormat();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableRowFormat(): TableRowFormatContext {
        let localContext = new TableRowFormatContext(this.context, this.state);
        this.enterRule(localContext, 250, HiveSqlParser.RULE_tableRowFormat);
        try {
            this.state = 2335;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 194, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2333;
                this.rowFormatDelimited();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2334;
                this.rowFormatSerde();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tablePropertiesPrefixed(): TablePropertiesPrefixedContext {
        let localContext = new TablePropertiesPrefixedContext(this.context, this.state);
        this.enterRule(localContext, 252, HiveSqlParser.RULE_tablePropertiesPrefixed);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2337;
            this.match(HiveSqlParser.KW_TBLPROPERTIES);
            this.state = 2338;
            this.tableProperties();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableProperties(): TablePropertiesContext {
        let localContext = new TablePropertiesContext(this.context, this.state);
        this.enterRule(localContext, 254, HiveSqlParser.RULE_tableProperties);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2340;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2341;
            this.tablePropertiesList();
            this.state = 2342;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tablePropertiesList(): TablePropertiesListContext {
        let localContext = new TablePropertiesListContext(this.context, this.state);
        this.enterRule(localContext, 256, HiveSqlParser.RULE_tablePropertiesList);
        let _la: number;
        try {
            this.state = 2360;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2344;
                this.keyValueProperty();
                this.state = 2349;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 2345;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 2346;
                    this.keyValueProperty();
                    }
                    }
                    this.state = 2351;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2352;
                this.keyProperty();
                this.state = 2357;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 2353;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 2354;
                    this.keyProperty();
                    }
                    }
                    this.state = 2359;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public keyValueProperty(): KeyValuePropertyContext {
        let localContext = new KeyValuePropertyContext(this.context, this.state);
        this.enterRule(localContext, 258, HiveSqlParser.RULE_keyValueProperty);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2362;
            localContext._key = this.match(HiveSqlParser.StringLiteral);
            this.state = 2363;
            this.match(HiveSqlParser.EQUAL);
            this.state = 2364;
            localContext._value = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public keyProperty(): KeyPropertyContext {
        let localContext = new KeyPropertyContext(this.context, this.state);
        this.enterRule(localContext, 260, HiveSqlParser.RULE_keyProperty);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2366;
            localContext._key = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableRowFormatFieldIdentifier(): TableRowFormatFieldIdentifierContext {
        let localContext = new TableRowFormatFieldIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 262, HiveSqlParser.RULE_tableRowFormatFieldIdentifier);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2368;
            this.match(HiveSqlParser.KW_FIELDS);
            this.state = 2369;
            this.match(HiveSqlParser.KW_TERMINATED);
            this.state = 2370;
            this.match(HiveSqlParser.KW_BY);
            this.state = 2371;
            localContext._fldIdnt = this.match(HiveSqlParser.StringLiteral);
            this.state = 2375;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 110) {
                {
                this.state = 2372;
                this.match(HiveSqlParser.KW_ESCAPED);
                this.state = 2373;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2374;
                localContext._fldEscape = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableRowFormatCollItemsIdentifier(): TableRowFormatCollItemsIdentifierContext {
        let localContext = new TableRowFormatCollItemsIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 264, HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2377;
            this.match(HiveSqlParser.KW_COLLECTION);
            this.state = 2378;
            this.match(HiveSqlParser.KW_ITEMS);
            this.state = 2379;
            this.match(HiveSqlParser.KW_TERMINATED);
            this.state = 2380;
            this.match(HiveSqlParser.KW_BY);
            this.state = 2381;
            localContext._collIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableRowFormatMapKeysIdentifier(): TableRowFormatMapKeysIdentifierContext {
        let localContext = new TableRowFormatMapKeysIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 266, HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2383;
            this.match(HiveSqlParser.KW_MAP);
            this.state = 2384;
            this.match(HiveSqlParser.KW_KEYS);
            this.state = 2385;
            this.match(HiveSqlParser.KW_TERMINATED);
            this.state = 2386;
            this.match(HiveSqlParser.KW_BY);
            this.state = 2387;
            localContext._mapKeysIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableRowFormatLinesIdentifier(): TableRowFormatLinesIdentifierContext {
        let localContext = new TableRowFormatLinesIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 268, HiveSqlParser.RULE_tableRowFormatLinesIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2389;
            this.match(HiveSqlParser.KW_LINES);
            this.state = 2390;
            this.match(HiveSqlParser.KW_TERMINATED);
            this.state = 2391;
            this.match(HiveSqlParser.KW_BY);
            this.state = 2392;
            localContext._linesIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableRowNullFormat(): TableRowNullFormatContext {
        let localContext = new TableRowNullFormatContext(this.context, this.state);
        this.enterRule(localContext, 270, HiveSqlParser.RULE_tableRowNullFormat);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2394;
            this.match(HiveSqlParser.KW_NULL);
            this.state = 2395;
            this.match(HiveSqlParser.KW_DEFINED);
            this.state = 2396;
            this.match(HiveSqlParser.KW_AS);
            this.state = 2397;
            localContext._nullIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableFileFormat(): TableFileFormatContext {
        let localContext = new TableFileFormatContext(this.context, this.state);
        this.enterRule(localContext, 272, HiveSqlParser.RULE_tableFileFormat);
        let _la: number;
        try {
            this.state = 2440;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 204, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2399;
                this.match(HiveSqlParser.KW_STORED);
                this.state = 2400;
                this.match(HiveSqlParser.KW_AS);
                this.state = 2401;
                this.match(HiveSqlParser.KW_INPUTFORMAT);
                this.state = 2402;
                localContext._inFmt = this.match(HiveSqlParser.StringLiteral);
                this.state = 2403;
                this.match(HiveSqlParser.KW_OUTPUTFORMAT);
                this.state = 2404;
                localContext._outFmt = this.match(HiveSqlParser.StringLiteral);
                this.state = 2409;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 159) {
                    {
                    this.state = 2405;
                    this.match(HiveSqlParser.KW_INPUTDRIVER);
                    this.state = 2406;
                    localContext._inDriver = this.match(HiveSqlParser.StringLiteral);
                    this.state = 2407;
                    this.match(HiveSqlParser.KW_OUTPUTDRIVER);
                    this.state = 2408;
                    localContext._outDriver = this.match(HiveSqlParser.StringLiteral);
                    }
                }

                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2411;
                this.match(HiveSqlParser.KW_STORED);
                this.state = 2412;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2413;
                localContext._storageHandler = this.match(HiveSqlParser.StringLiteral);
                this.state = 2417;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 200, this.context) ) {
                case 1:
                    {
                    this.state = 2414;
                    this.match(HiveSqlParser.KW_WITH);
                    this.state = 2415;
                    this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                    this.state = 2416;
                    localContext._serdeprops = this.tableProperties();
                    }
                    break;
                }
                this.state = 2422;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 321) {
                    {
                    this.state = 2419;
                    this.match(HiveSqlParser.KW_STORED);
                    this.state = 2420;
                    this.match(HiveSqlParser.KW_AS);
                    this.state = 2421;
                    localContext._fileformat = this.id_();
                    }
                }

                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2424;
                this.match(HiveSqlParser.KW_STORED);
                this.state = 2425;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2426;
                localContext._genericSpec = this.id_();
                this.state = 2430;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) {
                case 1:
                    {
                    this.state = 2427;
                    this.match(HiveSqlParser.KW_WITH);
                    this.state = 2428;
                    this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                    this.state = 2429;
                    localContext._serdeprops = this.tableProperties();
                    }
                    break;
                }
                this.state = 2435;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 321) {
                    {
                    this.state = 2432;
                    this.match(HiveSqlParser.KW_STORED);
                    this.state = 2433;
                    this.match(HiveSqlParser.KW_AS);
                    this.state = 2434;
                    localContext._fileformat = this.id_();
                    }
                }

                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 2437;
                this.match(HiveSqlParser.KW_STORED);
                this.state = 2438;
                this.match(HiveSqlParser.KW_AS);
                this.state = 2439;
                localContext._genericSpec = this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableLocation(): TableLocationContext {
        let localContext = new TableLocationContext(this.context, this.state);
        this.enterRule(localContext, 274, HiveSqlParser.RULE_tableLocation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2442;
            this.match(HiveSqlParser.KW_LOCATION);
            this.state = 2443;
            localContext._locn = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameTypeList(): ColumnNameTypeListContext {
        let localContext = new ColumnNameTypeListContext(this.context, this.state);
        this.enterRule(localContext, 276, HiveSqlParser.RULE_columnNameTypeList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2445;
            this.columnNameType();
            this.state = 2450;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2446;
                this.match(HiveSqlParser.COMMA);
                this.state = 2447;
                this.columnNameType();
                }
                }
                this.state = 2452;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameTypeOrConstraintList(): ColumnNameTypeOrConstraintListContext {
        let localContext = new ColumnNameTypeOrConstraintListContext(this.context, this.state);
        this.enterRule(localContext, 278, HiveSqlParser.RULE_columnNameTypeOrConstraintList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2453;
            this.columnNameTypeOrConstraint();
            this.state = 2458;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2454;
                this.match(HiveSqlParser.COMMA);
                this.state = 2455;
                this.columnNameTypeOrConstraint();
                }
                }
                this.state = 2460;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameColonTypeList(): ColumnNameColonTypeListContext {
        let localContext = new ColumnNameColonTypeListContext(this.context, this.state);
        this.enterRule(localContext, 280, HiveSqlParser.RULE_columnNameColonTypeList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2461;
            this.columnNameColonType();
            this.state = 2466;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2462;
                this.match(HiveSqlParser.COMMA);
                this.state = 2463;
                this.columnNameColonType();
                }
                }
                this.state = 2468;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameList(): ColumnNameListContext {
        let localContext = new ColumnNameListContext(this.context, this.state);
        this.enterRule(localContext, 282, HiveSqlParser.RULE_columnNameList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2469;
            this.columnName();
            this.state = 2474;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2470;
                this.match(HiveSqlParser.COMMA);
                this.state = 2471;
                this.columnName();
                }
                }
                this.state = 2476;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnName(): ColumnNameContext {
        let localContext = new ColumnNameContext(this.context, this.state);
        this.enterRule(localContext, 284, HiveSqlParser.RULE_columnName);
        try {
            let alternative: number;
            this.state = 2486;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2477;
                this.id_();
                this.state = 2482;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                        {
                        this.state = 2478;
                        this.match(HiveSqlParser.DOT);
                        this.state = 2479;
                        this.id_();
                        }
                        }
                    }
                    this.state = 2484;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context);
                }
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2485;
                if (!(this.shouldMatchEmpty())) {
                    throw this.createFailedPredicateException("this.shouldMatchEmpty()");
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameCreate(): ColumnNameCreateContext {
        let localContext = new ColumnNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 286, HiveSqlParser.RULE_columnNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2488;
            this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public extColumnName(): ExtColumnNameContext {
        let localContext = new ExtColumnNameContext(this.context, this.state);
        this.enterRule(localContext, 288, HiveSqlParser.RULE_extColumnName);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2490;
            this.columnName();
            this.state = 2500;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 395) {
                {
                {
                this.state = 2491;
                this.match(HiveSqlParser.DOT);
                this.state = 2496;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) {
                case 1:
                    {
                    this.state = 2492;
                    this.match(HiveSqlParser.KW_ELEM_TYPE);
                    }
                    break;
                case 2:
                    {
                    this.state = 2493;
                    this.match(HiveSqlParser.KW_KEY_TYPE);
                    }
                    break;
                case 3:
                    {
                    this.state = 2494;
                    this.match(HiveSqlParser.KW_VALUE_TYPE);
                    }
                    break;
                case 4:
                    {
                    this.state = 2495;
                    this.id_();
                    }
                    break;
                }
                }
                }
                this.state = 2502;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameOrderList(): ColumnNameOrderListContext {
        let localContext = new ColumnNameOrderListContext(this.context, this.state);
        this.enterRule(localContext, 290, HiveSqlParser.RULE_columnNameOrderList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2503;
            this.columnNameOrder();
            this.state = 2508;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2504;
                this.match(HiveSqlParser.COMMA);
                this.state = 2505;
                this.columnNameOrder();
                }
                }
                this.state = 2510;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnParenthesesList(): ColumnParenthesesListContext {
        let localContext = new ColumnParenthesesListContext(this.context, this.state);
        this.enterRule(localContext, 292, HiveSqlParser.RULE_columnParenthesesList);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2511;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2512;
            this.columnNameList();
            this.state = 2513;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public enableValidateSpecification(): EnableValidateSpecificationContext {
        let localContext = new EnableValidateSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 294, HiveSqlParser.RULE_enableValidateSpecification);
        let _la: number;
        try {
            this.state = 2520;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2515;
                this.enableSpecification();
                this.state = 2517;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 217 || _la === 373) {
                    {
                    this.state = 2516;
                    this.validateSpecification();
                    }
                }

                }
                break;
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_NOT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2519;
                this.enforcedSpecification();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public enableSpecification(): EnableSpecificationContext {
        let localContext = new EnableSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 296, HiveSqlParser.RULE_enableSpecification);
        try {
            this.state = 2524;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2522;
                this.enable();
                }
                break;
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2523;
                this.disable();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public validateSpecification(): ValidateSpecificationContext {
        let localContext = new ValidateSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 298, HiveSqlParser.RULE_validateSpecification);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2526;
            _la = this.tokenStream.LA(1);
            if(!(_la === 217 || _la === 373)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public enforcedSpecification(): EnforcedSpecificationContext {
        let localContext = new EnforcedSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 300, HiveSqlParser.RULE_enforcedSpecification);
        try {
            this.state = 2531;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ENFORCED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2528;
                this.match(HiveSqlParser.KW_ENFORCED);
                }
                break;
            case HiveSqlParser.KW_NOT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2529;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 2530;
                this.match(HiveSqlParser.KW_ENFORCED);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public relySpecification(): RelySpecificationContext {
        let localContext = new RelySpecificationContext(this.context, this.state);
        this.enterRule(localContext, 302, HiveSqlParser.RULE_relySpecification);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2533;
            _la = this.tokenStream.LA(1);
            if(!(_la === 214 || _la === 272)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createConstraint(): CreateConstraintContext {
        let localContext = new CreateConstraintContext(this.context, this.state);
        this.enterRule(localContext, 304, HiveSqlParser.RULE_createConstraint);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2537;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 55) {
                {
                this.state = 2535;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2536;
                localContext._constraintName = this.id_();
                }
            }

            this.state = 2539;
            this.tableLevelConstraint();
            this.state = 2541;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                {
                this.state = 2540;
                this.constraintOptsCreate();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterConstraintWithName(): AlterConstraintWithNameContext {
        let localContext = new AlterConstraintWithNameContext(this.context, this.state);
        this.enterRule(localContext, 306, HiveSqlParser.RULE_alterConstraintWithName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2543;
            this.match(HiveSqlParser.KW_CONSTRAINT);
            this.state = 2544;
            localContext._constraintName = this.id_();
            this.state = 2545;
            this.tableLevelConstraint();
            this.state = 2547;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) {
            case 1:
                {
                this.state = 2546;
                this.constraintOptsAlter();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableLevelConstraint(): TableLevelConstraintContext {
        let localContext = new TableLevelConstraintContext(this.context, this.state);
        this.enterRule(localContext, 308, HiveSqlParser.RULE_tableLevelConstraint);
        try {
            this.state = 2551;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_PRIMARY:
            case HiveSqlParser.KW_UNIQUE:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2549;
                this.pkUkConstraint();
                }
                break;
            case HiveSqlParser.KW_CHECK:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2550;
                this.checkConstraint();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public pkUkConstraint(): PkUkConstraintContext {
        let localContext = new PkUkConstraintContext(this.context, this.state);
        this.enterRule(localContext, 310, HiveSqlParser.RULE_pkUkConstraint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2553;
            this.tableConstraintType();
            this.state = 2554;
            localContext._pkCols = this.columnParenthesesList();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public checkConstraint(): CheckConstraintContext {
        let localContext = new CheckConstraintContext(this.context, this.state);
        this.enterRule(localContext, 312, HiveSqlParser.RULE_checkConstraint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2556;
            this.match(HiveSqlParser.KW_CHECK);
            this.state = 2557;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2558;
            this.expression();
            this.state = 2559;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createForeignKey(): CreateForeignKeyContext {
        let localContext = new CreateForeignKeyContext(this.context, this.state);
        this.enterRule(localContext, 314, HiveSqlParser.RULE_createForeignKey);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2563;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 55) {
                {
                this.state = 2561;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2562;
                localContext._constraintName = this.id_();
                }
            }

            this.state = 2565;
            this.match(HiveSqlParser.KW_FOREIGN);
            this.state = 2566;
            this.match(HiveSqlParser.KW_KEY);
            this.state = 2567;
            localContext._fkCols = this.columnParenthesesList();
            this.state = 2568;
            this.match(HiveSqlParser.KW_REFERENCES);
            this.state = 2569;
            localContext._tabName = this.tableName();
            this.state = 2570;
            localContext._parCols = this.columnParenthesesList();
            this.state = 2572;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                {
                this.state = 2571;
                this.constraintOptsCreate();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterForeignKeyWithName(): AlterForeignKeyWithNameContext {
        let localContext = new AlterForeignKeyWithNameContext(this.context, this.state);
        this.enterRule(localContext, 316, HiveSqlParser.RULE_alterForeignKeyWithName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2574;
            this.match(HiveSqlParser.KW_CONSTRAINT);
            this.state = 2575;
            localContext._constraintName = this.id_();
            this.state = 2576;
            this.match(HiveSqlParser.KW_FOREIGN);
            this.state = 2577;
            this.match(HiveSqlParser.KW_KEY);
            this.state = 2578;
            localContext._fkCols = this.columnParenthesesList();
            this.state = 2579;
            this.match(HiveSqlParser.KW_REFERENCES);
            this.state = 2580;
            localContext._tabName = this.tableName();
            this.state = 2581;
            localContext._parCols = this.columnParenthesesList();
            this.state = 2583;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 224, this.context) ) {
            case 1:
                {
                this.state = 2582;
                this.constraintOptsAlter();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedValueElement(): SkewedValueElementContext {
        let localContext = new SkewedValueElementContext(this.context, this.state);
        this.enterRule(localContext, 318, HiveSqlParser.RULE_skewedValueElement);
        try {
            this.state = 2587;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_CURRENT_DATE:
            case HiveSqlParser.KW_CURRENT_TIMESTAMP:
            case HiveSqlParser.KW_DATE:
            case HiveSqlParser.KW_FALSE:
            case HiveSqlParser.KW_NULL:
            case HiveSqlParser.KW_TIMESTAMP:
            case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
            case HiveSqlParser.KW_TRUE:
            case HiveSqlParser.QUESTION:
            case HiveSqlParser.StringLiteral:
            case HiveSqlParser.IntegralLiteral:
            case HiveSqlParser.NumberLiteral:
            case HiveSqlParser.Number:
            case HiveSqlParser.CharSetName:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2585;
                this.skewedColumnValues();
                }
                break;
            case HiveSqlParser.LPAREN:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2586;
                this.skewedColumnValuePairList();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedColumnValuePairList(): SkewedColumnValuePairListContext {
        let localContext = new SkewedColumnValuePairListContext(this.context, this.state);
        this.enterRule(localContext, 320, HiveSqlParser.RULE_skewedColumnValuePairList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2589;
            this.skewedColumnValuePair();
            this.state = 2594;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2590;
                this.match(HiveSqlParser.COMMA);
                this.state = 2591;
                this.skewedColumnValuePair();
                }
                }
                this.state = 2596;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedColumnValuePair(): SkewedColumnValuePairContext {
        let localContext = new SkewedColumnValuePairContext(this.context, this.state);
        this.enterRule(localContext, 322, HiveSqlParser.RULE_skewedColumnValuePair);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2597;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2598;
            localContext._colValues = this.skewedColumnValues();
            this.state = 2599;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedColumnValues(): SkewedColumnValuesContext {
        let localContext = new SkewedColumnValuesContext(this.context, this.state);
        this.enterRule(localContext, 324, HiveSqlParser.RULE_skewedColumnValues);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2601;
            this.skewedColumnValue();
            this.state = 2606;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2602;
                this.match(HiveSqlParser.COMMA);
                this.state = 2603;
                this.skewedColumnValue();
                }
                }
                this.state = 2608;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedColumnValue(): SkewedColumnValueContext {
        let localContext = new SkewedColumnValueContext(this.context, this.state);
        this.enterRule(localContext, 326, HiveSqlParser.RULE_skewedColumnValue);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2609;
            this.constant();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedValueLocationElement(): SkewedValueLocationElementContext {
        let localContext = new SkewedValueLocationElementContext(this.context, this.state);
        this.enterRule(localContext, 328, HiveSqlParser.RULE_skewedValueLocationElement);
        try {
            this.state = 2613;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_CURRENT_DATE:
            case HiveSqlParser.KW_CURRENT_TIMESTAMP:
            case HiveSqlParser.KW_DATE:
            case HiveSqlParser.KW_FALSE:
            case HiveSqlParser.KW_NULL:
            case HiveSqlParser.KW_TIMESTAMP:
            case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
            case HiveSqlParser.KW_TRUE:
            case HiveSqlParser.QUESTION:
            case HiveSqlParser.StringLiteral:
            case HiveSqlParser.IntegralLiteral:
            case HiveSqlParser.NumberLiteral:
            case HiveSqlParser.Number:
            case HiveSqlParser.CharSetName:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2611;
                this.skewedColumnValue();
                }
                break;
            case HiveSqlParser.LPAREN:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2612;
                this.skewedColumnValuePair();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public orderSpecification(): OrderSpecificationContext {
        let localContext = new OrderSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 330, HiveSqlParser.RULE_orderSpecification);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2615;
            _la = this.tokenStream.LA(1);
            if(!(_la === 18 || _la === 89)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public nullOrdering(): NullOrderingContext {
        let localContext = new NullOrderingContext(this.context, this.state);
        this.enterRule(localContext, 332, HiveSqlParser.RULE_nullOrdering);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2617;
            this.match(HiveSqlParser.KW_NULLS);
            this.state = 2618;
            _la = this.tokenStream.LA(1);
            if(!(_la === 130 || _la === 177)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameOrder(): ColumnNameOrderContext {
        let localContext = new ColumnNameOrderContext(this.context, this.state);
        this.enterRule(localContext, 334, HiveSqlParser.RULE_columnNameOrder);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2620;
            this.columnName();
            this.state = 2622;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 18 || _la === 89) {
                {
                this.state = 2621;
                localContext._orderSpec = this.orderSpecification();
                }
            }

            this.state = 2625;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 220) {
                {
                this.state = 2624;
                localContext._nullSpec = this.nullOrdering();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameCommentList(): ColumnNameCommentListContext {
        let localContext = new ColumnNameCommentListContext(this.context, this.state);
        this.enterRule(localContext, 336, HiveSqlParser.RULE_columnNameCommentList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2627;
            this.columnNameComment();
            this.state = 2632;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2628;
                this.match(HiveSqlParser.COMMA);
                this.state = 2629;
                this.columnNameComment();
                }
                }
                this.state = 2634;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameComment(): ColumnNameCommentContext {
        let localContext = new ColumnNameCommentContext(this.context, this.state);
        this.enterRule(localContext, 338, HiveSqlParser.RULE_columnNameComment);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2635;
            localContext._colName = this.columnNameCreate();
            this.state = 2638;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 2636;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 2637;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public orderSpecificationRewrite(): OrderSpecificationRewriteContext {
        let localContext = new OrderSpecificationRewriteContext(this.context, this.state);
        this.enterRule(localContext, 340, HiveSqlParser.RULE_orderSpecificationRewrite);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2640;
            _la = this.tokenStream.LA(1);
            if(!(_la === 18 || _la === 89)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnRefOrder(): ColumnRefOrderContext {
        let localContext = new ColumnRefOrderContext(this.context, this.state);
        this.enterRule(localContext, 342, HiveSqlParser.RULE_columnRefOrder);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2644;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 233, this.context) ) {
            case 1:
                {
                this.state = 2642;
                this.columnName();
                }
                break;
            case 2:
                {
                this.state = 2643;
                this.expression();
                }
                break;
            }
            this.state = 2647;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 234, this.context) ) {
            case 1:
                {
                this.state = 2646;
                localContext._orderSpec = this.orderSpecificationRewrite();
                }
                break;
            }
            this.state = 2650;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 220) {
                {
                this.state = 2649;
                localContext._nullSpec = this.nullOrdering();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameType(): ColumnNameTypeContext {
        let localContext = new ColumnNameTypeContext(this.context, this.state);
        this.enterRule(localContext, 344, HiveSqlParser.RULE_columnNameType);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2652;
            localContext._colName = this.columnNameCreate();
            this.state = 2653;
            this.colType();
            this.state = 2656;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 2654;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 2655;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameTypeOrConstraint(): ColumnNameTypeOrConstraintContext {
        let localContext = new ColumnNameTypeOrConstraintContext(this.context, this.state);
        this.enterRule(localContext, 346, HiveSqlParser.RULE_columnNameTypeOrConstraint);
        try {
            this.state = 2660;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2658;
                this.tableConstraint();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2659;
                this.columnNameTypeConstraint();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableConstraint(): TableConstraintContext {
        let localContext = new TableConstraintContext(this.context, this.state);
        this.enterRule(localContext, 348, HiveSqlParser.RULE_tableConstraint);
        try {
            this.state = 2664;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2662;
                this.createForeignKey();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2663;
                this.createConstraint();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameTypeConstraint(): ColumnNameTypeConstraintContext {
        let localContext = new ColumnNameTypeConstraintContext(this.context, this.state);
        this.enterRule(localContext, 350, HiveSqlParser.RULE_columnNameTypeConstraint);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2666;
            localContext._colName = this.columnNameCreate();
            this.state = 2667;
            this.colType();
            this.state = 2669;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 40 || _la === 55 || _la === 83 || _la === 216 || _la === 251 || _la === 269 || _la === 358) {
                {
                this.state = 2668;
                this.columnConstraint();
                }
            }

            this.state = 2673;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 2671;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 2672;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnConstraint(): ColumnConstraintContext {
        let localContext = new ColumnConstraintContext(this.context, this.state);
        this.enterRule(localContext, 352, HiveSqlParser.RULE_columnConstraint);
        try {
            this.state = 2677;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2675;
                this.foreignKeyConstraint();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2676;
                this.colConstraint();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public foreignKeyConstraint(): ForeignKeyConstraintContext {
        let localContext = new ForeignKeyConstraintContext(this.context, this.state);
        this.enterRule(localContext, 354, HiveSqlParser.RULE_foreignKeyConstraint);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2681;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 55) {
                {
                this.state = 2679;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2680;
                localContext._constraintName = this.id_();
                }
            }

            this.state = 2683;
            this.match(HiveSqlParser.KW_REFERENCES);
            this.state = 2684;
            localContext._tabName = this.tableName();
            this.state = 2685;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2686;
            localContext._colName = this.columnName();
            this.state = 2687;
            this.match(HiveSqlParser.RPAREN);
            this.state = 2689;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                {
                this.state = 2688;
                this.constraintOptsCreate();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public colConstraint(): ColConstraintContext {
        let localContext = new ColConstraintContext(this.context, this.state);
        this.enterRule(localContext, 356, HiveSqlParser.RULE_colConstraint);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2693;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 55) {
                {
                this.state = 2691;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2692;
                localContext._constraintName = this.id_();
                }
            }

            this.state = 2695;
            this.columnConstraintType();
            this.state = 2697;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                {
                this.state = 2696;
                this.constraintOptsCreate();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterColumnConstraint(): AlterColumnConstraintContext {
        let localContext = new AlterColumnConstraintContext(this.context, this.state);
        this.enterRule(localContext, 358, HiveSqlParser.RULE_alterColumnConstraint);
        try {
            this.state = 2701;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 246, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2699;
                this.alterForeignKeyConstraint();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2700;
                this.alterColConstraint();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterForeignKeyConstraint(): AlterForeignKeyConstraintContext {
        let localContext = new AlterForeignKeyConstraintContext(this.context, this.state);
        this.enterRule(localContext, 360, HiveSqlParser.RULE_alterForeignKeyConstraint);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2705;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 55) {
                {
                this.state = 2703;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2704;
                localContext._constraintName = this.id_();
                }
            }

            this.state = 2707;
            this.match(HiveSqlParser.KW_REFERENCES);
            this.state = 2708;
            localContext._tabName = this.tableName();
            this.state = 2709;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2710;
            localContext._colName = this.columnName();
            this.state = 2711;
            this.match(HiveSqlParser.RPAREN);
            this.state = 2713;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) {
            case 1:
                {
                this.state = 2712;
                this.constraintOptsAlter();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterColConstraint(): AlterColConstraintContext {
        let localContext = new AlterColConstraintContext(this.context, this.state);
        this.enterRule(localContext, 362, HiveSqlParser.RULE_alterColConstraint);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2717;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 55) {
                {
                this.state = 2715;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2716;
                localContext._constraintName = this.id_();
                }
            }

            this.state = 2719;
            this.columnConstraintType();
            this.state = 2721;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 250, this.context) ) {
            case 1:
                {
                this.state = 2720;
                this.constraintOptsAlter();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnConstraintType(): ColumnConstraintTypeContext {
        let localContext = new ColumnConstraintTypeContext(this.context, this.state);
        this.enterRule(localContext, 364, HiveSqlParser.RULE_columnConstraintType);
        try {
            this.state = 2729;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_NOT:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2723;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 2724;
                this.match(HiveSqlParser.KW_NULL);
                }
                break;
            case HiveSqlParser.KW_DEFAULT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2725;
                this.match(HiveSqlParser.KW_DEFAULT);
                this.state = 2726;
                this.defaultVal();
                }
                break;
            case HiveSqlParser.KW_CHECK:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2727;
                this.checkConstraint();
                }
                break;
            case HiveSqlParser.KW_PRIMARY:
            case HiveSqlParser.KW_UNIQUE:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 2728;
                this.tableConstraintType();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public defaultVal(): DefaultValContext {
        let localContext = new DefaultValContext(this.context, this.state);
        this.enterRule(localContext, 366, HiveSqlParser.RULE_defaultVal);
        try {
            this.state = 2734;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 252, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2731;
                this.constant();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2732;
                this.function_();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2733;
                this.castExpression();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableConstraintType(): TableConstraintTypeContext {
        let localContext = new TableConstraintTypeContext(this.context, this.state);
        this.enterRule(localContext, 368, HiveSqlParser.RULE_tableConstraintType);
        try {
            this.state = 2739;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_PRIMARY:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2736;
                this.match(HiveSqlParser.KW_PRIMARY);
                this.state = 2737;
                this.match(HiveSqlParser.KW_KEY);
                }
                break;
            case HiveSqlParser.KW_UNIQUE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2738;
                this.match(HiveSqlParser.KW_UNIQUE);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public constraintOptsCreate(): ConstraintOptsCreateContext {
        let localContext = new ConstraintOptsCreateContext(this.context, this.state);
        this.enterRule(localContext, 370, HiveSqlParser.RULE_constraintOptsCreate);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2741;
            this.enableValidateSpecification();
            this.state = 2743;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 214 || _la === 272) {
                {
                this.state = 2742;
                this.relySpecification();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public constraintOptsAlter(): ConstraintOptsAlterContext {
        let localContext = new ConstraintOptsAlterContext(this.context, this.state);
        this.enterRule(localContext, 372, HiveSqlParser.RULE_constraintOptsAlter);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2745;
            this.enableValidateSpecification();
            this.state = 2747;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 214 || _la === 272) {
                {
                this.state = 2746;
                this.relySpecification();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnNameColonType(): ColumnNameColonTypeContext {
        let localContext = new ColumnNameColonTypeContext(this.context, this.state);
        this.enterRule(localContext, 374, HiveSqlParser.RULE_columnNameColonType);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2749;
            localContext._colName = this.columnNameCreate();
            this.state = 2750;
            this.match(HiveSqlParser.COLON);
            this.state = 2751;
            this.colType();
            this.state = 2754;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 2752;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 2753;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public colType(): ColTypeContext {
        let localContext = new ColTypeContext(this.context, this.state);
        this.enterRule(localContext, 376, HiveSqlParser.RULE_colType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2756;
            this.type_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public colTypeList(): ColTypeListContext {
        let localContext = new ColTypeListContext(this.context, this.state);
        this.enterRule(localContext, 378, HiveSqlParser.RULE_colTypeList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2758;
            this.colType();
            this.state = 2763;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2759;
                this.match(HiveSqlParser.COMMA);
                this.state = 2760;
                this.colType();
                }
                }
                this.state = 2765;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public type_(): TypeContext {
        let localContext = new TypeContext(this.context, this.state);
        this.enterRule(localContext, 380, HiveSqlParser.RULE_type);
        try {
            this.state = 2771;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_BIGINT:
            case HiveSqlParser.KW_BINARY:
            case HiveSqlParser.KW_BOOLEAN:
            case HiveSqlParser.KW_CHAR:
            case HiveSqlParser.KW_DATE:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DEC:
            case HiveSqlParser.KW_DECIMAL:
            case HiveSqlParser.KW_NUMERIC:
            case HiveSqlParser.KW_DOUBLE:
            case HiveSqlParser.KW_FLOAT:
            case HiveSqlParser.KW_INT:
            case HiveSqlParser.KW_INTEGER:
            case HiveSqlParser.KW_REAL:
            case HiveSqlParser.KW_SMALLINT:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_TIMESTAMP:
            case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_VARCHAR:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2766;
                this.primitiveType();
                }
                break;
            case HiveSqlParser.KW_ARRAY:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2767;
                this.listType();
                }
                break;
            case HiveSqlParser.KW_STRUCT:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2768;
                this.structType();
                }
                break;
            case HiveSqlParser.KW_MAP:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 2769;
                this.mapType();
                }
                break;
            case HiveSqlParser.KW_UNIONTYPE:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 2770;
                this.unionType();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public primitiveType(): PrimitiveTypeContext {
        let localContext = new PrimitiveTypeContext(this.context, this.state);
        this.enterRule(localContext, 382, HiveSqlParser.RULE_primitiveType);
        let _la: number;
        try {
            this.state = 2810;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 262, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2773;
                this.match(HiveSqlParser.KW_TINYINT);
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2774;
                this.match(HiveSqlParser.KW_SMALLINT);
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2775;
                this.match(HiveSqlParser.KW_INT);
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 2776;
                this.match(HiveSqlParser.KW_INTEGER);
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 2777;
                this.match(HiveSqlParser.KW_BIGINT);
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 2778;
                this.match(HiveSqlParser.KW_BOOLEAN);
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 2779;
                this.match(HiveSqlParser.KW_FLOAT);
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 2780;
                this.match(HiveSqlParser.KW_REAL);
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 2781;
                this.match(HiveSqlParser.KW_DOUBLE);
                this.state = 2783;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 248) {
                    {
                    this.state = 2782;
                    this.match(HiveSqlParser.KW_PRECISION);
                    }
                }

                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 2785;
                this.match(HiveSqlParser.KW_DATE);
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 2786;
                this.match(HiveSqlParser.KW_DATETIME);
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 2787;
                this.match(HiveSqlParser.KW_TIMESTAMP);
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 2788;
                this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ);
                }
                break;
            case 14:
                this.enterOuterAlt(localContext, 14);
                {
                this.state = 2789;
                this.match(HiveSqlParser.KW_TIMESTAMP);
                this.state = 2790;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 2791;
                this.match(HiveSqlParser.KW_LOCAL);
                this.state = 2792;
                this.match(HiveSqlParser.KW_TIME);
                this.state = 2793;
                this.match(HiveSqlParser.KW_ZONE);
                }
                break;
            case 15:
                this.enterOuterAlt(localContext, 15);
                {
                this.state = 2794;
                this.match(HiveSqlParser.KW_STRING);
                }
                break;
            case 16:
                this.enterOuterAlt(localContext, 16);
                {
                this.state = 2795;
                this.match(HiveSqlParser.KW_BINARY);
                }
                break;
            case 17:
                this.enterOuterAlt(localContext, 17);
                {
                this.state = 2796;
                this.decimal();
                this.state = 2804;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 261, this.context) ) {
                case 1:
                    {
                    this.state = 2797;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 2798;
                    localContext._prec = this.match(HiveSqlParser.Number);
                    this.state = 2801;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 397) {
                        {
                        this.state = 2799;
                        this.match(HiveSqlParser.COMMA);
                        this.state = 2800;
                        localContext._scale = this.match(HiveSqlParser.Number);
                        }
                    }

                    this.state = 2803;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                }
                }
                break;
            case 18:
                this.enterOuterAlt(localContext, 18);
                {
                this.state = 2806;
                _la = this.tokenStream.LA(1);
                if(!(_la === 39 || _la === 376)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 2807;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2808;
                localContext._length = this.match(HiveSqlParser.Number);
                this.state = 2809;
                this.match(HiveSqlParser.RPAREN);
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public listType(): ListTypeContext {
        let localContext = new ListTypeContext(this.context, this.state);
        this.enterRule(localContext, 384, HiveSqlParser.RULE_listType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2812;
            this.match(HiveSqlParser.KW_ARRAY);
            this.state = 2813;
            this.match(HiveSqlParser.LESSTHAN);
            this.state = 2814;
            this.type_();
            this.state = 2815;
            this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public structType(): StructTypeContext {
        let localContext = new StructTypeContext(this.context, this.state);
        this.enterRule(localContext, 386, HiveSqlParser.RULE_structType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2817;
            this.match(HiveSqlParser.KW_STRUCT);
            this.state = 2818;
            this.match(HiveSqlParser.LESSTHAN);
            this.state = 2819;
            this.columnNameColonTypeList();
            this.state = 2820;
            this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public mapType(): MapTypeContext {
        let localContext = new MapTypeContext(this.context, this.state);
        this.enterRule(localContext, 388, HiveSqlParser.RULE_mapType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2822;
            this.match(HiveSqlParser.KW_MAP);
            this.state = 2823;
            this.match(HiveSqlParser.LESSTHAN);
            this.state = 2824;
            localContext._left = this.primitiveType();
            this.state = 2825;
            this.match(HiveSqlParser.COMMA);
            this.state = 2826;
            localContext._right = this.type_();
            this.state = 2827;
            this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public unionType(): UnionTypeContext {
        let localContext = new UnionTypeContext(this.context, this.state);
        this.enterRule(localContext, 390, HiveSqlParser.RULE_unionType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2829;
            this.match(HiveSqlParser.KW_UNIONTYPE);
            this.state = 2830;
            this.match(HiveSqlParser.LESSTHAN);
            this.state = 2831;
            this.colTypeList();
            this.state = 2832;
            this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public setOperator(): SetOperatorContext {
        let localContext = new SetOperatorContext(this.context, this.state);
        this.enterRule(localContext, 392, HiveSqlParser.RULE_setOperator);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2834;
            _la = this.tokenStream.LA(1);
            if(!(_la === 112 || _la === 164 || _la === 205 || _la === 356)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            this.state = 2836;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 7 || _la === 96) {
                {
                this.state = 2835;
                _la = this.tokenStream.LA(1);
                if(!(_la === 7 || _la === 96)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public queryStatementExpression(): QueryStatementExpressionContext {
        let localContext = new QueryStatementExpressionContext(this.context, this.state);
        this.enterRule(localContext, 394, HiveSqlParser.RULE_queryStatementExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2839;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 387) {
                {
                this.state = 2838;
                localContext._w = this.withClause();
                }
            }

            this.state = 2841;
            this.queryStatementExpressionBody();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public queryStatementExpressionBody(): QueryStatementExpressionBodyContext {
        let localContext = new QueryStatementExpressionBodyContext(this.context, this.state);
        this.enterRule(localContext, 396, HiveSqlParser.RULE_queryStatementExpressionBody);
        try {
            this.state = 2845;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_FROM:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2843;
                this.fromStatement();
                }
                break;
            case HiveSqlParser.KW_INSERT:
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_REDUCE:
            case HiveSqlParser.KW_SELECT:
            case HiveSqlParser.KW_VALUES:
            case HiveSqlParser.LPAREN:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2844;
                this.regularBody();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public withClause(): WithClauseContext {
        let localContext = new WithClauseContext(this.context, this.state);
        this.enterRule(localContext, 398, HiveSqlParser.RULE_withClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2847;
            this.match(HiveSqlParser.KW_WITH);
            this.state = 2848;
            this.cteStatement();
            this.state = 2853;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 2849;
                this.match(HiveSqlParser.COMMA);
                this.state = 2850;
                this.cteStatement();
                }
                }
                this.state = 2855;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public cteStatement(): CteStatementContext {
        let localContext = new CteStatementContext(this.context, this.state);
        this.enterRule(localContext, 400, HiveSqlParser.RULE_cteStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2856;
            this.id_();
            this.state = 2861;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 399) {
                {
                this.state = 2857;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2858;
                localContext._colAliases = this.columnNameList();
                this.state = 2859;
                this.match(HiveSqlParser.RPAREN);
                }
            }

            this.state = 2863;
            this.match(HiveSqlParser.KW_AS);
            this.state = 2864;
            this.match(HiveSqlParser.LPAREN);
            this.state = 2865;
            this.queryStatementExpression();
            this.state = 2866;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public fromStatement(): FromStatementContext {
        let localContext = new FromStatementContext(this.context, this.state);
        this.enterRule(localContext, 402, HiveSqlParser.RULE_fromStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2868;
            this.singleFromStatement();
            this.state = 2874;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 112 || _la === 164 || _la === 205 || _la === 356) {
                {
                {
                this.state = 2869;
                localContext._u = this.setOperator();
                this.state = 2870;
                localContext._r = this.singleFromStatement();
                }
                }
                this.state = 2876;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public singleFromStatement(): SingleFromStatementContext {
        let localContext = new SingleFromStatementContext(this.context, this.state);
        this.enterRule(localContext, 404, HiveSqlParser.RULE_singleFromStatement);
        let _la: number;
        try {
            this.state = 2948;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 291, this.context) ) {
            case 1:
                localContext = new FromInsertStmtContext(localContext);
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2877;
                this.fromClause();
                this.state = 2878;
                this.insertClause();
                this.state = 2879;
                this.selectClause();
                this.state = 2881;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 178 || _la === 397) {
                    {
                    this.state = 2880;
                    this.lateralView();
                    }
                }

                this.state = 2884;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 384) {
                    {
                    this.state = 2883;
                    this.whereClause();
                    }
                }

                this.state = 2887;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 144) {
                    {
                    this.state = 2886;
                    this.groupByClause();
                    }
                }

                this.state = 2890;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 146) {
                    {
                    this.state = 2889;
                    this.havingClause();
                    }
                }

                this.state = 2893;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 386) {
                    {
                    this.state = 2892;
                    this.window_clause();
                    }
                }

                this.state = 2896;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 256) {
                    {
                    this.state = 2895;
                    this.qualifyClause();
                    }
                }

                this.state = 2899;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 229) {
                    {
                    this.state = 2898;
                    this.orderByClause();
                    }
                }

                this.state = 2902;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 41) {
                    {
                    this.state = 2901;
                    this.clusterByClause();
                    }
                }

                this.state = 2905;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 97) {
                    {
                    this.state = 2904;
                    this.distributeByClause();
                    }
                }

                this.state = 2908;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 314) {
                    {
                    this.state = 2907;
                    this.sortByClause();
                    }
                }

                this.state = 2911;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 185) {
                    {
                    this.state = 2910;
                    this.limitClause();
                    }
                }

                }
                break;
            case 2:
                localContext = new FromSelectStmtContext(localContext);
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2913;
                this.fromClause();
                this.state = 2914;
                this.selectClause();
                this.state = 2916;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 178 || _la === 397) {
                    {
                    this.state = 2915;
                    this.lateralView();
                    }
                }

                this.state = 2919;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 384) {
                    {
                    this.state = 2918;
                    this.whereClause();
                    }
                }

                this.state = 2922;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 144) {
                    {
                    this.state = 2921;
                    this.groupByClause();
                    }
                }

                this.state = 2925;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 146) {
                    {
                    this.state = 2924;
                    this.havingClause();
                    }
                }

                this.state = 2928;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 386) {
                    {
                    this.state = 2927;
                    this.window_clause();
                    }
                }

                this.state = 2931;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 256) {
                    {
                    this.state = 2930;
                    this.qualifyClause();
                    }
                }

                this.state = 2934;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 229) {
                    {
                    this.state = 2933;
                    this.orderByClause();
                    }
                }

                this.state = 2937;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 41) {
                    {
                    this.state = 2936;
                    this.clusterByClause();
                    }
                }

                this.state = 2940;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 97) {
                    {
                    this.state = 2939;
                    this.distributeByClause();
                    }
                }

                this.state = 2943;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 314) {
                    {
                    this.state = 2942;
                    this.sortByClause();
                    }
                }

                this.state = 2946;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 185) {
                    {
                    this.state = 2945;
                    this.limitClause();
                    }
                }

                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public regularBody(): RegularBodyContext {
        let localContext = new RegularBodyContext(this.context, this.state);
        this.enterRule(localContext, 406, HiveSqlParser.RULE_regularBody);
        try {
            this.state = 2954;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_INSERT:
                localContext = new InsertStmtContext(localContext);
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2950;
                (localContext as InsertStmtContext)._i = this.insertClause();
                this.state = 2951;
                (localContext as InsertStmtContext)._s = this.selectStatement();
                }
                break;
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_REDUCE:
            case HiveSqlParser.KW_SELECT:
            case HiveSqlParser.KW_VALUES:
            case HiveSqlParser.LPAREN:
                localContext = new SelectStmtContext(localContext);
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2953;
                this.selectStatement();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public atomSelectStatement(): AtomSelectStatementContext {
        let localContext = new AtomSelectStatementContext(this.context, this.state);
        this.enterRule(localContext, 408, HiveSqlParser.RULE_atomSelectStatement);
        let _la: number;
        try {
            this.state = 2980;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_REDUCE:
            case HiveSqlParser.KW_SELECT:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 2956;
                localContext._s = this.selectClause();
                this.state = 2958;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 293, this.context) ) {
                case 1:
                    {
                    this.state = 2957;
                    localContext._f = this.fromClause();
                    }
                    break;
                }
                this.state = 2961;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 384) {
                    {
                    this.state = 2960;
                    localContext._w = this.whereClause();
                    }
                }

                this.state = 2964;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 144) {
                    {
                    this.state = 2963;
                    localContext._g = this.groupByClause();
                    }
                }

                this.state = 2967;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 146) {
                    {
                    this.state = 2966;
                    localContext._h = this.havingClause();
                    }
                }

                this.state = 2970;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 386) {
                    {
                    this.state = 2969;
                    localContext._win = this.window_clause();
                    }
                }

                this.state = 2973;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 256) {
                    {
                    this.state = 2972;
                    localContext._q = this.qualifyClause();
                    }
                }

                }
                break;
            case HiveSqlParser.LPAREN:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 2975;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2976;
                this.selectStatement();
                this.state = 2977;
                this.match(HiveSqlParser.RPAREN);
                }
                break;
            case HiveSqlParser.KW_VALUES:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 2979;
                this.valuesSource();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectStatement(): SelectStatementContext {
        let localContext = new SelectStatementContext(this.context, this.state);
        this.enterRule(localContext, 410, HiveSqlParser.RULE_selectStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 2982;
            localContext._a = this.atomSelectStatement();
            this.state = 2984;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 112 || _la === 164 || _la === 205 || _la === 356) {
                {
                this.state = 2983;
                localContext._set_ = this.setOpSelectStatement();
                }
            }

            this.state = 2987;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 229) {
                {
                this.state = 2986;
                localContext._o = this.orderByClause();
                }
            }

            this.state = 2990;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 41) {
                {
                this.state = 2989;
                localContext._c = this.clusterByClause();
                }
            }

            this.state = 2993;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 97) {
                {
                this.state = 2992;
                localContext._d = this.distributeByClause();
                }
            }

            this.state = 2996;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 314) {
                {
                this.state = 2995;
                localContext._sort = this.sortByClause();
                }
            }

            this.state = 2999;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 185) {
                {
                this.state = 2998;
                localContext._l = this.limitClause();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public setOpSelectStatement(): SetOpSelectStatementContext {
        let localContext = new SetOpSelectStatementContext(this.context, this.state);
        this.enterRule(localContext, 412, HiveSqlParser.RULE_setOpSelectStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3004;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 3001;
                localContext._u = this.setOperator();
                this.state = 3002;
                localContext._b = this.atomSelectStatement();
                }
                }
                this.state = 3006;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 112 || _la === 164 || _la === 205 || _la === 356);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectStatementWithCTE(): SelectStatementWithCTEContext {
        let localContext = new SelectStatementWithCTEContext(this.context, this.state);
        this.enterRule(localContext, 414, HiveSqlParser.RULE_selectStatementWithCTE);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3009;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 387) {
                {
                this.state = 3008;
                localContext._w = this.withClause();
                }
            }

            this.state = 3011;
            this.selectStatement();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public insertClause(): InsertClauseContext {
        let localContext = new InsertClauseContext(this.context, this.state);
        this.enterRule(localContext, 416, HiveSqlParser.RULE_insertClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3013;
            this.match(HiveSqlParser.KW_INSERT);
            this.state = 3030;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_OVERWRITE:
                {
                this.state = 3014;
                this.match(HiveSqlParser.KW_OVERWRITE);
                this.state = 3015;
                this.destination();
                this.state = 3017;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                    this.state = 3016;
                    this.ifNotExists();
                    }
                }

                }
                break;
            case HiveSqlParser.KW_INTO:
                {
                this.state = 3019;
                this.match(HiveSqlParser.KW_INTO);
                this.state = 3021;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 329) {
                    {
                    this.state = 3020;
                    this.match(HiveSqlParser.KW_TABLE);
                    }
                }

                this.state = 3023;
                this.tableOrPartition();
                this.state = 3028;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 310, this.context) ) {
                case 1:
                    {
                    this.state = 3024;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 3025;
                    localContext._targetCols = this.columnNameList();
                    this.state = 3026;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                }
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public destination(): DestinationContext {
        let localContext = new DestinationContext(this.context, this.state);
        this.enterRule(localContext, 418, HiveSqlParser.RULE_destination);
        let _la: number;
        try {
            this.state = 3045;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_LOCAL:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3033;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 188) {
                    {
                    this.state = 3032;
                    localContext._local = this.match(HiveSqlParser.KW_LOCAL);
                    }
                }

                this.state = 3035;
                this.match(HiveSqlParser.KW_DIRECTORY);
                this.state = 3036;
                this.match(HiveSqlParser.StringLiteral);
                this.state = 3038;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 291) {
                    {
                    this.state = 3037;
                    this.tableRowFormat();
                    }
                }

                this.state = 3041;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 321) {
                    {
                    this.state = 3040;
                    this.tableFileFormat();
                    }
                }

                }
                break;
            case HiveSqlParser.KW_TABLE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3043;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 3044;
                this.tableOrPartition();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public limitClause(): LimitClauseContext {
        let localContext = new LimitClauseContext(this.context, this.state);
        this.enterRule(localContext, 420, HiveSqlParser.RULE_limitClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3047;
            this.match(HiveSqlParser.KW_LIMIT);
            this.state = 3056;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) {
            case 1:
                {
                this.state = 3050;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 316, this.context) ) {
                case 1:
                    {
                    this.state = 3048;
                    localContext._offset = this.match(HiveSqlParser.Number);
                    this.state = 3049;
                    this.match(HiveSqlParser.COMMA);
                    }
                    break;
                }
                this.state = 3052;
                localContext._num = this.match(HiveSqlParser.Number);
                }
                break;
            case 2:
                {
                this.state = 3053;
                localContext._num = this.match(HiveSqlParser.Number);
                this.state = 3054;
                this.match(HiveSqlParser.KW_OFFSET);
                this.state = 3055;
                localContext._offset = this.match(HiveSqlParser.Number);
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public deleteStatement(): DeleteStatementContext {
        let localContext = new DeleteStatementContext(this.context, this.state);
        this.enterRule(localContext, 422, HiveSqlParser.RULE_deleteStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3058;
            this.match(HiveSqlParser.KW_DELETE);
            this.state = 3059;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 3060;
            this.tableName();
            this.state = 3062;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 384) {
                {
                this.state = 3061;
                this.whereClause();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnAssignmentClause(): ColumnAssignmentClauseContext {
        let localContext = new ColumnAssignmentClauseContext(this.context, this.state);
        this.enterRule(localContext, 424, HiveSqlParser.RULE_columnAssignmentClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3064;
            this.columnName();
            this.state = 3065;
            this.match(HiveSqlParser.EQUAL);
            this.state = 3066;
            this.precedencePlusExpressionOrDefault();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedencePlusExpressionOrDefault(): PrecedencePlusExpressionOrDefaultContext {
        let localContext = new PrecedencePlusExpressionOrDefaultContext(this.context, this.state);
        this.enterRule(localContext, 426, HiveSqlParser.RULE_precedencePlusExpressionOrDefault);
        try {
            this.state = 3070;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 319, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3068;
                this.defaultValue();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3069;
                this.precedencePlusExpression();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public setColumnsClause(): SetColumnsClauseContext {
        let localContext = new SetColumnsClauseContext(this.context, this.state);
        this.enterRule(localContext, 428, HiveSqlParser.RULE_setColumnsClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3072;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3073;
            this.columnAssignmentClause();
            this.state = 3078;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 3074;
                this.match(HiveSqlParser.COMMA);
                this.state = 3075;
                this.columnAssignmentClause();
                }
                }
                this.state = 3080;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public updateStatement(): UpdateStatementContext {
        let localContext = new UpdateStatementContext(this.context, this.state);
        this.enterRule(localContext, 430, HiveSqlParser.RULE_updateStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3081;
            this.match(HiveSqlParser.KW_UPDATE);
            this.state = 3082;
            this.tableName();
            this.state = 3083;
            this.setColumnsClause();
            this.state = 3085;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 384) {
                {
                this.state = 3084;
                this.whereClause();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public sqlTransactionStatement(): SqlTransactionStatementContext {
        let localContext = new SqlTransactionStatementContext(this.context, this.state);
        this.enterRule(localContext, 432, HiveSqlParser.RULE_sqlTransactionStatement);
        try {
            this.state = 3091;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_START:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3087;
                this.startTransactionStatement();
                }
                break;
            case HiveSqlParser.KW_COMMIT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3088;
                this.commitStatement();
                }
                break;
            case HiveSqlParser.KW_ROLLBACK:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3089;
                this.rollbackStatement();
                }
                break;
            case HiveSqlParser.KW_SET:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 3090;
                this.setAutoCommitStatement();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public startTransactionStatement(): StartTransactionStatementContext {
        let localContext = new StartTransactionStatementContext(this.context, this.state);
        this.enterRule(localContext, 434, HiveSqlParser.RULE_startTransactionStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3093;
            this.match(HiveSqlParser.KW_START);
            this.state = 3094;
            this.match(HiveSqlParser.KW_TRANSACTION);
            this.state = 3103;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 168 || _la === 261) {
                {
                this.state = 3095;
                this.transactionMode();
                this.state = 3100;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 3096;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 3097;
                    this.transactionMode();
                    }
                    }
                    this.state = 3102;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public transactionMode(): TransactionModeContext {
        let localContext = new TransactionModeContext(this.context, this.state);
        this.enterRule(localContext, 436, HiveSqlParser.RULE_transactionMode);
        try {
            this.state = 3107;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ISOLATION:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3105;
                this.isolationLevel();
                }
                break;
            case HiveSqlParser.KW_READ:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3106;
                this.transactionAccessMode();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public transactionAccessMode(): TransactionAccessModeContext {
        let localContext = new TransactionAccessModeContext(this.context, this.state);
        this.enterRule(localContext, 438, HiveSqlParser.RULE_transactionAccessMode);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3109;
            this.match(HiveSqlParser.KW_READ);
            this.state = 3110;
            _la = this.tokenStream.LA(1);
            if(!(_la === 225 || _la === 391)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public isolationLevel(): IsolationLevelContext {
        let localContext = new IsolationLevelContext(this.context, this.state);
        this.enterRule(localContext, 440, HiveSqlParser.RULE_isolationLevel);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3112;
            this.match(HiveSqlParser.KW_ISOLATION);
            this.state = 3113;
            this.match(HiveSqlParser.KW_LEVEL);
            this.state = 3114;
            this.levelOfIsolation();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public levelOfIsolation(): LevelOfIsolationContext {
        let localContext = new LevelOfIsolationContext(this.context, this.state);
        this.enterRule(localContext, 442, HiveSqlParser.RULE_levelOfIsolation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3116;
            this.match(HiveSqlParser.KW_SNAPSHOT);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public commitStatement(): CommitStatementContext {
        let localContext = new CommitStatementContext(this.context, this.state);
        this.enterRule(localContext, 444, HiveSqlParser.RULE_commitStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3118;
            this.match(HiveSqlParser.KW_COMMIT);
            this.state = 3120;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 389) {
                {
                this.state = 3119;
                this.match(HiveSqlParser.KW_WORK);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rollbackStatement(): RollbackStatementContext {
        let localContext = new RollbackStatementContext(this.context, this.state);
        this.enterRule(localContext, 446, HiveSqlParser.RULE_rollbackStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3122;
            this.match(HiveSqlParser.KW_ROLLBACK);
            this.state = 3124;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 389) {
                {
                this.state = 3123;
                this.match(HiveSqlParser.KW_WORK);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public setAutoCommitStatement(): SetAutoCommitStatementContext {
        let localContext = new SetAutoCommitStatementContext(this.context, this.state);
        this.enterRule(localContext, 448, HiveSqlParser.RULE_setAutoCommitStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3126;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3127;
            this.match(HiveSqlParser.KW_AUTOCOMMIT);
            this.state = 3128;
            this.booleanValueTok();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public abortTransactionStatement(): AbortTransactionStatementContext {
        let localContext = new AbortTransactionStatementContext(this.context, this.state);
        this.enterRule(localContext, 450, HiveSqlParser.RULE_abortTransactionStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3130;
            this.match(HiveSqlParser.KW_ABORT);
            this.state = 3131;
            this.match(HiveSqlParser.KW_TRANSACTIONS);
            this.state = 3133;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 3132;
                this.match(HiveSqlParser.Number);
                }
                }
                this.state = 3135;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 431);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public abortCompactionStatement(): AbortCompactionStatementContext {
        let localContext = new AbortCompactionStatementContext(this.context, this.state);
        this.enterRule(localContext, 452, HiveSqlParser.RULE_abortCompactionStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3137;
            this.match(HiveSqlParser.KW_ABORT);
            this.state = 3138;
            this.match(HiveSqlParser.KW_COMPACTIONS);
            this.state = 3140;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 3139;
                this.match(HiveSqlParser.Number);
                }
                }
                this.state = 3142;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 431);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public mergeStatement(): MergeStatementContext {
        let localContext = new MergeStatementContext(this.context, this.state);
        this.enterRule(localContext, 454, HiveSqlParser.RULE_mergeStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3144;
            this.match(HiveSqlParser.KW_MERGE);
            this.state = 3146;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 436) {
                {
                this.state = 3145;
                this.match(HiveSqlParser.QUERY_HINT);
                }
            }

            this.state = 3148;
            this.match(HiveSqlParser.KW_INTO);
            this.state = 3149;
            this.tableName();
            this.state = 3154;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                {
                this.state = 3151;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                    this.state = 3150;
                    this.match(HiveSqlParser.KW_AS);
                    }
                }

                this.state = 3153;
                this.id_();
                }
            }

            this.state = 3156;
            this.match(HiveSqlParser.KW_USING);
            this.state = 3157;
            this.joinSourcePart();
            this.state = 3158;
            this.match(HiveSqlParser.KW_ON);
            this.state = 3159;
            this.expression();
            this.state = 3160;
            this.whenClauses();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public whenClauses(): WhenClausesContext {
        let localContext = new WhenClausesContext(this.context, this.state);
        this.enterRule(localContext, 456, HiveSqlParser.RULE_whenClauses);
        let _la: number;
        try {
            let alternative: number;
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3166;
            this.errorHandler.sync(this);
            alternative = this.interpreter.adaptivePredict(this.tokenStream, 334, this.context);
            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                if (alternative === 1) {
                    {
                    this.state = 3164;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 333, this.context) ) {
                    case 1:
                        {
                        this.state = 3162;
                        this.whenMatchedAndClause();
                        }
                        break;
                    case 2:
                        {
                        this.state = 3163;
                        this.whenMatchedThenClause();
                        }
                        break;
                    }
                    }
                }
                this.state = 3168;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 334, this.context);
            }
            this.state = 3170;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 383) {
                {
                this.state = 3169;
                this.whenNotMatchedClause();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public whenNotMatchedClause(): WhenNotMatchedClauseContext {
        let localContext = new WhenNotMatchedClauseContext(this.context, this.state);
        this.enterRule(localContext, 458, HiveSqlParser.RULE_whenNotMatchedClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3172;
            this.match(HiveSqlParser.KW_WHEN);
            this.state = 3173;
            this.match(HiveSqlParser.KW_NOT);
            this.state = 3174;
            this.match(HiveSqlParser.KW_MATCHED);
            this.state = 3177;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 11) {
                {
                this.state = 3175;
                this.match(HiveSqlParser.KW_AND);
                this.state = 3176;
                this.expression();
                }
            }

            this.state = 3179;
            this.match(HiveSqlParser.KW_THEN);
            this.state = 3180;
            this.match(HiveSqlParser.KW_INSERT);
            this.state = 3182;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 399) {
                {
                this.state = 3181;
                localContext._targetCols = this.columnParenthesesList();
                }
            }

            this.state = 3184;
            this.match(HiveSqlParser.KW_VALUES);
            this.state = 3185;
            this.valueRowConstructor();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public whenMatchedAndClause(): WhenMatchedAndClauseContext {
        let localContext = new WhenMatchedAndClauseContext(this.context, this.state);
        this.enterRule(localContext, 460, HiveSqlParser.RULE_whenMatchedAndClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3187;
            this.match(HiveSqlParser.KW_WHEN);
            this.state = 3188;
            this.match(HiveSqlParser.KW_MATCHED);
            this.state = 3189;
            this.match(HiveSqlParser.KW_AND);
            this.state = 3190;
            this.expression();
            this.state = 3191;
            this.match(HiveSqlParser.KW_THEN);
            this.state = 3192;
            this.updateOrDelete();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public whenMatchedThenClause(): WhenMatchedThenClauseContext {
        let localContext = new WhenMatchedThenClauseContext(this.context, this.state);
        this.enterRule(localContext, 462, HiveSqlParser.RULE_whenMatchedThenClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3194;
            this.match(HiveSqlParser.KW_WHEN);
            this.state = 3195;
            this.match(HiveSqlParser.KW_MATCHED);
            this.state = 3196;
            this.match(HiveSqlParser.KW_THEN);
            this.state = 3197;
            this.updateOrDelete();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public updateOrDelete(): UpdateOrDeleteContext {
        let localContext = new UpdateOrDeleteContext(this.context, this.state);
        this.enterRule(localContext, 464, HiveSqlParser.RULE_updateOrDelete);
        try {
            this.state = 3202;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_UPDATE:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3199;
                this.match(HiveSqlParser.KW_UPDATE);
                this.state = 3200;
                this.setColumnsClause();
                }
                break;
            case HiveSqlParser.KW_DELETE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3201;
                this.match(HiveSqlParser.KW_DELETE);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public killQueryStatement(): KillQueryStatementContext {
        let localContext = new KillQueryStatementContext(this.context, this.state);
        this.enterRule(localContext, 466, HiveSqlParser.RULE_killQueryStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3204;
            this.match(HiveSqlParser.KW_KILL);
            this.state = 3205;
            this.match(HiveSqlParser.KW_QUERY);
            this.state = 3207;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 3206;
                this.match(HiveSqlParser.StringLiteral);
                }
                }
                this.state = 3209;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 426);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public compactionId(): CompactionIdContext {
        let localContext = new CompactionIdContext(this.context, this.state);
        this.enterRule(localContext, 468, HiveSqlParser.RULE_compactionId);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3211;
            this.match(HiveSqlParser.KW_COMPACT_ID);
            this.state = 3212;
            this.match(HiveSqlParser.EQUAL);
            this.state = 3213;
            localContext._compactId = this.match(HiveSqlParser.Number);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public compactionPool(): CompactionPoolContext {
        let localContext = new CompactionPoolContext(this.context, this.state);
        this.enterRule(localContext, 470, HiveSqlParser.RULE_compactionPool);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3215;
            this.match(HiveSqlParser.KW_POOL);
            this.state = 3216;
            localContext._poolName = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public compactionType(): CompactionTypeContext {
        let localContext = new CompactionTypeContext(this.context, this.state);
        this.enterRule(localContext, 472, HiveSqlParser.RULE_compactionType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3218;
            this.match(HiveSqlParser.KW_TYPE);
            this.state = 3219;
            localContext._compactType = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public compactionStatus(): CompactionStatusContext {
        let localContext = new CompactionStatusContext(this.context, this.state);
        this.enterRule(localContext, 474, HiveSqlParser.RULE_compactionStatus);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3221;
            this.match(HiveSqlParser.KW_STATUS);
            this.state = 3222;
            localContext._status = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatement(): AlterStatementContext {
        let localContext = new AlterStatementContext(this.context, this.state);
        this.enterRule(localContext, 476, HiveSqlParser.RULE_alterStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3224;
            this.match(HiveSqlParser.KW_ALTER);
            this.state = 3248;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_TABLE:
                {
                this.state = 3225;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 3226;
                this.tableName();
                this.state = 3227;
                this.alterTableStatementSuffix();
                }
                break;
            case HiveSqlParser.KW_VIEW:
                {
                this.state = 3229;
                this.match(HiveSqlParser.KW_VIEW);
                this.state = 3230;
                this.viewName();
                this.state = 3232;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                    this.state = 3231;
                    this.match(HiveSqlParser.KW_AS);
                    }
                }

                this.state = 3234;
                this.alterViewStatementSuffix();
                }
                break;
            case HiveSqlParser.KW_MATERIALIZED:
                {
                this.state = 3236;
                this.match(HiveSqlParser.KW_MATERIALIZED);
                this.state = 3237;
                this.match(HiveSqlParser.KW_VIEW);
                this.state = 3238;
                localContext._tableNameTree = this.viewName();
                this.state = 3239;
                this.alterMaterializedViewStatementSuffix();
                }
                break;
            case HiveSqlParser.KW_DATABASE:
            case HiveSqlParser.KW_SCHEMA:
                {
                this.state = 3241;
                this.db_schema();
                this.state = 3242;
                this.alterDatabaseStatementSuffix();
                }
                break;
            case HiveSqlParser.KW_DATACONNECTOR:
                {
                this.state = 3244;
                this.match(HiveSqlParser.KW_DATACONNECTOR);
                this.state = 3245;
                this.alterDataConnectorStatementSuffix();
                }
                break;
            case HiveSqlParser.KW_INDEX:
                {
                this.state = 3246;
                this.match(HiveSqlParser.KW_INDEX);
                this.state = 3247;
                this.alterIndexStatementSuffix();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterTableStatementSuffix(): AlterTableStatementSuffixContext {
        let localContext = new AlterTableStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 478, HiveSqlParser.RULE_alterTableStatementSuffix);
        let _la: number;
        try {
            this.state = 3271;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 343, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3250;
                this.alterStatementSuffixRename();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3251;
                this.alterStatementSuffixRecoverPartitions();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3252;
                this.alterStatementSuffixDropPartitions();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 3253;
                this.alterStatementSuffixAddPartitions();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 3254;
                this.alterStatementSuffixTouch();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 3255;
                this.alterStatementSuffixArchive();
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 3256;
                this.alterStatementSuffixUnArchive();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 3257;
                this.alterStatementSuffixProperties();
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 3258;
                this.alterStatementSuffixSkewedby();
                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 3259;
                this.alterStatementSuffixExchangePartition();
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 3260;
                this.alterStatementPartitionKeyType();
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 3261;
                this.alterStatementSuffixDropConstraint();
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 3262;
                this.alterStatementSuffixAddConstraint();
                }
                break;
            case 14:
                this.enterOuterAlt(localContext, 14);
                {
                this.state = 3263;
                this.alterTblPartitionStatementSuffix();
                }
                break;
            case 15:
                this.enterOuterAlt(localContext, 15);
                {
                this.state = 3265;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 237) {
                    {
                    this.state = 3264;
                    this.partitionSpec();
                    }
                }

                this.state = 3267;
                this.alterTblPartitionStatementSuffix();
                }
                break;
            case 16:
                this.enterOuterAlt(localContext, 16);
                {
                this.state = 3268;
                this.alterStatementSuffixSetOwner();
                }
                break;
            case 17:
                this.enterOuterAlt(localContext, 17);
                {
                this.state = 3269;
                this.alterStatementSuffixSetPartSpec();
                }
                break;
            case 18:
                this.enterOuterAlt(localContext, 18);
                {
                this.state = 3270;
                this.alterStatementSuffixExecute();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterTblPartitionStatementSuffix(): AlterTblPartitionStatementSuffixContext {
        let localContext = new AlterTblPartitionStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 480, HiveSqlParser.RULE_alterTblPartitionStatementSuffix);
        try {
            this.state = 3288;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3273;
                this.alterStatementSuffixFileFormat();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3274;
                this.alterStatementSuffixLocation();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3275;
                this.alterStatementSuffixMergeFiles();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 3276;
                this.alterStatementSuffixSerdeProperties();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 3277;
                this.alterStatementSuffixRenamePart();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 3278;
                this.alterStatementSuffixBucketNum();
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 3279;
                this.alterTblPartitionStatementSuffixSkewedLocation();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 3280;
                this.alterStatementSuffixClusterbySortby();
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 3281;
                this.alterStatementSuffixCompact();
                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 3282;
                this.alterStatementSuffixUpdateStatsCol();
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 3283;
                this.alterStatementSuffixUpdateStats();
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 3284;
                this.alterStatementSuffixRenameCol();
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 3285;
                this.alterStatementSuffixAddCol();
                }
                break;
            case 14:
                this.enterOuterAlt(localContext, 14);
                {
                this.state = 3286;
                this.alterStatementSuffixUpdateColumns();
                }
                break;
            case 15:
                this.enterOuterAlt(localContext, 15);
                {
                this.state = 3287;
                this.alterStatementSuffixProtections();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementPartitionKeyType(): AlterStatementPartitionKeyTypeContext {
        let localContext = new AlterStatementPartitionKeyTypeContext(this.context, this.state);
        this.enterRule(localContext, 482, HiveSqlParser.RULE_alterStatementPartitionKeyType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3290;
            this.match(HiveSqlParser.KW_PARTITION);
            this.state = 3291;
            this.match(HiveSqlParser.KW_COLUMN);
            this.state = 3292;
            this.match(HiveSqlParser.LPAREN);
            this.state = 3293;
            this.columnNameType();
            this.state = 3294;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterViewStatementSuffix(): AlterViewStatementSuffixContext {
        let localContext = new AlterViewStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 484, HiveSqlParser.RULE_alterViewStatementSuffix);
        try {
            this.state = 3301;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SET:
            case HiveSqlParser.KW_UNSET:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3296;
                this.alterViewSuffixProperties();
                }
                break;
            case HiveSqlParser.KW_RENAME:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3297;
                this.alterStatementSuffixRename();
                }
                break;
            case HiveSqlParser.KW_ADD:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3298;
                this.alterStatementSuffixAddPartitions();
                }
                break;
            case HiveSqlParser.KW_DROP:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 3299;
                this.alterStatementSuffixDropPartitions();
                }
                break;
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_REDUCE:
            case HiveSqlParser.KW_SELECT:
            case HiveSqlParser.KW_VALUES:
            case HiveSqlParser.KW_WITH:
            case HiveSqlParser.LPAREN:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 3300;
                this.selectStatementWithCTE();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterMaterializedViewStatementSuffix(): AlterMaterializedViewStatementSuffixContext {
        let localContext = new AlterMaterializedViewStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 486, HiveSqlParser.RULE_alterMaterializedViewStatementSuffix);
        try {
            this.state = 3305;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3303;
                this.alterMaterializedViewSuffixRewrite();
                }
                break;
            case HiveSqlParser.KW_REBUILD:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3304;
                this.alterMaterializedViewSuffixRebuild();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterMaterializedViewSuffixRewrite(): AlterMaterializedViewSuffixRewriteContext {
        let localContext = new AlterMaterializedViewSuffixRewriteContext(this.context, this.state);
        this.enterRule(localContext, 488, HiveSqlParser.RULE_alterMaterializedViewSuffixRewrite);
        try {
            this.state = 3309;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3307;
                localContext._mvRewriteFlag = this.rewriteEnabled();
                }
                break;
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3308;
                localContext._mvRewriteFlag2 = this.rewriteDisabled();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterMaterializedViewSuffixRebuild(): AlterMaterializedViewSuffixRebuildContext {
        let localContext = new AlterMaterializedViewSuffixRebuildContext(this.context, this.state);
        this.enterRule(localContext, 490, HiveSqlParser.RULE_alterMaterializedViewSuffixRebuild);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3311;
            this.match(HiveSqlParser.KW_REBUILD);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDatabaseStatementSuffix(): AlterDatabaseStatementSuffixContext {
        let localContext = new AlterDatabaseStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 492, HiveSqlParser.RULE_alterDatabaseStatementSuffix);
        try {
            this.state = 3316;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 348, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3313;
                this.alterDatabaseSuffixProperties();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3314;
                this.alterDatabaseSuffixSetOwner();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3315;
                this.alterDatabaseSuffixSetLocation();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDatabaseSuffixProperties(): AlterDatabaseSuffixPropertiesContext {
        let localContext = new AlterDatabaseSuffixPropertiesContext(this.context, this.state);
        this.enterRule(localContext, 494, HiveSqlParser.RULE_alterDatabaseSuffixProperties);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3318;
            localContext._name = this.dbSchemaName();
            this.state = 3319;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3320;
            this.match(HiveSqlParser.KW_DBPROPERTIES);
            this.state = 3321;
            this.dbProperties();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDatabaseSuffixSetOwner(): AlterDatabaseSuffixSetOwnerContext {
        let localContext = new AlterDatabaseSuffixSetOwnerContext(this.context, this.state);
        this.enterRule(localContext, 496, HiveSqlParser.RULE_alterDatabaseSuffixSetOwner);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3323;
            localContext._dbName = this.dbSchemaName();
            this.state = 3324;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3325;
            this.match(HiveSqlParser.KW_OWNER);
            this.state = 3326;
            this.principalAlterName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDatabaseSuffixSetLocation(): AlterDatabaseSuffixSetLocationContext {
        let localContext = new AlterDatabaseSuffixSetLocationContext(this.context, this.state);
        this.enterRule(localContext, 498, HiveSqlParser.RULE_alterDatabaseSuffixSetLocation);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3328;
            localContext._dbName = this.dbSchemaName();
            this.state = 3329;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3330;
            _la = this.tokenStream.LA(1);
            if(!(_la === 189 || _la === 196)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            this.state = 3331;
            localContext._newLocation = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDatabaseSuffixSetManagedLocation(): AlterDatabaseSuffixSetManagedLocationContext {
        let localContext = new AlterDatabaseSuffixSetManagedLocationContext(this.context, this.state);
        this.enterRule(localContext, 500, HiveSqlParser.RULE_alterDatabaseSuffixSetManagedLocation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3333;
            localContext._dbName = this.dbSchemaName();
            this.state = 3334;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3335;
            this.match(HiveSqlParser.KW_MANAGEDLOCATION);
            this.state = 3336;
            localContext._newLocation = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixRename(): AlterStatementSuffixRenameContext {
        let localContext = new AlterStatementSuffixRenameContext(this.context, this.state);
        this.enterRule(localContext, 502, HiveSqlParser.RULE_alterStatementSuffixRename);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3338;
            this.match(HiveSqlParser.KW_RENAME);
            this.state = 3339;
            this.match(HiveSqlParser.KW_TO);
            this.state = 3340;
            this.tableNameCreate();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixAddCol(): AlterStatementSuffixAddColContext {
        let localContext = new AlterStatementSuffixAddColContext(this.context, this.state);
        this.enterRule(localContext, 504, HiveSqlParser.RULE_alterStatementSuffixAddCol);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3344;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ADD:
                {
                this.state = 3342;
                localContext._add = this.match(HiveSqlParser.KW_ADD);
                }
                break;
            case HiveSqlParser.KW_REPLACE:
                {
                this.state = 3343;
                localContext._replace = this.match(HiveSqlParser.KW_REPLACE);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 3346;
            this.match(HiveSqlParser.KW_COLUMNS);
            this.state = 3347;
            this.match(HiveSqlParser.LPAREN);
            this.state = 3348;
            this.columnNameTypeList();
            this.state = 3349;
            this.match(HiveSqlParser.RPAREN);
            this.state = 3351;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 34 || _la === 282) {
                {
                this.state = 3350;
                this.restrictOrCascade();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixAddConstraint(): AlterStatementSuffixAddConstraintContext {
        let localContext = new AlterStatementSuffixAddConstraintContext(this.context, this.state);
        this.enterRule(localContext, 506, HiveSqlParser.RULE_alterStatementSuffixAddConstraint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3353;
            this.match(HiveSqlParser.KW_ADD);
            this.state = 3356;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) {
            case 1:
                {
                this.state = 3354;
                localContext._fk = this.alterForeignKeyWithName();
                }
                break;
            case 2:
                {
                this.state = 3355;
                this.alterConstraintWithName();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixUpdateColumns(): AlterStatementSuffixUpdateColumnsContext {
        let localContext = new AlterStatementSuffixUpdateColumnsContext(this.context, this.state);
        this.enterRule(localContext, 508, HiveSqlParser.RULE_alterStatementSuffixUpdateColumns);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3358;
            this.match(HiveSqlParser.KW_UPDATE);
            this.state = 3359;
            this.match(HiveSqlParser.KW_COLUMNS);
            this.state = 3361;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 34 || _la === 282) {
                {
                this.state = 3360;
                this.restrictOrCascade();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixProtections(): AlterStatementSuffixProtectionsContext {
        let localContext = new AlterStatementSuffixProtectionsContext(this.context, this.state);
        this.enterRule(localContext, 510, HiveSqlParser.RULE_alterStatementSuffixProtections);
        let _la: number;
        try {
            this.state = 3371;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 354, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3363;
                this.enableSpecification();
                this.state = 3364;
                this.match(HiveSqlParser.KW_NO_DROP);
                this.state = 3366;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 34) {
                    {
                    this.state = 3365;
                    this.match(HiveSqlParser.KW_CASCADE);
                    }
                }

                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3368;
                this.enableSpecification();
                this.state = 3369;
                this.match(HiveSqlParser.KW_OFFLINE);
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixDropConstraint(): AlterStatementSuffixDropConstraintContext {
        let localContext = new AlterStatementSuffixDropConstraintContext(this.context, this.state);
        this.enterRule(localContext, 512, HiveSqlParser.RULE_alterStatementSuffixDropConstraint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3373;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 3374;
            this.match(HiveSqlParser.KW_CONSTRAINT);
            this.state = 3375;
            localContext._cName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixRenameCol(): AlterStatementSuffixRenameColContext {
        let localContext = new AlterStatementSuffixRenameColContext(this.context, this.state);
        this.enterRule(localContext, 514, HiveSqlParser.RULE_alterStatementSuffixRenameCol);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3377;
            this.match(HiveSqlParser.KW_CHANGE);
            this.state = 3379;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 355, this.context) ) {
            case 1:
                {
                this.state = 3378;
                this.match(HiveSqlParser.KW_COLUMN);
                }
                break;
            }
            this.state = 3381;
            localContext._oldName = this.columnName();
            this.state = 3382;
            localContext._newName = this.columnNameCreate();
            this.state = 3383;
            this.colType();
            this.state = 3385;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 40 || _la === 55 || _la === 83 || _la === 216 || _la === 251 || _la === 269 || _la === 358) {
                {
                this.state = 3384;
                this.alterColumnConstraint();
                }
            }

            this.state = 3389;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 3387;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 3388;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                }
            }

            this.state = 3392;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 6 || _la === 130) {
                {
                this.state = 3391;
                this.alterStatementChangeColPosition();
                }
            }

            this.state = 3395;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 34 || _la === 282) {
                {
                this.state = 3394;
                this.restrictOrCascade();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixUpdateStatsCol(): AlterStatementSuffixUpdateStatsColContext {
        let localContext = new AlterStatementSuffixUpdateStatsColContext(this.context, this.state);
        this.enterRule(localContext, 516, HiveSqlParser.RULE_alterStatementSuffixUpdateStatsCol);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3397;
            this.match(HiveSqlParser.KW_UPDATE);
            this.state = 3398;
            this.match(HiveSqlParser.KW_STATISTICS);
            this.state = 3399;
            this.match(HiveSqlParser.KW_FOR);
            this.state = 3401;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 360, this.context) ) {
            case 1:
                {
                this.state = 3400;
                this.match(HiveSqlParser.KW_COLUMN);
                }
                break;
            }
            this.state = 3403;
            localContext._colName = this.columnName();
            this.state = 3404;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3405;
            this.tableProperties();
            this.state = 3408;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 3406;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 3407;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixUpdateStats(): AlterStatementSuffixUpdateStatsContext {
        let localContext = new AlterStatementSuffixUpdateStatsContext(this.context, this.state);
        this.enterRule(localContext, 518, HiveSqlParser.RULE_alterStatementSuffixUpdateStats);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3410;
            this.match(HiveSqlParser.KW_UPDATE);
            this.state = 3411;
            this.match(HiveSqlParser.KW_STATISTICS);
            this.state = 3412;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3413;
            this.tableProperties();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementChangeColPosition(): AlterStatementChangeColPositionContext {
        let localContext = new AlterStatementChangeColPositionContext(this.context, this.state);
        this.enterRule(localContext, 520, HiveSqlParser.RULE_alterStatementChangeColPosition);
        try {
            this.state = 3418;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_FIRST:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3415;
                localContext._first = this.match(HiveSqlParser.KW_FIRST);
                }
                break;
            case HiveSqlParser.KW_AFTER:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3416;
                this.match(HiveSqlParser.KW_AFTER);
                this.state = 3417;
                localContext._afterCol = this.id_();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext {
        let localContext = new AlterStatementSuffixAddPartitionsContext(this.context, this.state);
        this.enterRule(localContext, 522, HiveSqlParser.RULE_alterStatementSuffixAddPartitions);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3420;
            this.match(HiveSqlParser.KW_ADD);
            this.state = 3422;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 3421;
                this.ifNotExists();
                }
            }

            this.state = 3425;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 3424;
                this.alterStatementSuffixAddPartitionsElement();
                }
                }
                this.state = 3427;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 237);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixAddPartitionsElement(): AlterStatementSuffixAddPartitionsElementContext {
        let localContext = new AlterStatementSuffixAddPartitionsElementContext(this.context, this.state);
        this.enterRule(localContext, 524, HiveSqlParser.RULE_alterStatementSuffixAddPartitionsElement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3429;
            this.partitionSpec();
            this.state = 3431;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 189) {
                {
                this.state = 3430;
                this.partitionLocation();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixTouch(): AlterStatementSuffixTouchContext {
        let localContext = new AlterStatementSuffixTouchContext(this.context, this.state);
        this.enterRule(localContext, 526, HiveSqlParser.RULE_alterStatementSuffixTouch);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3433;
            this.match(HiveSqlParser.KW_TOUCH);
            this.state = 3437;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 237) {
                {
                {
                this.state = 3434;
                this.partitionSpec();
                }
                }
                this.state = 3439;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixArchive(): AlterStatementSuffixArchiveContext {
        let localContext = new AlterStatementSuffixArchiveContext(this.context, this.state);
        this.enterRule(localContext, 528, HiveSqlParser.RULE_alterStatementSuffixArchive);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3440;
            this.match(HiveSqlParser.KW_ARCHIVE);
            this.state = 3444;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 237) {
                {
                {
                this.state = 3441;
                this.partitionSpec();
                }
                }
                this.state = 3446;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixUnArchive(): AlterStatementSuffixUnArchiveContext {
        let localContext = new AlterStatementSuffixUnArchiveContext(this.context, this.state);
        this.enterRule(localContext, 530, HiveSqlParser.RULE_alterStatementSuffixUnArchive);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3447;
            this.match(HiveSqlParser.KW_UNARCHIVE);
            this.state = 3451;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 237) {
                {
                {
                this.state = 3448;
                this.partitionSpec();
                }
                }
                this.state = 3453;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionLocation(): PartitionLocationContext {
        let localContext = new PartitionLocationContext(this.context, this.state);
        this.enterRule(localContext, 532, HiveSqlParser.RULE_partitionLocation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3454;
            this.match(HiveSqlParser.KW_LOCATION);
            this.state = 3455;
            localContext._locn = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixRecoverPartitions(): AlterStatementSuffixRecoverPartitionsContext {
        let localContext = new AlterStatementSuffixRecoverPartitionsContext(this.context, this.state);
        this.enterRule(localContext, 534, HiveSqlParser.RULE_alterStatementSuffixRecoverPartitions);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3457;
            this.match(HiveSqlParser.KW_RECOVER);
            this.state = 3458;
            this.match(HiveSqlParser.KW_PARTITIONS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext {
        let localContext = new AlterStatementSuffixDropPartitionsContext(this.context, this.state);
        this.enterRule(localContext, 536, HiveSqlParser.RULE_alterStatementSuffixDropPartitions);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3460;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 3462;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 3461;
                this.ifExists();
                }
            }

            this.state = 3464;
            this.match(HiveSqlParser.KW_PARTITION);
            this.state = 3465;
            this.partitionSelectorSpec();
            this.state = 3471;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 3466;
                this.match(HiveSqlParser.COMMA);
                this.state = 3467;
                this.match(HiveSqlParser.KW_PARTITION);
                this.state = 3468;
                this.partitionSelectorSpec();
                }
                }
                this.state = 3473;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 3475;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 152) {
                {
                this.state = 3474;
                this.dropPartitionsIgnoreClause();
                }
            }

            this.state = 3478;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 255) {
                {
                this.state = 3477;
                this.match(HiveSqlParser.KW_PURGE);
                }
            }

            this.state = 3481;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 134) {
                {
                this.state = 3480;
                this.replicationClause();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixProperties(): AlterStatementSuffixPropertiesContext {
        let localContext = new AlterStatementSuffixPropertiesContext(this.context, this.state);
        this.enterRule(localContext, 538, HiveSqlParser.RULE_alterStatementSuffixProperties);
        let _la: number;
        try {
            this.state = 3492;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SET:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3483;
                this.match(HiveSqlParser.KW_SET);
                this.state = 3484;
                this.match(HiveSqlParser.KW_TBLPROPERTIES);
                this.state = 3485;
                this.tableProperties();
                }
                break;
            case HiveSqlParser.KW_UNSET:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3486;
                this.match(HiveSqlParser.KW_UNSET);
                this.state = 3487;
                this.match(HiveSqlParser.KW_TBLPROPERTIES);
                this.state = 3489;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                    this.state = 3488;
                    this.ifExists();
                    }
                }

                this.state = 3491;
                this.tableProperties();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterViewSuffixProperties(): AlterViewSuffixPropertiesContext {
        let localContext = new AlterViewSuffixPropertiesContext(this.context, this.state);
        this.enterRule(localContext, 540, HiveSqlParser.RULE_alterViewSuffixProperties);
        let _la: number;
        try {
            this.state = 3503;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SET:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3494;
                this.match(HiveSqlParser.KW_SET);
                this.state = 3495;
                this.match(HiveSqlParser.KW_TBLPROPERTIES);
                this.state = 3496;
                this.tableProperties();
                }
                break;
            case HiveSqlParser.KW_UNSET:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3497;
                this.match(HiveSqlParser.KW_UNSET);
                this.state = 3498;
                this.match(HiveSqlParser.KW_TBLPROPERTIES);
                this.state = 3500;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                    this.state = 3499;
                    this.ifExists();
                    }
                }

                this.state = 3502;
                this.tableProperties();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixSerdeProperties(): AlterStatementSuffixSerdePropertiesContext {
        let localContext = new AlterStatementSuffixSerdePropertiesContext(this.context, this.state);
        this.enterRule(localContext, 542, HiveSqlParser.RULE_alterStatementSuffixSerdeProperties);
        try {
            this.state = 3520;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SET:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3505;
                this.match(HiveSqlParser.KW_SET);
                this.state = 3515;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_SERDE:
                    {
                    this.state = 3506;
                    this.match(HiveSqlParser.KW_SERDE);
                    this.state = 3507;
                    localContext._serdeName = this.match(HiveSqlParser.StringLiteral);
                    this.state = 3511;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) {
                    case 1:
                        {
                        this.state = 3508;
                        this.match(HiveSqlParser.KW_WITH);
                        this.state = 3509;
                        this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                        this.state = 3510;
                        this.tableProperties();
                        }
                        break;
                    }
                    }
                    break;
                case HiveSqlParser.KW_SERDEPROPERTIES:
                    {
                    this.state = 3513;
                    this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                    this.state = 3514;
                    this.tableProperties();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            case HiveSqlParser.KW_UNSET:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3517;
                this.match(HiveSqlParser.KW_UNSET);
                this.state = 3518;
                this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                this.state = 3519;
                this.tableProperties();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tablePartitionPrefix(): TablePartitionPrefixContext {
        let localContext = new TablePartitionPrefixContext(this.context, this.state);
        this.enterRule(localContext, 544, HiveSqlParser.RULE_tablePartitionPrefix);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3522;
            this.tableName();
            this.state = 3524;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 237) {
                {
                this.state = 3523;
                this.partitionSpec();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixFileFormat(): AlterStatementSuffixFileFormatContext {
        let localContext = new AlterStatementSuffixFileFormatContext(this.context, this.state);
        this.enterRule(localContext, 546, HiveSqlParser.RULE_alterStatementSuffixFileFormat);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3526;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3527;
            this.match(HiveSqlParser.KW_FILEFORMAT);
            this.state = 3528;
            this.fileFormat();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixClusterbySortby(): AlterStatementSuffixClusterbySortbyContext {
        let localContext = new AlterStatementSuffixClusterbySortbyContext(this.context, this.state);
        this.enterRule(localContext, 548, HiveSqlParser.RULE_alterStatementSuffixClusterbySortby);
        let _la: number;
        try {
            this.state = 3533;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_NOT:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3530;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 3531;
                _la = this.tokenStream.LA(1);
                if(!(_la === 42 || _la === 315)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                }
                break;
            case HiveSqlParser.KW_CLUSTERED:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3532;
                this.tableBuckets();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterTblPartitionStatementSuffixSkewedLocation(): AlterTblPartitionStatementSuffixSkewedLocationContext {
        let localContext = new AlterTblPartitionStatementSuffixSkewedLocationContext(this.context, this.state);
        this.enterRule(localContext, 550, HiveSqlParser.RULE_alterTblPartitionStatementSuffixSkewedLocation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3535;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3536;
            this.match(HiveSqlParser.KW_SKEWED);
            this.state = 3537;
            this.match(HiveSqlParser.KW_LOCATION);
            this.state = 3538;
            this.skewedLocations();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedLocations(): SkewedLocationsContext {
        let localContext = new SkewedLocationsContext(this.context, this.state);
        this.enterRule(localContext, 552, HiveSqlParser.RULE_skewedLocations);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3540;
            this.match(HiveSqlParser.LPAREN);
            this.state = 3541;
            this.skewedLocationsList();
            this.state = 3542;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedLocationsList(): SkewedLocationsListContext {
        let localContext = new SkewedLocationsListContext(this.context, this.state);
        this.enterRule(localContext, 554, HiveSqlParser.RULE_skewedLocationsList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3544;
            this.skewedLocationMap();
            this.state = 3549;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 3545;
                this.match(HiveSqlParser.COMMA);
                this.state = 3546;
                this.skewedLocationMap();
                }
                }
                this.state = 3551;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public skewedLocationMap(): SkewedLocationMapContext {
        let localContext = new SkewedLocationMapContext(this.context, this.state);
        this.enterRule(localContext, 556, HiveSqlParser.RULE_skewedLocationMap);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3552;
            localContext._key = this.skewedValueLocationElement();
            this.state = 3553;
            this.match(HiveSqlParser.EQUAL);
            this.state = 3554;
            localContext._value = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixLocation(): AlterStatementSuffixLocationContext {
        let localContext = new AlterStatementSuffixLocationContext(this.context, this.state);
        this.enterRule(localContext, 558, HiveSqlParser.RULE_alterStatementSuffixLocation);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3556;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3557;
            this.match(HiveSqlParser.KW_LOCATION);
            this.state = 3558;
            localContext._newLoc = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixSkewedby(): AlterStatementSuffixSkewedbyContext {
        let localContext = new AlterStatementSuffixSkewedbyContext(this.context, this.state);
        this.enterRule(localContext, 560, HiveSqlParser.RULE_alterStatementSuffixSkewedby);
        try {
            this.state = 3566;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SKEWED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3560;
                this.tableSkewed();
                }
                break;
            case HiveSqlParser.KW_NOT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3561;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 3564;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_SKEWED:
                    {
                    this.state = 3562;
                    this.match(HiveSqlParser.KW_SKEWED);
                    }
                    break;
                case HiveSqlParser.KW_STORED:
                    {
                    this.state = 3563;
                    this.storedAsDirs();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixExchangePartition(): AlterStatementSuffixExchangePartitionContext {
        let localContext = new AlterStatementSuffixExchangePartitionContext(this.context, this.state);
        this.enterRule(localContext, 562, HiveSqlParser.RULE_alterStatementSuffixExchangePartition);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3568;
            this.match(HiveSqlParser.KW_EXCHANGE);
            this.state = 3569;
            this.partitionSpec();
            this.state = 3570;
            this.match(HiveSqlParser.KW_WITH);
            this.state = 3571;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 3572;
            localContext._exchangename = this.tableName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixRenamePart(): AlterStatementSuffixRenamePartContext {
        let localContext = new AlterStatementSuffixRenamePartContext(this.context, this.state);
        this.enterRule(localContext, 564, HiveSqlParser.RULE_alterStatementSuffixRenamePart);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3574;
            this.match(HiveSqlParser.KW_RENAME);
            this.state = 3575;
            this.match(HiveSqlParser.KW_TO);
            this.state = 3576;
            this.partitionSpec();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixStatsPart(): AlterStatementSuffixStatsPartContext {
        let localContext = new AlterStatementSuffixStatsPartContext(this.context, this.state);
        this.enterRule(localContext, 566, HiveSqlParser.RULE_alterStatementSuffixStatsPart);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3578;
            this.match(HiveSqlParser.KW_UPDATE);
            this.state = 3579;
            this.match(HiveSqlParser.KW_STATISTICS);
            this.state = 3580;
            this.match(HiveSqlParser.KW_FOR);
            this.state = 3582;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 386, this.context) ) {
            case 1:
                {
                this.state = 3581;
                this.match(HiveSqlParser.KW_COLUMN);
                }
                break;
            }
            this.state = 3584;
            localContext._colName = this.columnName();
            this.state = 3585;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3586;
            this.tableProperties();
            this.state = 3589;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 3587;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 3588;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixMergeFiles(): AlterStatementSuffixMergeFilesContext {
        let localContext = new AlterStatementSuffixMergeFilesContext(this.context, this.state);
        this.enterRule(localContext, 568, HiveSqlParser.RULE_alterStatementSuffixMergeFiles);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3591;
            this.match(HiveSqlParser.KW_CONCATENATE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixBucketNum(): AlterStatementSuffixBucketNumContext {
        let localContext = new AlterStatementSuffixBucketNumContext(this.context, this.state);
        this.enterRule(localContext, 570, HiveSqlParser.RULE_alterStatementSuffixBucketNum);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3593;
            this.match(HiveSqlParser.KW_INTO);
            this.state = 3594;
            localContext._num = this.match(HiveSqlParser.Number);
            this.state = 3595;
            this.match(HiveSqlParser.KW_BUCKETS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public blocking(): BlockingContext {
        let localContext = new BlockingContext(this.context, this.state);
        this.enterRule(localContext, 572, HiveSqlParser.RULE_blocking);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3597;
            this.match(HiveSqlParser.KW_AND);
            this.state = 3598;
            this.match(HiveSqlParser.KW_WAIT);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public compactPool(): CompactPoolContext {
        let localContext = new CompactPoolContext(this.context, this.state);
        this.enterRule(localContext, 574, HiveSqlParser.RULE_compactPool);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3600;
            this.match(HiveSqlParser.KW_POOL);
            this.state = 3601;
            localContext._poolName = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixCompact(): AlterStatementSuffixCompactContext {
        let localContext = new AlterStatementSuffixCompactContext(this.context, this.state);
        this.enterRule(localContext, 576, HiveSqlParser.RULE_alterStatementSuffixCompact);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3603;
            this.match(HiveSqlParser.KW_COMPACT);
            this.state = 3604;
            localContext._compactType = this.match(HiveSqlParser.StringLiteral);
            this.state = 3606;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 11) {
                {
                this.state = 3605;
                this.blocking();
                }
            }

            this.state = 3609;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 42) {
                {
                this.state = 3608;
                this.tableImplBuckets();
                }
            }

            this.state = 3612;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 229) {
                {
                this.state = 3611;
                this.orderByClause();
                }
            }

            this.state = 3615;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 246) {
                {
                this.state = 3614;
                this.compactPool();
                }
            }

            this.state = 3621;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context) ) {
            case 1:
                {
                this.state = 3617;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 3618;
                this.match(HiveSqlParser.KW_OVERWRITE);
                this.state = 3619;
                this.match(HiveSqlParser.KW_TBLPROPERTIES);
                this.state = 3620;
                this.tableProperties();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixSetOwner(): AlterStatementSuffixSetOwnerContext {
        let localContext = new AlterStatementSuffixSetOwnerContext(this.context, this.state);
        this.enterRule(localContext, 578, HiveSqlParser.RULE_alterStatementSuffixSetOwner);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3623;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3624;
            this.match(HiveSqlParser.KW_OWNER);
            this.state = 3625;
            this.principalName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixSetPartSpec(): AlterStatementSuffixSetPartSpecContext {
        let localContext = new AlterStatementSuffixSetPartSpecContext(this.context, this.state);
        this.enterRule(localContext, 580, HiveSqlParser.RULE_alterStatementSuffixSetPartSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3627;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3628;
            this.match(HiveSqlParser.KW_PARTITION);
            this.state = 3629;
            this.match(HiveSqlParser.KW_SPEC);
            this.state = 3630;
            this.match(HiveSqlParser.LPAREN);
            this.state = 3631;
            localContext._spec = this.partitionTransformSpec();
            this.state = 3632;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterStatementSuffixExecute(): AlterStatementSuffixExecuteContext {
        let localContext = new AlterStatementSuffixExecuteContext(this.context, this.state);
        this.enterRule(localContext, 582, HiveSqlParser.RULE_alterStatementSuffixExecute);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3634;
            this.match(HiveSqlParser.KW_EXECUTE);
            this.state = 3644;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ROLLBACK:
                {
                this.state = 3635;
                this.match(HiveSqlParser.KW_ROLLBACK);
                this.state = 3636;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3637;
                localContext._rollbackParam = this.tokenStream.LT(1);
                _la = this.tokenStream.LA(1);
                if(!(_la === 426 || _la === 431)) {
                    localContext._rollbackParam = this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                }
                break;
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                {
                this.state = 3638;
                this.match(HiveSqlParser.KW_EXPIRE_SNAPSHOTS);
                this.state = 3639;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3640;
                localContext._expireParam = this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                {
                this.state = 3641;
                this.match(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT);
                this.state = 3642;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3643;
                localContext._snapshotParam = this.match(HiveSqlParser.Number);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 3646;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterIndexStatementSuffix(): AlterIndexStatementSuffixContext {
        let localContext = new AlterIndexStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 584, HiveSqlParser.RULE_alterIndexStatementSuffix);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3648;
            this.id_();
            this.state = 3649;
            this.match(HiveSqlParser.KW_ON);
            this.state = 3650;
            this.tableName();
            this.state = 3652;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 237) {
                {
                this.state = 3651;
                this.partitionSpec();
                }
            }

            this.state = 3654;
            this.match(HiveSqlParser.KW_REBUILD);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public fileFormat(): FileFormatContext {
        let localContext = new FileFormatContext(this.context, this.state);
        this.enterRule(localContext, 586, HiveSqlParser.RULE_fileFormat);
        let _la: number;
        try {
            this.state = 3669;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3656;
                this.match(HiveSqlParser.KW_INPUTFORMAT);
                this.state = 3657;
                localContext._inFmt = this.match(HiveSqlParser.StringLiteral);
                this.state = 3658;
                this.match(HiveSqlParser.KW_OUTPUTFORMAT);
                this.state = 3659;
                localContext._outFmt = this.match(HiveSqlParser.StringLiteral);
                this.state = 3660;
                this.match(HiveSqlParser.KW_SERDE);
                this.state = 3661;
                localContext._serdeCls = this.match(HiveSqlParser.StringLiteral);
                this.state = 3666;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 159) {
                    {
                    this.state = 3662;
                    this.match(HiveSqlParser.KW_INPUTDRIVER);
                    this.state = 3663;
                    localContext._inDriver = this.match(HiveSqlParser.StringLiteral);
                    this.state = 3664;
                    this.match(HiveSqlParser.KW_OUTPUTDRIVER);
                    this.state = 3665;
                    localContext._outDriver = this.match(HiveSqlParser.StringLiteral);
                    }
                }

                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3668;
                localContext._genericSpec = this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDataConnectorStatementSuffix(): AlterDataConnectorStatementSuffixContext {
        let localContext = new AlterDataConnectorStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 588, HiveSqlParser.RULE_alterDataConnectorStatementSuffix);
        try {
            this.state = 3674;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 397, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3671;
                this.alterDataConnectorSuffixProperties();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3672;
                this.alterDataConnectorSuffixSetOwner();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3673;
                this.alterDataConnectorSuffixSetUrl();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDataConnectorSuffixProperties(): AlterDataConnectorSuffixPropertiesContext {
        let localContext = new AlterDataConnectorSuffixPropertiesContext(this.context, this.state);
        this.enterRule(localContext, 590, HiveSqlParser.RULE_alterDataConnectorSuffixProperties);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3676;
            localContext._name = this.dbSchemaName();
            this.state = 3677;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3678;
            this.match(HiveSqlParser.KW_DCPROPERTIES);
            this.state = 3679;
            this.dcProperties();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDataConnectorSuffixSetOwner(): AlterDataConnectorSuffixSetOwnerContext {
        let localContext = new AlterDataConnectorSuffixSetOwnerContext(this.context, this.state);
        this.enterRule(localContext, 592, HiveSqlParser.RULE_alterDataConnectorSuffixSetOwner);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3681;
            localContext._dcName = this.dbSchemaName();
            this.state = 3682;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3683;
            this.match(HiveSqlParser.KW_OWNER);
            this.state = 3684;
            this.principalAlterName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterDataConnectorSuffixSetUrl(): AlterDataConnectorSuffixSetUrlContext {
        let localContext = new AlterDataConnectorSuffixSetUrlContext(this.context, this.state);
        this.enterRule(localContext, 594, HiveSqlParser.RULE_alterDataConnectorSuffixSetUrl);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3686;
            localContext._dcName = this.dbSchemaName();
            this.state = 3687;
            this.match(HiveSqlParser.KW_SET);
            this.state = 3688;
            this.match(HiveSqlParser.KW_URL);
            this.state = 3689;
            localContext._newUri = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public likeTableOrFile(): LikeTableOrFileContext {
        let localContext = new LikeTableOrFileContext(this.context, this.state);
        this.enterRule(localContext, 596, HiveSqlParser.RULE_likeTableOrFile);
        try {
            this.state = 3700;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 398, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3691;
                this.match(HiveSqlParser.KW_LIKE);
                this.state = 3692;
                this.match(HiveSqlParser.KW_FILE);
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3693;
                this.match(HiveSqlParser.KW_LIKE);
                this.state = 3694;
                this.match(HiveSqlParser.KW_FILE);
                this.state = 3695;
                localContext._format = this.id_();
                this.state = 3696;
                localContext._uri = this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3698;
                this.match(HiveSqlParser.KW_LIKE);
                this.state = 3699;
                localContext._likeName = this.tableName();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createTableStatement(): CreateTableStatementContext {
        let localContext = new CreateTableStatementContext(this.context, this.state);
        this.enterRule(localContext, 598, HiveSqlParser.RULE_createTableStatement);
        let _la: number;
        try {
            this.state = 3837;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 439, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3702;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 3704;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 333) {
                    {
                    this.state = 3703;
                    localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY);
                    }
                }

                this.state = 3707;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 345) {
                    {
                    this.state = 3706;
                    localContext._trans = this.match(HiveSqlParser.KW_TRANSACTIONAL);
                    }
                }

                this.state = 3710;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 123) {
                    {
                    this.state = 3709;
                    localContext._ext = this.match(HiveSqlParser.KW_EXTERNAL);
                    }
                }

                this.state = 3712;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 3714;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                    this.state = 3713;
                    this.ifNotExists();
                    }
                }

                this.state = 3716;
                localContext._name = this.tableNameCreate();
                this.state = 3773;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_LIKE:
                    {
                    this.state = 3717;
                    this.likeTableOrFile();
                    this.state = 3719;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 238) {
                        {
                        this.state = 3718;
                        this.createTablePartitionSpec();
                        }
                    }

                    this.state = 3722;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 291) {
                        {
                        this.state = 3721;
                        this.tableRowFormat();
                        }
                    }

                    this.state = 3725;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 321) {
                        {
                        this.state = 3724;
                        this.tableFileFormat();
                        }
                    }

                    this.state = 3728;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 189) {
                        {
                        this.state = 3727;
                        this.tableLocation();
                        }
                    }

                    this.state = 3731;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 332) {
                        {
                        this.state = 3730;
                        this.tablePropertiesPrefixed();
                        }
                    }

                    this.state = 3734;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 183) {
                        {
                        this.state = 3733;
                        this.tableLifecycle();
                        }
                    }

                    }
                    break;
                case HiveSqlParser.EOF:
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ALTER:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_AS:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMMIT:
                case HiveSqlParser.KW_CREATE:
                case HiveSqlParser.KW_DELETE:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DESCRIBE:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DROP:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_FROM:
                case HiveSqlParser.KW_GRANT:
                case HiveSqlParser.KW_IMPORT:
                case HiveSqlParser.KW_INSERT:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_MERGE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PREPARE:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REVOKE:
                case HiveSqlParser.KW_ROLLBACK:
                case HiveSqlParser.KW_ROW:
                case HiveSqlParser.KW_SELECT:
                case HiveSqlParser.KW_SET:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_START:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TRUNCATE:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UPDATE:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_VALUES:
                case HiveSqlParser.KW_WITH:
                case HiveSqlParser.SEMICOLON:
                case HiveSqlParser.LPAREN:
                    {
                    this.state = 3740;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) {
                    case 1:
                        {
                        this.state = 3736;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3737;
                        this.columnNameTypeOrConstraintList();
                        this.state = 3738;
                        this.match(HiveSqlParser.RPAREN);
                        }
                        break;
                    }
                    this.state = 3743;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 47) {
                        {
                        this.state = 3742;
                        this.tableComment();
                        }
                    }

                    this.state = 3746;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 238) {
                        {
                        this.state = 3745;
                        this.createTablePartitionSpec();
                        }
                    }

                    this.state = 3749;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 42) {
                        {
                        this.state = 3748;
                        this.tableBuckets();
                        }
                    }

                    this.state = 3752;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 310) {
                        {
                        this.state = 3751;
                        this.tableSkewed();
                        }
                    }

                    this.state = 3755;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 291) {
                        {
                        this.state = 3754;
                        this.tableRowFormat();
                        }
                    }

                    this.state = 3758;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 321) {
                        {
                        this.state = 3757;
                        this.tableFileFormat();
                        }
                    }

                    this.state = 3761;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 189) {
                        {
                        this.state = 3760;
                        this.tableLocation();
                        }
                    }

                    this.state = 3764;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 332) {
                        {
                        this.state = 3763;
                        this.tablePropertiesPrefixed();
                        }
                    }

                    this.state = 3767;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 183) {
                        {
                        this.state = 3766;
                        this.tableLifecycle();
                        }
                    }

                    this.state = 3771;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 17) {
                        {
                        this.state = 3769;
                        this.match(HiveSqlParser.KW_AS);
                        this.state = 3770;
                        this.selectStatementWithCTE();
                        }
                    }

                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3775;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 3776;
                localContext._mgd = this.match(HiveSqlParser.KW_MANAGED);
                this.state = 3777;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 3779;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                    this.state = 3778;
                    this.ifNotExists();
                    }
                }

                this.state = 3781;
                localContext._name = this.tableNameCreate();
                this.state = 3835;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_LIKE:
                    {
                    this.state = 3782;
                    this.likeTableOrFile();
                    this.state = 3784;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 291) {
                        {
                        this.state = 3783;
                        this.tableRowFormat();
                        }
                    }

                    this.state = 3787;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 321) {
                        {
                        this.state = 3786;
                        this.tableFileFormat();
                        }
                    }

                    this.state = 3790;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 189) {
                        {
                        this.state = 3789;
                        this.tableLocation();
                        }
                    }

                    this.state = 3793;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 332) {
                        {
                        this.state = 3792;
                        this.tablePropertiesPrefixed();
                        }
                    }

                    this.state = 3796;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 183) {
                        {
                        this.state = 3795;
                        this.tableLifecycle();
                        }
                    }

                    }
                    break;
                case HiveSqlParser.EOF:
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ALTER:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_AS:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMMIT:
                case HiveSqlParser.KW_CREATE:
                case HiveSqlParser.KW_DELETE:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DESCRIBE:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DROP:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_FROM:
                case HiveSqlParser.KW_GRANT:
                case HiveSqlParser.KW_IMPORT:
                case HiveSqlParser.KW_INSERT:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_MERGE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PREPARE:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REVOKE:
                case HiveSqlParser.KW_ROLLBACK:
                case HiveSqlParser.KW_ROW:
                case HiveSqlParser.KW_SELECT:
                case HiveSqlParser.KW_SET:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_START:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TRUNCATE:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UPDATE:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_VALUES:
                case HiveSqlParser.KW_WITH:
                case HiveSqlParser.SEMICOLON:
                case HiveSqlParser.LPAREN:
                    {
                    this.state = 3802;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) {
                    case 1:
                        {
                        this.state = 3798;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3799;
                        this.columnNameTypeOrConstraintList();
                        this.state = 3800;
                        this.match(HiveSqlParser.RPAREN);
                        }
                        break;
                    }
                    this.state = 3805;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 47) {
                        {
                        this.state = 3804;
                        this.tableComment();
                        }
                    }

                    this.state = 3808;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 238) {
                        {
                        this.state = 3807;
                        this.createTablePartitionSpec();
                        }
                    }

                    this.state = 3811;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 42) {
                        {
                        this.state = 3810;
                        this.tableBuckets();
                        }
                    }

                    this.state = 3814;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 310) {
                        {
                        this.state = 3813;
                        this.tableSkewed();
                        }
                    }

                    this.state = 3817;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 291) {
                        {
                        this.state = 3816;
                        this.tableRowFormat();
                        }
                    }

                    this.state = 3820;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 321) {
                        {
                        this.state = 3819;
                        this.tableFileFormat();
                        }
                    }

                    this.state = 3823;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 189) {
                        {
                        this.state = 3822;
                        this.tableLocation();
                        }
                    }

                    this.state = 3826;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 332) {
                        {
                        this.state = 3825;
                        this.tablePropertiesPrefixed();
                        }
                    }

                    this.state = 3829;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 183) {
                        {
                        this.state = 3828;
                        this.tableLifecycle();
                        }
                    }

                    this.state = 3833;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 17) {
                        {
                        this.state = 3831;
                        this.match(HiveSqlParser.KW_AS);
                        this.state = 3832;
                        this.selectStatementWithCTE();
                        }
                    }

                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createDataConnectorStatement(): CreateDataConnectorStatementContext {
        let localContext = new CreateDataConnectorStatementContext(this.context, this.state);
        this.enterRule(localContext, 600, HiveSqlParser.RULE_createDataConnectorStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3839;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 3840;
            this.match(HiveSqlParser.KW_DATACONNECTOR);
            this.state = 3842;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 3841;
                this.ifNotExists();
                }
            }

            this.state = 3844;
            localContext._name = this.id_();
            this.state = 3846;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 352) {
                {
                this.state = 3845;
                this.dataConnectorType();
                }
            }

            this.state = 3849;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 367) {
                {
                this.state = 3848;
                this.dataConnectorUrl();
                }
            }

            this.state = 3852;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 47) {
                {
                this.state = 3851;
                this.dataConnectorComment();
                }
            }

            this.state = 3857;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) {
            case 1:
                {
                this.state = 3854;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 3855;
                this.match(HiveSqlParser.KW_DCPROPERTIES);
                this.state = 3856;
                localContext._dcprops = this.dcProperties();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dataConnectorComment(): DataConnectorCommentContext {
        let localContext = new DataConnectorCommentContext(this.context, this.state);
        this.enterRule(localContext, 602, HiveSqlParser.RULE_dataConnectorComment);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3859;
            this.match(HiveSqlParser.KW_COMMENT);
            this.state = 3860;
            localContext._comment = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dataConnectorUrl(): DataConnectorUrlContext {
        let localContext = new DataConnectorUrlContext(this.context, this.state);
        this.enterRule(localContext, 604, HiveSqlParser.RULE_dataConnectorUrl);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3862;
            this.match(HiveSqlParser.KW_URL);
            this.state = 3863;
            localContext._url = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dataConnectorType(): DataConnectorTypeContext {
        let localContext = new DataConnectorTypeContext(this.context, this.state);
        this.enterRule(localContext, 606, HiveSqlParser.RULE_dataConnectorType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3865;
            this.match(HiveSqlParser.KW_TYPE);
            this.state = 3866;
            localContext._dcType = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dcProperties(): DcPropertiesContext {
        let localContext = new DcPropertiesContext(this.context, this.state);
        this.enterRule(localContext, 608, HiveSqlParser.RULE_dcProperties);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3868;
            this.match(HiveSqlParser.LPAREN);
            this.state = 3869;
            this.dbPropertiesList();
            this.state = 3870;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropDataConnectorStatement(): DropDataConnectorStatementContext {
        let localContext = new DropDataConnectorStatementContext(this.context, this.state);
        this.enterRule(localContext, 610, HiveSqlParser.RULE_dropDataConnectorStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3872;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 3873;
            this.match(HiveSqlParser.KW_DATACONNECTOR);
            this.state = 3875;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 3874;
                this.ifExists();
                }
            }

            this.state = 3877;
            this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableAllColumns(): TableAllColumnsContext {
        let localContext = new TableAllColumnsContext(this.context, this.state);
        this.enterRule(localContext, 612, HiveSqlParser.RULE_tableAllColumns);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3884;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                {
                {
                this.state = 3879;
                this.id_();
                this.state = 3880;
                this.match(HiveSqlParser.DOT);
                }
                }
                this.state = 3886;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 3887;
            this.match(HiveSqlParser.STAR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public defaultValue(): DefaultValueContext {
        let localContext = new DefaultValueContext(this.context, this.state);
        this.enterRule(localContext, 614, HiveSqlParser.RULE_defaultValue);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3889;
            this.match(HiveSqlParser.KW_DEFAULT);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expressionList(): ExpressionListContext {
        let localContext = new ExpressionListContext(this.context, this.state);
        this.enterRule(localContext, 616, HiveSqlParser.RULE_expressionList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3891;
            this.expression();
            this.state = 3896;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 3892;
                this.match(HiveSqlParser.COMMA);
                this.state = 3893;
                this.expression();
                }
                }
                this.state = 3898;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public aliasList(): AliasListContext {
        let localContext = new AliasListContext(this.context, this.state);
        this.enterRule(localContext, 618, HiveSqlParser.RULE_aliasList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3899;
            this.id_();
            this.state = 3904;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 3900;
                this.match(HiveSqlParser.COMMA);
                this.state = 3901;
                this.id_();
                }
                }
                this.state = 3906;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public fromClause(): FromClauseContext {
        let localContext = new FromClauseContext(this.context, this.state);
        this.enterRule(localContext, 620, HiveSqlParser.RULE_fromClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3907;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 3908;
            this.fromSource();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public fromSource(): FromSourceContext {
        let localContext = new FromSourceContext(this.context, this.state);
        this.enterRule(localContext, 622, HiveSqlParser.RULE_fromSource);
        let _la: number;
        try {
            this.state = 3919;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_UNIQUEJOIN:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3910;
                this.uniqueJoinToken();
                this.state = 3911;
                this.uniqueJoinSource();
                this.state = 3914;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                do {
                    {
                    {
                    this.state = 3912;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 3913;
                    this.uniqueJoinSource();
                    }
                    }
                    this.state = 3916;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                } while (_la === 397);
                }
                break;
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLE:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.LPAREN:
            case HiveSqlParser.Identifier:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3918;
                this.joinSource();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public atomjoinSource(): AtomjoinSourceContext {
        let localContext = new AtomjoinSourceContext(this.context, this.state);
        this.enterRule(localContext, 624, HiveSqlParser.RULE_atomjoinSource);
        try {
            let alternative: number;
            this.state = 3953;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3921;
                this.tableSource();
                this.state = 3925;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                        {
                        this.state = 3922;
                        this.lateralView();
                        }
                        }
                    }
                    this.state = 3927;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context);
                }
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 3928;
                this.virtualTableSource();
                this.state = 3932;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 452, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                        {
                        this.state = 3929;
                        this.lateralView();
                        }
                        }
                    }
                    this.state = 3934;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 452, this.context);
                }
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 3935;
                this.subQuerySource();
                this.state = 3939;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 453, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                        {
                        this.state = 3936;
                        this.lateralView();
                        }
                        }
                    }
                    this.state = 3941;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 453, this.context);
                }
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 3942;
                this.partitionedTableFunction();
                this.state = 3946;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                        {
                        this.state = 3943;
                        this.lateralView();
                        }
                        }
                    }
                    this.state = 3948;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context);
                }
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 3949;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3950;
                this.joinSource();
                this.state = 3951;
                this.match(HiveSqlParser.RPAREN);
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public joinSource(): JoinSourceContext {
        let localContext = new JoinSourceContext(this.context, this.state);
        this.enterRule(localContext, 626, HiveSqlParser.RULE_joinSource);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3955;
            this.atomjoinSource();
            this.state = 3966;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 60 || ((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & 2147614721) !== 0) || _la === 180 || _la === 285 || _la === 397) {
                {
                {
                this.state = 3956;
                this.joinToken();
                this.state = 3957;
                this.joinSourcePart();
                this.state = 3962;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ON:
                    {
                    this.state = 3958;
                    this.match(HiveSqlParser.KW_ON);
                    this.state = 3959;
                    this.expression();
                    }
                    break;
                case HiveSqlParser.KW_USING:
                    {
                    this.state = 3960;
                    this.match(HiveSqlParser.KW_USING);
                    this.state = 3961;
                    this.columnParenthesesList();
                    }
                    break;
                case HiveSqlParser.EOF:
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ALTER:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_COMMIT:
                case HiveSqlParser.KW_CREATE:
                case HiveSqlParser.KW_CROSS:
                case HiveSqlParser.KW_DELETE:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DESCRIBE:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DROP:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_EXCEPT:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_FROM:
                case HiveSqlParser.KW_FULL:
                case HiveSqlParser.KW_GRANT:
                case HiveSqlParser.KW_GROUP:
                case HiveSqlParser.KW_HAVING:
                case HiveSqlParser.KW_IMPORT:
                case HiveSqlParser.KW_INNER:
                case HiveSqlParser.KW_INSERT:
                case HiveSqlParser.KW_INTERSECT:
                case HiveSqlParser.KW_JOIN:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LEFT:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_MERGE:
                case HiveSqlParser.KW_MINUS:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_ORDER:
                case HiveSqlParser.KW_PREPARE:
                case HiveSqlParser.KW_QUALIFY:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REVOKE:
                case HiveSqlParser.KW_RIGHT:
                case HiveSqlParser.KW_ROLLBACK:
                case HiveSqlParser.KW_SELECT:
                case HiveSqlParser.KW_SET:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_START:
                case HiveSqlParser.KW_TRUNCATE:
                case HiveSqlParser.KW_UNION:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UPDATE:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_VALUES:
                case HiveSqlParser.KW_WHERE:
                case HiveSqlParser.KW_WINDOW:
                case HiveSqlParser.KW_WITH:
                case HiveSqlParser.COMMA:
                case HiveSqlParser.SEMICOLON:
                case HiveSqlParser.LPAREN:
                case HiveSqlParser.RPAREN:
                    break;
                default:
                    break;
                }
                }
                }
                this.state = 3968;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public joinSourcePart(): JoinSourcePartContext {
        let localContext = new JoinSourcePartContext(this.context, this.state);
        this.enterRule(localContext, 628, HiveSqlParser.RULE_joinSourcePart);
        try {
            let alternative: number;
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3973;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) {
            case 1:
                {
                this.state = 3969;
                this.tableSource();
                }
                break;
            case 2:
                {
                this.state = 3970;
                this.virtualTableSource();
                }
                break;
            case 3:
                {
                this.state = 3971;
                this.subQuerySource();
                }
                break;
            case 4:
                {
                this.state = 3972;
                this.partitionedTableFunction();
                }
                break;
            }
            this.state = 3978;
            this.errorHandler.sync(this);
            alternative = this.interpreter.adaptivePredict(this.tokenStream, 459, this.context);
            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                if (alternative === 1) {
                    {
                    {
                    this.state = 3975;
                    this.lateralView();
                    }
                    }
                }
                this.state = 3980;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 459, this.context);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public uniqueJoinSource(): UniqueJoinSourceContext {
        let localContext = new UniqueJoinSourceContext(this.context, this.state);
        this.enterRule(localContext, 630, HiveSqlParser.RULE_uniqueJoinSource);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3982;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 250) {
                {
                this.state = 3981;
                this.match(HiveSqlParser.KW_PRESERVE);
                }
            }

            this.state = 3984;
            this.uniqueJoinTableSource();
            this.state = 3985;
            this.uniqueJoinExpr();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public uniqueJoinExpr(): UniqueJoinExprContext {
        let localContext = new UniqueJoinExprContext(this.context, this.state);
        this.enterRule(localContext, 632, HiveSqlParser.RULE_uniqueJoinExpr);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3987;
            this.match(HiveSqlParser.LPAREN);
            this.state = 3988;
            this.expressionList();
            this.state = 3989;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public uniqueJoinToken(): UniqueJoinTokenContext {
        let localContext = new UniqueJoinTokenContext(this.context, this.state);
        this.enterRule(localContext, 634, HiveSqlParser.RULE_uniqueJoinToken);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 3991;
            this.match(HiveSqlParser.KW_UNIQUEJOIN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public joinToken(): JoinTokenContext {
        let localContext = new JoinTokenContext(this.context, this.state);
        this.enterRule(localContext, 636, HiveSqlParser.RULE_joinToken);
        let _la: number;
        try {
            this.state = 4007;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.COMMA:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 3993;
                this.match(HiveSqlParser.COMMA);
                }
                break;
            case HiveSqlParser.KW_CROSS:
            case HiveSqlParser.KW_FULL:
            case HiveSqlParser.KW_INNER:
            case HiveSqlParser.KW_JOIN:
            case HiveSqlParser.KW_LEFT:
            case HiveSqlParser.KW_RIGHT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4004;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_INNER:
                    {
                    this.state = 3994;
                    this.match(HiveSqlParser.KW_INNER);
                    }
                    break;
                case HiveSqlParser.KW_CROSS:
                    {
                    this.state = 3995;
                    this.match(HiveSqlParser.KW_CROSS);
                    }
                    break;
                case HiveSqlParser.KW_FULL:
                case HiveSqlParser.KW_RIGHT:
                    {
                    this.state = 3996;
                    _la = this.tokenStream.LA(1);
                    if(!(_la === 140 || _la === 285)) {
                    this.errorHandler.recoverInline(this);
                    }
                    else {
                        this.errorHandler.reportMatch(this);
                        this.consume();
                    }
                    this.state = 3998;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 231) {
                        {
                        this.state = 3997;
                        this.match(HiveSqlParser.KW_OUTER);
                        }
                    }

                    }
                    break;
                case HiveSqlParser.KW_LEFT:
                    {
                    this.state = 4000;
                    this.match(HiveSqlParser.KW_LEFT);
                    this.state = 4002;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 12 || _la === 231 || _la === 300) {
                        {
                        this.state = 4001;
                        _la = this.tokenStream.LA(1);
                        if(!(_la === 12 || _la === 231 || _la === 300)) {
                        this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        }
                    }

                    }
                    break;
                case HiveSqlParser.KW_JOIN:
                    break;
                default:
                    break;
                }
                this.state = 4006;
                this.match(HiveSqlParser.KW_JOIN);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public lateralView(): LateralViewContext {
        let localContext = new LateralViewContext(this.context, this.state);
        this.enterRule(localContext, 638, HiveSqlParser.RULE_lateralView);
        let _la: number;
        try {
            let alternative: number;
            this.state = 4066;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 474, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4009;
                this.match(HiveSqlParser.KW_LATERAL);
                this.state = 4010;
                this.match(HiveSqlParser.KW_VIEW);
                this.state = 4011;
                this.match(HiveSqlParser.KW_OUTER);
                this.state = 4012;
                this.function_();
                this.state = 4013;
                this.tableAlias();
                this.state = 4023;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                    this.state = 4014;
                    this.match(HiveSqlParser.KW_AS);
                    this.state = 4015;
                    this.id_();
                    this.state = 4020;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 465, this.context);
                    while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                        if (alternative === 1) {
                            {
                            {
                            this.state = 4016;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4017;
                            this.id_();
                            }
                            }
                        }
                        this.state = 4022;
                        this.errorHandler.sync(this);
                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 465, this.context);
                    }
                    }
                }

                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4026;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 397) {
                    {
                    this.state = 4025;
                    this.match(HiveSqlParser.COMMA);
                    }
                }

                this.state = 4028;
                this.match(HiveSqlParser.KW_LATERAL);
                this.state = 4064;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_VIEW:
                    {
                    this.state = 4029;
                    this.match(HiveSqlParser.KW_VIEW);
                    this.state = 4030;
                    this.function_();
                    this.state = 4031;
                    this.tableAlias();
                    this.state = 4041;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 17) {
                        {
                        this.state = 4032;
                        this.match(HiveSqlParser.KW_AS);
                        this.state = 4033;
                        this.id_();
                        this.state = 4038;
                        this.errorHandler.sync(this);
                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 468, this.context);
                        while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                            if (alternative === 1) {
                                {
                                {
                                this.state = 4034;
                                this.match(HiveSqlParser.COMMA);
                                this.state = 4035;
                                this.id_();
                                }
                                }
                            }
                            this.state = 4040;
                            this.errorHandler.sync(this);
                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 468, this.context);
                        }
                        }
                    }

                    }
                    break;
                case HiveSqlParser.KW_TABLE:
                    {
                    this.state = 4043;
                    this.match(HiveSqlParser.KW_TABLE);
                    this.state = 4044;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 4045;
                    this.valuesClause();
                    this.state = 4046;
                    this.match(HiveSqlParser.RPAREN);
                    this.state = 4048;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 17) {
                        {
                        this.state = 4047;
                        this.match(HiveSqlParser.KW_AS);
                        }
                    }

                    this.state = 4050;
                    this.tableAlias();
                    this.state = 4062;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 472, this.context) ) {
                    case 1:
                        {
                        this.state = 4051;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 4052;
                        this.id_();
                        this.state = 4057;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                            {
                            this.state = 4053;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4054;
                            this.id_();
                            }
                            }
                            this.state = 4059;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                        this.state = 4060;
                        this.match(HiveSqlParser.RPAREN);
                        }
                        break;
                    }
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableAlias(): TableAliasContext {
        let localContext = new TableAliasContext(this.context, this.state);
        this.enterRule(localContext, 640, HiveSqlParser.RULE_tableAlias);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4068;
            this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableBucketSample(): TableBucketSampleContext {
        let localContext = new TableBucketSampleContext(this.context, this.state);
        this.enterRule(localContext, 642, HiveSqlParser.RULE_tableBucketSample);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4070;
            this.match(HiveSqlParser.KW_TABLESAMPLE);
            this.state = 4071;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4072;
            this.match(HiveSqlParser.KW_BUCKET);
            this.state = 4073;
            localContext._numerator = this.match(HiveSqlParser.Number);
            this.state = 4074;
            this.match(HiveSqlParser.KW_OUT);
            this.state = 4075;
            this.match(HiveSqlParser.KW_OF);
            this.state = 4076;
            localContext._denominator = this.match(HiveSqlParser.Number);
            this.state = 4086;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 224) {
                {
                this.state = 4077;
                this.match(HiveSqlParser.KW_ON);
                this.state = 4078;
                localContext._expression = this.expression();
                localContext._expr.push(localContext._expression);
                this.state = 4083;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 4079;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 4080;
                    localContext._expression = this.expression();
                    localContext._expr.push(localContext._expression);
                    }
                    }
                    this.state = 4085;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
            }

            this.state = 4088;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public splitSample(): SplitSampleContext {
        let localContext = new SplitSampleContext(this.context, this.state);
        this.enterRule(localContext, 644, HiveSqlParser.RULE_splitSample);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4090;
            this.match(HiveSqlParser.KW_TABLESAMPLE);
            this.state = 4091;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4095;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.Number:
                {
                this.state = 4092;
                this.match(HiveSqlParser.Number);
                this.state = 4093;
                _la = this.tokenStream.LA(1);
                if(!(_la === 241 || _la === 292)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                }
                break;
            case HiveSqlParser.ByteLengthLiteral:
                {
                this.state = 4094;
                this.match(HiveSqlParser.ByteLengthLiteral);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 4097;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableSample(): TableSampleContext {
        let localContext = new TableSampleContext(this.context, this.state);
        this.enterRule(localContext, 646, HiveSqlParser.RULE_tableSample);
        try {
            this.state = 4101;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 478, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4099;
                this.tableBucketSample();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4100;
                this.splitSample();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableSource(): TableSourceContext {
        let localContext = new TableSourceContext(this.context, this.state);
        this.enterRule(localContext, 648, HiveSqlParser.RULE_tableSource);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4103;
            localContext._tabname = this.tableOrView();
            this.state = 4105;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 479, this.context) ) {
            case 1:
                {
                this.state = 4104;
                localContext._props = this.tableProperties();
                }
                break;
            }
            this.state = 4108;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 331) {
                {
                this.state = 4107;
                localContext._ts = this.tableSample();
                }
            }

            this.state = 4111;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 134) {
                {
                this.state = 4110;
                localContext._asOf = this.asOfClause();
                }
            }

            this.state = 4117;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 483, this.context) ) {
            case 1:
                {
                this.state = 4114;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                    this.state = 4113;
                    this.match(HiveSqlParser.KW_AS);
                    }
                }

                this.state = 4116;
                localContext._alias = this.id_();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public asOfClause(): AsOfClauseContext {
        let localContext = new AsOfClauseContext(this.context, this.state);
        this.enterRule(localContext, 650, HiveSqlParser.RULE_asOfClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4119;
            this.match(HiveSqlParser.KW_FOR);
            this.state = 4129;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SYSTEM_TIME:
                {
                this.state = 4120;
                this.match(HiveSqlParser.KW_SYSTEM_TIME);
                this.state = 4121;
                this.match(HiveSqlParser.KW_AS);
                this.state = 4122;
                this.match(HiveSqlParser.KW_OF);
                this.state = 4123;
                localContext._asOfTime = this.expression();
                }
                break;
            case HiveSqlParser.KW_FOR:
                {
                this.state = 4124;
                this.match(HiveSqlParser.KW_FOR);
                this.state = 4125;
                this.match(HiveSqlParser.KW_SYSTEM_VERSION);
                this.state = 4126;
                this.match(HiveSqlParser.KW_AS);
                this.state = 4127;
                this.match(HiveSqlParser.KW_OF);
                this.state = 4128;
                localContext._asOfVersion = this.match(HiveSqlParser.Number);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public uniqueJoinTableSource(): UniqueJoinTableSourceContext {
        let localContext = new UniqueJoinTableSourceContext(this.context, this.state);
        this.enterRule(localContext, 652, HiveSqlParser.RULE_uniqueJoinTableSource);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4131;
            localContext._tabname = this.tableOrView();
            this.state = 4133;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 331) {
                {
                this.state = 4132;
                localContext._ts = this.tableSample();
                }
            }

            this.state = 4139;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                {
                this.state = 4136;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                    this.state = 4135;
                    this.match(HiveSqlParser.KW_AS);
                    }
                }

                this.state = 4138;
                localContext._alias = this.id_();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dbSchemaName(): DbSchemaNameContext {
        let localContext = new DbSchemaNameContext(this.context, this.state);
        this.enterRule(localContext, 654, HiveSqlParser.RULE_dbSchemaName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4141;
            this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dbSchemaNameCreate(): DbSchemaNameCreateContext {
        let localContext = new DbSchemaNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 656, HiveSqlParser.RULE_dbSchemaNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4143;
            this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableOrView(): TableOrViewContext {
        let localContext = new TableOrViewContext(this.context, this.state);
        this.enterRule(localContext, 658, HiveSqlParser.RULE_tableOrView);
        try {
            this.state = 4147;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 488, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4145;
                this.tableName();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4146;
                this.viewName();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableName(): TableNameContext {
        let localContext = new TableNameContext(this.context, this.state);
        this.enterRule(localContext, 660, HiveSqlParser.RULE_tableName);
        try {
            this.state = 4157;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4149;
                localContext._db = this.id_();
                this.state = 4150;
                this.match(HiveSqlParser.DOT);
                this.state = 4151;
                localContext._tab = this.id_();
                this.state = 4154;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 489, this.context) ) {
                case 1:
                    {
                    this.state = 4152;
                    this.match(HiveSqlParser.DOT);
                    this.state = 4153;
                    localContext._meta = this.id_();
                    }
                    break;
                }
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4156;
                localContext._tab = this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableNameCreate(): TableNameCreateContext {
        let localContext = new TableNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 662, HiveSqlParser.RULE_tableNameCreate);
        let _la: number;
        try {
            this.state = 4167;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 492, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4159;
                localContext._db = this.id_();
                this.state = 4160;
                this.match(HiveSqlParser.DOT);
                this.state = 4161;
                localContext._tab = this.id_();
                this.state = 4164;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 395) {
                    {
                    this.state = 4162;
                    this.match(HiveSqlParser.DOT);
                    this.state = 4163;
                    localContext._meta = this.id_();
                    }
                }

                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4166;
                localContext._tab = this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewName(): ViewNameContext {
        let localContext = new ViewNameContext(this.context, this.state);
        this.enterRule(localContext, 664, HiveSqlParser.RULE_viewName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4172;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 493, this.context) ) {
            case 1:
                {
                this.state = 4169;
                localContext._db = this.id_();
                this.state = 4170;
                this.match(HiveSqlParser.DOT);
                }
                break;
            }
            this.state = 4174;
            localContext._view = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public viewNameCreate(): ViewNameCreateContext {
        let localContext = new ViewNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 666, HiveSqlParser.RULE_viewNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4179;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 494, this.context) ) {
            case 1:
                {
                this.state = 4176;
                localContext._db = this.id_();
                this.state = 4177;
                this.match(HiveSqlParser.DOT);
                }
                break;
            }
            this.state = 4181;
            localContext._view = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public subQuerySource(): SubQuerySourceContext {
        let localContext = new SubQuerySourceContext(this.context, this.state);
        this.enterRule(localContext, 668, HiveSqlParser.RULE_subQuerySource);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4183;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4184;
            this.queryStatementExpression();
            this.state = 4185;
            this.match(HiveSqlParser.RPAREN);
            this.state = 4187;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 17) {
                {
                this.state = 4186;
                this.match(HiveSqlParser.KW_AS);
                }
            }

            this.state = 4189;
            this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitioningSpec(): PartitioningSpecContext {
        let localContext = new PartitioningSpecContext(this.context, this.state);
        this.enterRule(localContext, 670, HiveSqlParser.RULE_partitioningSpec);
        let _la: number;
        try {
            this.state = 4202;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_PARTITION:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4191;
                this.partitionByClause();
                this.state = 4193;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 229) {
                    {
                    this.state = 4192;
                    this.orderByClause();
                    }
                }

                }
                break;
            case HiveSqlParser.KW_ORDER:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4195;
                this.orderByClause();
                }
                break;
            case HiveSqlParser.KW_DISTRIBUTE:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4196;
                this.distributeByClause();
                this.state = 4198;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 314) {
                    {
                    this.state = 4197;
                    this.sortByClause();
                    }
                }

                }
                break;
            case HiveSqlParser.KW_SORT:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4200;
                this.sortByClause();
                }
                break;
            case HiveSqlParser.KW_CLUSTER:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 4201;
                this.clusterByClause();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionTableFunctionSource(): PartitionTableFunctionSourceContext {
        let localContext = new PartitionTableFunctionSourceContext(this.context, this.state);
        this.enterRule(localContext, 672, HiveSqlParser.RULE_partitionTableFunctionSource);
        try {
            this.state = 4207;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 499, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4204;
                this.subQuerySource();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4205;
                this.tableSource();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4206;
                this.partitionedTableFunction();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionedTableFunction(): PartitionedTableFunctionContext {
        let localContext = new PartitionedTableFunctionContext(this.context, this.state);
        this.enterRule(localContext, 674, HiveSqlParser.RULE_partitionedTableFunction);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4209;
            localContext._n = this.id_();
            this.state = 4210;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4211;
            this.match(HiveSqlParser.KW_ON);
            this.state = 4212;
            localContext._ptfsrc = this.partitionTableFunctionSource();
            this.state = 4214;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 41 || _la === 97 || _la === 229 || _la === 237 || _la === 314) {
                {
                this.state = 4213;
                localContext._spec = this.partitioningSpec();
                }
            }

            this.state = 4231;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 432) {
                {
                this.state = 4216;
                this.match(HiveSqlParser.Identifier);
                this.state = 4217;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4218;
                this.expression();
                this.state = 4219;
                this.match(HiveSqlParser.RPAREN);
                this.state = 4228;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 4220;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 4221;
                    this.match(HiveSqlParser.Identifier);
                    this.state = 4222;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 4223;
                    this.expression();
                    this.state = 4224;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    }
                    this.state = 4230;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
            }

            this.state = 4233;
            this.match(HiveSqlParser.RPAREN);
            this.state = 4235;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 503, this.context) ) {
            case 1:
                {
                this.state = 4234;
                localContext._alias = this.id_();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public whereClause(): WhereClauseContext {
        let localContext = new WhereClauseContext(this.context, this.state);
        this.enterRule(localContext, 676, HiveSqlParser.RULE_whereClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4237;
            this.match(HiveSqlParser.KW_WHERE);
            this.state = 4238;
            this.searchCondition();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public searchCondition(): SearchConditionContext {
        let localContext = new SearchConditionContext(this.context, this.state);
        this.enterRule(localContext, 678, HiveSqlParser.RULE_searchCondition);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4240;
            this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public valuesSource(): ValuesSourceContext {
        let localContext = new ValuesSourceContext(this.context, this.state);
        this.enterRule(localContext, 680, HiveSqlParser.RULE_valuesSource);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4242;
            this.valuesClause();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public valuesClause(): ValuesClauseContext {
        let localContext = new ValuesClauseContext(this.context, this.state);
        this.enterRule(localContext, 682, HiveSqlParser.RULE_valuesClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4244;
            this.match(HiveSqlParser.KW_VALUES);
            this.state = 4245;
            this.valuesTableConstructor();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public valuesTableConstructor(): ValuesTableConstructorContext {
        let localContext = new ValuesTableConstructorContext(this.context, this.state);
        this.enterRule(localContext, 684, HiveSqlParser.RULE_valuesTableConstructor);
        let _la: number;
        try {
            this.state = 4263;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 506, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4247;
                this.valueRowConstructor();
                this.state = 4252;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 4248;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 4249;
                    this.valueRowConstructor();
                    }
                    }
                    this.state = 4254;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4255;
                this.firstValueRowConstructor();
                this.state = 4260;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 4256;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 4257;
                    this.valueRowConstructor();
                    }
                    }
                    this.state = 4262;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public valueRowConstructor(): ValueRowConstructorContext {
        let localContext = new ValueRowConstructorContext(this.context, this.state);
        this.enterRule(localContext, 686, HiveSqlParser.RULE_valueRowConstructor);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4265;
            this.expressionsInParenthesis();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public firstValueRowConstructor(): FirstValueRowConstructorContext {
        let localContext = new FirstValueRowConstructorContext(this.context, this.state);
        this.enterRule(localContext, 688, HiveSqlParser.RULE_firstValueRowConstructor);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4267;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4268;
            this.firstExpressionsWithAlias();
            this.state = 4269;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public virtualTableSource(): VirtualTableSourceContext {
        let localContext = new VirtualTableSourceContext(this.context, this.state);
        this.enterRule(localContext, 690, HiveSqlParser.RULE_virtualTableSource);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4271;
            this.match(HiveSqlParser.KW_TABLE);
            this.state = 4272;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4273;
            this.valuesClause();
            this.state = 4274;
            this.match(HiveSqlParser.RPAREN);
            this.state = 4276;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 17) {
                {
                this.state = 4275;
                this.match(HiveSqlParser.KW_AS);
                }
            }

            this.state = 4278;
            this.tableAlias();
            this.state = 4288;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 399) {
                {
                this.state = 4279;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4280;
                this.id_();
                this.state = 4285;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 4281;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 4282;
                    this.id_();
                    }
                    }
                    this.state = 4287;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                }
            }

            this.state = 4290;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectClause(): SelectClauseContext {
        let localContext = new SelectClauseContext(this.context, this.state);
        this.enterRule(localContext, 692, HiveSqlParser.RULE_selectClause);
        try {
            this.state = 4305;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SELECT:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4292;
                this.match(HiveSqlParser.KW_SELECT);
                this.state = 4294;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 510, this.context) ) {
                case 1:
                    {
                    this.state = 4293;
                    this.match(HiveSqlParser.QUERY_HINT);
                    }
                    break;
                }
                this.state = 4302;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 512, this.context) ) {
                case 1:
                    {
                    this.state = 4297;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 511, this.context) ) {
                    case 1:
                        {
                        this.state = 4296;
                        this.all_distinct();
                        }
                        break;
                    }
                    this.state = 4299;
                    this.selectList();
                    }
                    break;
                case 2:
                    {
                    this.state = 4300;
                    this.match(HiveSqlParser.KW_TRANSFORM);
                    this.state = 4301;
                    this.selectTrfmClause();
                    }
                    break;
                }
                }
                break;
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_REDUCE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4304;
                this.trfmClause();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public all_distinct(): All_distinctContext {
        let localContext = new All_distinctContext(this.context, this.state);
        this.enterRule(localContext, 694, HiveSqlParser.RULE_all_distinct);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4307;
            _la = this.tokenStream.LA(1);
            if(!(_la === 7 || _la === 96)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectList(): SelectListContext {
        let localContext = new SelectListContext(this.context, this.state);
        this.enterRule(localContext, 696, HiveSqlParser.RULE_selectList);
        try {
            let alternative: number;
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4309;
            this.selectItem();
            this.state = 4314;
            this.errorHandler.sync(this);
            alternative = this.interpreter.adaptivePredict(this.tokenStream, 514, this.context);
            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                if (alternative === 1) {
                    {
                    {
                    this.state = 4310;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 4311;
                    this.selectItem();
                    }
                    }
                }
                this.state = 4316;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 514, this.context);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectTrfmClause(): SelectTrfmClauseContext {
        let localContext = new SelectTrfmClauseContext(this.context, this.state);
        this.enterRule(localContext, 698, HiveSqlParser.RULE_selectTrfmClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4317;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4318;
            this.selectExpressionList();
            this.state = 4319;
            this.match(HiveSqlParser.RPAREN);
            this.state = 4320;
            this.rowFormat();
            this.state = 4321;
            this.recordWriter();
            this.state = 4322;
            this.match(HiveSqlParser.KW_USING);
            this.state = 4323;
            this.match(HiveSqlParser.StringLiteral);
            this.state = 4336;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 17) {
                {
                this.state = 4324;
                this.match(HiveSqlParser.KW_AS);
                this.state = 4334;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 516, this.context) ) {
                case 1:
                    {
                    this.state = 4325;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 4328;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 515, this.context) ) {
                    case 1:
                        {
                        this.state = 4326;
                        this.aliasList();
                        }
                        break;
                    case 2:
                        {
                        this.state = 4327;
                        this.columnNameTypeList();
                        }
                        break;
                    }
                    this.state = 4330;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 2:
                    {
                    this.state = 4332;
                    this.aliasList();
                    }
                    break;
                case 3:
                    {
                    this.state = 4333;
                    this.columnNameTypeList();
                    }
                    break;
                }
                }
            }

            this.state = 4338;
            this.rowFormat();
            this.state = 4339;
            this.recordReader();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectItem(): SelectItemContext {
        let localContext = new SelectItemContext(this.context, this.state);
        this.enterRule(localContext, 700, HiveSqlParser.RULE_selectItem);
        let _la: number;
        try {
            this.state = 4364;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 522, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4341;
                this.tableAllColumns();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                {
                this.state = 4344;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 518, this.context) ) {
                case 1:
                    {
                    this.state = 4342;
                    this.columnName();
                    }
                    break;
                case 2:
                    {
                    this.state = 4343;
                    this.expression();
                    }
                    break;
                }
                this.state = 4362;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 521, this.context) ) {
                case 1:
                    {
                    this.state = 4347;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 17) {
                        {
                        this.state = 4346;
                        this.match(HiveSqlParser.KW_AS);
                        }
                    }

                    this.state = 4349;
                    this.id_();
                    }
                    break;
                case 2:
                    {
                    this.state = 4350;
                    this.match(HiveSqlParser.KW_AS);
                    this.state = 4351;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 4352;
                    this.id_();
                    this.state = 4357;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    while (_la === 397) {
                        {
                        {
                        this.state = 4353;
                        this.match(HiveSqlParser.COMMA);
                        this.state = 4354;
                        this.id_();
                        }
                        }
                        this.state = 4359;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                    }
                    this.state = 4360;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                }
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public trfmClause(): TrfmClauseContext {
        let localContext = new TrfmClauseContext(this.context, this.state);
        this.enterRule(localContext, 702, HiveSqlParser.RULE_trfmClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4366;
            _la = this.tokenStream.LA(1);
            if(!(_la === 198 || _la === 268)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            this.state = 4367;
            this.selectExpressionList();
            this.state = 4368;
            this.rowFormat();
            this.state = 4369;
            this.recordWriter();
            this.state = 4370;
            this.match(HiveSqlParser.KW_USING);
            this.state = 4371;
            this.match(HiveSqlParser.StringLiteral);
            this.state = 4384;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 17) {
                {
                this.state = 4372;
                this.match(HiveSqlParser.KW_AS);
                this.state = 4382;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) {
                case 1:
                    {
                    this.state = 4373;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 4376;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 523, this.context) ) {
                    case 1:
                        {
                        this.state = 4374;
                        this.aliasList();
                        }
                        break;
                    case 2:
                        {
                        this.state = 4375;
                        this.columnNameTypeList();
                        }
                        break;
                    }
                    this.state = 4378;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 2:
                    {
                    this.state = 4380;
                    this.aliasList();
                    }
                    break;
                case 3:
                    {
                    this.state = 4381;
                    this.columnNameTypeList();
                    }
                    break;
                }
                }
            }

            this.state = 4386;
            this.rowFormat();
            this.state = 4387;
            this.recordReader();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectExpression(): SelectExpressionContext {
        let localContext = new SelectExpressionContext(this.context, this.state);
        this.enterRule(localContext, 704, HiveSqlParser.RULE_selectExpression);
        try {
            this.state = 4391;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 526, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4389;
                this.tableAllColumns();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4390;
                this.expression();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public selectExpressionList(): SelectExpressionListContext {
        let localContext = new SelectExpressionListContext(this.context, this.state);
        this.enterRule(localContext, 706, HiveSqlParser.RULE_selectExpressionList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4393;
            this.selectExpression();
            this.state = 4398;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4394;
                this.match(HiveSqlParser.COMMA);
                this.state = 4395;
                this.selectExpression();
                }
                }
                this.state = 4400;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_clause(): Window_clauseContext {
        let localContext = new Window_clauseContext(this.context, this.state);
        this.enterRule(localContext, 708, HiveSqlParser.RULE_window_clause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4401;
            this.match(HiveSqlParser.KW_WINDOW);
            this.state = 4402;
            this.window_defn();
            this.state = 4407;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4403;
                this.match(HiveSqlParser.COMMA);
                this.state = 4404;
                this.window_defn();
                }
                }
                this.state = 4409;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_defn(): Window_defnContext {
        let localContext = new Window_defnContext(this.context, this.state);
        this.enterRule(localContext, 710, HiveSqlParser.RULE_window_defn);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4410;
            this.id_();
            this.state = 4411;
            this.match(HiveSqlParser.KW_AS);
            this.state = 4412;
            this.window_specification();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_specification(): Window_specificationContext {
        let localContext = new Window_specificationContext(this.context, this.state);
        this.enterRule(localContext, 712, HiveSqlParser.RULE_window_specification);
        let _la: number;
        try {
            this.state = 4426;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.Identifier:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4414;
                this.id_();
                }
                break;
            case HiveSqlParser.LPAREN:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4415;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4417;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 529, this.context) ) {
                case 1:
                    {
                    this.state = 4416;
                    this.id_();
                    }
                    break;
                }
                this.state = 4420;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 41 || _la === 97 || _la === 229 || _la === 237 || _la === 314) {
                    {
                    this.state = 4419;
                    this.partitioningSpec();
                    }
                }

                this.state = 4423;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 260 || _la === 292) {
                    {
                    this.state = 4422;
                    this.window_frame();
                    }
                }

                this.state = 4425;
                this.match(HiveSqlParser.RPAREN);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_frame(): Window_frameContext {
        let localContext = new Window_frameContext(this.context, this.state);
        this.enterRule(localContext, 714, HiveSqlParser.RULE_window_frame);
        try {
            this.state = 4430;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ROWS:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4428;
                this.window_range_expression();
                }
                break;
            case HiveSqlParser.KW_RANGE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4429;
                this.window_value_expression();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_range_expression(): Window_range_expressionContext {
        let localContext = new Window_range_expressionContext(this.context, this.state);
        this.enterRule(localContext, 716, HiveSqlParser.RULE_window_range_expression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4432;
            this.match(HiveSqlParser.KW_ROWS);
            this.state = 4439;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_CURRENT:
            case HiveSqlParser.KW_UNBOUNDED:
            case HiveSqlParser.Number:
                {
                this.state = 4433;
                this.window_frame_start_boundary();
                }
                break;
            case HiveSqlParser.KW_BETWEEN:
                {
                this.state = 4434;
                this.match(HiveSqlParser.KW_BETWEEN);
                this.state = 4435;
                this.window_frame_boundary();
                this.state = 4436;
                this.match(HiveSqlParser.KW_AND);
                this.state = 4437;
                this.window_frame_boundary();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_value_expression(): Window_value_expressionContext {
        let localContext = new Window_value_expressionContext(this.context, this.state);
        this.enterRule(localContext, 718, HiveSqlParser.RULE_window_value_expression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4441;
            this.match(HiveSqlParser.KW_RANGE);
            this.state = 4448;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_CURRENT:
            case HiveSqlParser.KW_UNBOUNDED:
            case HiveSqlParser.Number:
                {
                this.state = 4442;
                this.window_frame_start_boundary();
                }
                break;
            case HiveSqlParser.KW_BETWEEN:
                {
                this.state = 4443;
                this.match(HiveSqlParser.KW_BETWEEN);
                this.state = 4444;
                this.window_frame_boundary();
                this.state = 4445;
                this.match(HiveSqlParser.KW_AND);
                this.state = 4446;
                this.window_frame_boundary();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_frame_start_boundary(): Window_frame_start_boundaryContext {
        let localContext = new Window_frame_start_boundaryContext(this.context, this.state);
        this.enterRule(localContext, 720, HiveSqlParser.RULE_window_frame_start_boundary);
        try {
            this.state = 4456;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_UNBOUNDED:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4450;
                this.match(HiveSqlParser.KW_UNBOUNDED);
                this.state = 4451;
                this.match(HiveSqlParser.KW_PRECEDING);
                }
                break;
            case HiveSqlParser.KW_CURRENT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4452;
                this.match(HiveSqlParser.KW_CURRENT);
                this.state = 4453;
                this.match(HiveSqlParser.KW_ROW);
                }
                break;
            case HiveSqlParser.Number:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4454;
                this.match(HiveSqlParser.Number);
                this.state = 4455;
                this.match(HiveSqlParser.KW_PRECEDING);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public window_frame_boundary(): Window_frame_boundaryContext {
        let localContext = new Window_frame_boundaryContext(this.context, this.state);
        this.enterRule(localContext, 722, HiveSqlParser.RULE_window_frame_boundary);
        let _la: number;
        try {
            this.state = 4462;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_UNBOUNDED:
            case HiveSqlParser.Number:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4458;
                _la = this.tokenStream.LA(1);
                if(!(_la === 354 || _la === 431)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 4459;
                _la = this.tokenStream.LA(1);
                if(!(_la === 133 || _la === 247)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                }
                break;
            case HiveSqlParser.KW_CURRENT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4460;
                this.match(HiveSqlParser.KW_CURRENT);
                this.state = 4461;
                this.match(HiveSqlParser.KW_ROW);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public groupByClause(): GroupByClauseContext {
        let localContext = new GroupByClauseContext(this.context, this.state);
        this.enterRule(localContext, 724, HiveSqlParser.RULE_groupByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4464;
            this.match(HiveSqlParser.KW_GROUP);
            this.state = 4465;
            this.match(HiveSqlParser.KW_BY);
            this.state = 4466;
            this.groupby_expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public groupby_expression(): Groupby_expressionContext {
        let localContext = new Groupby_expressionContext(this.context, this.state);
        this.enterRule(localContext, 726, HiveSqlParser.RULE_groupby_expression);
        try {
            this.state = 4472;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 538, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4468;
                this.columnName();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4469;
                this.rollupStandard();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4470;
                this.rollupOldSyntax();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4471;
                this.groupByEmpty();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public groupByEmpty(): GroupByEmptyContext {
        let localContext = new GroupByEmptyContext(this.context, this.state);
        this.enterRule(localContext, 728, HiveSqlParser.RULE_groupByEmpty);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4474;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4475;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rollupStandard(): RollupStandardContext {
        let localContext = new RollupStandardContext(this.context, this.state);
        this.enterRule(localContext, 730, HiveSqlParser.RULE_rollupStandard);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4479;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ROLLUP:
                {
                this.state = 4477;
                localContext._rollup = this.match(HiveSqlParser.KW_ROLLUP);
                }
                break;
            case HiveSqlParser.KW_CUBE:
                {
                this.state = 4478;
                localContext._cube = this.match(HiveSqlParser.KW_CUBE);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 4481;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4482;
            this.expression();
            this.state = 4487;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4483;
                this.match(HiveSqlParser.COMMA);
                this.state = 4484;
                this.expression();
                }
                }
                this.state = 4489;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 4490;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rollupOldSyntax(): RollupOldSyntaxContext {
        let localContext = new RollupOldSyntaxContext(this.context, this.state);
        this.enterRule(localContext, 732, HiveSqlParser.RULE_rollupOldSyntax);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4492;
            localContext._expr = this.expressionsNotInParenthesis();
            this.state = 4497;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 541, this.context) ) {
            case 1:
                {
                this.state = 4493;
                localContext._rollup = this.match(HiveSqlParser.KW_WITH);
                this.state = 4494;
                this.match(HiveSqlParser.KW_ROLLUP);
                }
                break;
            case 2:
                {
                this.state = 4495;
                localContext._cube = this.match(HiveSqlParser.KW_WITH);
                this.state = 4496;
                this.match(HiveSqlParser.KW_CUBE);
                }
                break;
            }
            this.state = 4512;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 145) {
                {
                this.state = 4499;
                localContext._sets = this.match(HiveSqlParser.KW_GROUPING);
                this.state = 4500;
                this.match(HiveSqlParser.KW_SETS);
                this.state = 4501;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4502;
                this.groupingSetExpression();
                this.state = 4507;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                    {
                    this.state = 4503;
                    this.match(HiveSqlParser.COMMA);
                    this.state = 4504;
                    this.groupingSetExpression();
                    }
                    }
                    this.state = 4509;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 4510;
                this.match(HiveSqlParser.RPAREN);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public groupingSetExpression(): GroupingSetExpressionContext {
        let localContext = new GroupingSetExpressionContext(this.context, this.state);
        this.enterRule(localContext, 734, HiveSqlParser.RULE_groupingSetExpression);
        try {
            this.state = 4516;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 544, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4514;
                this.groupingSetExpressionMultiple();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4515;
                this.groupingExpressionSingle();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public groupingSetExpressionMultiple(): GroupingSetExpressionMultipleContext {
        let localContext = new GroupingSetExpressionMultipleContext(this.context, this.state);
        this.enterRule(localContext, 736, HiveSqlParser.RULE_groupingSetExpressionMultiple);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4518;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4520;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) {
                {
                this.state = 4519;
                this.expression();
                }
            }

            this.state = 4526;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4522;
                this.match(HiveSqlParser.COMMA);
                this.state = 4523;
                this.expression();
                }
                }
                this.state = 4528;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 4529;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public groupingExpressionSingle(): GroupingExpressionSingleContext {
        let localContext = new GroupingExpressionSingleContext(this.context, this.state);
        this.enterRule(localContext, 738, HiveSqlParser.RULE_groupingExpressionSingle);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4531;
            this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public havingClause(): HavingClauseContext {
        let localContext = new HavingClauseContext(this.context, this.state);
        this.enterRule(localContext, 740, HiveSqlParser.RULE_havingClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4533;
            this.match(HiveSqlParser.KW_HAVING);
            this.state = 4534;
            this.havingCondition();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public qualifyClause(): QualifyClauseContext {
        let localContext = new QualifyClauseContext(this.context, this.state);
        this.enterRule(localContext, 742, HiveSqlParser.RULE_qualifyClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4536;
            this.match(HiveSqlParser.KW_QUALIFY);
            this.state = 4537;
            this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public havingCondition(): HavingConditionContext {
        let localContext = new HavingConditionContext(this.context, this.state);
        this.enterRule(localContext, 744, HiveSqlParser.RULE_havingCondition);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4539;
            this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expressionsInParenthesis(): ExpressionsInParenthesisContext {
        let localContext = new ExpressionsInParenthesisContext(this.context, this.state);
        this.enterRule(localContext, 746, HiveSqlParser.RULE_expressionsInParenthesis);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4541;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4542;
            this.expressionsNotInParenthesis();
            this.state = 4543;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext {
        let localContext = new ExpressionsNotInParenthesisContext(this.context, this.state);
        this.enterRule(localContext, 748, HiveSqlParser.RULE_expressionsNotInParenthesis);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4545;
            localContext._first = this.expressionOrDefault();
            this.state = 4547;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 397) {
                {
                this.state = 4546;
                localContext._more = this.expressionPart();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expressionPart(): ExpressionPartContext {
        let localContext = new ExpressionPartContext(this.context, this.state);
        this.enterRule(localContext, 750, HiveSqlParser.RULE_expressionPart);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4551;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 4549;
                this.match(HiveSqlParser.COMMA);
                this.state = 4550;
                this.expressionOrDefault();
                }
                }
                this.state = 4553;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 397);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expressionOrDefault(): ExpressionOrDefaultContext {
        let localContext = new ExpressionOrDefaultContext(this.context, this.state);
        this.enterRule(localContext, 752, HiveSqlParser.RULE_expressionOrDefault);
        try {
            this.state = 4557;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4555;
                this.defaultValue();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4556;
                this.expression();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public firstExpressionsWithAlias(): FirstExpressionsWithAliasContext {
        let localContext = new FirstExpressionsWithAliasContext(this.context, this.state);
        this.enterRule(localContext, 754, HiveSqlParser.RULE_firstExpressionsWithAlias);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4559;
            localContext._first = this.expression();
            this.state = 4561;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 17) {
                {
                this.state = 4560;
                this.match(HiveSqlParser.KW_AS);
                }
            }

            this.state = 4564;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                {
                this.state = 4563;
                localContext._colAlias = this.id_();
                }
            }

            this.state = 4570;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4566;
                this.match(HiveSqlParser.COMMA);
                this.state = 4567;
                this.expressionWithAlias();
                }
                }
                this.state = 4572;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expressionWithAlias(): ExpressionWithAliasContext {
        let localContext = new ExpressionWithAliasContext(this.context, this.state);
        this.enterRule(localContext, 756, HiveSqlParser.RULE_expressionWithAlias);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4573;
            this.expression();
            this.state = 4575;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 17) {
                {
                this.state = 4574;
                this.match(HiveSqlParser.KW_AS);
                }
            }

            this.state = 4578;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                {
                this.state = 4577;
                localContext._alias = this.id_();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expressions(): ExpressionsContext {
        let localContext = new ExpressionsContext(this.context, this.state);
        this.enterRule(localContext, 758, HiveSqlParser.RULE_expressions);
        try {
            this.state = 4582;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4580;
                this.expressionsInParenthesis();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4581;
                this.expressionsNotInParenthesis();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnRefOrderInParenthesis(): ColumnRefOrderInParenthesisContext {
        let localContext = new ColumnRefOrderInParenthesisContext(this.context, this.state);
        this.enterRule(localContext, 760, HiveSqlParser.RULE_columnRefOrderInParenthesis);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4584;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4585;
            this.columnRefOrder();
            this.state = 4590;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4586;
                this.match(HiveSqlParser.COMMA);
                this.state = 4587;
                this.columnRefOrder();
                }
                }
                this.state = 4592;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 4593;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public columnRefOrderNotInParenthesis(): ColumnRefOrderNotInParenthesisContext {
        let localContext = new ColumnRefOrderNotInParenthesisContext(this.context, this.state);
        this.enterRule(localContext, 762, HiveSqlParser.RULE_columnRefOrderNotInParenthesis);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4595;
            this.columnRefOrder();
            this.state = 4600;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4596;
                this.match(HiveSqlParser.COMMA);
                this.state = 4597;
                this.columnRefOrder();
                }
                }
                this.state = 4602;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public orderByClause(): OrderByClauseContext {
        let localContext = new OrderByClauseContext(this.context, this.state);
        this.enterRule(localContext, 764, HiveSqlParser.RULE_orderByClause);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4603;
            this.match(HiveSqlParser.KW_ORDER);
            this.state = 4604;
            this.match(HiveSqlParser.KW_BY);
            this.state = 4605;
            this.columnRefOrder();
            this.state = 4610;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 4606;
                this.match(HiveSqlParser.COMMA);
                this.state = 4607;
                this.columnRefOrder();
                }
                }
                this.state = 4612;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public clusterByClause(): ClusterByClauseContext {
        let localContext = new ClusterByClauseContext(this.context, this.state);
        this.enterRule(localContext, 766, HiveSqlParser.RULE_clusterByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4613;
            this.match(HiveSqlParser.KW_CLUSTER);
            this.state = 4614;
            this.match(HiveSqlParser.KW_BY);
            this.state = 4615;
            this.expressions();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionByClause(): PartitionByClauseContext {
        let localContext = new PartitionByClauseContext(this.context, this.state);
        this.enterRule(localContext, 768, HiveSqlParser.RULE_partitionByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4617;
            this.match(HiveSqlParser.KW_PARTITION);
            this.state = 4618;
            this.match(HiveSqlParser.KW_BY);
            this.state = 4619;
            this.expressions();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public distributeByClause(): DistributeByClauseContext {
        let localContext = new DistributeByClauseContext(this.context, this.state);
        this.enterRule(localContext, 770, HiveSqlParser.RULE_distributeByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4621;
            this.match(HiveSqlParser.KW_DISTRIBUTE);
            this.state = 4622;
            this.match(HiveSqlParser.KW_BY);
            this.state = 4623;
            this.expressions();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public sortByClause(): SortByClauseContext {
        let localContext = new SortByClauseContext(this.context, this.state);
        this.enterRule(localContext, 772, HiveSqlParser.RULE_sortByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4625;
            this.match(HiveSqlParser.KW_SORT);
            this.state = 4626;
            this.match(HiveSqlParser.KW_BY);
            this.state = 4629;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 559, this.context) ) {
            case 1:
                {
                this.state = 4627;
                this.columnRefOrderInParenthesis();
                }
                break;
            case 2:
                {
                this.state = 4628;
                this.columnRefOrderNotInParenthesis();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public trimFunction(): TrimFunctionContext {
        let localContext = new TrimFunctionContext(this.context, this.state);
        this.enterRule(localContext, 774, HiveSqlParser.RULE_trimFunction);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4631;
            this.match(HiveSqlParser.KW_TRIM);
            this.state = 4632;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4636;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_LEADING:
                {
                this.state = 4633;
                localContext._leading = this.match(HiveSqlParser.KW_LEADING);
                }
                break;
            case HiveSqlParser.KW_TRAILING:
                {
                this.state = 4634;
                localContext._trailing = this.match(HiveSqlParser.KW_TRAILING);
                }
                break;
            case HiveSqlParser.KW_BOTH:
                {
                this.state = 4635;
                this.match(HiveSqlParser.KW_BOTH);
                }
                break;
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_AND:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ARRAY:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BETWEEN:
            case HiveSqlParser.KW_BIGINT:
            case HiveSqlParser.KW_BINARY:
            case HiveSqlParser.KW_BOOLEAN:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CASE:
            case HiveSqlParser.KW_CAST:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_CURRENT_DATE:
            case HiveSqlParser.KW_CURRENT_TIMESTAMP:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATE:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DOUBLE:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXISTS:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_EXTRACT:
            case HiveSqlParser.KW_FALSE:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FLOAT:
            case HiveSqlParser.KW_FLOOR:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FROM:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_GROUPING:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IF:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_IN:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_INT:
            case HiveSqlParser.KW_INTEGER:
            case HiveSqlParser.KW_INTERVAL:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIKE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOT:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULL:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OR:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REAL:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_REGEXP:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_RLIKE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SMALLINT:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMP:
            case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TRUE:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHEN:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.LPAREN:
            case HiveSqlParser.EQUAL:
            case HiveSqlParser.EQUAL_NS:
            case HiveSqlParser.NOTEQUAL:
            case HiveSqlParser.LESSTHANOREQUALTO:
            case HiveSqlParser.LESSTHAN:
            case HiveSqlParser.GREATERTHANOREQUALTO:
            case HiveSqlParser.GREATERTHAN:
            case HiveSqlParser.DIVIDE:
            case HiveSqlParser.PLUS:
            case HiveSqlParser.MINUS:
            case HiveSqlParser.STAR:
            case HiveSqlParser.MOD:
            case HiveSqlParser.DIV:
            case HiveSqlParser.BITWISENOT:
            case HiveSqlParser.AMPERSAND:
            case HiveSqlParser.TILDE:
            case HiveSqlParser.BITWISEOR:
            case HiveSqlParser.BITWISEXOR:
            case HiveSqlParser.QUESTION:
            case HiveSqlParser.StringLiteral:
            case HiveSqlParser.IntegralLiteral:
            case HiveSqlParser.NumberLiteral:
            case HiveSqlParser.Number:
            case HiveSqlParser.Identifier:
            case HiveSqlParser.CharSetName:
                break;
            default:
                break;
            }
            this.state = 4639;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) {
                {
                this.state = 4638;
                localContext._trim_characters = this.selectExpression();
                }
            }

            this.state = 4641;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 4642;
            localContext._str = this.selectExpression();
            this.state = 4643;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public function_(): Function_Context {
        let localContext = new Function_Context(this.context, this.state);
        this.enterRule(localContext, 776, HiveSqlParser.RULE_function_);
        let _la: number;
        try {
            this.state = 4685;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 568, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4645;
                this.trimFunction();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4646;
                this.functionNameForInvoke();
                this.state = 4647;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4662;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 565, this.context) ) {
                case 1:
                    {
                    this.state = 4648;
                    localContext._star = this.match(HiveSqlParser.STAR);
                    }
                    break;
                case 2:
                    {
                    this.state = 4650;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 7 || _la === 96) {
                        {
                        this.state = 4649;
                        localContext._dist = this.all_distinct();
                        }
                    }

                    this.state = 4660;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 564, this.context) ) {
                    case 1:
                        {
                        this.state = 4652;
                        this.selectExpression();
                        this.state = 4657;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                            {
                            this.state = 4653;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4654;
                            this.selectExpression();
                            }
                            }
                            this.state = 4659;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                        }
                        break;
                    }
                    }
                    break;
                }
                this.state = 4683;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 567, this.context) ) {
                case 1:
                    {
                    this.state = 4664;
                    this.match(HiveSqlParser.RPAREN);
                    this.state = 4665;
                    localContext._within = this.match(HiveSqlParser.KW_WITHIN);
                    this.state = 4666;
                    this.match(HiveSqlParser.KW_GROUP);
                    this.state = 4667;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 4668;
                    localContext._ordBy = this.orderByClause();
                    this.state = 4669;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 2:
                    {
                    this.state = 4671;
                    this.match(HiveSqlParser.RPAREN);
                    this.state = 4673;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                    if (_la === 152 || _la === 281) {
                        {
                        this.state = 4672;
                        localContext._nt = this.null_treatment();
                        }
                    }

                    this.state = 4675;
                    this.match(HiveSqlParser.KW_OVER);
                    this.state = 4676;
                    localContext._ws = this.window_specification();
                    }
                    break;
                case 3:
                    {
                    this.state = 4677;
                    localContext._nt = this.null_treatment();
                    this.state = 4678;
                    this.match(HiveSqlParser.RPAREN);
                    this.state = 4679;
                    this.match(HiveSqlParser.KW_OVER);
                    this.state = 4680;
                    localContext._ws = this.window_specification();
                    }
                    break;
                case 4:
                    {
                    this.state = 4682;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                }
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public null_treatment(): Null_treatmentContext {
        let localContext = new Null_treatmentContext(this.context, this.state);
        this.enterRule(localContext, 778, HiveSqlParser.RULE_null_treatment);
        try {
            this.state = 4691;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_RESPECT:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4687;
                this.match(HiveSqlParser.KW_RESPECT);
                this.state = 4688;
                this.match(HiveSqlParser.KW_NULLS);
                }
                break;
            case HiveSqlParser.KW_IGNORE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4689;
                this.match(HiveSqlParser.KW_IGNORE);
                this.state = 4690;
                this.match(HiveSqlParser.KW_NULLS);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public functionNameCreate(): FunctionNameCreateContext {
        let localContext = new FunctionNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 780, HiveSqlParser.RULE_functionNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4693;
            this.functionIdentifier();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public functionNameForDDL(): FunctionNameForDDLContext {
        let localContext = new FunctionNameForDDLContext(this.context, this.state);
        this.enterRule(localContext, 782, HiveSqlParser.RULE_functionNameForDDL);
        try {
            this.state = 4697;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.Identifier:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4695;
                this.userDefinedFuncName();
                }
                break;
            case HiveSqlParser.StringLiteral:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4696;
                this.match(HiveSqlParser.StringLiteral);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public functionNameForInvoke(): FunctionNameForInvokeContext {
        let localContext = new FunctionNameForInvokeContext(this.context, this.state);
        this.enterRule(localContext, 784, HiveSqlParser.RULE_functionNameForInvoke);
        try {
            this.state = 4701;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 571, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4699;
                this.userDefinedFuncName();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4700;
                this.internalFunctionName();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public userDefinedFuncName(): UserDefinedFuncNameContext {
        let localContext = new UserDefinedFuncNameContext(this.context, this.state);
        this.enterRule(localContext, 786, HiveSqlParser.RULE_userDefinedFuncName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4703;
            this.functionIdentifier();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public internalFunctionName(): InternalFunctionNameContext {
        let localContext = new InternalFunctionNameContext(this.context, this.state);
        this.enterRule(localContext, 788, HiveSqlParser.RULE_internalFunctionName);
        try {
            this.state = 4707;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 572, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4705;
                this.sql11ReservedKeywordsUsedAsFunctionName();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4706;
                this.sysFuncNames();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public castExpression(): CastExpressionContext {
        let localContext = new CastExpressionContext(this.context, this.state);
        this.enterRule(localContext, 790, HiveSqlParser.RULE_castExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4709;
            this.match(HiveSqlParser.KW_CAST);
            this.state = 4710;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4711;
            this.expression();
            this.state = 4712;
            this.match(HiveSqlParser.KW_AS);
            this.state = 4713;
            localContext._toType = this.primitiveType();
            this.state = 4716;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 137) {
                {
                this.state = 4714;
                localContext._fmt = this.match(HiveSqlParser.KW_FORMAT);
                this.state = 4715;
                this.match(HiveSqlParser.StringLiteral);
                }
            }

            this.state = 4718;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public caseExpression(): CaseExpressionContext {
        let localContext = new CaseExpressionContext(this.context, this.state);
        this.enterRule(localContext, 792, HiveSqlParser.RULE_caseExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4720;
            this.match(HiveSqlParser.KW_CASE);
            this.state = 4721;
            this.expression();
            this.state = 4727;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 4722;
                this.match(HiveSqlParser.KW_WHEN);
                this.state = 4723;
                this.expression();
                this.state = 4724;
                this.match(HiveSqlParser.KW_THEN);
                this.state = 4725;
                this.expression();
                }
                }
                this.state = 4729;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 383);
            this.state = 4733;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 105) {
                {
                this.state = 4731;
                this.match(HiveSqlParser.KW_ELSE);
                this.state = 4732;
                this.expression();
                }
            }

            this.state = 4735;
            this.match(HiveSqlParser.KW_END);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public whenExpression(): WhenExpressionContext {
        let localContext = new WhenExpressionContext(this.context, this.state);
        this.enterRule(localContext, 794, HiveSqlParser.RULE_whenExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4737;
            this.match(HiveSqlParser.KW_CASE);
            this.state = 4743;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 4738;
                this.match(HiveSqlParser.KW_WHEN);
                this.state = 4739;
                this.expression();
                this.state = 4740;
                this.match(HiveSqlParser.KW_THEN);
                this.state = 4741;
                this.expression();
                }
                }
                this.state = 4745;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 383);
            this.state = 4749;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 105) {
                {
                this.state = 4747;
                this.match(HiveSqlParser.KW_ELSE);
                this.state = 4748;
                this.expression();
                }
            }

            this.state = 4751;
            this.match(HiveSqlParser.KW_END);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public floorExpression(): FloorExpressionContext {
        let localContext = new FloorExpressionContext(this.context, this.state);
        this.enterRule(localContext, 796, HiveSqlParser.RULE_floorExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4753;
            this.match(HiveSqlParser.KW_FLOOR);
            this.state = 4754;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4755;
            this.expression();
            this.state = 4758;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 341) {
                {
                this.state = 4756;
                this.match(HiveSqlParser.KW_TO);
                this.state = 4757;
                localContext._floorUnit = this.floorDateQualifiers();
                }
            }

            this.state = 4760;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public floorDateQualifiers(): FloorDateQualifiersContext {
        let localContext = new FloorDateQualifiersContext(this.context, this.state);
        this.enterRule(localContext, 798, HiveSqlParser.RULE_floorDateQualifiers);
        try {
            this.state = 4770;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4762;
                this.year();
                }
                break;
            case HiveSqlParser.KW_QUARTER:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4763;
                this.match(HiveSqlParser.KW_QUARTER);
                }
                break;
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4764;
                this.month();
                }
                break;
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4765;
                this.week();
                }
                break;
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 4766;
                this.day();
                }
                break;
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 4767;
                this.hour();
                }
                break;
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 4768;
                this.minute();
                }
                break;
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 4769;
                this.second();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public extractExpression(): ExtractExpressionContext {
        let localContext = new ExtractExpressionContext(this.context, this.state);
        this.enterRule(localContext, 800, HiveSqlParser.RULE_extractExpression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4772;
            this.match(HiveSqlParser.KW_EXTRACT);
            this.state = 4773;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4774;
            localContext._timeUnit = this.timeQualifiers();
            this.state = 4775;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 4776;
            this.expression();
            this.state = 4777;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public timeQualifiers(): TimeQualifiersContext {
        let localContext = new TimeQualifiersContext(this.context, this.state);
        this.enterRule(localContext, 802, HiveSqlParser.RULE_timeQualifiers);
        try {
            this.state = 4787;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4779;
                this.year();
                }
                break;
            case HiveSqlParser.KW_QUARTER:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4780;
                this.match(HiveSqlParser.KW_QUARTER);
                }
                break;
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4781;
                this.month();
                }
                break;
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4782;
                this.week();
                }
                break;
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 4783;
                this.day();
                }
                break;
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 4784;
                this.hour();
                }
                break;
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 4785;
                this.minute();
                }
                break;
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 4786;
                this.second();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public constant(): ConstantContext {
        let localContext = new ConstantContext(this.context, this.state);
        this.enterRule(localContext, 804, HiveSqlParser.RULE_constant);
        try {
            this.state = 4802;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 581, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4789;
                this.intervalLiteral();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4790;
                this.match(HiveSqlParser.Number);
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4791;
                this.dateLiteral();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4792;
                this.timestampLiteral();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 4793;
                this.timestampLocalTZLiteral();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 4794;
                this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 4795;
                this.stringLiteralSequence();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 4796;
                this.match(HiveSqlParser.IntegralLiteral);
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 4797;
                this.match(HiveSqlParser.NumberLiteral);
                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 4798;
                this.charSetStringLiteral();
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 4799;
                this.booleanValue();
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 4800;
                this.match(HiveSqlParser.KW_NULL);
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 4801;
                this.prepareStmtParam();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public prepareStmtParam(): PrepareStmtParamContext {
        let localContext = new PrepareStmtParamContext(this.context, this.state);
        this.enterRule(localContext, 806, HiveSqlParser.RULE_prepareStmtParam);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4804;
            localContext._p = this.parameterIdx();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public parameterIdx(): ParameterIdxContext {
        let localContext = new ParameterIdxContext(this.context, this.state);
        this.enterRule(localContext, 808, HiveSqlParser.RULE_parameterIdx);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4806;
            this.match(HiveSqlParser.QUESTION);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public stringLiteralSequence(): StringLiteralSequenceContext {
        let localContext = new StringLiteralSequenceContext(this.context, this.state);
        this.enterRule(localContext, 810, HiveSqlParser.RULE_stringLiteralSequence);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4808;
            this.match(HiveSqlParser.StringLiteral);
            this.state = 4810;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            do {
                {
                {
                this.state = 4809;
                this.match(HiveSqlParser.StringLiteral);
                }
                }
                this.state = 4812;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            } while (_la === 426);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public charSetStringLiteral(): CharSetStringLiteralContext {
        let localContext = new CharSetStringLiteralContext(this.context, this.state);
        this.enterRule(localContext, 812, HiveSqlParser.RULE_charSetStringLiteral);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4814;
            localContext._csName = this.match(HiveSqlParser.CharSetName);
            this.state = 4815;
            localContext._csLiteral = this.match(HiveSqlParser.CharSetLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dateLiteral(): DateLiteralContext {
        let localContext = new DateLiteralContext(this.context, this.state);
        this.enterRule(localContext, 814, HiveSqlParser.RULE_dateLiteral);
        try {
            this.state = 4820;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_DATE:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4817;
                this.match(HiveSqlParser.KW_DATE);
                this.state = 4818;
                this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case HiveSqlParser.KW_CURRENT_DATE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4819;
                this.match(HiveSqlParser.KW_CURRENT_DATE);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public timestampLiteral(): TimestampLiteralContext {
        let localContext = new TimestampLiteralContext(this.context, this.state);
        this.enterRule(localContext, 816, HiveSqlParser.RULE_timestampLiteral);
        try {
            this.state = 4825;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_TIMESTAMP:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4822;
                this.match(HiveSqlParser.KW_TIMESTAMP);
                this.state = 4823;
                this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case HiveSqlParser.KW_CURRENT_TIMESTAMP:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4824;
                this.match(HiveSqlParser.KW_CURRENT_TIMESTAMP);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public timestampLocalTZLiteral(): TimestampLocalTZLiteralContext {
        let localContext = new TimestampLocalTZLiteralContext(this.context, this.state);
        this.enterRule(localContext, 818, HiveSqlParser.RULE_timestampLocalTZLiteral);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4827;
            this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ);
            this.state = 4828;
            this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public intervalValue(): IntervalValueContext {
        let localContext = new IntervalValueContext(this.context, this.state);
        this.enterRule(localContext, 820, HiveSqlParser.RULE_intervalValue);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4830;
            _la = this.tokenStream.LA(1);
            if(!(_la === 426 || _la === 431)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public intervalLiteral(): IntervalLiteralContext {
        let localContext = new IntervalLiteralContext(this.context, this.state);
        this.enterRule(localContext, 822, HiveSqlParser.RULE_intervalLiteral);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4832;
            localContext._value = this.intervalValue();
            this.state = 4833;
            localContext._qualifiers = this.intervalQualifiers();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public intervalExpression(): IntervalExpressionContext {
        let localContext = new IntervalExpressionContext(this.context, this.state);
        this.enterRule(localContext, 824, HiveSqlParser.RULE_intervalExpression);
        try {
            this.state = 4850;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.LPAREN:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4835;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4836;
                localContext._value = this.intervalValue();
                this.state = 4837;
                this.match(HiveSqlParser.RPAREN);
                this.state = 4838;
                localContext._qualifiers = this.intervalQualifiers();
                }
                break;
            case HiveSqlParser.KW_INTERVAL:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4840;
                this.match(HiveSqlParser.KW_INTERVAL);
                this.state = 4846;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.StringLiteral:
                case HiveSqlParser.Number:
                    {
                    this.state = 4841;
                    localContext._value = this.intervalValue();
                    }
                    break;
                case HiveSqlParser.LPAREN:
                    {
                    this.state = 4842;
                    this.match(HiveSqlParser.LPAREN);
                    this.state = 4843;
                    localContext._expr = this.expression();
                    this.state = 4844;
                    this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                this.state = 4848;
                localContext._qualifiers = this.intervalQualifiers();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public intervalQualifiers(): IntervalQualifiersContext {
        let localContext = new IntervalQualifiersContext(this.context, this.state);
        this.enterRule(localContext, 826, HiveSqlParser.RULE_intervalQualifiers);
        try {
            this.state = 4866;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 587, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4852;
                this.year();
                this.state = 4853;
                this.match(HiveSqlParser.KW_TO);
                this.state = 4854;
                this.month();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4856;
                this.day();
                this.state = 4857;
                this.match(HiveSqlParser.KW_TO);
                this.state = 4858;
                this.second();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4860;
                this.year();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4861;
                this.month();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 4862;
                this.day();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 4863;
                this.hour();
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 4864;
                this.minute();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 4865;
                this.second();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public expression(): ExpressionContext {
        let localContext = new ExpressionContext(this.context, this.state);
        this.enterRule(localContext, 828, HiveSqlParser.RULE_expression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4868;
            this.precedenceOrExpression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public atomExpression(): AtomExpressionContext {
        let localContext = new AtomExpressionContext(this.context, this.state);
        this.enterRule(localContext, 830, HiveSqlParser.RULE_atomExpression);
        try {
            this.state = 4881;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 588, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4870;
                this.constant();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4871;
                this.intervalExpression();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4872;
                this.castExpression();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4873;
                this.extractExpression();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 4874;
                this.floorExpression();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 4875;
                this.caseExpression();
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 4876;
                this.whenExpression();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 4877;
                this.subQueryExpression();
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 4878;
                this.function_();
                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 4879;
                this.expressionsInParenthesis();
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 4880;
                this.id_();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceFieldExpression(): PrecedenceFieldExpressionContext {
        let localContext = new PrecedenceFieldExpressionContext(this.context, this.state);
        this.enterRule(localContext, 832, HiveSqlParser.RULE_precedenceFieldExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4883;
            this.atomExpression();
            this.state = 4892;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 395 || _la === 401) {
                {
                this.state = 4890;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.LSQUARE:
                    {
                    this.state = 4884;
                    this.match(HiveSqlParser.LSQUARE);
                    this.state = 4885;
                    this.expression();
                    this.state = 4886;
                    this.match(HiveSqlParser.RSQUARE);
                    }
                    break;
                case HiveSqlParser.DOT:
                    {
                    this.state = 4888;
                    this.match(HiveSqlParser.DOT);
                    this.state = 4889;
                    this.id_();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                this.state = 4894;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceUnaryOperator(): PrecedenceUnaryOperatorContext {
        let localContext = new PrecedenceUnaryOperatorContext(this.context, this.state);
        this.enterRule(localContext, 834, HiveSqlParser.RULE_precedenceUnaryOperator);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4895;
            _la = this.tokenStream.LA(1);
            if(!(((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 163) !== 0))) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceUnaryPrefixExpression(): PrecedenceUnaryPrefixExpressionContext {
        let localContext = new PrecedenceUnaryPrefixExpressionContext(this.context, this.state);
        this.enterRule(localContext, 836, HiveSqlParser.RULE_precedenceUnaryPrefixExpression);
        try {
            let alternative: number;
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4900;
            this.errorHandler.sync(this);
            alternative = this.interpreter.adaptivePredict(this.tokenStream, 591, this.context);
            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                if (alternative === 1) {
                    {
                    {
                    this.state = 4897;
                    this.precedenceUnaryOperator();
                    }
                    }
                }
                this.state = 4902;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 591, this.context);
            }
            this.state = 4903;
            this.precedenceFieldExpression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceBitwiseXorOperator(): PrecedenceBitwiseXorOperatorContext {
        let localContext = new PrecedenceBitwiseXorOperatorContext(this.context, this.state);
        this.enterRule(localContext, 838, HiveSqlParser.RULE_precedenceBitwiseXorOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4905;
            this.match(HiveSqlParser.BITWISEXOR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceBitwiseXorExpression(): PrecedenceBitwiseXorExpressionContext {
        let localContext = new PrecedenceBitwiseXorExpressionContext(this.context, this.state);
        this.enterRule(localContext, 840, HiveSqlParser.RULE_precedenceBitwiseXorExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4907;
            this.precedenceUnaryPrefixExpression();
            this.state = 4913;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 423) {
                {
                {
                this.state = 4908;
                this.precedenceBitwiseXorOperator();
                this.state = 4909;
                this.precedenceUnaryPrefixExpression();
                }
                }
                this.state = 4915;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceStarOperator(): PrecedenceStarOperatorContext {
        let localContext = new PrecedenceStarOperatorContext(this.context, this.state);
        this.enterRule(localContext, 842, HiveSqlParser.RULE_precedenceStarOperator);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4916;
            _la = this.tokenStream.LA(1);
            if(!(((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & 57) !== 0))) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceStarExpression(): PrecedenceStarExpressionContext {
        let localContext = new PrecedenceStarExpressionContext(this.context, this.state);
        this.enterRule(localContext, 844, HiveSqlParser.RULE_precedenceStarExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4918;
            this.precedenceBitwiseXorExpression();
            this.state = 4924;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & 57) !== 0)) {
                {
                {
                this.state = 4919;
                this.precedenceStarOperator();
                this.state = 4920;
                this.precedenceBitwiseXorExpression();
                }
                }
                this.state = 4926;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedencePlusOperator(): PrecedencePlusOperatorContext {
        let localContext = new PrecedencePlusOperatorContext(this.context, this.state);
        this.enterRule(localContext, 846, HiveSqlParser.RULE_precedencePlusOperator);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4927;
            _la = this.tokenStream.LA(1);
            if(!(_la === 413 || _la === 414)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedencePlusExpression(): PrecedencePlusExpressionContext {
        let localContext = new PrecedencePlusExpressionContext(this.context, this.state);
        this.enterRule(localContext, 848, HiveSqlParser.RULE_precedencePlusExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4929;
            this.precedenceStarExpression();
            this.state = 4935;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 413 || _la === 414) {
                {
                {
                this.state = 4930;
                this.precedencePlusOperator();
                this.state = 4931;
                this.precedenceStarExpression();
                }
                }
                this.state = 4937;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceConcatenateOperator(): PrecedenceConcatenateOperatorContext {
        let localContext = new PrecedenceConcatenateOperatorContext(this.context, this.state);
        this.enterRule(localContext, 850, HiveSqlParser.RULE_precedenceConcatenateOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4938;
            this.match(HiveSqlParser.CONCATENATE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceConcatenateExpression(): PrecedenceConcatenateExpressionContext {
        let localContext = new PrecedenceConcatenateExpressionContext(this.context, this.state);
        this.enterRule(localContext, 852, HiveSqlParser.RULE_precedenceConcatenateExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4940;
            this.precedencePlusExpression();
            this.state = 4946;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 422) {
                {
                {
                this.state = 4941;
                this.precedenceConcatenateOperator();
                this.state = 4942;
                localContext._plus = this.precedencePlusExpression();
                }
                }
                this.state = 4948;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceAmpersandOperator(): PrecedenceAmpersandOperatorContext {
        let localContext = new PrecedenceAmpersandOperatorContext(this.context, this.state);
        this.enterRule(localContext, 854, HiveSqlParser.RULE_precedenceAmpersandOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4949;
            this.match(HiveSqlParser.AMPERSAND);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceAmpersandExpression(): PrecedenceAmpersandExpressionContext {
        let localContext = new PrecedenceAmpersandExpressionContext(this.context, this.state);
        this.enterRule(localContext, 856, HiveSqlParser.RULE_precedenceAmpersandExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4951;
            this.precedenceConcatenateExpression();
            this.state = 4957;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 419) {
                {
                {
                this.state = 4952;
                this.precedenceAmpersandOperator();
                this.state = 4953;
                this.precedenceConcatenateExpression();
                }
                }
                this.state = 4959;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceBitwiseOrOperator(): PrecedenceBitwiseOrOperatorContext {
        let localContext = new PrecedenceBitwiseOrOperatorContext(this.context, this.state);
        this.enterRule(localContext, 858, HiveSqlParser.RULE_precedenceBitwiseOrOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4960;
            this.match(HiveSqlParser.BITWISEOR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext {
        let localContext = new PrecedenceBitwiseOrExpressionContext(this.context, this.state);
        this.enterRule(localContext, 860, HiveSqlParser.RULE_precedenceBitwiseOrExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4962;
            this.precedenceAmpersandExpression();
            this.state = 4968;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 421) {
                {
                {
                this.state = 4963;
                this.precedenceBitwiseOrOperator();
                this.state = 4964;
                this.precedenceAmpersandExpression();
                }
                }
                this.state = 4970;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext {
        let localContext = new PrecedenceRegexpOperatorContext(this.context, this.state);
        this.enterRule(localContext, 862, HiveSqlParser.RULE_precedenceRegexpOperator);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4971;
            _la = this.tokenStream.LA(1);
            if(!(_la === 184 || _la === 270 || _la === 286)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarOperator(): PrecedenceSimilarOperatorContext {
        let localContext = new PrecedenceSimilarOperatorContext(this.context, this.state);
        this.enterRule(localContext, 864, HiveSqlParser.RULE_precedenceSimilarOperator);
        try {
            this.state = 4978;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_LIKE:
            case HiveSqlParser.KW_REGEXP:
            case HiveSqlParser.KW_RLIKE:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4973;
                this.precedenceRegexpOperator();
                }
                break;
            case HiveSqlParser.LESSTHANOREQUALTO:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4974;
                this.match(HiveSqlParser.LESSTHANOREQUALTO);
                }
                break;
            case HiveSqlParser.LESSTHAN:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4975;
                this.match(HiveSqlParser.LESSTHAN);
                }
                break;
            case HiveSqlParser.GREATERTHANOREQUALTO:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 4976;
                this.match(HiveSqlParser.GREATERTHANOREQUALTO);
                }
                break;
            case HiveSqlParser.GREATERTHAN:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 4977;
                this.match(HiveSqlParser.GREATERTHAN);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public subQueryExpression(): SubQueryExpressionContext {
        let localContext = new SubQueryExpressionContext(this.context, this.state);
        this.enterRule(localContext, 866, HiveSqlParser.RULE_subQueryExpression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4980;
            this.match(HiveSqlParser.LPAREN);
            this.state = 4981;
            this.selectStatement();
            this.state = 4982;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarExpression(): PrecedenceSimilarExpressionContext {
        let localContext = new PrecedenceSimilarExpressionContext(this.context, this.state);
        this.enterRule(localContext, 868, HiveSqlParser.RULE_precedenceSimilarExpression);
        try {
            this.state = 4987;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_AND:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ARRAY:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BETWEEN:
            case HiveSqlParser.KW_BIGINT:
            case HiveSqlParser.KW_BINARY:
            case HiveSqlParser.KW_BOOLEAN:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CASE:
            case HiveSqlParser.KW_CAST:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_CURRENT_DATE:
            case HiveSqlParser.KW_CURRENT_TIMESTAMP:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATE:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DOUBLE:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_EXTRACT:
            case HiveSqlParser.KW_FALSE:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FLOAT:
            case HiveSqlParser.KW_FLOOR:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_GROUPING:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IF:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_IN:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_INT:
            case HiveSqlParser.KW_INTEGER:
            case HiveSqlParser.KW_INTERVAL:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIKE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAP:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOT:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULL:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OR:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REAL:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_REGEXP:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_RLIKE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SMALLINT:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMP:
            case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TRUE:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHEN:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
            case HiveSqlParser.LPAREN:
            case HiveSqlParser.EQUAL:
            case HiveSqlParser.EQUAL_NS:
            case HiveSqlParser.NOTEQUAL:
            case HiveSqlParser.LESSTHANOREQUALTO:
            case HiveSqlParser.LESSTHAN:
            case HiveSqlParser.GREATERTHANOREQUALTO:
            case HiveSqlParser.GREATERTHAN:
            case HiveSqlParser.DIVIDE:
            case HiveSqlParser.PLUS:
            case HiveSqlParser.MINUS:
            case HiveSqlParser.STAR:
            case HiveSqlParser.MOD:
            case HiveSqlParser.DIV:
            case HiveSqlParser.BITWISENOT:
            case HiveSqlParser.AMPERSAND:
            case HiveSqlParser.TILDE:
            case HiveSqlParser.BITWISEOR:
            case HiveSqlParser.BITWISEXOR:
            case HiveSqlParser.QUESTION:
            case HiveSqlParser.StringLiteral:
            case HiveSqlParser.IntegralLiteral:
            case HiveSqlParser.NumberLiteral:
            case HiveSqlParser.Number:
            case HiveSqlParser.Identifier:
            case HiveSqlParser.CharSetName:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4984;
                this.precedenceSimilarExpressionMain();
                }
                break;
            case HiveSqlParser.KW_EXISTS:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4985;
                this.match(HiveSqlParser.KW_EXISTS);
                this.state = 4986;
                this.subQueryExpression();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarExpressionMain(): PrecedenceSimilarExpressionMainContext {
        let localContext = new PrecedenceSimilarExpressionMainContext(this.context, this.state);
        this.enterRule(localContext, 870, HiveSqlParser.RULE_precedenceSimilarExpressionMain);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 4989;
            localContext._a = this.precedenceBitwiseOrExpression();
            this.state = 4991;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 600, this.context) ) {
            case 1:
                {
                this.state = 4990;
                localContext._part = this.precedenceSimilarExpressionPart();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarExpressionPart(): PrecedenceSimilarExpressionPartContext {
        let localContext = new PrecedenceSimilarExpressionPartContext(this.context, this.state);
        this.enterRule(localContext, 872, HiveSqlParser.RULE_precedenceSimilarExpressionPart);
        try {
            this.state = 4999;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 601, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 4993;
                this.precedenceSimilarOperator();
                this.state = 4994;
                localContext._equalExpr = this.precedenceBitwiseOrExpression();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 4996;
                this.precedenceSimilarExpressionAtom();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 4997;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 4998;
                this.precedenceSimilarExpressionPartNot();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarExpressionAtom(): PrecedenceSimilarExpressionAtomContext {
        let localContext = new PrecedenceSimilarExpressionAtomContext(this.context, this.state);
        this.enterRule(localContext, 874, HiveSqlParser.RULE_precedenceSimilarExpressionAtom);
        let _la: number;
        try {
            this.state = 5012;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_IN:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5001;
                this.match(HiveSqlParser.KW_IN);
                this.state = 5002;
                this.precedenceSimilarExpressionIn();
                }
                break;
            case HiveSqlParser.KW_BETWEEN:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5003;
                this.match(HiveSqlParser.KW_BETWEEN);
                this.state = 5004;
                localContext._min = this.precedenceBitwiseOrExpression();
                this.state = 5005;
                this.match(HiveSqlParser.KW_AND);
                this.state = 5006;
                localContext._max = this.precedenceBitwiseOrExpression();
                }
                break;
            case HiveSqlParser.KW_LIKE:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 5008;
                this.match(HiveSqlParser.KW_LIKE);
                this.state = 5009;
                _la = this.tokenStream.LA(1);
                if(!(_la === 7 || _la === 13)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 5010;
                localContext._expr = this.expressionsInParenthesis();
                }
                break;
            case HiveSqlParser.EQUAL:
            case HiveSqlParser.NOTEQUAL:
            case HiveSqlParser.LESSTHANOREQUALTO:
            case HiveSqlParser.LESSTHAN:
            case HiveSqlParser.GREATERTHANOREQUALTO:
            case HiveSqlParser.GREATERTHAN:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 5011;
                this.precedenceSimilarExpressionQuantifierPredicate();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarExpressionQuantifierPredicate(): PrecedenceSimilarExpressionQuantifierPredicateContext {
        let localContext = new PrecedenceSimilarExpressionQuantifierPredicateContext(this.context, this.state);
        this.enterRule(localContext, 876, HiveSqlParser.RULE_precedenceSimilarExpressionQuantifierPredicate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5014;
            this.subQuerySelectorOperator();
            this.state = 5015;
            this.quantifierType();
            this.state = 5016;
            this.subQueryExpression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public quantifierType(): QuantifierTypeContext {
        let localContext = new QuantifierTypeContext(this.context, this.state);
        this.enterRule(localContext, 878, HiveSqlParser.RULE_quantifierType);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5018;
            _la = this.tokenStream.LA(1);
            if(!(_la === 7 || _la === 13 || _la === 313)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarExpressionIn(): PrecedenceSimilarExpressionInContext {
        let localContext = new PrecedenceSimilarExpressionInContext(this.context, this.state);
        this.enterRule(localContext, 880, HiveSqlParser.RULE_precedenceSimilarExpressionIn);
        try {
            this.state = 5022;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 603, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5020;
                this.subQueryExpression();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5021;
                localContext._expr = this.expressionsInParenthesis();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceSimilarExpressionPartNot(): PrecedenceSimilarExpressionPartNotContext {
        let localContext = new PrecedenceSimilarExpressionPartNotContext(this.context, this.state);
        this.enterRule(localContext, 882, HiveSqlParser.RULE_precedenceSimilarExpressionPartNot);
        try {
            this.state = 5028;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 604, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5024;
                this.precedenceRegexpOperator();
                this.state = 5025;
                localContext._notExpr = this.precedenceBitwiseOrExpression();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5027;
                this.precedenceSimilarExpressionAtom();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceDistinctOperator(): PrecedenceDistinctOperatorContext {
        let localContext = new PrecedenceDistinctOperatorContext(this.context, this.state);
        this.enterRule(localContext, 884, HiveSqlParser.RULE_precedenceDistinctOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5030;
            this.match(HiveSqlParser.KW_IS);
            this.state = 5031;
            this.match(HiveSqlParser.KW_DISTINCT);
            this.state = 5032;
            this.match(HiveSqlParser.KW_FROM);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceEqualOperator(): PrecedenceEqualOperatorContext {
        let localContext = new PrecedenceEqualOperatorContext(this.context, this.state);
        this.enterRule(localContext, 886, HiveSqlParser.RULE_precedenceEqualOperator);
        try {
            this.state = 5041;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.EQUAL:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5034;
                this.match(HiveSqlParser.EQUAL);
                }
                break;
            case HiveSqlParser.EQUAL_NS:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5035;
                this.match(HiveSqlParser.EQUAL_NS);
                }
                break;
            case HiveSqlParser.NOTEQUAL:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 5036;
                this.match(HiveSqlParser.NOTEQUAL);
                }
                break;
            case HiveSqlParser.KW_IS:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 5037;
                this.match(HiveSqlParser.KW_IS);
                this.state = 5038;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 5039;
                this.match(HiveSqlParser.KW_DISTINCT);
                this.state = 5040;
                this.match(HiveSqlParser.KW_FROM);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceEqualExpression(): PrecedenceEqualExpressionContext {
        let localContext = new PrecedenceEqualExpressionContext(this.context, this.state);
        this.enterRule(localContext, 888, HiveSqlParser.RULE_precedenceEqualExpression);
        try {
            let alternative: number;
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5043;
            this.precedenceSimilarExpression();
            this.state = 5052;
            this.errorHandler.sync(this);
            alternative = this.interpreter.adaptivePredict(this.tokenStream, 607, this.context);
            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                if (alternative === 1) {
                    {
                    this.state = 5050;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 606, this.context) ) {
                    case 1:
                        {
                        this.state = 5044;
                        localContext._precedenceEqualOperator = this.precedenceEqualOperator();
                        localContext._equal.push(localContext._precedenceEqualOperator);
                        this.state = 5045;
                        localContext._precedenceSimilarExpression = this.precedenceSimilarExpression();
                        localContext._p.push(localContext._precedenceSimilarExpression);
                        }
                        break;
                    case 2:
                        {
                        this.state = 5047;
                        localContext._precedenceDistinctOperator = this.precedenceDistinctOperator();
                        localContext._dist.push(localContext._precedenceDistinctOperator);
                        this.state = 5048;
                        localContext._precedenceSimilarExpression = this.precedenceSimilarExpression();
                        localContext._p.push(localContext._precedenceSimilarExpression);
                        }
                        break;
                    }
                    }
                }
                this.state = 5054;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 607, this.context);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public isCondition(): IsConditionContext {
        let localContext = new IsConditionContext(this.context, this.state);
        this.enterRule(localContext, 890, HiveSqlParser.RULE_isCondition);
        try {
            this.state = 5067;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 608, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5055;
                this.match(HiveSqlParser.KW_NULL);
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5056;
                this.match(HiveSqlParser.KW_TRUE);
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 5057;
                this.match(HiveSqlParser.KW_FALSE);
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 5058;
                this.match(HiveSqlParser.KW_UNKNOWN);
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 5059;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 5060;
                this.match(HiveSqlParser.KW_NULL);
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 5061;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 5062;
                this.match(HiveSqlParser.KW_TRUE);
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 5063;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 5064;
                this.match(HiveSqlParser.KW_FALSE);
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 5065;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 5066;
                this.match(HiveSqlParser.KW_UNKNOWN);
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceUnarySuffixExpression(): PrecedenceUnarySuffixExpressionContext {
        let localContext = new PrecedenceUnarySuffixExpressionContext(this.context, this.state);
        this.enterRule(localContext, 892, HiveSqlParser.RULE_precedenceUnarySuffixExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5069;
            this.precedenceEqualExpression();
            this.state = 5072;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 167) {
                {
                this.state = 5070;
                localContext._a = this.match(HiveSqlParser.KW_IS);
                this.state = 5071;
                this.isCondition();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceNotOperator(): PrecedenceNotOperatorContext {
        let localContext = new PrecedenceNotOperatorContext(this.context, this.state);
        this.enterRule(localContext, 894, HiveSqlParser.RULE_precedenceNotOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5074;
            this.match(HiveSqlParser.KW_NOT);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceNotExpression(): PrecedenceNotExpressionContext {
        let localContext = new PrecedenceNotExpressionContext(this.context, this.state);
        this.enterRule(localContext, 896, HiveSqlParser.RULE_precedenceNotExpression);
        try {
            let alternative: number;
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5079;
            this.errorHandler.sync(this);
            alternative = this.interpreter.adaptivePredict(this.tokenStream, 610, this.context);
            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                if (alternative === 1) {
                    {
                    {
                    this.state = 5076;
                    this.precedenceNotOperator();
                    }
                    }
                }
                this.state = 5081;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 610, this.context);
            }
            this.state = 5082;
            this.precedenceUnarySuffixExpression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceAndOperator(): PrecedenceAndOperatorContext {
        let localContext = new PrecedenceAndOperatorContext(this.context, this.state);
        this.enterRule(localContext, 898, HiveSqlParser.RULE_precedenceAndOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5084;
            this.match(HiveSqlParser.KW_AND);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceAndExpression(): PrecedenceAndExpressionContext {
        let localContext = new PrecedenceAndExpressionContext(this.context, this.state);
        this.enterRule(localContext, 900, HiveSqlParser.RULE_precedenceAndExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5086;
            this.precedenceNotExpression();
            this.state = 5092;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 11) {
                {
                {
                this.state = 5087;
                this.precedenceAndOperator();
                this.state = 5088;
                this.precedenceNotExpression();
                }
                }
                this.state = 5094;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceOrOperator(): PrecedenceOrOperatorContext {
        let localContext = new PrecedenceOrOperatorContext(this.context, this.state);
        this.enterRule(localContext, 902, HiveSqlParser.RULE_precedenceOrOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5095;
            this.match(HiveSqlParser.KW_OR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public precedenceOrExpression(): PrecedenceOrExpressionContext {
        let localContext = new PrecedenceOrExpressionContext(this.context, this.state);
        this.enterRule(localContext, 904, HiveSqlParser.RULE_precedenceOrExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5097;
            this.precedenceAndExpression();
            this.state = 5103;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 228) {
                {
                {
                this.state = 5098;
                this.precedenceOrOperator();
                this.state = 5099;
                this.precedenceAndExpression();
                }
                }
                this.state = 5105;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public booleanValue(): BooleanValueContext {
        let localContext = new BooleanValueContext(this.context, this.state);
        this.enterRule(localContext, 906, HiveSqlParser.RULE_booleanValue);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5106;
            _la = this.tokenStream.LA(1);
            if(!(_la === 125 || _la === 350)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public booleanValueTok(): BooleanValueTokContext {
        let localContext = new BooleanValueTokContext(this.context, this.state);
        this.enterRule(localContext, 908, HiveSqlParser.RULE_booleanValueTok);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5108;
            _la = this.tokenStream.LA(1);
            if(!(_la === 125 || _la === 350)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public tableOrPartition(): TableOrPartitionContext {
        let localContext = new TableOrPartitionContext(this.context, this.state);
        this.enterRule(localContext, 910, HiveSqlParser.RULE_tableOrPartition);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5110;
            this.tableName();
            this.state = 5112;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 237) {
                {
                this.state = 5111;
                this.partitionSpec();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionSpec(): PartitionSpecContext {
        let localContext = new PartitionSpecContext(this.context, this.state);
        this.enterRule(localContext, 912, HiveSqlParser.RULE_partitionSpec);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5114;
            this.match(HiveSqlParser.KW_PARTITION);
            this.state = 5115;
            this.match(HiveSqlParser.LPAREN);
            this.state = 5116;
            this.partitionVal();
            this.state = 5121;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5117;
                this.match(HiveSqlParser.COMMA);
                this.state = 5118;
                this.partitionVal();
                }
                }
                this.state = 5123;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 5124;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionVal(): PartitionValContext {
        let localContext = new PartitionValContext(this.context, this.state);
        this.enterRule(localContext, 914, HiveSqlParser.RULE_partitionVal);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5126;
            this.id_();
            this.state = 5129;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 405) {
                {
                this.state = 5127;
                this.match(HiveSqlParser.EQUAL);
                this.state = 5128;
                this.constant();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionSelectorSpec(): PartitionSelectorSpecContext {
        let localContext = new PartitionSelectorSpecContext(this.context, this.state);
        this.enterRule(localContext, 916, HiveSqlParser.RULE_partitionSelectorSpec);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5131;
            this.match(HiveSqlParser.LPAREN);
            this.state = 5132;
            this.partitionSelectorVal();
            this.state = 5137;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5133;
                this.match(HiveSqlParser.COMMA);
                this.state = 5134;
                this.partitionSelectorVal();
                }
                }
                this.state = 5139;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            this.state = 5140;
            this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionSelectorVal(): PartitionSelectorValContext {
        let localContext = new PartitionSelectorValContext(this.context, this.state);
        this.enterRule(localContext, 918, HiveSqlParser.RULE_partitionSelectorVal);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5142;
            this.id_();
            this.state = 5143;
            this.partitionSelectorOperator();
            this.state = 5144;
            this.constant();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public partitionSelectorOperator(): PartitionSelectorOperatorContext {
        let localContext = new PartitionSelectorOperatorContext(this.context, this.state);
        this.enterRule(localContext, 920, HiveSqlParser.RULE_partitionSelectorOperator);
        try {
            this.state = 5148;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_LIKE:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5146;
                this.match(HiveSqlParser.KW_LIKE);
                }
                break;
            case HiveSqlParser.EQUAL:
            case HiveSqlParser.NOTEQUAL:
            case HiveSqlParser.LESSTHANOREQUALTO:
            case HiveSqlParser.LESSTHAN:
            case HiveSqlParser.GREATERTHANOREQUALTO:
            case HiveSqlParser.GREATERTHAN:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5147;
                this.subQuerySelectorOperator();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public subQuerySelectorOperator(): SubQuerySelectorOperatorContext {
        let localContext = new SubQuerySelectorOperatorContext(this.context, this.state);
        this.enterRule(localContext, 922, HiveSqlParser.RULE_subQuerySelectorOperator);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5150;
            _la = this.tokenStream.LA(1);
            if(!(((((_la - 405)) & ~0x1F) === 0 && ((1 << (_la - 405)) & 125) !== 0))) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public sysFuncNames(): SysFuncNamesContext {
        let localContext = new SysFuncNamesContext(this.context, this.state);
        this.enterRule(localContext, 924, HiveSqlParser.RULE_sysFuncNames);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5152;
            _la = this.tokenStream.LA(1);
            if(!(((((_la - 11)) & ~0x1F) === 0 && ((1 << (_la - 11)) & 17023009) !== 0) || _la === 100 || _la === 131 || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & 3225944065) !== 0) || _la === 184 || _la === 198 || _la === 216 || _la === 228 || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & 4194369) !== 0) || ((((_la - 311)) & ~0x1F) === 0 && ((1 << (_la - 311)) & 536883201) !== 0) || _la === 357 || _la === 383 || ((((_la - 405)) & ~0x1F) === 0 && ((1 << (_la - 405)) & 385023) !== 0))) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public id_(): Id_Context {
        let localContext = new Id_Context(this.context, this.state);
        this.enterRule(localContext, 926, HiveSqlParser.RULE_id_);
        try {
            this.state = 5156;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.Identifier:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5154;
                this.match(HiveSqlParser.Identifier);
                }
                break;
            case HiveSqlParser.KW_ABORT:
            case HiveSqlParser.KW_ACTIVATE:
            case HiveSqlParser.KW_ACTIVE:
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_ADMIN:
            case HiveSqlParser.KW_AFTER:
            case HiveSqlParser.KW_ALLOC_FRACTION:
            case HiveSqlParser.KW_ANALYZE:
            case HiveSqlParser.KW_ARCHIVE:
            case HiveSqlParser.KW_ASC:
            case HiveSqlParser.KW_AST:
            case HiveSqlParser.KW_AT:
            case HiveSqlParser.KW_AUTOCOMMIT:
            case HiveSqlParser.KW_BATCH:
            case HiveSqlParser.KW_BEFORE:
            case HiveSqlParser.KW_BUCKET:
            case HiveSqlParser.KW_BUCKETS:
            case HiveSqlParser.KW_CACHE:
            case HiveSqlParser.KW_CASCADE:
            case HiveSqlParser.KW_CBO:
            case HiveSqlParser.KW_CHANGE:
            case HiveSqlParser.KW_CHECK:
            case HiveSqlParser.KW_CLUSTER:
            case HiveSqlParser.KW_CLUSTERED:
            case HiveSqlParser.KW_CLUSTERSTATUS:
            case HiveSqlParser.KW_COLLECTION:
            case HiveSqlParser.KW_COLUMNS:
            case HiveSqlParser.KW_COMMENT:
            case HiveSqlParser.KW_COMPACT:
            case HiveSqlParser.KW_COMPACTIONS:
            case HiveSqlParser.KW_COMPUTE:
            case HiveSqlParser.KW_CONCATENATE:
            case HiveSqlParser.KW_CONTINUE:
            case HiveSqlParser.KW_COST:
            case HiveSqlParser.KW_CRON:
            case HiveSqlParser.KW_DATA:
            case HiveSqlParser.KW_DATABASES:
            case HiveSqlParser.KW_DATETIME:
            case HiveSqlParser.KW_DAY:
            case HiveSqlParser.KW_DAYS:
            case HiveSqlParser.KW_DAYOFWEEK:
            case HiveSqlParser.KW_DBPROPERTIES:
            case HiveSqlParser.KW_DCPROPERTIES:
            case HiveSqlParser.KW_DEBUG:
            case HiveSqlParser.KW_DEFAULT:
            case HiveSqlParser.KW_DEFERRED:
            case HiveSqlParser.KW_DEFINED:
            case HiveSqlParser.KW_DELIMITED:
            case HiveSqlParser.KW_DEPENDENCY:
            case HiveSqlParser.KW_DESC:
            case HiveSqlParser.KW_DETAIL:
            case HiveSqlParser.KW_DIRECTORIES:
            case HiveSqlParser.KW_DIRECTORY:
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
            case HiveSqlParser.KW_DISTRIBUTE:
            case HiveSqlParser.KW_DISTRIBUTED:
            case HiveSqlParser.KW_DO:
            case HiveSqlParser.KW_DUMP:
            case HiveSqlParser.KW_ELEM_TYPE:
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
            case HiveSqlParser.KW_ENFORCED:
            case HiveSqlParser.KW_ESCAPED:
            case HiveSqlParser.KW_EVERY:
            case HiveSqlParser.KW_EXCLUSIVE:
            case HiveSqlParser.KW_EXECUTE:
            case HiveSqlParser.KW_EXECUTED:
            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
            case HiveSqlParser.KW_EXPLAIN:
            case HiveSqlParser.KW_EXPORT:
            case HiveSqlParser.KW_EXPRESSION:
            case HiveSqlParser.KW_FIELDS:
            case HiveSqlParser.KW_FILE:
            case HiveSqlParser.KW_FILEFORMAT:
            case HiveSqlParser.KW_FIRST:
            case HiveSqlParser.KW_FORMAT:
            case HiveSqlParser.KW_FORMATTED:
            case HiveSqlParser.KW_FUNCTIONS:
            case HiveSqlParser.KW_HOLD_DDLTIME:
            case HiveSqlParser.KW_HOUR:
            case HiveSqlParser.KW_HOURS:
            case HiveSqlParser.KW_IDXPROPERTIES:
            case HiveSqlParser.KW_IGNORE:
            case HiveSqlParser.KW_INDEX:
            case HiveSqlParser.KW_INDEXES:
            case HiveSqlParser.KW_INPATH:
            case HiveSqlParser.KW_INPUTDRIVER:
            case HiveSqlParser.KW_INPUTFORMAT:
            case HiveSqlParser.KW_ISOLATION:
            case HiveSqlParser.KW_ITEMS:
            case HiveSqlParser.KW_JAR:
            case HiveSqlParser.KW_JOINCOST:
            case HiveSqlParser.KW_KEY:
            case HiveSqlParser.KW_KEYS:
            case HiveSqlParser.KW_KEY_TYPE:
            case HiveSqlParser.KW_KILL:
            case HiveSqlParser.KW_LAST:
            case HiveSqlParser.KW_LEVEL:
            case HiveSqlParser.KW_LIFECYCLE:
            case HiveSqlParser.KW_LIMIT:
            case HiveSqlParser.KW_LINES:
            case HiveSqlParser.KW_LOAD:
            case HiveSqlParser.KW_LOCATION:
            case HiveSqlParser.KW_LOCK:
            case HiveSqlParser.KW_LOCKS:
            case HiveSqlParser.KW_LOGICAL:
            case HiveSqlParser.KW_LONG:
            case HiveSqlParser.KW_MANAGED:
            case HiveSqlParser.KW_MANAGEDLOCATION:
            case HiveSqlParser.KW_MANAGEMENT:
            case HiveSqlParser.KW_MAPJOIN:
            case HiveSqlParser.KW_MAPPING:
            case HiveSqlParser.KW_MATCHED:
            case HiveSqlParser.KW_MATERIALIZED:
            case HiveSqlParser.KW_METADATA:
            case HiveSqlParser.KW_MINUTE:
            case HiveSqlParser.KW_MINUTES:
            case HiveSqlParser.KW_MONTH:
            case HiveSqlParser.KW_MONTHS:
            case HiveSqlParser.KW_MOVE:
            case HiveSqlParser.KW_MSCK:
            case HiveSqlParser.KW_NORELY:
            case HiveSqlParser.KW_NOSCAN:
            case HiveSqlParser.KW_NOVALIDATE:
            case HiveSqlParser.KW_NO_DROP:
            case HiveSqlParser.KW_NULLS:
            case HiveSqlParser.KW_OFFLINE:
            case HiveSqlParser.KW_OFFSET:
            case HiveSqlParser.KW_OPERATOR:
            case HiveSqlParser.KW_OPTION:
            case HiveSqlParser.KW_OUTPUTDRIVER:
            case HiveSqlParser.KW_OUTPUTFORMAT:
            case HiveSqlParser.KW_OVERWRITE:
            case HiveSqlParser.KW_OWNER:
            case HiveSqlParser.KW_PARTITIONED:
            case HiveSqlParser.KW_PARTITIONS:
            case HiveSqlParser.KW_PATH:
            case HiveSqlParser.KW_PLAN:
            case HiveSqlParser.KW_PLANS:
            case HiveSqlParser.KW_PLUS:
            case HiveSqlParser.KW_POOL:
            case HiveSqlParser.KW_PRINCIPALS:
            case HiveSqlParser.KW_PROTECTION:
            case HiveSqlParser.KW_PURGE:
            case HiveSqlParser.KW_QUARTER:
            case HiveSqlParser.KW_QUERY:
            case HiveSqlParser.KW_QUERY_PARALLELISM:
            case HiveSqlParser.KW_READ:
            case HiveSqlParser.KW_READONLY:
            case HiveSqlParser.KW_REBUILD:
            case HiveSqlParser.KW_RECORDREADER:
            case HiveSqlParser.KW_RECORDWRITER:
            case HiveSqlParser.KW_RELOAD:
            case HiveSqlParser.KW_RELY:
            case HiveSqlParser.KW_REMOTE:
            case HiveSqlParser.KW_RENAME:
            case HiveSqlParser.KW_REOPTIMIZATION:
            case HiveSqlParser.KW_REPAIR:
            case HiveSqlParser.KW_REPL:
            case HiveSqlParser.KW_REPLACE:
            case HiveSqlParser.KW_REPLICATION:
            case HiveSqlParser.KW_RESOURCE:
            case HiveSqlParser.KW_RESPECT:
            case HiveSqlParser.KW_RESTRICT:
            case HiveSqlParser.KW_REWRITE:
            case HiveSqlParser.KW_ROLE:
            case HiveSqlParser.KW_ROLES:
            case HiveSqlParser.KW_SCHEDULED:
            case HiveSqlParser.KW_SCHEDULING_POLICY:
            case HiveSqlParser.KW_SCHEMA:
            case HiveSqlParser.KW_SCHEMAS:
            case HiveSqlParser.KW_SECOND:
            case HiveSqlParser.KW_SECONDS:
            case HiveSqlParser.KW_SEMI:
            case HiveSqlParser.KW_SERDE:
            case HiveSqlParser.KW_SERDEPROPERTIES:
            case HiveSqlParser.KW_SERVER:
            case HiveSqlParser.KW_SETS:
            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
            case HiveSqlParser.KW_SHARED:
            case HiveSqlParser.KW_SHOW:
            case HiveSqlParser.KW_SHOW_DATABASE:
            case HiveSqlParser.KW_SKEWED:
            case HiveSqlParser.KW_SNAPSHOT:
            case HiveSqlParser.KW_SORT:
            case HiveSqlParser.KW_SORTED:
            case HiveSqlParser.KW_SPEC:
            case HiveSqlParser.KW_SSL:
            case HiveSqlParser.KW_STATISTICS:
            case HiveSqlParser.KW_STATUS:
            case HiveSqlParser.KW_STORED:
            case HiveSqlParser.KW_STREAMTABLE:
            case HiveSqlParser.KW_STRING:
            case HiveSqlParser.KW_STRUCT:
            case HiveSqlParser.KW_SUMMARY:
            case HiveSqlParser.KW_SYSTEM_TIME:
            case HiveSqlParser.KW_SYSTEM_VERSION:
            case HiveSqlParser.KW_TABLES:
            case HiveSqlParser.KW_TBLPROPERTIES:
            case HiveSqlParser.KW_TEMPORARY:
            case HiveSqlParser.KW_TERMINATED:
            case HiveSqlParser.KW_TIMESTAMPTZ:
            case HiveSqlParser.KW_TINYINT:
            case HiveSqlParser.KW_TOUCH:
            case HiveSqlParser.KW_TRANSACTION:
            case HiveSqlParser.KW_TRANSACTIONAL:
            case HiveSqlParser.KW_TRANSACTIONS:
            case HiveSqlParser.KW_TRIM:
            case HiveSqlParser.KW_TYPE:
            case HiveSqlParser.KW_UNARCHIVE:
            case HiveSqlParser.KW_UNDO:
            case HiveSqlParser.KW_UNIONTYPE:
            case HiveSqlParser.KW_UNKNOWN:
            case HiveSqlParser.KW_UNLOCK:
            case HiveSqlParser.KW_UNMANAGED:
            case HiveSqlParser.KW_UNSET:
            case HiveSqlParser.KW_UNSIGNED:
            case HiveSqlParser.KW_URI:
            case HiveSqlParser.KW_URL:
            case HiveSqlParser.KW_USE:
            case HiveSqlParser.KW_UTC:
            case HiveSqlParser.KW_UTCTIMESTAMP:
            case HiveSqlParser.KW_VALIDATE:
            case HiveSqlParser.KW_VALUE_TYPE:
            case HiveSqlParser.KW_VECTORIZATION:
            case HiveSqlParser.KW_VIEW:
            case HiveSqlParser.KW_VIEWS:
            case HiveSqlParser.KW_WAIT:
            case HiveSqlParser.KW_WEEK:
            case HiveSqlParser.KW_WEEKS:
            case HiveSqlParser.KW_WHILE:
            case HiveSqlParser.KW_WITHIN:
            case HiveSqlParser.KW_WORK:
            case HiveSqlParser.KW_WORKLOAD:
            case HiveSqlParser.KW_WRITE:
            case HiveSqlParser.KW_YEAR:
            case HiveSqlParser.KW_YEARS:
            case HiveSqlParser.KW_ZONE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5155;
                this.nonReserved();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public functionIdentifier(): FunctionIdentifierContext {
        let localContext = new FunctionIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 928, HiveSqlParser.RULE_functionIdentifier);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5158;
            this.id_();
            this.state = 5161;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 395) {
                {
                this.state = 5159;
                this.match(HiveSqlParser.DOT);
                this.state = 5160;
                localContext._fn = this.id_();
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public principalIdentifier(): PrincipalIdentifierContext {
        let localContext = new PrincipalIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 930, HiveSqlParser.RULE_principalIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5163;
            this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public nonReserved(): NonReservedContext {
        let localContext = new NonReservedContext(this.context, this.state);
        this.enterRule(localContext, 932, HiveSqlParser.RULE_nonReserved);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5165;
            _la = this.tokenStream.LA(1);
            if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public sql11ReservedKeywordsUsedAsFunctionName(): Sql11ReservedKeywordsUsedAsFunctionNameContext {
        let localContext = new Sql11ReservedKeywordsUsedAsFunctionNameContext(this.context, this.state);
        this.enterRule(localContext, 934, HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5167;
            _la = this.tokenStream.LA(1);
            if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 469827584) !== 0) || ((((_la - 63)) & ~0x1F) === 0 && ((1 << (_la - 63)) & 259) !== 0) || _la === 100 || _la === 131 || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 393281) !== 0) || _la === 198 || _la === 264 || _la === 311 || _la === 337)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public hint(): HintContext {
        let localContext = new HintContext(this.context, this.state);
        this.enterRule(localContext, 936, HiveSqlParser.RULE_hint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5169;
            this.hintList();
            this.state = 5170;
            this.match(HiveSqlParser.EOF);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public hintList(): HintListContext {
        let localContext = new HintListContext(this.context, this.state);
        this.enterRule(localContext, 938, HiveSqlParser.RULE_hintList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5172;
            this.hintItem();
            this.state = 5177;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5173;
                this.match(HiveSqlParser.COMMA);
                this.state = 5174;
                this.hintItem();
                }
                }
                this.state = 5179;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public hintItem(): HintItemContext {
        let localContext = new HintItemContext(this.context, this.state);
        this.enterRule(localContext, 940, HiveSqlParser.RULE_hintItem);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5180;
            this.hintName();
            this.state = 5185;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 399) {
                {
                this.state = 5181;
                this.match(HiveSqlParser.LPAREN);
                this.state = 5182;
                this.hintArgs();
                this.state = 5183;
                this.match(HiveSqlParser.RPAREN);
                }
            }

            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public hintName(): HintNameContext {
        let localContext = new HintNameContext(this.context, this.state);
        this.enterRule(localContext, 942, HiveSqlParser.RULE_hintName);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5187;
            _la = this.tokenStream.LA(1);
            if(!(_la === 199 || _la === 242 || _la === 300 || _la === 322)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public hintArgs(): HintArgsContext {
        let localContext = new HintArgsContext(this.context, this.state);
        this.enterRule(localContext, 944, HiveSqlParser.RULE_hintArgs);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5189;
            this.hintArgName();
            this.state = 5194;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5190;
                this.match(HiveSqlParser.COMMA);
                this.state = 5191;
                this.hintArgName();
                }
                }
                this.state = 5196;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public hintArgName(): HintArgNameContext {
        let localContext = new HintArgNameContext(this.context, this.state);
        this.enterRule(localContext, 946, HiveSqlParser.RULE_hintArgName);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5197;
            _la = this.tokenStream.LA(1);
            if(!(_la === 213 || _la === 431 || _la === 432)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public prepareStatement(): PrepareStatementContext {
        let localContext = new PrepareStatementContext(this.context, this.state);
        this.enterRule(localContext, 948, HiveSqlParser.RULE_prepareStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5199;
            this.match(HiveSqlParser.KW_PREPARE);
            this.state = 5200;
            this.id_();
            this.state = 5201;
            this.match(HiveSqlParser.KW_FROM);
            this.state = 5202;
            this.queryStatementExpression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public executeStatement(): ExecuteStatementContext {
        let localContext = new ExecuteStatementContext(this.context, this.state);
        this.enterRule(localContext, 950, HiveSqlParser.RULE_executeStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5204;
            this.match(HiveSqlParser.KW_EXECUTE);
            this.state = 5205;
            this.id_();
            this.state = 5206;
            this.match(HiveSqlParser.KW_USING);
            this.state = 5207;
            this.executeParamList();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public executeParamList(): ExecuteParamListContext {
        let localContext = new ExecuteParamListContext(this.context, this.state);
        this.enterRule(localContext, 952, HiveSqlParser.RULE_executeParamList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5209;
            this.constant();
            this.state = 5214;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5210;
                this.match(HiveSqlParser.COMMA);
                this.state = 5211;
                this.constant();
                }
                }
                this.state = 5216;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public resourcePlanDdlStatements(): ResourcePlanDdlStatementsContext {
        let localContext = new ResourcePlanDdlStatementsContext(this.context, this.state);
        this.enterRule(localContext, 954, HiveSqlParser.RULE_resourcePlanDdlStatements);
        try {
            this.state = 5231;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 624, this.context) ) {
            case 1:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5217;
                this.createResourcePlanStatement();
                }
                break;
            case 2:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5218;
                this.alterResourcePlanStatement();
                }
                break;
            case 3:
                this.enterOuterAlt(localContext, 3);
                {
                this.state = 5219;
                this.dropResourcePlanStatement();
                }
                break;
            case 4:
                this.enterOuterAlt(localContext, 4);
                {
                this.state = 5220;
                this.globalWmStatement();
                }
                break;
            case 5:
                this.enterOuterAlt(localContext, 5);
                {
                this.state = 5221;
                this.replaceResourcePlanStatement();
                }
                break;
            case 6:
                this.enterOuterAlt(localContext, 6);
                {
                this.state = 5222;
                this.createTriggerStatement();
                }
                break;
            case 7:
                this.enterOuterAlt(localContext, 7);
                {
                this.state = 5223;
                this.alterTriggerStatement();
                }
                break;
            case 8:
                this.enterOuterAlt(localContext, 8);
                {
                this.state = 5224;
                this.dropTriggerStatement();
                }
                break;
            case 9:
                this.enterOuterAlt(localContext, 9);
                {
                this.state = 5225;
                this.createPoolStatement();
                }
                break;
            case 10:
                this.enterOuterAlt(localContext, 10);
                {
                this.state = 5226;
                this.alterPoolStatement();
                }
                break;
            case 11:
                this.enterOuterAlt(localContext, 11);
                {
                this.state = 5227;
                this.dropPoolStatement();
                }
                break;
            case 12:
                this.enterOuterAlt(localContext, 12);
                {
                this.state = 5228;
                this.createMappingStatement();
                }
                break;
            case 13:
                this.enterOuterAlt(localContext, 13);
                {
                this.state = 5229;
                this.alterMappingStatement();
                }
                break;
            case 14:
                this.enterOuterAlt(localContext, 14);
                {
                this.state = 5230;
                this.dropMappingStatement();
                }
                break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rpAssign(): RpAssignContext {
        let localContext = new RpAssignContext(this.context, this.state);
        this.enterRule(localContext, 956, HiveSqlParser.RULE_rpAssign);
        try {
            this.state = 5240;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_QUERY_PARALLELISM:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5233;
                this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
                this.state = 5234;
                this.match(HiveSqlParser.EQUAL);
                this.state = 5235;
                localContext._parallelism = this.match(HiveSqlParser.Number);
                }
                break;
            case HiveSqlParser.KW_DEFAULT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5236;
                this.match(HiveSqlParser.KW_DEFAULT);
                this.state = 5237;
                this.match(HiveSqlParser.KW_POOL);
                this.state = 5238;
                this.match(HiveSqlParser.EQUAL);
                this.state = 5239;
                this.poolPath();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rpAssignList(): RpAssignListContext {
        let localContext = new RpAssignListContext(this.context, this.state);
        this.enterRule(localContext, 958, HiveSqlParser.RULE_rpAssignList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5242;
            this.rpAssign();
            this.state = 5247;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5243;
                this.match(HiveSqlParser.COMMA);
                this.state = 5244;
                this.rpAssign();
                }
                }
                this.state = 5249;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rpUnassign(): RpUnassignContext {
        let localContext = new RpUnassignContext(this.context, this.state);
        this.enterRule(localContext, 960, HiveSqlParser.RULE_rpUnassign);
        try {
            this.state = 5253;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_QUERY_PARALLELISM:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5250;
                this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
                }
                break;
            case HiveSqlParser.KW_DEFAULT:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5251;
                this.match(HiveSqlParser.KW_DEFAULT);
                this.state = 5252;
                this.match(HiveSqlParser.KW_POOL);
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public rpUnassignList(): RpUnassignListContext {
        let localContext = new RpUnassignListContext(this.context, this.state);
        this.enterRule(localContext, 962, HiveSqlParser.RULE_rpUnassignList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5255;
            this.rpUnassign();
            this.state = 5260;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5256;
                this.match(HiveSqlParser.COMMA);
                this.state = 5257;
                this.rpUnassign();
                }
                }
                this.state = 5262;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createResourcePlanStatement(): CreateResourcePlanStatementContext {
        let localContext = new CreateResourcePlanStatementContext(this.context, this.state);
        this.enterRule(localContext, 964, HiveSqlParser.RULE_createResourcePlanStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5263;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 5264;
            this.match(HiveSqlParser.KW_RESOURCE);
            this.state = 5265;
            this.match(HiveSqlParser.KW_PLAN);
            this.state = 5267;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 5266;
                this.ifNotExists();
                }
            }

            this.state = 5278;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 631, this.context) ) {
            case 1:
                {
                this.state = 5269;
                localContext._name = this.id_();
                this.state = 5270;
                this.match(HiveSqlParser.KW_LIKE);
                this.state = 5271;
                localContext._likeName = this.id_();
                }
                break;
            case 2:
                {
                this.state = 5273;
                localContext._name = this.id_();
                this.state = 5276;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 630, this.context) ) {
                case 1:
                    {
                    this.state = 5274;
                    this.match(HiveSqlParser.KW_WITH);
                    this.state = 5275;
                    this.rpAssignList();
                    }
                    break;
                }
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public withReplace(): WithReplaceContext {
        let localContext = new WithReplaceContext(this.context, this.state);
        this.enterRule(localContext, 966, HiveSqlParser.RULE_withReplace);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5280;
            this.match(HiveSqlParser.KW_WITH);
            this.state = 5281;
            this.match(HiveSqlParser.KW_REPLACE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public activate(): ActivateContext {
        let localContext = new ActivateContext(this.context, this.state);
        this.enterRule(localContext, 968, HiveSqlParser.RULE_activate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5283;
            this.match(HiveSqlParser.KW_ACTIVATE);
            this.state = 5285;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 632, this.context) ) {
            case 1:
                {
                this.state = 5284;
                this.withReplace();
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public enable(): EnableContext {
        let localContext = new EnableContext(this.context, this.state);
        this.enterRule(localContext, 970, HiveSqlParser.RULE_enable);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5287;
            _la = this.tokenStream.LA(1);
            if(!(_la === 106 || _la === 107)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public disable(): DisableContext {
        let localContext = new DisableContext(this.context, this.state);
        this.enterRule(localContext, 972, HiveSqlParser.RULE_disable);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5289;
            _la = this.tokenStream.LA(1);
            if(!(_la === 94 || _la === 95)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public unmanaged(): UnmanagedContext {
        let localContext = new UnmanagedContext(this.context, this.state);
        this.enterRule(localContext, 974, HiveSqlParser.RULE_unmanaged);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5291;
            this.match(HiveSqlParser.KW_UNMANAGED);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public year(): YearContext {
        let localContext = new YearContext(this.context, this.state);
        this.enterRule(localContext, 976, HiveSqlParser.RULE_year);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5293;
            _la = this.tokenStream.LA(1);
            if(!(_la === 392 || _la === 393)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public month(): MonthContext {
        let localContext = new MonthContext(this.context, this.state);
        this.enterRule(localContext, 978, HiveSqlParser.RULE_month);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5295;
            _la = this.tokenStream.LA(1);
            if(!(_la === 208 || _la === 209)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public week(): WeekContext {
        let localContext = new WeekContext(this.context, this.state);
        this.enterRule(localContext, 980, HiveSqlParser.RULE_week);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5297;
            _la = this.tokenStream.LA(1);
            if(!(_la === 381 || _la === 382)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public day(): DayContext {
        let localContext = new DayContext(this.context, this.state);
        this.enterRule(localContext, 982, HiveSqlParser.RULE_day);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5299;
            _la = this.tokenStream.LA(1);
            if(!(_la === 73 || _la === 74)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public hour(): HourContext {
        let localContext = new HourContext(this.context, this.state);
        this.enterRule(localContext, 984, HiveSqlParser.RULE_hour);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5301;
            _la = this.tokenStream.LA(1);
            if(!(_la === 148 || _la === 149)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public minute(): MinuteContext {
        let localContext = new MinuteContext(this.context, this.state);
        this.enterRule(localContext, 986, HiveSqlParser.RULE_minute);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5303;
            _la = this.tokenStream.LA(1);
            if(!(_la === 206 || _la === 207)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public second(): SecondContext {
        let localContext = new SecondContext(this.context, this.state);
        this.enterRule(localContext, 988, HiveSqlParser.RULE_second);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5305;
            _la = this.tokenStream.LA(1);
            if(!(_la === 297 || _la === 298)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public decimal(): DecimalContext {
        let localContext = new DecimalContext(this.context, this.state);
        this.enterRule(localContext, 990, HiveSqlParser.RULE_decimal);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5307;
            _la = this.tokenStream.LA(1);
            if(!(((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & 7) !== 0))) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterResourcePlanStatement(): AlterResourcePlanStatementContext {
        let localContext = new AlterResourcePlanStatementContext(this.context, this.state);
        this.enterRule(localContext, 992, HiveSqlParser.RULE_alterResourcePlanStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5309;
            this.match(HiveSqlParser.KW_ALTER);
            this.state = 5310;
            this.match(HiveSqlParser.KW_RESOURCE);
            this.state = 5311;
            this.match(HiveSqlParser.KW_PLAN);
            this.state = 5312;
            localContext._name = this.id_();
            this.state = 5330;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_VALIDATE:
                {
                this.state = 5313;
                this.match(HiveSqlParser.KW_VALIDATE);
                }
                break;
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
                {
                this.state = 5314;
                this.disable();
                }
                break;
            case HiveSqlParser.KW_SET:
                {
                this.state = 5315;
                this.match(HiveSqlParser.KW_SET);
                this.state = 5316;
                this.rpAssignList();
                }
                break;
            case HiveSqlParser.KW_UNSET:
                {
                this.state = 5317;
                this.match(HiveSqlParser.KW_UNSET);
                this.state = 5318;
                this.rpUnassignList();
                }
                break;
            case HiveSqlParser.KW_RENAME:
                {
                this.state = 5319;
                this.match(HiveSqlParser.KW_RENAME);
                this.state = 5320;
                this.match(HiveSqlParser.KW_TO);
                this.state = 5321;
                localContext._newName = this.id_();
                }
                break;
            case HiveSqlParser.KW_ACTIVATE:
                {
                this.state = 5322;
                this.activate();
                this.state = 5324;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 633, this.context) ) {
                case 1:
                    {
                    this.state = 5323;
                    this.enable();
                    }
                    break;
                }
                }
                break;
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
                {
                this.state = 5326;
                this.enable();
                this.state = 5328;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 2) {
                    {
                    this.state = 5327;
                    this.activate();
                    }
                }

                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public globalWmStatement(): GlobalWmStatementContext {
        let localContext = new GlobalWmStatementContext(this.context, this.state);
        this.enterRule(localContext, 994, HiveSqlParser.RULE_globalWmStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5334;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ENABLE:
            case HiveSqlParser.KW_ENABLED:
                {
                this.state = 5332;
                this.enable();
                }
                break;
            case HiveSqlParser.KW_DISABLE:
            case HiveSqlParser.KW_DISABLED:
                {
                this.state = 5333;
                this.disable();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 5336;
            this.match(HiveSqlParser.KW_WORKLOAD);
            this.state = 5337;
            this.match(HiveSqlParser.KW_MANAGEMENT);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public replaceResourcePlanStatement(): ReplaceResourcePlanStatementContext {
        let localContext = new ReplaceResourcePlanStatementContext(this.context, this.state);
        this.enterRule(localContext, 996, HiveSqlParser.RULE_replaceResourcePlanStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5339;
            this.match(HiveSqlParser.KW_REPLACE);
            this.state = 5351;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ACTIVE:
                {
                this.state = 5340;
                this.match(HiveSqlParser.KW_ACTIVE);
                this.state = 5341;
                this.match(HiveSqlParser.KW_RESOURCE);
                this.state = 5342;
                this.match(HiveSqlParser.KW_PLAN);
                this.state = 5343;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 5344;
                localContext._src = this.id_();
                }
                break;
            case HiveSqlParser.KW_RESOURCE:
                {
                this.state = 5345;
                this.match(HiveSqlParser.KW_RESOURCE);
                this.state = 5346;
                this.match(HiveSqlParser.KW_PLAN);
                this.state = 5347;
                localContext._dest = this.id_();
                this.state = 5348;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 5349;
                localContext._src = this.id_();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropResourcePlanStatement(): DropResourcePlanStatementContext {
        let localContext = new DropResourcePlanStatementContext(this.context, this.state);
        this.enterRule(localContext, 998, HiveSqlParser.RULE_dropResourcePlanStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5353;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 5354;
            this.match(HiveSqlParser.KW_RESOURCE);
            this.state = 5355;
            this.match(HiveSqlParser.KW_PLAN);
            this.state = 5357;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            if (_la === 151) {
                {
                this.state = 5356;
                this.ifExists();
                }
            }

            this.state = 5359;
            localContext._name = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public poolPath(): PoolPathContext {
        let localContext = new PoolPathContext(this.context, this.state);
        this.enterRule(localContext, 1000, HiveSqlParser.RULE_poolPath);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5361;
            this.id_();
            this.state = 5366;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 395) {
                {
                {
                this.state = 5362;
                this.match(HiveSqlParser.DOT);
                this.state = 5363;
                this.id_();
                }
                }
                this.state = 5368;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerExpression(): TriggerExpressionContext {
        let localContext = new TriggerExpressionContext(this.context, this.state);
        this.enterRule(localContext, 1002, HiveSqlParser.RULE_triggerExpression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5369;
            this.triggerAtomExpression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerExpressionStandalone(): TriggerExpressionStandaloneContext {
        let localContext = new TriggerExpressionStandaloneContext(this.context, this.state);
        this.enterRule(localContext, 1004, HiveSqlParser.RULE_triggerExpressionStandalone);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5371;
            this.triggerExpression();
            this.state = 5372;
            this.match(HiveSqlParser.EOF);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerOrExpression(): TriggerOrExpressionContext {
        let localContext = new TriggerOrExpressionContext(this.context, this.state);
        this.enterRule(localContext, 1006, HiveSqlParser.RULE_triggerOrExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5374;
            this.triggerAndExpression();
            this.state = 5379;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 228) {
                {
                {
                this.state = 5375;
                this.match(HiveSqlParser.KW_OR);
                this.state = 5376;
                this.triggerAndExpression();
                }
                }
                this.state = 5381;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerAndExpression(): TriggerAndExpressionContext {
        let localContext = new TriggerAndExpressionContext(this.context, this.state);
        this.enterRule(localContext, 1008, HiveSqlParser.RULE_triggerAndExpression);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5382;
            this.triggerAtomExpression();
            this.state = 5387;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 11) {
                {
                {
                this.state = 5383;
                this.match(HiveSqlParser.KW_AND);
                this.state = 5384;
                this.triggerAtomExpression();
                }
                }
                this.state = 5389;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerAtomExpression(): TriggerAtomExpressionContext {
        let localContext = new TriggerAtomExpressionContext(this.context, this.state);
        this.enterRule(localContext, 1010, HiveSqlParser.RULE_triggerAtomExpression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5390;
            this.id_();
            this.state = 5391;
            this.comparisionOperator();
            this.state = 5392;
            this.triggerLiteral();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerLiteral(): TriggerLiteralContext {
        let localContext = new TriggerLiteralContext(this.context, this.state);
        this.enterRule(localContext, 1012, HiveSqlParser.RULE_triggerLiteral);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5394;
            _la = this.tokenStream.LA(1);
            if(!(_la === 426 || _la === 431)) {
            this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public comparisionOperator(): ComparisionOperatorContext {
        let localContext = new ComparisionOperatorContext(this.context, this.state);
        this.enterRule(localContext, 1014, HiveSqlParser.RULE_comparisionOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5396;
            this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerActionExpression(): TriggerActionExpressionContext {
        let localContext = new TriggerActionExpressionContext(this.context, this.state);
        this.enterRule(localContext, 1016, HiveSqlParser.RULE_triggerActionExpression);
        try {
            this.state = 5402;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_KILL:
                this.enterOuterAlt(localContext, 1);
                {
                this.state = 5398;
                this.match(HiveSqlParser.KW_KILL);
                }
                break;
            case HiveSqlParser.KW_MOVE:
                this.enterOuterAlt(localContext, 2);
                {
                this.state = 5399;
                this.match(HiveSqlParser.KW_MOVE);
                this.state = 5400;
                this.match(HiveSqlParser.KW_TO);
                this.state = 5401;
                this.poolPath();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public triggerActionExpressionStandalone(): TriggerActionExpressionStandaloneContext {
        let localContext = new TriggerActionExpressionStandaloneContext(this.context, this.state);
        this.enterRule(localContext, 1018, HiveSqlParser.RULE_triggerActionExpressionStandalone);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5404;
            this.triggerActionExpression();
            this.state = 5405;
            this.match(HiveSqlParser.EOF);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createTriggerStatement(): CreateTriggerStatementContext {
        let localContext = new CreateTriggerStatementContext(this.context, this.state);
        this.enterRule(localContext, 1020, HiveSqlParser.RULE_createTriggerStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5407;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 5408;
            this.match(HiveSqlParser.KW_TRIGGER);
            this.state = 5409;
            localContext._rpName = this.id_();
            this.state = 5410;
            this.match(HiveSqlParser.DOT);
            this.state = 5411;
            localContext._triggerName = this.id_();
            this.state = 5412;
            this.match(HiveSqlParser.KW_WHEN);
            this.state = 5413;
            this.triggerExpression();
            this.state = 5414;
            this.match(HiveSqlParser.KW_DO);
            this.state = 5415;
            this.triggerActionExpression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterTriggerStatement(): AlterTriggerStatementContext {
        let localContext = new AlterTriggerStatementContext(this.context, this.state);
        this.enterRule(localContext, 1022, HiveSqlParser.RULE_alterTriggerStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5417;
            this.match(HiveSqlParser.KW_ALTER);
            this.state = 5418;
            this.match(HiveSqlParser.KW_TRIGGER);
            this.state = 5419;
            localContext._rpName = this.id_();
            this.state = 5420;
            this.match(HiveSqlParser.DOT);
            this.state = 5421;
            localContext._triggerName = this.id_();
            this.state = 5438;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_WHEN:
                {
                this.state = 5422;
                this.match(HiveSqlParser.KW_WHEN);
                this.state = 5423;
                this.triggerExpression();
                this.state = 5424;
                this.match(HiveSqlParser.KW_DO);
                this.state = 5425;
                this.triggerActionExpression();
                }
                break;
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_DROP:
                {
                this.state = 5431;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ADD:
                    {
                    this.state = 5427;
                    this.match(HiveSqlParser.KW_ADD);
                    this.state = 5428;
                    this.match(HiveSqlParser.KW_TO);
                    }
                    break;
                case HiveSqlParser.KW_DROP:
                    {
                    this.state = 5429;
                    this.match(HiveSqlParser.KW_DROP);
                    this.state = 5430;
                    this.match(HiveSqlParser.KW_FROM);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                this.state = 5436;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_POOL:
                    {
                    this.state = 5433;
                    this.match(HiveSqlParser.KW_POOL);
                    this.state = 5434;
                    localContext._poolName = this.poolPath();
                    }
                    break;
                case HiveSqlParser.KW_UNMANAGED:
                    {
                    this.state = 5435;
                    this.match(HiveSqlParser.KW_UNMANAGED);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
                }
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropTriggerStatement(): DropTriggerStatementContext {
        let localContext = new DropTriggerStatementContext(this.context, this.state);
        this.enterRule(localContext, 1024, HiveSqlParser.RULE_dropTriggerStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5440;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 5441;
            this.match(HiveSqlParser.KW_TRIGGER);
            this.state = 5442;
            localContext._rpName = this.id_();
            this.state = 5443;
            this.match(HiveSqlParser.DOT);
            this.state = 5444;
            localContext._triggerName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public poolAssign(): PoolAssignContext {
        let localContext = new PoolAssignContext(this.context, this.state);
        this.enterRule(localContext, 1026, HiveSqlParser.RULE_poolAssign);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5458;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_ALLOC_FRACTION:
                {
                this.state = 5446;
                this.match(HiveSqlParser.KW_ALLOC_FRACTION);
                this.state = 5447;
                this.match(HiveSqlParser.EQUAL);
                this.state = 5448;
                localContext._allocFraction = this.match(HiveSqlParser.Number);
                }
                break;
            case HiveSqlParser.KW_QUERY_PARALLELISM:
                {
                this.state = 5449;
                this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
                this.state = 5450;
                this.match(HiveSqlParser.EQUAL);
                this.state = 5451;
                localContext._parallelism = this.match(HiveSqlParser.Number);
                }
                break;
            case HiveSqlParser.KW_SCHEDULING_POLICY:
                {
                this.state = 5452;
                this.match(HiveSqlParser.KW_SCHEDULING_POLICY);
                this.state = 5453;
                this.match(HiveSqlParser.EQUAL);
                this.state = 5454;
                localContext._policy = this.match(HiveSqlParser.StringLiteral);
                }
                break;
            case HiveSqlParser.KW_PATH:
                {
                this.state = 5455;
                this.match(HiveSqlParser.KW_PATH);
                this.state = 5456;
                this.match(HiveSqlParser.EQUAL);
                this.state = 5457;
                localContext._path = this.poolPath();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public poolAssignList(): PoolAssignListContext {
        let localContext = new PoolAssignListContext(this.context, this.state);
        this.enterRule(localContext, 1028, HiveSqlParser.RULE_poolAssignList);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5460;
            this.poolAssign();
            this.state = 5465;
            this.errorHandler.sync(this);
            _la = this.tokenStream.LA(1);
            while (_la === 397) {
                {
                {
                this.state = 5461;
                this.match(HiveSqlParser.COMMA);
                this.state = 5462;
                this.poolAssign();
                }
                }
                this.state = 5467;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createPoolStatement(): CreatePoolStatementContext {
        let localContext = new CreatePoolStatementContext(this.context, this.state);
        this.enterRule(localContext, 1030, HiveSqlParser.RULE_createPoolStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5468;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 5469;
            this.match(HiveSqlParser.KW_POOL);
            this.state = 5470;
            localContext._rpName = this.id_();
            this.state = 5471;
            this.match(HiveSqlParser.DOT);
            this.state = 5472;
            this.poolPath();
            this.state = 5473;
            this.match(HiveSqlParser.KW_WITH);
            this.state = 5474;
            this.poolAssignList();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterPoolStatement(): AlterPoolStatementContext {
        let localContext = new AlterPoolStatementContext(this.context, this.state);
        this.enterRule(localContext, 1032, HiveSqlParser.RULE_alterPoolStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5476;
            this.match(HiveSqlParser.KW_ALTER);
            this.state = 5477;
            this.match(HiveSqlParser.KW_POOL);
            this.state = 5478;
            localContext._rpName = this.id_();
            this.state = 5479;
            this.match(HiveSqlParser.DOT);
            this.state = 5480;
            this.poolPath();
            this.state = 5488;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_SET:
                {
                this.state = 5481;
                this.match(HiveSqlParser.KW_SET);
                this.state = 5482;
                this.poolAssignList();
                }
                break;
            case HiveSqlParser.KW_UNSET:
                {
                this.state = 5483;
                this.match(HiveSqlParser.KW_UNSET);
                this.state = 5484;
                this.match(HiveSqlParser.KW_SCHEDULING_POLICY);
                }
                break;
            case HiveSqlParser.KW_ADD:
            case HiveSqlParser.KW_DROP:
                {
                this.state = 5485;
                _la = this.tokenStream.LA(1);
                if(!(_la === 4 || _la === 101)) {
                this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 5486;
                this.match(HiveSqlParser.KW_TRIGGER);
                this.state = 5487;
                localContext._triggerName = this.id_();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropPoolStatement(): DropPoolStatementContext {
        let localContext = new DropPoolStatementContext(this.context, this.state);
        this.enterRule(localContext, 1034, HiveSqlParser.RULE_dropPoolStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5490;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 5491;
            this.match(HiveSqlParser.KW_POOL);
            this.state = 5492;
            localContext._rpName = this.id_();
            this.state = 5493;
            this.match(HiveSqlParser.DOT);
            this.state = 5494;
            this.poolPath();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public createMappingStatement(): CreateMappingStatementContext {
        let localContext = new CreateMappingStatementContext(this.context, this.state);
        this.enterRule(localContext, 1036, HiveSqlParser.RULE_createMappingStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5496;
            this.match(HiveSqlParser.KW_CREATE);
            this.state = 5497;
            localContext._mappingType = this.tokenStream.LT(1);
            _la = this.tokenStream.LA(1);
            if(!(_la === 14 || _la === 144 || _la === 369)) {
                localContext._mappingType = this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            this.state = 5498;
            this.match(HiveSqlParser.KW_MAPPING);
            this.state = 5499;
            localContext._name = this.match(HiveSqlParser.StringLiteral);
            this.state = 5500;
            this.match(HiveSqlParser.KW_IN);
            this.state = 5501;
            localContext._rpName = this.id_();
            this.state = 5505;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_TO:
                {
                this.state = 5502;
                this.match(HiveSqlParser.KW_TO);
                this.state = 5503;
                localContext._path = this.poolPath();
                }
                break;
            case HiveSqlParser.KW_UNMANAGED:
                {
                this.state = 5504;
                this.unmanaged();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 5510;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 650, this.context) ) {
            case 1:
                {
                this.state = 5507;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 5508;
                this.match(HiveSqlParser.KW_ORDER);
                this.state = 5509;
                localContext._order = this.match(HiveSqlParser.Number);
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public alterMappingStatement(): AlterMappingStatementContext {
        let localContext = new AlterMappingStatementContext(this.context, this.state);
        this.enterRule(localContext, 1038, HiveSqlParser.RULE_alterMappingStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5512;
            this.match(HiveSqlParser.KW_ALTER);
            this.state = 5513;
            localContext._mappingType = this.tokenStream.LT(1);
            _la = this.tokenStream.LA(1);
            if(!(_la === 14 || _la === 144 || _la === 369)) {
                localContext._mappingType = this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            this.state = 5514;
            this.match(HiveSqlParser.KW_MAPPING);
            this.state = 5515;
            localContext._name = this.match(HiveSqlParser.StringLiteral);
            this.state = 5516;
            this.match(HiveSqlParser.KW_IN);
            this.state = 5517;
            localContext._rpName = this.id_();
            this.state = 5521;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
            case HiveSqlParser.KW_TO:
                {
                this.state = 5518;
                this.match(HiveSqlParser.KW_TO);
                this.state = 5519;
                localContext._path = this.poolPath();
                }
                break;
            case HiveSqlParser.KW_UNMANAGED:
                {
                this.state = 5520;
                this.unmanaged();
                }
                break;
            default:
                throw new antlr.NoViableAltException(this);
            }
            this.state = 5526;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 652, this.context) ) {
            case 1:
                {
                this.state = 5523;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 5524;
                this.match(HiveSqlParser.KW_ORDER);
                this.state = 5525;
                localContext._order = this.match(HiveSqlParser.Number);
                }
                break;
            }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    public dropMappingStatement(): DropMappingStatementContext {
        let localContext = new DropMappingStatementContext(this.context, this.state);
        this.enterRule(localContext, 1040, HiveSqlParser.RULE_dropMappingStatement);
        let _la: number;
        try {
            this.enterOuterAlt(localContext, 1);
            {
            this.state = 5528;
            this.match(HiveSqlParser.KW_DROP);
            this.state = 5529;
            localContext._mappingType = this.tokenStream.LT(1);
            _la = this.tokenStream.LA(1);
            if(!(_la === 14 || _la === 144 || _la === 369)) {
                localContext._mappingType = this.errorHandler.recoverInline(this);
            }
            else {
                this.errorHandler.reportMatch(this);
                this.consume();
            }
            this.state = 5530;
            this.match(HiveSqlParser.KW_MAPPING);
            this.state = 5531;
            localContext._name = this.match(HiveSqlParser.StringLiteral);
            this.state = 5532;
            this.match(HiveSqlParser.KW_IN);
            this.state = 5533;
            localContext._rpName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            } else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }

    public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean {
        switch (ruleIndex) {
        case 142:
            return this.columnName_sempred(localContext as ColumnNameContext, predIndex);
        }
        return true;
    }
    private columnName_sempred(localContext: ColumnNameContext | null, predIndex: number): boolean {
        switch (predIndex) {
        case 0:
            return this.shouldMatchEmpty();
        }
        return true;
    }

    public static readonly _serializedATN: number[] = [
        4,1,438,5536,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,
        7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,
        13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,
        20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,
        26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,
        33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,
        39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,
        46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,
        52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,
        59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,
        65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,
        72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,
        78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,
        85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,
        91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,
        98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,
        2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,
        7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,
        2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,
        7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,
        2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,
        7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,
        2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,
        7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,
        2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,
        7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,
        2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,
        7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,
        2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,
        7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,
        2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,
        7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,
        2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,
        7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,
        2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,
        7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,
        2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,
        7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,
        2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,
        7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,
        2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,
        7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,
        2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,
        7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,
        2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,
        7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,
        2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,
        7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,
        2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,
        7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,
        2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,
        7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,
        2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,
        7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,
        2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,
        7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,
        2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,
        7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,
        2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,
        7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,
        2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,
        7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,
        2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,
        7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,
        2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,
        7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,
        2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,
        7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,
        2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,
        7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,
        2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406,
        7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411,
        2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417,
        7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422,
        2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428,
        7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433,
        2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439,
        7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,
        2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,
        7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,
        2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,
        7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466,
        2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471,2,472,
        7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477,7,477,
        2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482,2,483,
        7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488,7,488,
        2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493,2,494,
        7,494,2,495,7,495,2,496,7,496,2,497,7,497,2,498,7,498,2,499,7,499,
        2,500,7,500,2,501,7,501,2,502,7,502,2,503,7,503,2,504,7,504,2,505,
        7,505,2,506,7,506,2,507,7,507,2,508,7,508,2,509,7,509,2,510,7,510,
        2,511,7,511,2,512,7,512,2,513,7,513,2,514,7,514,2,515,7,515,2,516,
        7,516,2,517,7,517,2,518,7,518,2,519,7,519,2,520,7,520,1,0,5,0,1044,
        8,0,10,0,12,0,1047,9,0,1,0,1,0,1,1,1,1,3,1,1053,8,1,1,1,3,1,1056,
        8,1,1,2,1,2,5,2,1060,8,2,10,2,12,2,1063,9,2,1,2,1,2,1,2,3,2,1068,
        8,2,1,3,1,3,1,3,1,3,1,3,3,3,1075,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,
        1,3,3,3,1085,8,3,1,3,3,3,1088,8,3,1,3,1,3,3,3,1092,8,3,1,4,1,4,1,
        5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,
        6,1112,8,6,1,7,1,7,1,7,3,7,1117,8,7,1,7,1,7,1,7,3,7,1122,8,7,1,7,
        1,7,1,7,1,7,3,7,1128,8,7,1,8,1,8,1,8,1,9,1,9,3,9,1135,8,9,1,9,1,
        9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,3,10,1148,8,10,1,11,
        1,11,3,11,1152,8,11,1,11,1,11,3,11,1156,8,11,1,11,1,11,1,11,3,11,
        1161,8,11,1,12,1,12,1,12,1,12,1,12,3,12,1168,8,12,1,12,1,12,3,12,
        1172,8,12,1,13,1,13,1,13,3,13,1177,8,13,1,14,1,14,1,14,1,14,1,14,
        3,14,1184,8,14,1,14,1,14,3,14,1188,8,14,1,15,1,15,1,15,1,15,1,16,
        1,16,1,16,5,16,1197,8,16,10,16,12,16,1200,9,16,1,17,1,17,1,17,3,
        17,1205,8,17,1,18,1,18,1,18,1,18,1,18,3,18,1212,8,18,1,19,1,19,1,
        19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,
        19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,
        19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,
        19,1,19,1,19,1,19,1,19,1,19,3,19,1261,8,19,1,20,1,20,1,20,1,21,1,
        21,1,22,1,22,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,
        26,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,3,28,1289,8,28,1,28,1,
        28,3,28,1293,8,28,1,28,1,28,3,28,1297,8,28,1,28,3,28,1300,8,28,1,
        28,3,28,1303,8,28,1,28,1,28,1,28,3,28,1308,8,28,1,28,1,28,1,28,1,
        28,3,28,1314,8,28,1,28,1,28,3,28,1318,8,28,1,28,1,28,1,28,1,28,3,
        28,1324,8,28,3,28,1326,8,28,1,29,1,29,1,29,1,30,1,30,1,30,1,31,1,
        31,1,31,1,31,1,32,1,32,1,32,5,32,1341,8,32,10,32,12,32,1344,9,32,
        1,33,1,33,1,33,1,34,1,34,1,34,1,35,1,35,1,35,3,35,1355,8,35,1,35,
        1,35,3,35,1359,8,35,1,36,1,36,1,36,1,37,1,37,3,37,1366,8,37,1,37,
        1,37,1,37,1,37,1,37,1,37,3,37,1374,8,37,1,37,3,37,1377,8,37,1,38,
        1,38,1,38,3,38,1382,8,38,1,38,1,38,3,38,1386,8,38,1,38,3,38,1389,
        8,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,3,40,1399,8,40,1,40,
        1,40,1,40,1,40,1,40,1,40,3,40,1407,8,40,5,40,1409,8,40,10,40,12,
        40,1412,9,40,3,40,1414,8,40,1,41,1,41,3,41,1418,8,41,1,42,1,42,3,
        42,1422,8,42,1,42,3,42,1425,8,42,1,43,1,43,1,43,3,43,1430,8,43,1,
        43,1,43,1,43,1,43,3,43,1436,8,43,1,43,1,43,1,43,3,43,1441,8,43,1,
        43,1,43,1,43,3,43,1446,8,43,1,43,1,43,3,43,1450,8,43,1,44,1,44,1,
        44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1461,8,44,3,44,1463,8,44,1,
        44,1,44,3,44,1467,8,44,1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,47,3,
        47,1477,8,47,1,47,1,47,3,47,1481,8,47,1,47,1,47,1,47,1,47,3,47,1487,
        8,47,1,47,3,47,1490,8,47,1,47,1,47,1,47,1,47,1,47,3,47,1497,8,47,
        1,47,1,47,1,47,3,47,1502,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,
        1510,8,47,1,47,1,47,1,47,3,47,1515,8,47,1,47,1,47,3,47,1519,8,47,
        1,47,1,47,1,47,1,47,1,47,1,47,3,47,1527,8,47,1,47,1,47,1,47,3,47,
        1532,8,47,1,47,1,47,1,47,1,47,3,47,1538,8,47,1,47,1,47,1,47,1,47,
        3,47,1544,8,47,1,47,3,47,1547,8,47,1,47,3,47,1550,8,47,1,47,3,47,
        1553,8,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1562,8,47,1,47,
        1,47,1,47,1,47,1,47,1,47,3,47,1570,8,47,1,47,1,47,1,47,3,47,1575,
        8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1583,8,47,1,47,1,47,1,47,
        1,47,1,47,3,47,1590,8,47,1,47,3,47,1593,8,47,1,47,3,47,1596,8,47,
        3,47,1598,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1606,8,47,1,47,
        3,47,1609,8,47,1,47,3,47,1612,8,47,1,47,3,47,1615,8,47,1,47,3,47,
        1618,8,47,1,47,3,47,1621,8,47,1,47,3,47,1624,8,47,1,47,3,47,1627,
        8,47,1,47,3,47,1630,8,47,1,47,3,47,1633,8,47,1,47,3,47,1636,8,47,
        3,47,1638,8,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,
        3,47,1650,8,47,1,47,1,47,1,47,1,47,3,47,1656,8,47,1,47,1,47,1,47,
        1,47,1,47,1,47,3,47,1664,8,47,3,47,1666,8,47,1,48,1,48,1,48,1,48,
        1,48,1,48,1,48,1,48,3,48,1676,8,48,1,49,1,49,1,49,1,49,3,49,1682,
        8,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,
        1,52,3,52,1697,8,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,55,
        1,55,1,55,1,55,1,56,1,56,1,56,3,56,1714,8,56,1,56,1,56,1,56,3,56,
        1719,8,56,1,57,1,57,3,57,1723,8,57,1,57,1,57,3,57,1727,8,57,1,57,
        1,57,1,57,1,58,1,58,3,58,1734,8,58,1,58,1,58,1,58,5,58,1739,8,58,
        10,58,12,58,1742,9,58,1,58,1,58,1,58,3,58,1747,8,58,1,59,1,59,3,
        59,1751,8,59,1,59,3,59,1754,8,59,1,59,1,59,1,59,5,59,1759,8,59,10,
        59,12,59,1762,9,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,
        1,61,1,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,3,63,1784,
        8,63,1,64,1,64,1,64,3,64,1789,8,64,1,64,1,64,3,64,1793,8,64,1,65,
        1,65,1,65,1,65,1,66,1,66,3,66,1801,8,66,1,67,1,67,1,67,1,68,1,68,
        1,68,1,68,3,68,1810,8,68,1,68,1,68,3,68,1814,8,68,1,68,1,68,1,68,
        1,68,3,68,1820,8,68,1,69,1,69,1,69,1,69,3,69,1826,8,69,1,69,1,69,
        1,69,1,69,1,69,3,69,1833,8,69,1,69,3,69,1836,8,69,1,69,1,69,1,69,
        1,69,3,69,1842,8,69,1,70,1,70,1,70,5,70,1847,8,70,10,70,12,70,1850,
        9,70,1,71,1,71,1,71,1,71,1,71,3,71,1857,8,71,1,72,1,72,1,73,1,73,
        1,73,5,73,1864,8,73,10,73,12,73,1867,9,73,1,74,1,74,1,74,1,74,1,
        74,1,74,3,74,1875,8,74,1,75,1,75,1,75,1,75,1,75,3,75,1882,8,75,1,
        76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,79,1,
        79,1,79,1,79,1,80,1,80,3,80,1902,8,80,1,80,1,80,1,80,1,80,1,80,3,
        80,1909,8,80,3,80,1911,8,80,1,81,1,81,1,81,5,81,1916,8,81,10,81,
        12,81,1919,9,81,1,82,1,82,1,82,1,83,1,83,1,84,1,84,3,84,1928,8,84,
        1,84,1,84,1,84,1,84,1,84,1,84,3,84,1936,8,84,1,85,1,85,3,85,1940,
        8,85,1,85,1,85,3,85,1944,8,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,
        1,87,1,87,1,87,1,87,3,87,1957,8,87,1,87,1,87,1,87,1,88,1,88,1,88,
        1,88,3,88,1966,8,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,
        1,89,1,89,1,89,1,89,1,89,3,89,1982,8,89,1,89,1,89,3,89,1986,8,89,
        1,89,1,89,1,89,3,89,1991,8,89,1,89,1,89,1,89,3,89,1996,8,89,1,89,
        3,89,1999,8,89,1,89,3,89,2002,8,89,1,89,1,89,3,89,2006,8,89,1,89,
        3,89,2009,8,89,1,89,3,89,2012,8,89,1,90,1,90,1,90,3,90,2017,8,90,
        1,90,1,90,1,90,1,90,1,91,1,91,3,91,2025,8,91,1,91,1,91,3,91,2029,
        8,91,1,91,1,91,1,91,1,91,1,91,3,91,2036,8,91,1,91,3,91,2039,8,91,
        1,91,3,91,2042,8,91,1,91,3,91,2045,8,91,1,91,1,91,1,91,1,92,1,92,
        1,92,1,92,1,92,1,92,1,92,3,92,2057,8,92,1,92,1,92,1,93,1,93,3,93,
        2063,8,93,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1,96,
        1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,
        3,98,2089,8,98,1,98,1,98,1,99,1,99,1,99,1,99,3,99,2097,8,99,1,99,
        1,99,3,99,2101,8,99,1,99,3,99,2104,8,99,1,99,3,99,2107,8,99,1,99,
        3,99,2110,8,99,1,99,3,99,2113,8,99,1,99,3,99,2116,8,99,1,99,3,99,
        2119,8,99,1,99,3,99,2122,8,99,1,99,1,99,1,99,1,100,1,100,1,100,1,
        100,3,100,2131,8,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,
        101,3,101,2141,8,101,1,101,3,101,2144,8,101,1,101,1,101,1,102,1,
        102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,104,
        1,104,1,104,1,104,1,104,3,104,2164,8,104,1,105,1,105,1,105,1,105,
        3,105,2170,8,105,1,105,1,105,1,105,1,105,3,105,2176,8,105,1,105,
        3,105,2179,8,105,3,105,2181,8,105,1,106,1,106,1,106,1,106,1,107,
        3,107,2188,8,107,1,107,1,107,1,107,1,108,1,108,3,108,2195,8,108,
        1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,
        3,111,2208,8,111,1,111,1,111,1,111,3,111,2213,8,111,1,111,1,111,
        1,112,1,112,1,112,5,112,2220,8,112,10,112,12,112,2223,9,112,1,113,
        1,113,1,113,5,113,2228,8,113,10,113,12,113,2231,9,113,1,114,1,114,
        1,114,5,114,2236,8,114,10,114,12,114,2239,9,114,1,115,1,115,1,116,
        1,116,1,116,1,116,1,116,3,116,2248,8,116,1,116,1,116,1,116,1,116,
        1,116,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2261,8,116,1,117,
        1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,3,117,
        2274,8,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,
        1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,3,119,
        2295,8,119,1,120,1,120,3,120,2299,8,120,1,121,1,121,1,121,1,122,
        1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,3,123,2314,
        8,123,1,124,1,124,1,124,1,124,3,124,2320,8,124,1,124,3,124,2323,
        8,124,1,124,3,124,2326,8,124,1,124,3,124,2329,8,124,1,124,3,124,
        2332,8,124,1,125,1,125,3,125,2336,8,125,1,126,1,126,1,126,1,127,
        1,127,1,127,1,127,1,128,1,128,1,128,5,128,2348,8,128,10,128,12,128,
        2351,9,128,1,128,1,128,1,128,5,128,2356,8,128,10,128,12,128,2359,
        9,128,3,128,2361,8,128,1,129,1,129,1,129,1,129,1,130,1,130,1,131,
        1,131,1,131,1,131,1,131,1,131,1,131,3,131,2376,8,131,1,132,1,132,
        1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,134,
        1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,136,1,136,
        1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136,2410,8,136,
        1,136,1,136,1,136,1,136,1,136,1,136,3,136,2418,8,136,1,136,1,136,
        1,136,3,136,2423,8,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136,
        2431,8,136,1,136,1,136,1,136,3,136,2436,8,136,1,136,1,136,1,136,
        3,136,2441,8,136,1,137,1,137,1,137,1,138,1,138,1,138,5,138,2449,
        8,138,10,138,12,138,2452,9,138,1,139,1,139,1,139,5,139,2457,8,139,
        10,139,12,139,2460,9,139,1,140,1,140,1,140,5,140,2465,8,140,10,140,
        12,140,2468,9,140,1,141,1,141,1,141,5,141,2473,8,141,10,141,12,141,
        2476,9,141,1,142,1,142,1,142,5,142,2481,8,142,10,142,12,142,2484,
        9,142,1,142,3,142,2487,8,142,1,143,1,143,1,144,1,144,1,144,1,144,
        1,144,1,144,3,144,2497,8,144,5,144,2499,8,144,10,144,12,144,2502,
        9,144,1,145,1,145,1,145,5,145,2507,8,145,10,145,12,145,2510,9,145,
        1,146,1,146,1,146,1,146,1,147,1,147,3,147,2518,8,147,1,147,3,147,
        2521,8,147,1,148,1,148,3,148,2525,8,148,1,149,1,149,1,150,1,150,
        1,150,3,150,2532,8,150,1,151,1,151,1,152,1,152,3,152,2538,8,152,
        1,152,1,152,3,152,2542,8,152,1,153,1,153,1,153,1,153,3,153,2548,
        8,153,1,154,1,154,3,154,2552,8,154,1,155,1,155,1,155,1,156,1,156,
        1,156,1,156,1,156,1,157,1,157,3,157,2564,8,157,1,157,1,157,1,157,
        1,157,1,157,1,157,1,157,3,157,2573,8,157,1,158,1,158,1,158,1,158,
        1,158,1,158,1,158,1,158,1,158,3,158,2584,8,158,1,159,1,159,3,159,
        2588,8,159,1,160,1,160,1,160,5,160,2593,8,160,10,160,12,160,2596,
        9,160,1,161,1,161,1,161,1,161,1,162,1,162,1,162,5,162,2605,8,162,
        10,162,12,162,2608,9,162,1,163,1,163,1,164,1,164,3,164,2614,8,164,
        1,165,1,165,1,166,1,166,1,166,1,167,1,167,3,167,2623,8,167,1,167,
        3,167,2626,8,167,1,168,1,168,1,168,5,168,2631,8,168,10,168,12,168,
        2634,9,168,1,169,1,169,1,169,3,169,2639,8,169,1,170,1,170,1,171,
        1,171,3,171,2645,8,171,1,171,3,171,2648,8,171,1,171,3,171,2651,8,
        171,1,172,1,172,1,172,1,172,3,172,2657,8,172,1,173,1,173,3,173,2661,
        8,173,1,174,1,174,3,174,2665,8,174,1,175,1,175,1,175,3,175,2670,
        8,175,1,175,1,175,3,175,2674,8,175,1,176,1,176,3,176,2678,8,176,
        1,177,1,177,3,177,2682,8,177,1,177,1,177,1,177,1,177,1,177,1,177,
        3,177,2690,8,177,1,178,1,178,3,178,2694,8,178,1,178,1,178,3,178,
        2698,8,178,1,179,1,179,3,179,2702,8,179,1,180,1,180,3,180,2706,8,
        180,1,180,1,180,1,180,1,180,1,180,1,180,3,180,2714,8,180,1,181,1,
        181,3,181,2718,8,181,1,181,1,181,3,181,2722,8,181,1,182,1,182,1,
        182,1,182,1,182,1,182,3,182,2730,8,182,1,183,1,183,1,183,3,183,2735,
        8,183,1,184,1,184,1,184,3,184,2740,8,184,1,185,1,185,3,185,2744,
        8,185,1,186,1,186,3,186,2748,8,186,1,187,1,187,1,187,1,187,1,187,
        3,187,2755,8,187,1,188,1,188,1,189,1,189,1,189,5,189,2762,8,189,
        10,189,12,189,2765,9,189,1,190,1,190,1,190,1,190,1,190,3,190,2772,
        8,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,
        3,191,2784,8,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,
        1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,3,191,2802,8,191,
        1,191,3,191,2805,8,191,1,191,1,191,1,191,1,191,3,191,2811,8,191,
        1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,194,
        1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195,
        1,196,1,196,3,196,2837,8,196,1,197,3,197,2840,8,197,1,197,1,197,
        1,198,1,198,3,198,2846,8,198,1,199,1,199,1,199,1,199,5,199,2852,
        8,199,10,199,12,199,2855,9,199,1,200,1,200,1,200,1,200,1,200,3,200,
        2862,8,200,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201,
        5,201,2873,8,201,10,201,12,201,2876,9,201,1,202,1,202,1,202,1,202,
        3,202,2882,8,202,1,202,3,202,2885,8,202,1,202,3,202,2888,8,202,1,
        202,3,202,2891,8,202,1,202,3,202,2894,8,202,1,202,3,202,2897,8,202,
        1,202,3,202,2900,8,202,1,202,3,202,2903,8,202,1,202,3,202,2906,8,
        202,1,202,3,202,2909,8,202,1,202,3,202,2912,8,202,1,202,1,202,1,
        202,3,202,2917,8,202,1,202,3,202,2920,8,202,1,202,3,202,2923,8,202,
        1,202,3,202,2926,8,202,1,202,3,202,2929,8,202,1,202,3,202,2932,8,
        202,1,202,3,202,2935,8,202,1,202,3,202,2938,8,202,1,202,3,202,2941,
        8,202,1,202,3,202,2944,8,202,1,202,3,202,2947,8,202,3,202,2949,8,
        202,1,203,1,203,1,203,1,203,3,203,2955,8,203,1,204,1,204,3,204,2959,
        8,204,1,204,3,204,2962,8,204,1,204,3,204,2965,8,204,1,204,3,204,
        2968,8,204,1,204,3,204,2971,8,204,1,204,3,204,2974,8,204,1,204,1,
        204,1,204,1,204,1,204,3,204,2981,8,204,1,205,1,205,3,205,2985,8,
        205,1,205,3,205,2988,8,205,1,205,3,205,2991,8,205,1,205,3,205,2994,
        8,205,1,205,3,205,2997,8,205,1,205,3,205,3000,8,205,1,206,1,206,
        1,206,4,206,3005,8,206,11,206,12,206,3006,1,207,3,207,3010,8,207,
        1,207,1,207,1,208,1,208,1,208,1,208,3,208,3018,8,208,1,208,1,208,
        3,208,3022,8,208,1,208,1,208,1,208,1,208,1,208,3,208,3029,8,208,
        3,208,3031,8,208,1,209,3,209,3034,8,209,1,209,1,209,1,209,3,209,
        3039,8,209,1,209,3,209,3042,8,209,1,209,1,209,3,209,3046,8,209,1,
        210,1,210,1,210,3,210,3051,8,210,1,210,1,210,1,210,1,210,3,210,3057,
        8,210,1,211,1,211,1,211,1,211,3,211,3063,8,211,1,212,1,212,1,212,
        1,212,1,213,1,213,3,213,3071,8,213,1,214,1,214,1,214,1,214,5,214,
        3077,8,214,10,214,12,214,3080,9,214,1,215,1,215,1,215,1,215,3,215,
        3086,8,215,1,216,1,216,1,216,1,216,3,216,3092,8,216,1,217,1,217,
        1,217,1,217,1,217,5,217,3099,8,217,10,217,12,217,3102,9,217,3,217,
        3104,8,217,1,218,1,218,3,218,3108,8,218,1,219,1,219,1,219,1,220,
        1,220,1,220,1,220,1,221,1,221,1,222,1,222,3,222,3121,8,222,1,223,
        1,223,3,223,3125,8,223,1,224,1,224,1,224,1,224,1,225,1,225,1,225,
        4,225,3134,8,225,11,225,12,225,3135,1,226,1,226,1,226,4,226,3141,
        8,226,11,226,12,226,3142,1,227,1,227,3,227,3147,8,227,1,227,1,227,
        1,227,3,227,3152,8,227,1,227,3,227,3155,8,227,1,227,1,227,1,227,
        1,227,1,227,1,227,1,228,1,228,5,228,3165,8,228,10,228,12,228,3168,
        9,228,1,228,3,228,3171,8,228,1,229,1,229,1,229,1,229,1,229,3,229,
        3178,8,229,1,229,1,229,1,229,3,229,3183,8,229,1,229,1,229,1,229,
        1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,
        1,231,1,232,1,232,1,232,3,232,3203,8,232,1,233,1,233,1,233,4,233,
        3208,8,233,11,233,12,233,3209,1,234,1,234,1,234,1,234,1,235,1,235,
        1,235,1,236,1,236,1,236,1,237,1,237,1,237,1,238,1,238,1,238,1,238,
        1,238,1,238,1,238,1,238,3,238,3233,8,238,1,238,1,238,1,238,1,238,
        1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,3,238,
        3249,8,238,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,
        1,239,1,239,1,239,1,239,1,239,1,239,3,239,3266,8,239,1,239,1,239,
        1,239,1,239,3,239,3272,8,239,1,240,1,240,1,240,1,240,1,240,1,240,
        1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,3,240,3289,
        8,240,1,241,1,241,1,241,1,241,1,241,1,241,1,242,1,242,1,242,1,242,
        1,242,3,242,3302,8,242,1,243,1,243,3,243,3306,8,243,1,244,1,244,
        3,244,3310,8,244,1,245,1,245,1,246,1,246,1,246,3,246,3317,8,246,
        1,247,1,247,1,247,1,247,1,247,1,248,1,248,1,248,1,248,1,248,1,249,
        1,249,1,249,1,249,1,249,1,250,1,250,1,250,1,250,1,250,1,251,1,251,
        1,251,1,251,1,252,1,252,3,252,3345,8,252,1,252,1,252,1,252,1,252,
        1,252,3,252,3352,8,252,1,253,1,253,1,253,3,253,3357,8,253,1,254,
        1,254,1,254,3,254,3362,8,254,1,255,1,255,1,255,3,255,3367,8,255,
        1,255,1,255,1,255,3,255,3372,8,255,1,256,1,256,1,256,1,256,1,257,
        1,257,3,257,3380,8,257,1,257,1,257,1,257,1,257,3,257,3386,8,257,
        1,257,1,257,3,257,3390,8,257,1,257,3,257,3393,8,257,1,257,3,257,
        3396,8,257,1,258,1,258,1,258,1,258,3,258,3402,8,258,1,258,1,258,
        1,258,1,258,1,258,3,258,3409,8,258,1,259,1,259,1,259,1,259,1,259,
        1,260,1,260,1,260,3,260,3419,8,260,1,261,1,261,3,261,3423,8,261,
        1,261,4,261,3426,8,261,11,261,12,261,3427,1,262,1,262,3,262,3432,
        8,262,1,263,1,263,5,263,3436,8,263,10,263,12,263,3439,9,263,1,264,
        1,264,5,264,3443,8,264,10,264,12,264,3446,9,264,1,265,1,265,5,265,
        3450,8,265,10,265,12,265,3453,9,265,1,266,1,266,1,266,1,267,1,267,
        1,267,1,268,1,268,3,268,3463,8,268,1,268,1,268,1,268,1,268,1,268,
        5,268,3470,8,268,10,268,12,268,3473,9,268,1,268,3,268,3476,8,268,
        1,268,3,268,3479,8,268,1,268,3,268,3482,8,268,1,269,1,269,1,269,
        1,269,1,269,1,269,3,269,3490,8,269,1,269,3,269,3493,8,269,1,270,
        1,270,1,270,1,270,1,270,1,270,3,270,3501,8,270,1,270,3,270,3504,
        8,270,1,271,1,271,1,271,1,271,1,271,1,271,3,271,3512,8,271,1,271,
        1,271,3,271,3516,8,271,1,271,1,271,1,271,3,271,3521,8,271,1,272,
        1,272,3,272,3525,8,272,1,273,1,273,1,273,1,273,1,274,1,274,1,274,
        3,274,3534,8,274,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276,
        1,276,1,277,1,277,1,277,5,277,3548,8,277,10,277,12,277,3551,9,277,
        1,278,1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,280,1,280,1,280,
        1,280,3,280,3565,8,280,3,280,3567,8,280,1,281,1,281,1,281,1,281,
        1,281,1,281,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,3,283,
        3583,8,283,1,283,1,283,1,283,1,283,1,283,3,283,3590,8,283,1,284,
        1,284,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,287,1,287,1,287,
        1,288,1,288,1,288,3,288,3607,8,288,1,288,3,288,3610,8,288,1,288,
        3,288,3613,8,288,1,288,3,288,3616,8,288,1,288,1,288,1,288,1,288,
        3,288,3622,8,288,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290,
        1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,
        1,291,1,291,3,291,3645,8,291,1,291,1,291,1,292,1,292,1,292,1,292,
        3,292,3653,8,292,1,292,1,292,1,293,1,293,1,293,1,293,1,293,1,293,
        1,293,1,293,1,293,1,293,3,293,3667,8,293,1,293,3,293,3670,8,293,
        1,294,1,294,1,294,3,294,3675,8,294,1,295,1,295,1,295,1,295,1,295,
        1,296,1,296,1,296,1,296,1,296,1,297,1,297,1,297,1,297,1,297,1,298,
        1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,298,3,298,3701,8,298,
        1,299,1,299,3,299,3705,8,299,1,299,3,299,3708,8,299,1,299,3,299,
        3711,8,299,1,299,1,299,3,299,3715,8,299,1,299,1,299,1,299,3,299,
        3720,8,299,1,299,3,299,3723,8,299,1,299,3,299,3726,8,299,1,299,3,
        299,3729,8,299,1,299,3,299,3732,8,299,1,299,3,299,3735,8,299,1,299,
        1,299,1,299,1,299,3,299,3741,8,299,1,299,3,299,3744,8,299,1,299,
        3,299,3747,8,299,1,299,3,299,3750,8,299,1,299,3,299,3753,8,299,1,
        299,3,299,3756,8,299,1,299,3,299,3759,8,299,1,299,3,299,3762,8,299,
        1,299,3,299,3765,8,299,1,299,3,299,3768,8,299,1,299,1,299,3,299,
        3772,8,299,3,299,3774,8,299,1,299,1,299,1,299,1,299,3,299,3780,8,
        299,1,299,1,299,1,299,3,299,3785,8,299,1,299,3,299,3788,8,299,1,
        299,3,299,3791,8,299,1,299,3,299,3794,8,299,1,299,3,299,3797,8,299,
        1,299,1,299,1,299,1,299,3,299,3803,8,299,1,299,3,299,3806,8,299,
        1,299,3,299,3809,8,299,1,299,3,299,3812,8,299,1,299,3,299,3815,8,
        299,1,299,3,299,3818,8,299,1,299,3,299,3821,8,299,1,299,3,299,3824,
        8,299,1,299,3,299,3827,8,299,1,299,3,299,3830,8,299,1,299,1,299,
        3,299,3834,8,299,3,299,3836,8,299,3,299,3838,8,299,1,300,1,300,1,
        300,3,300,3843,8,300,1,300,1,300,3,300,3847,8,300,1,300,3,300,3850,
        8,300,1,300,3,300,3853,8,300,1,300,1,300,1,300,3,300,3858,8,300,
        1,301,1,301,1,301,1,302,1,302,1,302,1,303,1,303,1,303,1,304,1,304,
        1,304,1,304,1,305,1,305,1,305,3,305,3876,8,305,1,305,1,305,1,306,
        1,306,1,306,5,306,3883,8,306,10,306,12,306,3886,9,306,1,306,1,306,
        1,307,1,307,1,308,1,308,1,308,5,308,3895,8,308,10,308,12,308,3898,
        9,308,1,309,1,309,1,309,5,309,3903,8,309,10,309,12,309,3906,9,309,
        1,310,1,310,1,310,1,311,1,311,1,311,1,311,4,311,3915,8,311,11,311,
        12,311,3916,1,311,3,311,3920,8,311,1,312,1,312,5,312,3924,8,312,
        10,312,12,312,3927,9,312,1,312,1,312,5,312,3931,8,312,10,312,12,
        312,3934,9,312,1,312,1,312,5,312,3938,8,312,10,312,12,312,3941,9,
        312,1,312,1,312,5,312,3945,8,312,10,312,12,312,3948,9,312,1,312,
        1,312,1,312,1,312,3,312,3954,8,312,1,313,1,313,1,313,1,313,1,313,
        1,313,1,313,3,313,3963,8,313,5,313,3965,8,313,10,313,12,313,3968,
        9,313,1,314,1,314,1,314,1,314,3,314,3974,8,314,1,314,5,314,3977,
        8,314,10,314,12,314,3980,9,314,1,315,3,315,3983,8,315,1,315,1,315,
        1,315,1,316,1,316,1,316,1,316,1,317,1,317,1,318,1,318,1,318,1,318,
        1,318,3,318,3999,8,318,1,318,1,318,3,318,4003,8,318,3,318,4005,8,
        318,1,318,3,318,4008,8,318,1,319,1,319,1,319,1,319,1,319,1,319,1,
        319,1,319,1,319,5,319,4019,8,319,10,319,12,319,4022,9,319,3,319,
        4024,8,319,1,319,3,319,4027,8,319,1,319,1,319,1,319,1,319,1,319,
        1,319,1,319,1,319,5,319,4037,8,319,10,319,12,319,4040,9,319,3,319,
        4042,8,319,1,319,1,319,1,319,1,319,1,319,3,319,4049,8,319,1,319,
        1,319,1,319,1,319,1,319,5,319,4056,8,319,10,319,12,319,4059,9,319,
        1,319,1,319,3,319,4063,8,319,3,319,4065,8,319,3,319,4067,8,319,1,
        320,1,320,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,
        1,321,1,321,5,321,4082,8,321,10,321,12,321,4085,9,321,3,321,4087,
        8,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,3,322,4096,8,322,
        1,322,1,322,1,323,1,323,3,323,4102,8,323,1,324,1,324,3,324,4106,
        8,324,1,324,3,324,4109,8,324,1,324,3,324,4112,8,324,1,324,3,324,
        4115,8,324,1,324,3,324,4118,8,324,1,325,1,325,1,325,1,325,1,325,
        1,325,1,325,1,325,1,325,1,325,3,325,4130,8,325,1,326,1,326,3,326,
        4134,8,326,1,326,3,326,4137,8,326,1,326,3,326,4140,8,326,1,327,1,
        327,1,328,1,328,1,329,1,329,3,329,4148,8,329,1,330,1,330,1,330,1,
        330,1,330,3,330,4155,8,330,1,330,3,330,4158,8,330,1,331,1,331,1,
        331,1,331,1,331,3,331,4165,8,331,1,331,3,331,4168,8,331,1,332,1,
        332,1,332,3,332,4173,8,332,1,332,1,332,1,333,1,333,1,333,3,333,4180,
        8,333,1,333,1,333,1,334,1,334,1,334,1,334,3,334,4188,8,334,1,334,
        1,334,1,335,1,335,3,335,4194,8,335,1,335,1,335,1,335,3,335,4199,
        8,335,1,335,1,335,3,335,4203,8,335,1,336,1,336,1,336,3,336,4208,
        8,336,1,337,1,337,1,337,1,337,1,337,3,337,4215,8,337,1,337,1,337,
        1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,5,337,4227,8,337,
        10,337,12,337,4230,9,337,3,337,4232,8,337,1,337,1,337,3,337,4236,
        8,337,1,338,1,338,1,338,1,339,1,339,1,340,1,340,1,341,1,341,1,341,
        1,342,1,342,1,342,5,342,4251,8,342,10,342,12,342,4254,9,342,1,342,
        1,342,1,342,5,342,4259,8,342,10,342,12,342,4262,9,342,3,342,4264,
        8,342,1,343,1,343,1,344,1,344,1,344,1,344,1,345,1,345,1,345,1,345,
        1,345,3,345,4277,8,345,1,345,1,345,1,345,1,345,1,345,5,345,4284,
        8,345,10,345,12,345,4287,9,345,3,345,4289,8,345,1,345,1,345,1,346,
        1,346,3,346,4295,8,346,1,346,3,346,4298,8,346,1,346,1,346,1,346,
        3,346,4303,8,346,1,346,3,346,4306,8,346,1,347,1,347,1,348,1,348,
        1,348,5,348,4313,8,348,10,348,12,348,4316,9,348,1,349,1,349,1,349,
        1,349,1,349,1,349,1,349,1,349,1,349,1,349,1,349,3,349,4329,8,349,
        1,349,1,349,1,349,1,349,3,349,4335,8,349,3,349,4337,8,349,1,349,
        1,349,1,349,1,350,1,350,1,350,3,350,4345,8,350,1,350,3,350,4348,
        8,350,1,350,1,350,1,350,1,350,1,350,1,350,5,350,4356,8,350,10,350,
        12,350,4359,9,350,1,350,1,350,3,350,4363,8,350,3,350,4365,8,350,
        1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,3,351,
        4377,8,351,1,351,1,351,1,351,1,351,3,351,4383,8,351,3,351,4385,8,
        351,1,351,1,351,1,351,1,352,1,352,3,352,4392,8,352,1,353,1,353,1,
        353,5,353,4397,8,353,10,353,12,353,4400,9,353,1,354,1,354,1,354,
        1,354,5,354,4406,8,354,10,354,12,354,4409,9,354,1,355,1,355,1,355,
        1,355,1,356,1,356,1,356,3,356,4418,8,356,1,356,3,356,4421,8,356,
        1,356,3,356,4424,8,356,1,356,3,356,4427,8,356,1,357,1,357,3,357,
        4431,8,357,1,358,1,358,1,358,1,358,1,358,1,358,1,358,3,358,4440,
        8,358,1,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,4449,8,359,
        1,360,1,360,1,360,1,360,1,360,1,360,3,360,4457,8,360,1,361,1,361,
        1,361,1,361,3,361,4463,8,361,1,362,1,362,1,362,1,362,1,363,1,363,
        1,363,1,363,3,363,4473,8,363,1,364,1,364,1,364,1,365,1,365,3,365,
        4480,8,365,1,365,1,365,1,365,1,365,5,365,4486,8,365,10,365,12,365,
        4489,9,365,1,365,1,365,1,366,1,366,1,366,1,366,1,366,3,366,4498,
        8,366,1,366,1,366,1,366,1,366,1,366,1,366,5,366,4506,8,366,10,366,
        12,366,4509,9,366,1,366,1,366,3,366,4513,8,366,1,367,1,367,3,367,
        4517,8,367,1,368,1,368,3,368,4521,8,368,1,368,1,368,5,368,4525,8,
        368,10,368,12,368,4528,9,368,1,368,1,368,1,369,1,369,1,370,1,370,
        1,370,1,371,1,371,1,371,1,372,1,372,1,373,1,373,1,373,1,373,1,374,
        1,374,3,374,4548,8,374,1,375,1,375,4,375,4552,8,375,11,375,12,375,
        4553,1,376,1,376,3,376,4558,8,376,1,377,1,377,3,377,4562,8,377,1,
        377,3,377,4565,8,377,1,377,1,377,5,377,4569,8,377,10,377,12,377,
        4572,9,377,1,378,1,378,3,378,4576,8,378,1,378,3,378,4579,8,378,1,
        379,1,379,3,379,4583,8,379,1,380,1,380,1,380,1,380,5,380,4589,8,
        380,10,380,12,380,4592,9,380,1,380,1,380,1,381,1,381,1,381,5,381,
        4599,8,381,10,381,12,381,4602,9,381,1,382,1,382,1,382,1,382,1,382,
        5,382,4609,8,382,10,382,12,382,4612,9,382,1,383,1,383,1,383,1,383,
        1,384,1,384,1,384,1,384,1,385,1,385,1,385,1,385,1,386,1,386,1,386,
        1,386,3,386,4630,8,386,1,387,1,387,1,387,1,387,1,387,3,387,4637,
        8,387,1,387,3,387,4640,8,387,1,387,1,387,1,387,1,387,1,388,1,388,
        1,388,1,388,1,388,3,388,4651,8,388,1,388,1,388,1,388,5,388,4656,
        8,388,10,388,12,388,4659,9,388,3,388,4661,8,388,3,388,4663,8,388,
        1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,3,388,4674,
        8,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,3,388,4684,
        8,388,3,388,4686,8,388,1,389,1,389,1,389,1,389,3,389,4692,8,389,
        1,390,1,390,1,391,1,391,3,391,4698,8,391,1,392,1,392,3,392,4702,
        8,392,1,393,1,393,1,394,1,394,3,394,4708,8,394,1,395,1,395,1,395,
        1,395,1,395,1,395,1,395,3,395,4717,8,395,1,395,1,395,1,396,1,396,
        1,396,1,396,1,396,1,396,1,396,4,396,4728,8,396,11,396,12,396,4729,
        1,396,1,396,3,396,4734,8,396,1,396,1,396,1,397,1,397,1,397,1,397,
        1,397,1,397,4,397,4744,8,397,11,397,12,397,4745,1,397,1,397,3,397,
        4750,8,397,1,397,1,397,1,398,1,398,1,398,1,398,1,398,3,398,4759,
        8,398,1,398,1,398,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,
        3,399,4771,8,399,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,401,
        1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401,4788,8,401,1,402,
        1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,
        1,402,3,402,4803,8,402,1,403,1,403,1,404,1,404,1,405,1,405,4,405,
        4811,8,405,11,405,12,405,4812,1,406,1,406,1,406,1,407,1,407,1,407,
        3,407,4821,8,407,1,408,1,408,1,408,3,408,4826,8,408,1,409,1,409,
        1,409,1,410,1,410,1,411,1,411,1,411,1,412,1,412,1,412,1,412,1,412,
        1,412,1,412,1,412,1,412,1,412,1,412,3,412,4847,8,412,1,412,1,412,
        3,412,4851,8,412,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413,
        1,413,1,413,1,413,1,413,1,413,1,413,3,413,4867,8,413,1,414,1,414,
        1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,
        3,415,4882,8,415,1,416,1,416,1,416,1,416,1,416,1,416,1,416,5,416,
        4891,8,416,10,416,12,416,4894,9,416,1,417,1,417,1,418,5,418,4899,
        8,418,10,418,12,418,4902,9,418,1,418,1,418,1,419,1,419,1,420,1,420,
        1,420,1,420,5,420,4912,8,420,10,420,12,420,4915,9,420,1,421,1,421,
        1,422,1,422,1,422,1,422,5,422,4923,8,422,10,422,12,422,4926,9,422,
        1,423,1,423,1,424,1,424,1,424,1,424,5,424,4934,8,424,10,424,12,424,
        4937,9,424,1,425,1,425,1,426,1,426,1,426,1,426,5,426,4945,8,426,
        10,426,12,426,4948,9,426,1,427,1,427,1,428,1,428,1,428,1,428,5,428,
        4956,8,428,10,428,12,428,4959,9,428,1,429,1,429,1,430,1,430,1,430,
        1,430,5,430,4967,8,430,10,430,12,430,4970,9,430,1,431,1,431,1,432,
        1,432,1,432,1,432,1,432,3,432,4979,8,432,1,433,1,433,1,433,1,433,
        1,434,1,434,1,434,3,434,4988,8,434,1,435,1,435,3,435,4992,8,435,
        1,436,1,436,1,436,1,436,1,436,1,436,3,436,5000,8,436,1,437,1,437,
        1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437,3,437,5013,
        8,437,1,438,1,438,1,438,1,438,1,439,1,439,1,440,1,440,3,440,5023,
        8,440,1,441,1,441,1,441,1,441,3,441,5029,8,441,1,442,1,442,1,442,
        1,442,1,443,1,443,1,443,1,443,1,443,1,443,1,443,3,443,5042,8,443,
        1,444,1,444,1,444,1,444,1,444,1,444,1,444,5,444,5051,8,444,10,444,
        12,444,5054,9,444,1,445,1,445,1,445,1,445,1,445,1,445,1,445,1,445,
        1,445,1,445,1,445,1,445,3,445,5068,8,445,1,446,1,446,1,446,3,446,
        5073,8,446,1,447,1,447,1,448,5,448,5078,8,448,10,448,12,448,5081,
        9,448,1,448,1,448,1,449,1,449,1,450,1,450,1,450,1,450,5,450,5091,
        8,450,10,450,12,450,5094,9,450,1,451,1,451,1,452,1,452,1,452,1,452,
        5,452,5102,8,452,10,452,12,452,5105,9,452,1,453,1,453,1,454,1,454,
        1,455,1,455,3,455,5113,8,455,1,456,1,456,1,456,1,456,1,456,5,456,
        5120,8,456,10,456,12,456,5123,9,456,1,456,1,456,1,457,1,457,1,457,
        3,457,5130,8,457,1,458,1,458,1,458,1,458,5,458,5136,8,458,10,458,
        12,458,5139,9,458,1,458,1,458,1,459,1,459,1,459,1,459,1,460,1,460,
        3,460,5149,8,460,1,461,1,461,1,462,1,462,1,463,1,463,3,463,5157,
        8,463,1,464,1,464,1,464,3,464,5162,8,464,1,465,1,465,1,466,1,466,
        1,467,1,467,1,468,1,468,1,468,1,469,1,469,1,469,5,469,5176,8,469,
        10,469,12,469,5179,9,469,1,470,1,470,1,470,1,470,1,470,3,470,5186,
        8,470,1,471,1,471,1,472,1,472,1,472,5,472,5193,8,472,10,472,12,472,
        5196,9,472,1,473,1,473,1,474,1,474,1,474,1,474,1,474,1,475,1,475,
        1,475,1,475,1,475,1,476,1,476,1,476,5,476,5213,8,476,10,476,12,476,
        5216,9,476,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,1,477,
        1,477,1,477,1,477,1,477,1,477,3,477,5232,8,477,1,478,1,478,1,478,
        1,478,1,478,1,478,1,478,3,478,5241,8,478,1,479,1,479,1,479,5,479,
        5246,8,479,10,479,12,479,5249,9,479,1,480,1,480,1,480,3,480,5254,
        8,480,1,481,1,481,1,481,5,481,5259,8,481,10,481,12,481,5262,9,481,
        1,482,1,482,1,482,1,482,3,482,5268,8,482,1,482,1,482,1,482,1,482,
        1,482,1,482,1,482,3,482,5277,8,482,3,482,5279,8,482,1,483,1,483,
        1,483,1,484,1,484,3,484,5286,8,484,1,485,1,485,1,486,1,486,1,487,
        1,487,1,488,1,488,1,489,1,489,1,490,1,490,1,491,1,491,1,492,1,492,
        1,493,1,493,1,494,1,494,1,495,1,495,1,496,1,496,1,496,1,496,1,496,
        1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,3,496,
        5325,8,496,1,496,1,496,3,496,5329,8,496,3,496,5331,8,496,1,497,1,
        497,3,497,5335,8,497,1,497,1,497,1,497,1,498,1,498,1,498,1,498,1,
        498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,3,498,5352,8,498,1,
        499,1,499,1,499,1,499,3,499,5358,8,499,1,499,1,499,1,500,1,500,1,
        500,5,500,5365,8,500,10,500,12,500,5368,9,500,1,501,1,501,1,502,
        1,502,1,502,1,503,1,503,1,503,5,503,5378,8,503,10,503,12,503,5381,
        9,503,1,504,1,504,1,504,5,504,5386,8,504,10,504,12,504,5389,9,504,
        1,505,1,505,1,505,1,505,1,506,1,506,1,507,1,507,1,508,1,508,1,508,
        1,508,3,508,5403,8,508,1,509,1,509,1,509,1,510,1,510,1,510,1,510,
        1,510,1,510,1,510,1,510,1,510,1,510,1,511,1,511,1,511,1,511,1,511,
        1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,511,3,511,5432,
        8,511,1,511,1,511,1,511,3,511,5437,8,511,3,511,5439,8,511,1,512,
        1,512,1,512,1,512,1,512,1,512,1,513,1,513,1,513,1,513,1,513,1,513,
        1,513,1,513,1,513,1,513,1,513,1,513,3,513,5459,8,513,1,514,1,514,
        1,514,5,514,5464,8,514,10,514,12,514,5467,9,514,1,515,1,515,1,515,
        1,515,1,515,1,515,1,515,1,515,1,516,1,516,1,516,1,516,1,516,1,516,
        1,516,1,516,1,516,1,516,1,516,1,516,3,516,5489,8,516,1,517,1,517,
        1,517,1,517,1,517,1,517,1,518,1,518,1,518,1,518,1,518,1,518,1,518,
        1,518,1,518,3,518,5506,8,518,1,518,1,518,1,518,3,518,5511,8,518,
        1,519,1,519,1,519,1,519,1,519,1,519,1,519,1,519,1,519,3,519,5522,
        8,519,1,519,1,519,1,519,3,519,5527,8,519,1,520,1,520,1,520,1,520,
        1,520,1,520,1,520,1,520,0,0,521,0,2,4,6,8,10,12,14,16,18,20,22,24,
        26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,
        70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,
        110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,
        142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,
        174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,
        206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,
        238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,
        270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,
        302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,
        334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,
        366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,
        398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,
        430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,
        462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,
        494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,
        526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,
        558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,
        590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,
        622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,
        654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,
        686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,
        718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,
        750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,
        782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,
        814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,
        846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,
        878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,
        910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,
        942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,
        974,976,978,980,982,984,986,988,990,992,994,996,998,1000,1002,1004,
        1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,
        1032,1034,1036,1038,1040,0,56,2,0,57,57,172,172,4,0,91,91,121,121,
        226,226,325,325,2,0,34,34,282,282,1,0,89,90,2,0,139,139,154,154,
        2,0,67,67,295,295,2,0,68,68,296,296,1,0,155,156,2,0,114,114,307,
        307,11,0,7,7,9,9,58,58,86,86,101,101,155,155,161,161,190,190,299,
        299,309,309,365,365,3,0,4,4,101,101,326,326,3,0,15,15,128,128,170,
        170,1,0,141,142,2,0,30,30,351,351,2,0,217,217,373,373,2,0,214,214,
        272,272,2,0,18,18,89,89,2,0,130,130,177,177,2,0,39,39,376,376,4,
        0,112,112,164,164,205,205,356,356,2,0,7,7,96,96,2,0,225,225,391,
        391,2,0,189,189,196,196,2,0,42,42,315,315,2,0,426,426,431,431,2,
        0,140,140,285,285,3,0,12,12,231,231,300,300,2,0,241,241,292,292,
        2,0,198,198,268,268,2,0,354,354,431,431,2,0,133,133,247,247,3,0,
        413,414,418,418,420,420,2,0,412,412,415,417,1,0,413,414,3,0,184,
        184,270,270,286,286,2,0,7,7,13,13,3,0,7,7,13,13,313,313,2,0,125,
        125,350,350,2,0,405,405,407,411,24,0,11,11,16,16,25,28,35,35,100,
        100,131,132,151,151,154,154,162,163,184,184,198,198,216,216,228,
        228,264,264,270,270,286,286,311,311,323,324,340,340,357,357,383,
        383,405,417,419,421,423,423,85,0,1,6,8,8,10,10,15,15,18,20,22,24,
        30,31,33,34,37,38,40,44,46,47,49,50,52,53,56,57,59,59,66,66,68,68,
        72,77,79,79,83,85,87,89,91,95,97,99,103,104,106,107,109,111,114,
        116,118,121,127,130,137,138,142,142,147,150,152,152,155,156,158,
        160,168,170,172,177,182,183,185,187,189,193,195,197,199,202,204,
        204,206,209,211,212,214,215,217,218,220,220,222,223,226,227,232,
        233,235,236,238,240,243,246,252,252,254,255,257,259,261,262,265,
        267,271,282,284,284,287,288,293,298,300,303,305,310,312,312,314,
        317,319,325,327,328,330,330,332,334,339,340,342,342,344,346,349,
        349,352,353,355,355,357,357,360,364,366,368,371,373,375,375,377,
        382,385,385,388,394,13,0,16,16,26,28,63,64,71,71,100,100,131,131,
        145,145,151,151,162,163,198,198,264,264,311,311,337,337,4,0,199,
        199,242,242,300,300,322,322,2,0,213,213,431,432,1,0,106,107,1,0,
        94,95,1,0,392,393,1,0,208,209,1,0,381,382,1,0,73,74,1,0,148,149,
        1,0,206,207,1,0,297,298,1,0,80,82,2,0,4,4,101,101,3,0,14,14,144,
        144,369,369,5939,0,1045,1,0,0,0,2,1052,1,0,0,0,4,1057,1,0,0,0,6,
        1091,1,0,0,0,8,1093,1,0,0,0,10,1095,1,0,0,0,12,1111,1,0,0,0,14,1113,
        1,0,0,0,16,1129,1,0,0,0,18,1132,1,0,0,0,20,1141,1,0,0,0,22,1149,
        1,0,0,0,24,1162,1,0,0,0,26,1173,1,0,0,0,28,1178,1,0,0,0,30,1189,
        1,0,0,0,32,1193,1,0,0,0,34,1201,1,0,0,0,36,1206,1,0,0,0,38,1260,
        1,0,0,0,40,1262,1,0,0,0,42,1265,1,0,0,0,44,1267,1,0,0,0,46,1271,
        1,0,0,0,48,1273,1,0,0,0,50,1276,1,0,0,0,52,1279,1,0,0,0,54,1283,
        1,0,0,0,56,1325,1,0,0,0,58,1327,1,0,0,0,60,1330,1,0,0,0,62,1333,
        1,0,0,0,64,1337,1,0,0,0,66,1345,1,0,0,0,68,1348,1,0,0,0,70,1351,
        1,0,0,0,72,1360,1,0,0,0,74,1363,1,0,0,0,76,1378,1,0,0,0,78,1390,
        1,0,0,0,80,1395,1,0,0,0,82,1415,1,0,0,0,84,1419,1,0,0,0,86,1426,
        1,0,0,0,88,1451,1,0,0,0,90,1468,1,0,0,0,92,1470,1,0,0,0,94,1665,
        1,0,0,0,96,1675,1,0,0,0,98,1677,1,0,0,0,100,1685,1,0,0,0,102,1690,
        1,0,0,0,104,1692,1,0,0,0,106,1698,1,0,0,0,108,1702,1,0,0,0,110,1706,
        1,0,0,0,112,1710,1,0,0,0,114,1720,1,0,0,0,116,1731,1,0,0,0,118,1748,
        1,0,0,0,120,1766,1,0,0,0,122,1771,1,0,0,0,124,1774,1,0,0,0,126,1778,
        1,0,0,0,128,1785,1,0,0,0,130,1794,1,0,0,0,132,1800,1,0,0,0,134,1802,
        1,0,0,0,136,1819,1,0,0,0,138,1841,1,0,0,0,140,1843,1,0,0,0,142,1851,
        1,0,0,0,144,1858,1,0,0,0,146,1860,1,0,0,0,148,1874,1,0,0,0,150,1881,
        1,0,0,0,152,1883,1,0,0,0,154,1887,1,0,0,0,156,1891,1,0,0,0,158,1895,
        1,0,0,0,160,1899,1,0,0,0,162,1912,1,0,0,0,164,1920,1,0,0,0,166,1923,
        1,0,0,0,168,1925,1,0,0,0,170,1937,1,0,0,0,172,1947,1,0,0,0,174,1950,
        1,0,0,0,176,1961,1,0,0,0,178,1969,1,0,0,0,180,2013,1,0,0,0,182,2022,
        1,0,0,0,184,2049,1,0,0,0,186,2062,1,0,0,0,188,2064,1,0,0,0,190,2070,
        1,0,0,0,192,2073,1,0,0,0,194,2079,1,0,0,0,196,2085,1,0,0,0,198,2092,
        1,0,0,0,200,2126,1,0,0,0,202,2134,1,0,0,0,204,2147,1,0,0,0,206,2152,
        1,0,0,0,208,2163,1,0,0,0,210,2180,1,0,0,0,212,2182,1,0,0,0,214,2187,
        1,0,0,0,216,2194,1,0,0,0,218,2196,1,0,0,0,220,2199,1,0,0,0,222,2202,
        1,0,0,0,224,2216,1,0,0,0,226,2224,1,0,0,0,228,2232,1,0,0,0,230,2240,
        1,0,0,0,232,2260,1,0,0,0,234,2262,1,0,0,0,236,2279,1,0,0,0,238,2284,
        1,0,0,0,240,2298,1,0,0,0,242,2300,1,0,0,0,244,2303,1,0,0,0,246,2306,
        1,0,0,0,248,2315,1,0,0,0,250,2335,1,0,0,0,252,2337,1,0,0,0,254,2340,
        1,0,0,0,256,2360,1,0,0,0,258,2362,1,0,0,0,260,2366,1,0,0,0,262,2368,
        1,0,0,0,264,2377,1,0,0,0,266,2383,1,0,0,0,268,2389,1,0,0,0,270,2394,
        1,0,0,0,272,2440,1,0,0,0,274,2442,1,0,0,0,276,2445,1,0,0,0,278,2453,
        1,0,0,0,280,2461,1,0,0,0,282,2469,1,0,0,0,284,2486,1,0,0,0,286,2488,
        1,0,0,0,288,2490,1,0,0,0,290,2503,1,0,0,0,292,2511,1,0,0,0,294,2520,
        1,0,0,0,296,2524,1,0,0,0,298,2526,1,0,0,0,300,2531,1,0,0,0,302,2533,
        1,0,0,0,304,2537,1,0,0,0,306,2543,1,0,0,0,308,2551,1,0,0,0,310,2553,
        1,0,0,0,312,2556,1,0,0,0,314,2563,1,0,0,0,316,2574,1,0,0,0,318,2587,
        1,0,0,0,320,2589,1,0,0,0,322,2597,1,0,0,0,324,2601,1,0,0,0,326,2609,
        1,0,0,0,328,2613,1,0,0,0,330,2615,1,0,0,0,332,2617,1,0,0,0,334,2620,
        1,0,0,0,336,2627,1,0,0,0,338,2635,1,0,0,0,340,2640,1,0,0,0,342,2644,
        1,0,0,0,344,2652,1,0,0,0,346,2660,1,0,0,0,348,2664,1,0,0,0,350,2666,
        1,0,0,0,352,2677,1,0,0,0,354,2681,1,0,0,0,356,2693,1,0,0,0,358,2701,
        1,0,0,0,360,2705,1,0,0,0,362,2717,1,0,0,0,364,2729,1,0,0,0,366,2734,
        1,0,0,0,368,2739,1,0,0,0,370,2741,1,0,0,0,372,2745,1,0,0,0,374,2749,
        1,0,0,0,376,2756,1,0,0,0,378,2758,1,0,0,0,380,2771,1,0,0,0,382,2810,
        1,0,0,0,384,2812,1,0,0,0,386,2817,1,0,0,0,388,2822,1,0,0,0,390,2829,
        1,0,0,0,392,2834,1,0,0,0,394,2839,1,0,0,0,396,2845,1,0,0,0,398,2847,
        1,0,0,0,400,2856,1,0,0,0,402,2868,1,0,0,0,404,2948,1,0,0,0,406,2954,
        1,0,0,0,408,2980,1,0,0,0,410,2982,1,0,0,0,412,3004,1,0,0,0,414,3009,
        1,0,0,0,416,3013,1,0,0,0,418,3045,1,0,0,0,420,3047,1,0,0,0,422,3058,
        1,0,0,0,424,3064,1,0,0,0,426,3070,1,0,0,0,428,3072,1,0,0,0,430,3081,
        1,0,0,0,432,3091,1,0,0,0,434,3093,1,0,0,0,436,3107,1,0,0,0,438,3109,
        1,0,0,0,440,3112,1,0,0,0,442,3116,1,0,0,0,444,3118,1,0,0,0,446,3122,
        1,0,0,0,448,3126,1,0,0,0,450,3130,1,0,0,0,452,3137,1,0,0,0,454,3144,
        1,0,0,0,456,3166,1,0,0,0,458,3172,1,0,0,0,460,3187,1,0,0,0,462,3194,
        1,0,0,0,464,3202,1,0,0,0,466,3204,1,0,0,0,468,3211,1,0,0,0,470,3215,
        1,0,0,0,472,3218,1,0,0,0,474,3221,1,0,0,0,476,3224,1,0,0,0,478,3271,
        1,0,0,0,480,3288,1,0,0,0,482,3290,1,0,0,0,484,3301,1,0,0,0,486,3305,
        1,0,0,0,488,3309,1,0,0,0,490,3311,1,0,0,0,492,3316,1,0,0,0,494,3318,
        1,0,0,0,496,3323,1,0,0,0,498,3328,1,0,0,0,500,3333,1,0,0,0,502,3338,
        1,0,0,0,504,3344,1,0,0,0,506,3353,1,0,0,0,508,3358,1,0,0,0,510,3371,
        1,0,0,0,512,3373,1,0,0,0,514,3377,1,0,0,0,516,3397,1,0,0,0,518,3410,
        1,0,0,0,520,3418,1,0,0,0,522,3420,1,0,0,0,524,3429,1,0,0,0,526,3433,
        1,0,0,0,528,3440,1,0,0,0,530,3447,1,0,0,0,532,3454,1,0,0,0,534,3457,
        1,0,0,0,536,3460,1,0,0,0,538,3492,1,0,0,0,540,3503,1,0,0,0,542,3520,
        1,0,0,0,544,3522,1,0,0,0,546,3526,1,0,0,0,548,3533,1,0,0,0,550,3535,
        1,0,0,0,552,3540,1,0,0,0,554,3544,1,0,0,0,556,3552,1,0,0,0,558,3556,
        1,0,0,0,560,3566,1,0,0,0,562,3568,1,0,0,0,564,3574,1,0,0,0,566,3578,
        1,0,0,0,568,3591,1,0,0,0,570,3593,1,0,0,0,572,3597,1,0,0,0,574,3600,
        1,0,0,0,576,3603,1,0,0,0,578,3623,1,0,0,0,580,3627,1,0,0,0,582,3634,
        1,0,0,0,584,3648,1,0,0,0,586,3669,1,0,0,0,588,3674,1,0,0,0,590,3676,
        1,0,0,0,592,3681,1,0,0,0,594,3686,1,0,0,0,596,3700,1,0,0,0,598,3837,
        1,0,0,0,600,3839,1,0,0,0,602,3859,1,0,0,0,604,3862,1,0,0,0,606,3865,
        1,0,0,0,608,3868,1,0,0,0,610,3872,1,0,0,0,612,3884,1,0,0,0,614,3889,
        1,0,0,0,616,3891,1,0,0,0,618,3899,1,0,0,0,620,3907,1,0,0,0,622,3919,
        1,0,0,0,624,3953,1,0,0,0,626,3955,1,0,0,0,628,3973,1,0,0,0,630,3982,
        1,0,0,0,632,3987,1,0,0,0,634,3991,1,0,0,0,636,4007,1,0,0,0,638,4066,
        1,0,0,0,640,4068,1,0,0,0,642,4070,1,0,0,0,644,4090,1,0,0,0,646,4101,
        1,0,0,0,648,4103,1,0,0,0,650,4119,1,0,0,0,652,4131,1,0,0,0,654,4141,
        1,0,0,0,656,4143,1,0,0,0,658,4147,1,0,0,0,660,4157,1,0,0,0,662,4167,
        1,0,0,0,664,4172,1,0,0,0,666,4179,1,0,0,0,668,4183,1,0,0,0,670,4202,
        1,0,0,0,672,4207,1,0,0,0,674,4209,1,0,0,0,676,4237,1,0,0,0,678,4240,
        1,0,0,0,680,4242,1,0,0,0,682,4244,1,0,0,0,684,4263,1,0,0,0,686,4265,
        1,0,0,0,688,4267,1,0,0,0,690,4271,1,0,0,0,692,4305,1,0,0,0,694,4307,
        1,0,0,0,696,4309,1,0,0,0,698,4317,1,0,0,0,700,4364,1,0,0,0,702,4366,
        1,0,0,0,704,4391,1,0,0,0,706,4393,1,0,0,0,708,4401,1,0,0,0,710,4410,
        1,0,0,0,712,4426,1,0,0,0,714,4430,1,0,0,0,716,4432,1,0,0,0,718,4441,
        1,0,0,0,720,4456,1,0,0,0,722,4462,1,0,0,0,724,4464,1,0,0,0,726,4472,
        1,0,0,0,728,4474,1,0,0,0,730,4479,1,0,0,0,732,4492,1,0,0,0,734,4516,
        1,0,0,0,736,4518,1,0,0,0,738,4531,1,0,0,0,740,4533,1,0,0,0,742,4536,
        1,0,0,0,744,4539,1,0,0,0,746,4541,1,0,0,0,748,4545,1,0,0,0,750,4551,
        1,0,0,0,752,4557,1,0,0,0,754,4559,1,0,0,0,756,4573,1,0,0,0,758,4582,
        1,0,0,0,760,4584,1,0,0,0,762,4595,1,0,0,0,764,4603,1,0,0,0,766,4613,
        1,0,0,0,768,4617,1,0,0,0,770,4621,1,0,0,0,772,4625,1,0,0,0,774,4631,
        1,0,0,0,776,4685,1,0,0,0,778,4691,1,0,0,0,780,4693,1,0,0,0,782,4697,
        1,0,0,0,784,4701,1,0,0,0,786,4703,1,0,0,0,788,4707,1,0,0,0,790,4709,
        1,0,0,0,792,4720,1,0,0,0,794,4737,1,0,0,0,796,4753,1,0,0,0,798,4770,
        1,0,0,0,800,4772,1,0,0,0,802,4787,1,0,0,0,804,4802,1,0,0,0,806,4804,
        1,0,0,0,808,4806,1,0,0,0,810,4808,1,0,0,0,812,4814,1,0,0,0,814,4820,
        1,0,0,0,816,4825,1,0,0,0,818,4827,1,0,0,0,820,4830,1,0,0,0,822,4832,
        1,0,0,0,824,4850,1,0,0,0,826,4866,1,0,0,0,828,4868,1,0,0,0,830,4881,
        1,0,0,0,832,4883,1,0,0,0,834,4895,1,0,0,0,836,4900,1,0,0,0,838,4905,
        1,0,0,0,840,4907,1,0,0,0,842,4916,1,0,0,0,844,4918,1,0,0,0,846,4927,
        1,0,0,0,848,4929,1,0,0,0,850,4938,1,0,0,0,852,4940,1,0,0,0,854,4949,
        1,0,0,0,856,4951,1,0,0,0,858,4960,1,0,0,0,860,4962,1,0,0,0,862,4971,
        1,0,0,0,864,4978,1,0,0,0,866,4980,1,0,0,0,868,4987,1,0,0,0,870,4989,
        1,0,0,0,872,4999,1,0,0,0,874,5012,1,0,0,0,876,5014,1,0,0,0,878,5018,
        1,0,0,0,880,5022,1,0,0,0,882,5028,1,0,0,0,884,5030,1,0,0,0,886,5041,
        1,0,0,0,888,5043,1,0,0,0,890,5067,1,0,0,0,892,5069,1,0,0,0,894,5074,
        1,0,0,0,896,5079,1,0,0,0,898,5084,1,0,0,0,900,5086,1,0,0,0,902,5095,
        1,0,0,0,904,5097,1,0,0,0,906,5106,1,0,0,0,908,5108,1,0,0,0,910,5110,
        1,0,0,0,912,5114,1,0,0,0,914,5126,1,0,0,0,916,5131,1,0,0,0,918,5142,
        1,0,0,0,920,5148,1,0,0,0,922,5150,1,0,0,0,924,5152,1,0,0,0,926,5156,
        1,0,0,0,928,5158,1,0,0,0,930,5163,1,0,0,0,932,5165,1,0,0,0,934,5167,
        1,0,0,0,936,5169,1,0,0,0,938,5172,1,0,0,0,940,5180,1,0,0,0,942,5187,
        1,0,0,0,944,5189,1,0,0,0,946,5197,1,0,0,0,948,5199,1,0,0,0,950,5204,
        1,0,0,0,952,5209,1,0,0,0,954,5231,1,0,0,0,956,5240,1,0,0,0,958,5242,
        1,0,0,0,960,5253,1,0,0,0,962,5255,1,0,0,0,964,5263,1,0,0,0,966,5280,
        1,0,0,0,968,5283,1,0,0,0,970,5287,1,0,0,0,972,5289,1,0,0,0,974,5291,
        1,0,0,0,976,5293,1,0,0,0,978,5295,1,0,0,0,980,5297,1,0,0,0,982,5299,
        1,0,0,0,984,5301,1,0,0,0,986,5303,1,0,0,0,988,5305,1,0,0,0,990,5307,
        1,0,0,0,992,5309,1,0,0,0,994,5334,1,0,0,0,996,5339,1,0,0,0,998,5353,
        1,0,0,0,1000,5361,1,0,0,0,1002,5369,1,0,0,0,1004,5371,1,0,0,0,1006,
        5374,1,0,0,0,1008,5382,1,0,0,0,1010,5390,1,0,0,0,1012,5394,1,0,0,
        0,1014,5396,1,0,0,0,1016,5402,1,0,0,0,1018,5404,1,0,0,0,1020,5407,
        1,0,0,0,1022,5417,1,0,0,0,1024,5440,1,0,0,0,1026,5458,1,0,0,0,1028,
        5460,1,0,0,0,1030,5468,1,0,0,0,1032,5476,1,0,0,0,1034,5490,1,0,0,
        0,1036,5496,1,0,0,0,1038,5512,1,0,0,0,1040,5528,1,0,0,0,1042,1044,
        3,2,1,0,1043,1042,1,0,0,0,1044,1047,1,0,0,0,1045,1043,1,0,0,0,1045,
        1046,1,0,0,0,1046,1048,1,0,0,0,1047,1045,1,0,0,0,1048,1049,5,0,0,
        1,1049,1,1,0,0,0,1050,1053,3,4,2,0,1051,1053,3,12,6,0,1052,1050,
        1,0,0,0,1052,1051,1,0,0,0,1053,1055,1,0,0,0,1054,1056,5,398,0,0,
        1055,1054,1,0,0,0,1055,1056,1,0,0,0,1056,3,1,0,0,0,1057,1067,5,119,
        0,0,1058,1060,3,6,3,0,1059,1058,1,0,0,0,1060,1063,1,0,0,0,1061,1059,
        1,0,0,0,1061,1062,1,0,0,0,1062,1064,1,0,0,0,1063,1061,1,0,0,0,1064,
        1068,3,12,6,0,1065,1066,5,284,0,0,1066,1068,3,394,197,0,1067,1061,
        1,0,0,0,1067,1065,1,0,0,0,1068,5,1,0,0,0,1069,1092,5,122,0,0,1070,
        1092,5,138,0,0,1071,1092,5,88,0,0,1072,1074,5,37,0,0,1073,1075,7,
        0,0,0,1074,1073,1,0,0,0,1074,1075,1,0,0,0,1075,1092,1,0,0,0,1076,
        1092,5,192,0,0,1077,1092,5,21,0,0,1078,1092,5,10,0,0,1079,1092,5,
        275,0,0,1080,1092,5,191,0,0,1081,1092,5,19,0,0,1082,1084,5,377,0,
        0,1083,1085,3,8,4,0,1084,1083,1,0,0,0,1084,1085,1,0,0,0,1085,1087,
        1,0,0,0,1086,1088,3,10,5,0,1087,1086,1,0,0,0,1087,1088,1,0,0,0,1088,
        1092,1,0,0,0,1089,1092,5,79,0,0,1090,1092,5,78,0,0,1091,1069,1,0,
        0,0,1091,1070,1,0,0,0,1091,1071,1,0,0,0,1091,1072,1,0,0,0,1091,1076,
        1,0,0,0,1091,1077,1,0,0,0,1091,1078,1,0,0,0,1091,1079,1,0,0,0,1091,
        1080,1,0,0,0,1091,1081,1,0,0,0,1091,1082,1,0,0,0,1091,1089,1,0,0,
        0,1091,1090,1,0,0,0,1092,7,1,0,0,0,1093,1094,5,225,0,0,1094,9,1,
        0,0,0,1095,1096,7,1,0,0,1096,11,1,0,0,0,1097,1112,3,394,197,0,1098,
        1112,3,14,7,0,1099,1112,3,20,10,0,1100,1112,3,22,11,0,1101,1112,
        3,24,12,0,1102,1112,3,28,14,0,1103,1112,3,36,18,0,1104,1112,3,38,
        19,0,1105,1112,3,422,211,0,1106,1112,3,430,215,0,1107,1112,3,432,
        216,0,1108,1112,3,454,227,0,1109,1112,3,948,474,0,1110,1112,3,950,
        475,0,1111,1097,1,0,0,0,1111,1098,1,0,0,0,1111,1099,1,0,0,0,1111,
        1100,1,0,0,0,1111,1101,1,0,0,0,1111,1102,1,0,0,0,1111,1103,1,0,0,
        0,1111,1104,1,0,0,0,1111,1105,1,0,0,0,1111,1106,1,0,0,0,1111,1107,
        1,0,0,0,1111,1108,1,0,0,0,1111,1109,1,0,0,0,1111,1110,1,0,0,0,1112,
        13,1,0,0,0,1113,1114,5,187,0,0,1114,1116,5,66,0,0,1115,1117,5,188,
        0,0,1116,1115,1,0,0,0,1116,1117,1,0,0,0,1117,1118,1,0,0,0,1118,1119,
        5,158,0,0,1119,1121,5,426,0,0,1120,1122,5,235,0,0,1121,1120,1,0,
        0,0,1121,1122,1,0,0,0,1122,1123,1,0,0,0,1123,1124,5,166,0,0,1124,
        1125,5,329,0,0,1125,1127,3,910,455,0,1126,1128,3,78,39,0,1127,1126,
        1,0,0,0,1127,1128,1,0,0,0,1128,15,1,0,0,0,1129,1130,5,152,0,0,1130,
        1131,5,254,0,0,1131,17,1,0,0,0,1132,1134,5,134,0,0,1133,1135,5,204,
        0,0,1134,1133,1,0,0,0,1134,1135,1,0,0,0,1135,1136,1,0,0,0,1136,1137,
        5,279,0,0,1137,1138,5,399,0,0,1138,1139,5,426,0,0,1139,1140,5,400,
        0,0,1140,19,1,0,0,0,1141,1142,5,120,0,0,1142,1143,5,329,0,0,1143,
        1144,3,910,455,0,1144,1145,5,341,0,0,1145,1147,5,426,0,0,1146,1148,
        3,18,9,0,1147,1146,1,0,0,0,1147,1148,1,0,0,0,1148,21,1,0,0,0,1149,
        1155,5,153,0,0,1150,1152,5,123,0,0,1151,1150,1,0,0,0,1151,1152,1,
        0,0,0,1152,1153,1,0,0,0,1153,1154,5,329,0,0,1154,1156,3,910,455,
        0,1155,1151,1,0,0,0,1155,1156,1,0,0,0,1156,1157,1,0,0,0,1157,1158,
        5,139,0,0,1158,1160,5,426,0,0,1159,1161,3,274,137,0,1160,1159,1,
        0,0,0,1160,1161,1,0,0,0,1161,23,1,0,0,0,1162,1163,5,277,0,0,1163,
        1164,5,103,0,0,1164,1167,3,26,13,0,1165,1166,5,278,0,0,1166,1168,
        3,26,13,0,1167,1165,1,0,0,0,1167,1168,1,0,0,0,1168,1171,1,0,0,0,
        1169,1170,5,387,0,0,1170,1172,3,30,15,0,1171,1169,1,0,0,0,1171,1172,
        1,0,0,0,1172,25,1,0,0,0,1173,1176,3,654,327,0,1174,1175,5,395,0,
        0,1175,1177,3,34,17,0,1176,1174,1,0,0,0,1176,1177,1,0,0,0,1177,27,
        1,0,0,0,1178,1179,5,277,0,0,1179,1180,5,187,0,0,1180,1183,3,26,13,
        0,1181,1182,5,166,0,0,1182,1184,3,654,327,0,1183,1181,1,0,0,0,1183,
        1184,1,0,0,0,1184,1187,1,0,0,0,1185,1186,5,387,0,0,1186,1188,3,30,
        15,0,1187,1185,1,0,0,0,1187,1188,1,0,0,0,1188,29,1,0,0,0,1189,1190,
        5,399,0,0,1190,1191,3,32,16,0,1191,1192,5,400,0,0,1192,31,1,0,0,
        0,1193,1198,3,258,129,0,1194,1195,5,397,0,0,1195,1197,3,258,129,
        0,1196,1194,1,0,0,0,1197,1200,1,0,0,0,1198,1196,1,0,0,0,1198,1199,
        1,0,0,0,1199,33,1,0,0,0,1200,1198,1,0,0,0,1201,1204,5,426,0,0,1202,
        1203,5,395,0,0,1203,1205,5,426,0,0,1204,1202,1,0,0,0,1204,1205,1,
        0,0,0,1205,35,1,0,0,0,1206,1207,5,277,0,0,1207,1208,5,320,0,0,1208,
        1211,3,654,327,0,1209,1210,5,387,0,0,1210,1212,3,30,15,0,1211,1209,
        1,0,0,0,1211,1212,1,0,0,0,1212,37,1,0,0,0,1213,1261,3,56,28,0,1214,
        1261,3,68,34,0,1215,1261,3,70,35,0,1216,1261,3,598,299,0,1217,1261,
        3,76,38,0,1218,1261,3,74,37,0,1219,1261,3,476,238,0,1220,1261,3,
        86,43,0,1221,1261,3,94,47,0,1222,1261,3,160,80,0,1223,1261,3,182,
        91,0,1224,1261,3,198,99,0,1225,1261,3,202,101,0,1226,1261,3,206,
        103,0,1227,1261,3,204,102,0,1228,1261,3,196,98,0,1229,1261,3,200,
        100,0,1230,1261,3,168,84,0,1231,1261,3,174,87,0,1232,1261,3,170,
        85,0,1233,1261,3,172,86,0,1234,1261,3,176,88,0,1235,1261,3,178,89,
        0,1236,1261,3,180,90,0,1237,1261,3,88,44,0,1238,1261,3,98,49,0,1239,
        1261,3,104,52,0,1240,1261,3,100,50,0,1241,1261,3,106,53,0,1242,1261,
        3,108,54,0,1243,1261,3,110,55,0,1244,1261,3,112,56,0,1245,1261,3,
        114,57,0,1246,1261,3,128,64,0,1247,1261,3,120,60,0,1248,1261,3,130,
        65,0,1249,1261,3,122,61,0,1250,1261,3,116,58,0,1251,1261,3,118,59,
        0,1252,1261,3,126,63,0,1253,1261,3,124,62,0,1254,1261,3,450,225,
        0,1255,1261,3,452,226,0,1256,1261,3,466,233,0,1257,1261,3,954,477,
        0,1258,1261,3,600,300,0,1259,1261,3,610,305,0,1260,1213,1,0,0,0,
        1260,1214,1,0,0,0,1260,1215,1,0,0,0,1260,1216,1,0,0,0,1260,1217,
        1,0,0,0,1260,1218,1,0,0,0,1260,1219,1,0,0,0,1260,1220,1,0,0,0,1260,
        1221,1,0,0,0,1260,1222,1,0,0,0,1260,1223,1,0,0,0,1260,1224,1,0,0,
        0,1260,1225,1,0,0,0,1260,1226,1,0,0,0,1260,1227,1,0,0,0,1260,1228,
        1,0,0,0,1260,1229,1,0,0,0,1260,1230,1,0,0,0,1260,1231,1,0,0,0,1260,
        1232,1,0,0,0,1260,1233,1,0,0,0,1260,1234,1,0,0,0,1260,1235,1,0,0,
        0,1260,1236,1,0,0,0,1260,1237,1,0,0,0,1260,1238,1,0,0,0,1260,1239,
        1,0,0,0,1260,1240,1,0,0,0,1260,1241,1,0,0,0,1260,1242,1,0,0,0,1260,
        1243,1,0,0,0,1260,1244,1,0,0,0,1260,1245,1,0,0,0,1260,1246,1,0,0,
        0,1260,1247,1,0,0,0,1260,1248,1,0,0,0,1260,1249,1,0,0,0,1260,1250,
        1,0,0,0,1260,1251,1,0,0,0,1260,1252,1,0,0,0,1260,1253,1,0,0,0,1260,
        1254,1,0,0,0,1260,1255,1,0,0,0,1260,1256,1,0,0,0,1260,1257,1,0,0,
        0,1260,1258,1,0,0,0,1260,1259,1,0,0,0,1261,39,1,0,0,0,1262,1263,
        5,151,0,0,1263,1264,5,117,0,0,1264,41,1,0,0,0,1265,1266,7,2,0,0,
        1266,43,1,0,0,0,1267,1268,5,151,0,0,1268,1269,5,216,0,0,1269,1270,
        5,117,0,0,1270,45,1,0,0,0,1271,1272,5,135,0,0,1272,47,1,0,0,0,1273,
        1274,3,970,485,0,1274,1275,5,284,0,0,1275,49,1,0,0,0,1276,1277,3,
        972,486,0,1277,1278,5,284,0,0,1278,51,1,0,0,0,1279,1280,5,321,0,
        0,1280,1281,5,17,0,0,1281,1282,5,92,0,0,1282,53,1,0,0,0,1283,1284,
        5,228,0,0,1284,1285,5,278,0,0,1285,55,1,0,0,0,1286,1288,5,58,0,0,
        1287,1289,5,273,0,0,1288,1287,1,0,0,0,1288,1289,1,0,0,0,1289,1290,
        1,0,0,0,1290,1292,3,92,46,0,1291,1293,3,44,22,0,1292,1291,1,0,0,
        0,1292,1293,1,0,0,0,1293,1294,1,0,0,0,1294,1296,3,656,328,0,1295,
        1297,3,72,36,0,1296,1295,1,0,0,0,1296,1297,1,0,0,0,1297,1299,1,0,
        0,0,1298,1300,3,58,29,0,1299,1298,1,0,0,0,1299,1300,1,0,0,0,1300,
        1302,1,0,0,0,1301,1303,3,60,30,0,1302,1301,1,0,0,0,1302,1303,1,0,
        0,0,1303,1307,1,0,0,0,1304,1305,5,387,0,0,1305,1306,5,76,0,0,1306,
        1308,3,62,31,0,1307,1304,1,0,0,0,1307,1308,1,0,0,0,1308,1326,1,0,
        0,0,1309,1310,5,58,0,0,1310,1311,5,273,0,0,1311,1313,3,92,46,0,1312,
        1314,3,44,22,0,1313,1312,1,0,0,0,1313,1314,1,0,0,0,1314,1315,1,0,
        0,0,1315,1317,3,656,328,0,1316,1318,3,72,36,0,1317,1316,1,0,0,0,
        1317,1318,1,0,0,0,1318,1319,1,0,0,0,1319,1323,3,66,33,0,1320,1321,
        5,387,0,0,1321,1322,5,76,0,0,1322,1324,3,62,31,0,1323,1320,1,0,0,
        0,1323,1324,1,0,0,0,1324,1326,1,0,0,0,1325,1286,1,0,0,0,1325,1309,
        1,0,0,0,1326,57,1,0,0,0,1327,1328,5,189,0,0,1328,1329,5,426,0,0,
        1329,59,1,0,0,0,1330,1331,5,196,0,0,1331,1332,5,426,0,0,1332,61,
        1,0,0,0,1333,1334,5,399,0,0,1334,1335,3,64,32,0,1335,1336,5,400,
        0,0,1336,63,1,0,0,0,1337,1342,3,258,129,0,1338,1339,5,397,0,0,1339,
        1341,3,258,129,0,1340,1338,1,0,0,0,1341,1344,1,0,0,0,1342,1340,1,
        0,0,0,1342,1343,1,0,0,0,1343,65,1,0,0,0,1344,1342,1,0,0,0,1345,1346,
        5,370,0,0,1346,1347,3,654,327,0,1347,67,1,0,0,0,1348,1349,5,368,
        0,0,1349,1350,3,654,327,0,1350,69,1,0,0,0,1351,1352,5,101,0,0,1352,
        1354,3,92,46,0,1353,1355,3,40,20,0,1354,1353,1,0,0,0,1354,1355,1,
        0,0,0,1355,1356,1,0,0,0,1356,1358,3,654,327,0,1357,1359,3,42,21,
        0,1358,1357,1,0,0,0,1358,1359,1,0,0,0,1359,71,1,0,0,0,1360,1361,
        5,47,0,0,1361,1362,5,426,0,0,1362,73,1,0,0,0,1363,1365,5,351,0,0,
        1364,1366,5,329,0,0,1365,1364,1,0,0,0,1365,1366,1,0,0,0,1366,1367,
        1,0,0,0,1367,1373,3,544,272,0,1368,1369,5,46,0,0,1369,1370,5,399,
        0,0,1370,1371,3,282,141,0,1371,1372,5,400,0,0,1372,1374,1,0,0,0,
        1373,1368,1,0,0,0,1373,1374,1,0,0,0,1374,1376,1,0,0,0,1375,1377,
        3,46,23,0,1376,1375,1,0,0,0,1376,1377,1,0,0,0,1377,75,1,0,0,0,1378,
        1379,5,101,0,0,1379,1381,5,329,0,0,1380,1382,3,40,20,0,1381,1380,
        1,0,0,0,1381,1382,1,0,0,0,1382,1383,1,0,0,0,1383,1385,3,660,330,
        0,1384,1386,5,255,0,0,1385,1384,1,0,0,0,1385,1386,1,0,0,0,1386,1388,
        1,0,0,0,1387,1389,3,18,9,0,1388,1387,1,0,0,0,1388,1389,1,0,0,0,1389,
        77,1,0,0,0,1390,1391,5,160,0,0,1391,1392,5,426,0,0,1392,1393,5,301,
        0,0,1393,1394,5,426,0,0,1394,79,1,0,0,0,1395,1398,3,926,463,0,1396,
        1397,5,395,0,0,1397,1399,3,926,463,0,1398,1396,1,0,0,0,1398,1399,
        1,0,0,0,1399,1413,1,0,0,0,1400,1410,3,926,463,0,1401,1406,5,395,
        0,0,1402,1407,5,104,0,0,1403,1407,5,175,0,0,1404,1407,5,375,0,0,
        1405,1407,3,926,463,0,1406,1402,1,0,0,0,1406,1403,1,0,0,0,1406,1404,
        1,0,0,0,1406,1405,1,0,0,0,1407,1409,1,0,0,0,1408,1401,1,0,0,0,1409,
        1412,1,0,0,0,1410,1408,1,0,0,0,1410,1411,1,0,0,0,1411,1414,1,0,0,
        0,1412,1410,1,0,0,0,1413,1400,1,0,0,0,1413,1414,1,0,0,0,1414,81,
        1,0,0,0,1415,1417,3,80,40,0,1416,1418,3,912,456,0,1417,1416,1,0,
        0,0,1417,1418,1,0,0,0,1418,83,1,0,0,0,1419,1421,3,658,329,0,1420,
        1422,3,912,456,0,1421,1420,1,0,0,0,1421,1422,1,0,0,0,1422,1424,1,
        0,0,0,1423,1425,3,288,144,0,1424,1423,1,0,0,0,1424,1425,1,0,0,0,
        1425,85,1,0,0,0,1426,1449,7,3,0,0,1427,1429,3,92,46,0,1428,1430,
        5,122,0,0,1429,1428,1,0,0,0,1429,1430,1,0,0,0,1430,1431,1,0,0,0,
        1431,1432,3,654,327,0,1432,1450,1,0,0,0,1433,1435,5,69,0,0,1434,
        1436,5,122,0,0,1435,1434,1,0,0,0,1435,1436,1,0,0,0,1436,1437,1,0,
        0,0,1437,1450,3,654,327,0,1438,1440,5,141,0,0,1439,1441,5,122,0,
        0,1440,1439,1,0,0,0,1440,1441,1,0,0,0,1441,1442,1,0,0,0,1442,1450,
        3,782,391,0,1443,1446,5,138,0,0,1444,1446,5,122,0,0,1445,1443,1,
        0,0,0,1445,1444,1,0,0,0,1446,1447,1,0,0,0,1447,1450,3,84,42,0,1448,
        1450,3,84,42,0,1449,1427,1,0,0,0,1449,1433,1,0,0,0,1449,1438,1,0,
        0,0,1449,1445,1,0,0,0,1449,1448,1,0,0,0,1450,87,1,0,0,0,1451,1452,
        5,10,0,0,1452,1453,5,329,0,0,1453,1466,3,910,455,0,1454,1455,5,52,
        0,0,1455,1462,5,319,0,0,1456,1463,5,215,0,0,1457,1458,5,134,0,0,
        1458,1460,5,46,0,0,1459,1461,3,282,141,0,1460,1459,1,0,0,0,1460,
        1461,1,0,0,0,1461,1463,1,0,0,0,1462,1456,1,0,0,0,1462,1457,1,0,0,
        0,1462,1463,1,0,0,0,1463,1467,1,0,0,0,1464,1465,5,33,0,0,1465,1467,
        5,204,0,0,1466,1454,1,0,0,0,1466,1464,1,0,0,0,1467,89,1,0,0,0,1468,
        1469,7,4,0,0,1469,91,1,0,0,0,1470,1471,7,5,0,0,1471,93,1,0,0,0,1472,
        1473,5,308,0,0,1473,1476,7,6,0,0,1474,1475,5,184,0,0,1475,1477,3,
        216,108,0,1476,1474,1,0,0,0,1476,1477,1,0,0,0,1477,1666,1,0,0,0,
        1478,1480,5,308,0,0,1479,1481,5,122,0,0,1480,1479,1,0,0,0,1480,1481,
        1,0,0,0,1481,1482,1,0,0,0,1482,1486,5,330,0,0,1483,1484,3,90,45,
        0,1484,1485,3,654,327,0,1485,1487,1,0,0,0,1486,1483,1,0,0,0,1486,
        1487,1,0,0,0,1487,1489,1,0,0,0,1488,1490,3,96,48,0,1489,1488,1,0,
        0,0,1489,1490,1,0,0,0,1490,1666,1,0,0,0,1491,1492,5,308,0,0,1492,
        1496,5,379,0,0,1493,1494,3,90,45,0,1494,1495,3,654,327,0,1495,1497,
        1,0,0,0,1496,1493,1,0,0,0,1496,1497,1,0,0,0,1497,1501,1,0,0,0,1498,
        1499,5,184,0,0,1499,1502,3,216,108,0,1500,1502,3,216,108,0,1501,
        1498,1,0,0,0,1501,1500,1,0,0,0,1501,1502,1,0,0,0,1502,1666,1,0,0,
        0,1503,1504,5,308,0,0,1504,1505,5,202,0,0,1505,1509,5,379,0,0,1506,
        1507,3,90,45,0,1507,1508,3,654,327,0,1508,1510,1,0,0,0,1509,1506,
        1,0,0,0,1509,1510,1,0,0,0,1510,1514,1,0,0,0,1511,1512,5,184,0,0,
        1512,1515,3,216,108,0,1513,1515,3,216,108,0,1514,1511,1,0,0,0,1514,
        1513,1,0,0,0,1514,1515,1,0,0,0,1515,1666,1,0,0,0,1516,1518,5,308,
        0,0,1517,1519,5,315,0,0,1518,1517,1,0,0,0,1518,1519,1,0,0,0,1519,
        1520,1,0,0,0,1520,1521,5,46,0,0,1521,1522,3,90,45,0,1522,1526,3,
        658,329,0,1523,1524,3,90,45,0,1524,1525,3,654,327,0,1525,1527,1,
        0,0,0,1526,1523,1,0,0,0,1526,1527,1,0,0,0,1527,1531,1,0,0,0,1528,
        1529,5,184,0,0,1529,1532,3,216,108,0,1530,1532,3,216,108,0,1531,
        1528,1,0,0,0,1531,1530,1,0,0,0,1531,1532,1,0,0,0,1532,1666,1,0,0,
        0,1533,1534,5,308,0,0,1534,1537,5,142,0,0,1535,1536,5,184,0,0,1536,
        1538,3,782,391,0,1537,1535,1,0,0,0,1537,1538,1,0,0,0,1538,1666,1,
        0,0,0,1539,1540,5,308,0,0,1540,1541,5,239,0,0,1541,1543,3,658,329,
        0,1542,1544,3,912,456,0,1543,1542,1,0,0,0,1543,1544,1,0,0,0,1544,
        1546,1,0,0,0,1545,1547,3,676,338,0,1546,1545,1,0,0,0,1546,1547,1,
        0,0,0,1547,1549,1,0,0,0,1548,1550,3,764,382,0,1549,1548,1,0,0,0,
        1549,1550,1,0,0,0,1550,1552,1,0,0,0,1551,1553,3,420,210,0,1552,1551,
        1,0,0,0,1552,1553,1,0,0,0,1553,1666,1,0,0,0,1554,1555,5,308,0,0,
        1555,1561,5,58,0,0,1556,1557,3,92,46,0,1557,1558,3,654,327,0,1558,
        1562,1,0,0,0,1559,1560,5,329,0,0,1560,1562,3,660,330,0,1561,1556,
        1,0,0,0,1561,1559,1,0,0,0,1562,1666,1,0,0,0,1563,1564,5,308,0,0,
        1564,1565,5,329,0,0,1565,1569,5,122,0,0,1566,1567,3,90,45,0,1567,
        1568,3,654,327,0,1568,1570,1,0,0,0,1569,1566,1,0,0,0,1569,1570,1,
        0,0,0,1570,1571,1,0,0,0,1571,1572,5,184,0,0,1572,1574,3,216,108,
        0,1573,1575,3,912,456,0,1574,1573,1,0,0,0,1574,1575,1,0,0,0,1575,
        1666,1,0,0,0,1576,1577,5,308,0,0,1577,1578,5,332,0,0,1578,1582,3,
        660,330,0,1579,1580,5,399,0,0,1580,1581,5,426,0,0,1581,1583,5,400,
        0,0,1582,1579,1,0,0,0,1582,1583,1,0,0,0,1583,1666,1,0,0,0,1584,1585,
        5,308,0,0,1585,1597,5,191,0,0,1586,1587,3,92,46,0,1587,1589,3,654,
        327,0,1588,1590,5,122,0,0,1589,1588,1,0,0,0,1589,1590,1,0,0,0,1590,
        1598,1,0,0,0,1591,1593,3,82,41,0,1592,1591,1,0,0,0,1592,1593,1,0,
        0,0,1593,1595,1,0,0,0,1594,1596,5,122,0,0,1595,1594,1,0,0,0,1595,
        1596,1,0,0,0,1596,1598,1,0,0,0,1597,1586,1,0,0,0,1597,1592,1,0,0,
        0,1598,1666,1,0,0,0,1599,1600,5,308,0,0,1600,1637,5,50,0,0,1601,
        1638,3,468,234,0,1602,1603,3,92,46,0,1603,1605,3,654,327,0,1604,
        1606,3,470,235,0,1605,1604,1,0,0,0,1605,1606,1,0,0,0,1606,1608,1,
        0,0,0,1607,1609,3,472,236,0,1608,1607,1,0,0,0,1608,1609,1,0,0,0,
        1609,1611,1,0,0,0,1610,1612,3,474,237,0,1611,1610,1,0,0,0,1611,1612,
        1,0,0,0,1612,1614,1,0,0,0,1613,1615,3,764,382,0,1614,1613,1,0,0,
        0,1614,1615,1,0,0,0,1615,1617,1,0,0,0,1616,1618,3,420,210,0,1617,
        1616,1,0,0,0,1617,1618,1,0,0,0,1618,1638,1,0,0,0,1619,1621,3,82,
        41,0,1620,1619,1,0,0,0,1620,1621,1,0,0,0,1621,1623,1,0,0,0,1622,
        1624,3,470,235,0,1623,1622,1,0,0,0,1623,1624,1,0,0,0,1624,1626,1,
        0,0,0,1625,1627,3,472,236,0,1626,1625,1,0,0,0,1626,1627,1,0,0,0,
        1627,1629,1,0,0,0,1628,1630,3,474,237,0,1629,1628,1,0,0,0,1629,1630,
        1,0,0,0,1630,1632,1,0,0,0,1631,1633,3,764,382,0,1632,1631,1,0,0,
        0,1632,1633,1,0,0,0,1633,1635,1,0,0,0,1634,1636,3,420,210,0,1635,
        1634,1,0,0,0,1635,1636,1,0,0,0,1636,1638,1,0,0,0,1637,1601,1,0,0,
        0,1637,1602,1,0,0,0,1637,1620,1,0,0,0,1638,1666,1,0,0,0,1639,1640,
        5,308,0,0,1640,1666,5,346,0,0,1641,1642,5,308,0,0,1642,1643,5,54,
        0,0,1643,1666,5,426,0,0,1644,1645,5,308,0,0,1645,1649,5,280,0,0,
        1646,1647,5,243,0,0,1647,1650,3,926,463,0,1648,1650,5,244,0,0,1649,
        1646,1,0,0,0,1649,1648,1,0,0,0,1650,1666,1,0,0,0,1651,1652,5,308,
        0,0,1652,1666,5,70,0,0,1653,1655,5,308,0,0,1654,1656,5,138,0,0,1655,
        1654,1,0,0,0,1655,1656,1,0,0,0,1656,1657,1,0,0,0,1657,1658,7,7,0,
        0,1658,1659,5,224,0,0,1659,1663,3,660,330,0,1660,1661,3,90,45,0,
        1661,1662,3,654,327,0,1662,1664,1,0,0,0,1663,1660,1,0,0,0,1663,1664,
        1,0,0,0,1664,1666,1,0,0,0,1665,1472,1,0,0,0,1665,1478,1,0,0,0,1665,
        1491,1,0,0,0,1665,1503,1,0,0,0,1665,1516,1,0,0,0,1665,1533,1,0,0,
        0,1665,1539,1,0,0,0,1665,1554,1,0,0,0,1665,1563,1,0,0,0,1665,1576,
        1,0,0,0,1665,1584,1,0,0,0,1665,1599,1,0,0,0,1665,1639,1,0,0,0,1665,
        1641,1,0,0,0,1665,1644,1,0,0,0,1665,1651,1,0,0,0,1665,1653,1,0,0,
        0,1666,95,1,0,0,0,1667,1668,5,384,0,0,1668,1669,3,926,463,0,1669,
        1670,5,405,0,0,1670,1671,5,426,0,0,1671,1676,1,0,0,0,1672,1673,5,
        184,0,0,1673,1676,3,216,108,0,1674,1676,3,216,108,0,1675,1667,1,
        0,0,0,1675,1672,1,0,0,0,1675,1674,1,0,0,0,1676,97,1,0,0,0,1677,1678,
        5,190,0,0,1678,1679,5,329,0,0,1679,1681,3,660,330,0,1680,1682,3,
        912,456,0,1681,1680,1,0,0,0,1681,1682,1,0,0,0,1682,1683,1,0,0,0,
        1683,1684,3,102,51,0,1684,99,1,0,0,0,1685,1686,5,190,0,0,1686,1687,
        3,92,46,0,1687,1688,3,654,327,0,1688,1689,3,102,51,0,1689,101,1,
        0,0,0,1690,1691,7,8,0,0,1691,103,1,0,0,0,1692,1693,5,361,0,0,1693,
        1694,5,329,0,0,1694,1696,3,660,330,0,1695,1697,3,912,456,0,1696,
        1695,1,0,0,0,1696,1697,1,0,0,0,1697,105,1,0,0,0,1698,1699,5,361,
        0,0,1699,1700,3,92,46,0,1700,1701,3,654,327,0,1701,107,1,0,0,0,1702,
        1703,5,58,0,0,1703,1704,5,287,0,0,1704,1705,3,926,463,0,1705,109,
        1,0,0,0,1706,1707,5,101,0,0,1707,1708,5,287,0,0,1708,1709,3,926,
        463,0,1709,111,1,0,0,0,1710,1711,5,143,0,0,1711,1713,3,140,70,0,
        1712,1714,3,134,67,0,1713,1712,1,0,0,0,1713,1714,1,0,0,0,1714,1715,
        1,0,0,0,1715,1716,5,341,0,0,1716,1718,3,146,73,0,1717,1719,3,152,
        76,0,1718,1717,1,0,0,0,1718,1719,1,0,0,0,1719,113,1,0,0,0,1720,1722,
        5,283,0,0,1721,1723,3,154,77,0,1722,1721,1,0,0,0,1722,1723,1,0,0,
        0,1723,1724,1,0,0,0,1724,1726,3,140,70,0,1725,1727,3,134,67,0,1726,
        1725,1,0,0,0,1726,1727,1,0,0,0,1727,1728,1,0,0,0,1728,1729,5,139,
        0,0,1729,1730,3,146,73,0,1730,115,1,0,0,0,1731,1733,5,143,0,0,1732,
        1734,5,287,0,0,1733,1732,1,0,0,0,1733,1734,1,0,0,0,1734,1735,1,0,
        0,0,1735,1740,3,926,463,0,1736,1737,5,397,0,0,1737,1739,3,926,463,
        0,1738,1736,1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740,1741,
        1,0,0,0,1741,1743,1,0,0,0,1742,1740,1,0,0,0,1743,1744,5,341,0,0,
        1744,1746,3,146,73,0,1745,1747,3,158,79,0,1746,1745,1,0,0,0,1746,
        1747,1,0,0,0,1747,117,1,0,0,0,1748,1750,5,283,0,0,1749,1751,3,156,
        78,0,1750,1749,1,0,0,0,1750,1751,1,0,0,0,1751,1753,1,0,0,0,1752,
        1754,5,287,0,0,1753,1752,1,0,0,0,1753,1754,1,0,0,0,1754,1755,1,0,
        0,0,1755,1760,3,926,463,0,1756,1757,5,397,0,0,1757,1759,3,926,463,
        0,1758,1756,1,0,0,0,1759,1762,1,0,0,0,1760,1758,1,0,0,0,1760,1761,
        1,0,0,0,1761,1763,1,0,0,0,1762,1760,1,0,0,0,1763,1764,5,139,0,0,
        1764,1765,3,146,73,0,1765,119,1,0,0,0,1766,1767,5,308,0,0,1767,1768,
        5,287,0,0,1768,1769,5,143,0,0,1769,1770,3,148,74,0,1770,121,1,0,
        0,0,1771,1772,5,308,0,0,1772,1773,5,288,0,0,1773,123,1,0,0,0,1774,
        1775,5,308,0,0,1775,1776,5,62,0,0,1776,1777,5,288,0,0,1777,125,1,
        0,0,0,1778,1779,5,304,0,0,1779,1783,5,287,0,0,1780,1784,5,7,0,0,
        1781,1784,5,213,0,0,1782,1784,3,926,463,0,1783,1780,1,0,0,0,1783,
        1781,1,0,0,0,1783,1782,1,0,0,0,1784,127,1,0,0,0,1785,1786,5,308,
        0,0,1786,1788,5,143,0,0,1787,1789,3,148,74,0,1788,1787,1,0,0,0,1788,
        1789,1,0,0,0,1789,1792,1,0,0,0,1790,1791,5,224,0,0,1791,1793,3,132,
        66,0,1792,1790,1,0,0,0,1792,1793,1,0,0,0,1793,129,1,0,0,0,1794,1795,
        5,308,0,0,1795,1796,5,252,0,0,1796,1797,3,926,463,0,1797,131,1,0,
        0,0,1798,1801,5,7,0,0,1799,1801,3,138,69,0,1800,1798,1,0,0,0,1800,
        1799,1,0,0,0,1801,133,1,0,0,0,1802,1803,5,224,0,0,1803,1804,3,136,
        68,0,1804,135,1,0,0,0,1805,1806,3,92,46,0,1806,1807,3,654,327,0,
        1807,1820,1,0,0,0,1808,1810,5,329,0,0,1809,1808,1,0,0,0,1809,1810,
        1,0,0,0,1810,1811,1,0,0,0,1811,1813,3,660,330,0,1812,1814,3,912,
        456,0,1813,1812,1,0,0,0,1813,1814,1,0,0,0,1814,1820,1,0,0,0,1815,
        1816,5,366,0,0,1816,1820,5,426,0,0,1817,1818,5,303,0,0,1818,1820,
        3,926,463,0,1819,1805,1,0,0,0,1819,1809,1,0,0,0,1819,1815,1,0,0,
        0,1819,1817,1,0,0,0,1820,137,1,0,0,0,1821,1822,3,92,46,0,1822,1823,
        3,654,327,0,1823,1842,1,0,0,0,1824,1826,5,329,0,0,1825,1824,1,0,
        0,0,1825,1826,1,0,0,0,1826,1827,1,0,0,0,1827,1832,3,660,330,0,1828,
        1829,5,399,0,0,1829,1830,3,282,141,0,1830,1831,5,400,0,0,1831,1833,
        1,0,0,0,1832,1828,1,0,0,0,1832,1833,1,0,0,0,1833,1835,1,0,0,0,1834,
        1836,3,912,456,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,1842,1,
        0,0,0,1837,1838,5,366,0,0,1838,1842,5,426,0,0,1839,1840,5,303,0,
        0,1840,1842,3,926,463,0,1841,1821,1,0,0,0,1841,1825,1,0,0,0,1841,
        1837,1,0,0,0,1841,1839,1,0,0,0,1842,139,1,0,0,0,1843,1848,3,142,
        71,0,1844,1845,5,397,0,0,1845,1847,3,142,71,0,1846,1844,1,0,0,0,
        1847,1850,1,0,0,0,1848,1846,1,0,0,0,1848,1849,1,0,0,0,1849,141,1,
        0,0,0,1850,1848,1,0,0,0,1851,1856,3,144,72,0,1852,1853,5,399,0,0,
        1853,1854,3,282,141,0,1854,1855,5,400,0,0,1855,1857,1,0,0,0,1856,
        1852,1,0,0,0,1856,1857,1,0,0,0,1857,143,1,0,0,0,1858,1859,7,9,0,
        0,1859,145,1,0,0,0,1860,1865,3,148,74,0,1861,1862,5,397,0,0,1862,
        1864,3,148,74,0,1863,1861,1,0,0,0,1864,1867,1,0,0,0,1865,1863,1,
        0,0,0,1865,1866,1,0,0,0,1866,147,1,0,0,0,1867,1865,1,0,0,0,1868,
        1869,5,369,0,0,1869,1875,3,930,465,0,1870,1871,5,144,0,0,1871,1875,
        3,930,465,0,1872,1873,5,287,0,0,1873,1875,3,926,463,0,1874,1868,
        1,0,0,0,1874,1870,1,0,0,0,1874,1872,1,0,0,0,1875,149,1,0,0,0,1876,
        1877,5,369,0,0,1877,1882,3,930,465,0,1878,1879,5,287,0,0,1879,1882,
        3,926,463,0,1880,1882,3,926,463,0,1881,1876,1,0,0,0,1881,1878,1,
        0,0,0,1881,1880,1,0,0,0,1882,151,1,0,0,0,1883,1884,5,387,0,0,1884,
        1885,5,143,0,0,1885,1886,5,227,0,0,1886,153,1,0,0,0,1887,1888,5,
        143,0,0,1888,1889,5,227,0,0,1889,1890,5,134,0,0,1890,155,1,0,0,0,
        1891,1892,5,5,0,0,1892,1893,5,227,0,0,1893,1894,5,134,0,0,1894,157,
        1,0,0,0,1895,1896,5,387,0,0,1896,1897,5,5,0,0,1897,1898,5,227,0,
        0,1898,159,1,0,0,0,1899,1901,5,212,0,0,1900,1902,5,276,0,0,1901,
        1900,1,0,0,0,1901,1902,1,0,0,0,1902,1903,1,0,0,0,1903,1904,5,329,
        0,0,1904,1910,3,660,330,0,1905,1906,7,10,0,0,1906,1908,5,239,0,0,
        1907,1909,3,916,458,0,1908,1907,1,0,0,0,1908,1909,1,0,0,0,1909,1911,
        1,0,0,0,1910,1905,1,0,0,0,1910,1911,1,0,0,0,1911,161,1,0,0,0,1912,
        1917,3,164,82,0,1913,1914,5,397,0,0,1914,1916,3,164,82,0,1915,1913,
        1,0,0,0,1916,1919,1,0,0,0,1917,1915,1,0,0,0,1917,1918,1,0,0,0,1918,
        163,1,0,0,0,1919,1917,1,0,0,0,1920,1921,3,166,83,0,1921,1922,5,426,
        0,0,1922,165,1,0,0,0,1923,1924,7,11,0,0,1924,167,1,0,0,0,1925,1927,
        5,58,0,0,1926,1928,5,333,0,0,1927,1926,1,0,0,0,1927,1928,1,0,0,0,
        1928,1929,1,0,0,0,1929,1930,5,141,0,0,1930,1931,3,780,390,0,1931,
        1932,5,17,0,0,1932,1935,5,426,0,0,1933,1934,5,370,0,0,1934,1936,
        3,162,81,0,1935,1933,1,0,0,0,1935,1936,1,0,0,0,1936,169,1,0,0,0,
        1937,1939,5,101,0,0,1938,1940,5,333,0,0,1939,1938,1,0,0,0,1939,1940,
        1,0,0,0,1940,1941,1,0,0,0,1941,1943,5,141,0,0,1942,1944,3,40,20,
        0,1943,1942,1,0,0,0,1943,1944,1,0,0,0,1944,1945,1,0,0,0,1945,1946,
        3,782,391,0,1946,171,1,0,0,0,1947,1948,5,271,0,0,1948,1949,7,12,
        0,0,1949,173,1,0,0,0,1950,1951,5,58,0,0,1951,1952,5,333,0,0,1952,
        1953,5,194,0,0,1953,1954,5,432,0,0,1954,1956,5,399,0,0,1955,1957,
        3,276,138,0,1956,1955,1,0,0,0,1956,1957,1,0,0,0,1957,1958,1,0,0,
        0,1958,1959,5,400,0,0,1959,1960,3,828,414,0,1960,175,1,0,0,0,1961,
        1962,5,101,0,0,1962,1963,5,333,0,0,1963,1965,5,194,0,0,1964,1966,
        3,40,20,0,1965,1964,1,0,0,0,1965,1966,1,0,0,0,1966,1967,1,0,0,0,
        1967,1968,5,432,0,0,1968,177,1,0,0,0,1969,1970,5,58,0,0,1970,1971,
        5,155,0,0,1971,1972,3,926,463,0,1972,1973,5,224,0,0,1973,1974,5,
        329,0,0,1974,1975,3,660,330,0,1975,1976,3,292,146,0,1976,1977,5,
        17,0,0,1977,1981,5,426,0,0,1978,1979,5,387,0,0,1979,1980,5,84,0,
        0,1980,1982,5,265,0,0,1981,1978,1,0,0,0,1981,1982,1,0,0,0,1982,1985,
        1,0,0,0,1983,1984,5,150,0,0,1984,1986,3,254,127,0,1985,1983,1,0,
        0,0,1985,1986,1,0,0,0,1986,1990,1,0,0,0,1987,1988,5,154,0,0,1988,
        1989,5,329,0,0,1989,1991,3,660,330,0,1990,1987,1,0,0,0,1990,1991,
        1,0,0,0,1991,1995,1,0,0,0,1992,1993,5,238,0,0,1993,1994,5,32,0,0,
        1994,1996,3,292,146,0,1995,1992,1,0,0,0,1995,1996,1,0,0,0,1996,2001,
        1,0,0,0,1997,1999,3,250,125,0,1998,1997,1,0,0,0,1998,1999,1,0,0,
        0,1999,2000,1,0,0,0,2000,2002,3,272,136,0,2001,1998,1,0,0,0,2001,
        2002,1,0,0,0,2002,2005,1,0,0,0,2003,2004,5,189,0,0,2004,2006,5,426,
        0,0,2005,2003,1,0,0,0,2005,2006,1,0,0,0,2006,2008,1,0,0,0,2007,2009,
        3,252,126,0,2008,2007,1,0,0,0,2008,2009,1,0,0,0,2009,2011,1,0,0,
        0,2010,2012,3,218,109,0,2011,2010,1,0,0,0,2011,2012,1,0,0,0,2012,
        179,1,0,0,0,2013,2014,5,101,0,0,2014,2016,5,155,0,0,2015,2017,3,
        40,20,0,2016,2015,1,0,0,0,2016,2017,1,0,0,0,2017,2018,1,0,0,0,2018,
        2019,3,926,463,0,2019,2020,5,224,0,0,2020,2021,3,660,330,0,2021,
        181,1,0,0,0,2022,2024,5,58,0,0,2023,2025,3,54,27,0,2024,2023,1,0,
        0,0,2024,2025,1,0,0,0,2025,2026,1,0,0,0,2026,2028,5,378,0,0,2027,
        2029,3,44,22,0,2028,2027,1,0,0,0,2028,2029,1,0,0,0,2029,2030,1,0,
        0,0,2030,2035,3,666,333,0,2031,2032,5,399,0,0,2032,2033,3,336,168,
        0,2033,2034,5,400,0,0,2034,2036,1,0,0,0,2035,2031,1,0,0,0,2035,2036,
        1,0,0,0,2036,2038,1,0,0,0,2037,2039,3,218,109,0,2038,2037,1,0,0,
        0,2038,2039,1,0,0,0,2039,2041,1,0,0,0,2040,2042,3,184,92,0,2041,
        2040,1,0,0,0,2041,2042,1,0,0,0,2042,2044,1,0,0,0,2043,2045,3,252,
        126,0,2044,2043,1,0,0,0,2044,2045,1,0,0,0,2045,2046,1,0,0,0,2046,
        2047,5,17,0,0,2047,2048,3,414,207,0,2048,183,1,0,0,0,2049,2050,5,
        238,0,0,2050,2056,5,224,0,0,2051,2052,5,399,0,0,2052,2057,3,282,
        141,0,2053,2054,5,316,0,0,2054,2055,5,399,0,0,2055,2057,3,228,114,
        0,2056,2051,1,0,0,0,2056,2053,1,0,0,0,2057,2058,1,0,0,0,2058,2059,
        5,400,0,0,2059,185,1,0,0,0,2060,2063,3,188,94,0,2061,2063,3,190,
        95,0,2062,2060,1,0,0,0,2062,2061,1,0,0,0,2063,187,1,0,0,0,2064,2065,
        5,42,0,0,2065,2066,5,224,0,0,2066,2067,5,399,0,0,2067,2068,3,282,
        141,0,2068,2069,5,400,0,0,2069,189,1,0,0,0,2070,2071,3,192,96,0,
        2071,2072,3,194,97,0,2072,191,1,0,0,0,2073,2074,5,98,0,0,2074,2075,
        5,224,0,0,2075,2076,5,399,0,0,2076,2077,3,282,141,0,2077,2078,5,
        400,0,0,2078,193,1,0,0,0,2079,2080,5,315,0,0,2080,2081,5,224,0,0,
        2081,2082,5,399,0,0,2082,2083,3,282,141,0,2083,2084,5,400,0,0,2084,
        195,1,0,0,0,2085,2086,5,101,0,0,2086,2088,5,378,0,0,2087,2089,3,
        40,20,0,2088,2087,1,0,0,0,2088,2089,1,0,0,0,2089,2090,1,0,0,0,2090,
        2091,3,664,332,0,2091,197,1,0,0,0,2092,2093,5,58,0,0,2093,2094,5,
        202,0,0,2094,2096,5,378,0,0,2095,2097,3,44,22,0,2096,2095,1,0,0,
        0,2096,2097,1,0,0,0,2097,2098,1,0,0,0,2098,2100,3,666,333,0,2099,
        2101,3,50,25,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101,2103,1,0,
        0,0,2102,2104,3,218,109,0,2103,2102,1,0,0,0,2103,2104,1,0,0,0,2104,
        2106,1,0,0,0,2105,2107,3,184,92,0,2106,2105,1,0,0,0,2106,2107,1,
        0,0,0,2107,2109,1,0,0,0,2108,2110,3,186,93,0,2109,2108,1,0,0,0,2109,
        2110,1,0,0,0,2110,2112,1,0,0,0,2111,2113,3,250,125,0,2112,2111,1,
        0,0,0,2112,2113,1,0,0,0,2113,2115,1,0,0,0,2114,2116,3,272,136,0,
        2115,2114,1,0,0,0,2115,2116,1,0,0,0,2116,2118,1,0,0,0,2117,2119,
        3,274,137,0,2118,2117,1,0,0,0,2118,2119,1,0,0,0,2119,2121,1,0,0,
        0,2120,2122,3,252,126,0,2121,2120,1,0,0,0,2121,2122,1,0,0,0,2122,
        2123,1,0,0,0,2123,2124,5,17,0,0,2124,2125,3,414,207,0,2125,199,1,
        0,0,0,2126,2127,5,101,0,0,2127,2128,5,202,0,0,2128,2130,5,378,0,
        0,2129,2131,3,40,20,0,2130,2129,1,0,0,0,2130,2131,1,0,0,0,2131,2132,
        1,0,0,0,2132,2133,3,664,332,0,2133,201,1,0,0,0,2134,2135,5,58,0,
        0,2135,2136,5,293,0,0,2136,2137,5,258,0,0,2137,2138,3,926,463,0,
        2138,2140,3,210,105,0,2139,2141,3,212,106,0,2140,2139,1,0,0,0,2140,
        2141,1,0,0,0,2141,2143,1,0,0,0,2142,2144,3,296,148,0,2143,2142,1,
        0,0,0,2143,2144,1,0,0,0,2144,2145,1,0,0,0,2145,2146,3,214,107,0,
        2146,203,1,0,0,0,2147,2148,5,101,0,0,2148,2149,5,293,0,0,2149,2150,
        5,258,0,0,2150,2151,3,926,463,0,2151,205,1,0,0,0,2152,2153,5,9,0,
        0,2153,2154,5,293,0,0,2154,2155,5,258,0,0,2155,2156,3,926,463,0,
        2156,2157,3,208,104,0,2157,207,1,0,0,0,2158,2164,3,210,105,0,2159,
        2164,3,212,106,0,2160,2164,3,296,148,0,2161,2164,3,214,107,0,2162,
        2164,5,115,0,0,2163,2158,1,0,0,0,2163,2159,1,0,0,0,2163,2160,1,0,
        0,0,2163,2161,1,0,0,0,2163,2162,1,0,0,0,2164,209,1,0,0,0,2165,2166,
        5,59,0,0,2166,2181,5,426,0,0,2167,2169,5,111,0,0,2168,2170,5,431,
        0,0,2169,2168,1,0,0,0,2169,2170,1,0,0,0,2170,2171,1,0,0,0,2171,2178,
        3,826,413,0,2172,2176,5,20,0,0,2173,2174,5,223,0,0,2174,2176,5,32,
        0,0,2175,2172,1,0,0,0,2175,2173,1,0,0,0,2176,2177,1,0,0,0,2177,2179,
        5,426,0,0,2178,2175,1,0,0,0,2178,2179,1,0,0,0,2179,2181,1,0,0,0,
        2180,2165,1,0,0,0,2180,2167,1,0,0,0,2181,211,1,0,0,0,2182,2183,5,
        116,0,0,2183,2184,5,17,0,0,2184,2185,5,426,0,0,2185,213,1,0,0,0,
        2186,2188,5,85,0,0,2187,2186,1,0,0,0,2187,2188,1,0,0,0,2188,2189,
        1,0,0,0,2189,2190,5,17,0,0,2190,2191,3,2,1,0,2191,215,1,0,0,0,2192,
        2195,3,926,463,0,2193,2195,5,426,0,0,2194,2192,1,0,0,0,2194,2193,
        1,0,0,0,2195,217,1,0,0,0,2196,2197,5,47,0,0,2197,2198,5,426,0,0,
        2198,219,1,0,0,0,2199,2200,5,183,0,0,2200,2201,5,431,0,0,2201,221,
        1,0,0,0,2202,2203,5,238,0,0,2203,2212,5,32,0,0,2204,2207,5,399,0,
        0,2205,2208,3,224,112,0,2206,2208,3,226,113,0,2207,2205,1,0,0,0,
        2207,2206,1,0,0,0,2208,2213,1,0,0,0,2209,2210,5,316,0,0,2210,2211,
        5,399,0,0,2211,2213,3,228,114,0,2212,2204,1,0,0,0,2212,2209,1,0,
        0,0,2213,2214,1,0,0,0,2214,2215,5,400,0,0,2215,223,1,0,0,0,2216,
        2221,3,350,175,0,2217,2218,5,397,0,0,2218,2220,3,350,175,0,2219,
        2217,1,0,0,0,2220,2223,1,0,0,0,2221,2219,1,0,0,0,2221,2222,1,0,0,
        0,2222,225,1,0,0,0,2223,2221,1,0,0,0,2224,2229,3,284,142,0,2225,
        2226,5,397,0,0,2226,2228,3,284,142,0,2227,2225,1,0,0,0,2228,2231,
        1,0,0,0,2229,2227,1,0,0,0,2229,2230,1,0,0,0,2230,227,1,0,0,0,2231,
        2229,1,0,0,0,2232,2237,3,230,115,0,2233,2234,5,397,0,0,2234,2236,
        3,230,115,0,2235,2233,1,0,0,0,2236,2239,1,0,0,0,2237,2235,1,0,0,
        0,2237,2238,1,0,0,0,2238,229,1,0,0,0,2239,2237,1,0,0,0,2240,2241,
        3,232,116,0,2241,231,1,0,0,0,2242,2261,3,284,142,0,2243,2248,3,976,
        488,0,2244,2248,3,978,489,0,2245,2248,3,982,491,0,2246,2248,3,984,
        492,0,2247,2243,1,0,0,0,2247,2244,1,0,0,0,2247,2245,1,0,0,0,2247,
        2246,1,0,0,0,2248,2249,1,0,0,0,2249,2250,5,399,0,0,2250,2251,3,284,
        142,0,2251,2252,5,400,0,0,2252,2261,1,0,0,0,2253,2254,7,13,0,0,2254,
        2255,5,399,0,0,2255,2256,5,431,0,0,2256,2257,5,397,0,0,2257,2258,
        3,284,142,0,2258,2259,5,400,0,0,2259,2261,1,0,0,0,2260,2242,1,0,
        0,0,2260,2247,1,0,0,0,2260,2253,1,0,0,0,2261,233,1,0,0,0,2262,2263,
        5,42,0,0,2263,2264,5,32,0,0,2264,2265,5,399,0,0,2265,2266,3,282,
        141,0,2266,2273,5,400,0,0,2267,2268,5,315,0,0,2268,2269,5,32,0,0,
        2269,2270,5,399,0,0,2270,2271,3,290,145,0,2271,2272,5,400,0,0,2272,
        2274,1,0,0,0,2273,2267,1,0,0,0,2273,2274,1,0,0,0,2274,2275,1,0,0,
        0,2275,2276,5,166,0,0,2276,2277,5,431,0,0,2277,2278,5,31,0,0,2278,
        235,1,0,0,0,2279,2280,5,42,0,0,2280,2281,5,166,0,0,2281,2282,5,431,
        0,0,2282,2283,5,31,0,0,2283,237,1,0,0,0,2284,2285,5,310,0,0,2285,
        2286,5,32,0,0,2286,2287,5,399,0,0,2287,2288,3,282,141,0,2288,2289,
        5,400,0,0,2289,2290,5,224,0,0,2290,2291,5,399,0,0,2291,2292,3,318,
        159,0,2292,2294,5,400,0,0,2293,2295,3,52,26,0,2294,2293,1,0,0,0,
        2294,2295,1,0,0,0,2295,239,1,0,0,0,2296,2299,3,246,123,0,2297,2299,
        3,248,124,0,2298,2296,1,0,0,0,2298,2297,1,0,0,0,2299,241,1,0,0,0,
        2300,2301,5,266,0,0,2301,2302,5,426,0,0,2302,243,1,0,0,0,2303,2304,
        5,267,0,0,2304,2305,5,426,0,0,2305,245,1,0,0,0,2306,2307,5,291,0,
        0,2307,2308,5,137,0,0,2308,2309,5,301,0,0,2309,2313,5,426,0,0,2310,
        2311,5,387,0,0,2311,2312,5,302,0,0,2312,2314,3,254,127,0,2313,2310,
        1,0,0,0,2313,2314,1,0,0,0,2314,247,1,0,0,0,2315,2316,5,291,0,0,2316,
        2317,5,137,0,0,2317,2319,5,87,0,0,2318,2320,3,262,131,0,2319,2318,
        1,0,0,0,2319,2320,1,0,0,0,2320,2322,1,0,0,0,2321,2323,3,264,132,
        0,2322,2321,1,0,0,0,2322,2323,1,0,0,0,2323,2325,1,0,0,0,2324,2326,
        3,266,133,0,2325,2324,1,0,0,0,2325,2326,1,0,0,0,2326,2328,1,0,0,
        0,2327,2329,3,268,134,0,2328,2327,1,0,0,0,2328,2329,1,0,0,0,2329,
        2331,1,0,0,0,2330,2332,3,270,135,0,2331,2330,1,0,0,0,2331,2332,1,
        0,0,0,2332,249,1,0,0,0,2333,2336,3,248,124,0,2334,2336,3,246,123,
        0,2335,2333,1,0,0,0,2335,2334,1,0,0,0,2336,251,1,0,0,0,2337,2338,
        5,332,0,0,2338,2339,3,254,127,0,2339,253,1,0,0,0,2340,2341,5,399,
        0,0,2341,2342,3,256,128,0,2342,2343,5,400,0,0,2343,255,1,0,0,0,2344,
        2349,3,258,129,0,2345,2346,5,397,0,0,2346,2348,3,258,129,0,2347,
        2345,1,0,0,0,2348,2351,1,0,0,0,2349,2347,1,0,0,0,2349,2350,1,0,0,
        0,2350,2361,1,0,0,0,2351,2349,1,0,0,0,2352,2357,3,260,130,0,2353,
        2354,5,397,0,0,2354,2356,3,260,130,0,2355,2353,1,0,0,0,2356,2359,
        1,0,0,0,2357,2355,1,0,0,0,2357,2358,1,0,0,0,2358,2361,1,0,0,0,2359,
        2357,1,0,0,0,2360,2344,1,0,0,0,2360,2352,1,0,0,0,2361,257,1,0,0,
        0,2362,2363,5,426,0,0,2363,2364,5,405,0,0,2364,2365,5,426,0,0,2365,
        259,1,0,0,0,2366,2367,5,426,0,0,2367,261,1,0,0,0,2368,2369,5,127,
        0,0,2369,2370,5,334,0,0,2370,2371,5,32,0,0,2371,2375,5,426,0,0,2372,
        2373,5,110,0,0,2373,2374,5,32,0,0,2374,2376,5,426,0,0,2375,2372,
        1,0,0,0,2375,2376,1,0,0,0,2376,263,1,0,0,0,2377,2378,5,44,0,0,2378,
        2379,5,169,0,0,2379,2380,5,334,0,0,2380,2381,5,32,0,0,2381,2382,
        5,426,0,0,2382,265,1,0,0,0,2383,2384,5,198,0,0,2384,2385,5,174,0,
        0,2385,2386,5,334,0,0,2386,2387,5,32,0,0,2387,2388,5,426,0,0,2388,
        267,1,0,0,0,2389,2390,5,186,0,0,2390,2391,5,334,0,0,2391,2392,5,
        32,0,0,2392,2393,5,426,0,0,2393,269,1,0,0,0,2394,2395,5,219,0,0,
        2395,2396,5,85,0,0,2396,2397,5,17,0,0,2397,2398,5,426,0,0,2398,271,
        1,0,0,0,2399,2400,5,321,0,0,2400,2401,5,17,0,0,2401,2402,5,160,0,
        0,2402,2403,5,426,0,0,2403,2404,5,233,0,0,2404,2409,5,426,0,0,2405,
        2406,5,159,0,0,2406,2407,5,426,0,0,2407,2408,5,232,0,0,2408,2410,
        5,426,0,0,2409,2405,1,0,0,0,2409,2410,1,0,0,0,2410,2441,1,0,0,0,
        2411,2412,5,321,0,0,2412,2413,5,32,0,0,2413,2417,5,426,0,0,2414,
        2415,5,387,0,0,2415,2416,5,302,0,0,2416,2418,3,254,127,0,2417,2414,
        1,0,0,0,2417,2418,1,0,0,0,2418,2422,1,0,0,0,2419,2420,5,321,0,0,
        2420,2421,5,17,0,0,2421,2423,3,926,463,0,2422,2419,1,0,0,0,2422,
        2423,1,0,0,0,2423,2441,1,0,0,0,2424,2425,5,321,0,0,2425,2426,5,32,
        0,0,2426,2430,3,926,463,0,2427,2428,5,387,0,0,2428,2429,5,302,0,
        0,2429,2431,3,254,127,0,2430,2427,1,0,0,0,2430,2431,1,0,0,0,2431,
        2435,1,0,0,0,2432,2433,5,321,0,0,2433,2434,5,17,0,0,2434,2436,3,
        926,463,0,2435,2432,1,0,0,0,2435,2436,1,0,0,0,2436,2441,1,0,0,0,
        2437,2438,5,321,0,0,2438,2439,5,17,0,0,2439,2441,3,926,463,0,2440,
        2399,1,0,0,0,2440,2411,1,0,0,0,2440,2424,1,0,0,0,2440,2437,1,0,0,
        0,2441,273,1,0,0,0,2442,2443,5,189,0,0,2443,2444,5,426,0,0,2444,
        275,1,0,0,0,2445,2450,3,344,172,0,2446,2447,5,397,0,0,2447,2449,
        3,344,172,0,2448,2446,1,0,0,0,2449,2452,1,0,0,0,2450,2448,1,0,0,
        0,2450,2451,1,0,0,0,2451,277,1,0,0,0,2452,2450,1,0,0,0,2453,2458,
        3,346,173,0,2454,2455,5,397,0,0,2455,2457,3,346,173,0,2456,2454,
        1,0,0,0,2457,2460,1,0,0,0,2458,2456,1,0,0,0,2458,2459,1,0,0,0,2459,
        279,1,0,0,0,2460,2458,1,0,0,0,2461,2466,3,374,187,0,2462,2463,5,
        397,0,0,2463,2465,3,374,187,0,2464,2462,1,0,0,0,2465,2468,1,0,0,
        0,2466,2464,1,0,0,0,2466,2467,1,0,0,0,2467,281,1,0,0,0,2468,2466,
        1,0,0,0,2469,2474,3,284,142,0,2470,2471,5,397,0,0,2471,2473,3,284,
        142,0,2472,2470,1,0,0,0,2473,2476,1,0,0,0,2474,2472,1,0,0,0,2474,
        2475,1,0,0,0,2475,283,1,0,0,0,2476,2474,1,0,0,0,2477,2482,3,926,
        463,0,2478,2479,5,395,0,0,2479,2481,3,926,463,0,2480,2478,1,0,0,
        0,2481,2484,1,0,0,0,2482,2480,1,0,0,0,2482,2483,1,0,0,0,2483,2487,
        1,0,0,0,2484,2482,1,0,0,0,2485,2487,4,142,0,0,2486,2477,1,0,0,0,
        2486,2485,1,0,0,0,2487,285,1,0,0,0,2488,2489,3,926,463,0,2489,287,
        1,0,0,0,2490,2500,3,284,142,0,2491,2496,5,395,0,0,2492,2497,5,104,
        0,0,2493,2497,5,175,0,0,2494,2497,5,375,0,0,2495,2497,3,926,463,
        0,2496,2492,1,0,0,0,2496,2493,1,0,0,0,2496,2494,1,0,0,0,2496,2495,
        1,0,0,0,2497,2499,1,0,0,0,2498,2491,1,0,0,0,2499,2502,1,0,0,0,2500,
        2498,1,0,0,0,2500,2501,1,0,0,0,2501,289,1,0,0,0,2502,2500,1,0,0,
        0,2503,2508,3,334,167,0,2504,2505,5,397,0,0,2505,2507,3,334,167,
        0,2506,2504,1,0,0,0,2507,2510,1,0,0,0,2508,2506,1,0,0,0,2508,2509,
        1,0,0,0,2509,291,1,0,0,0,2510,2508,1,0,0,0,2511,2512,5,399,0,0,2512,
        2513,3,282,141,0,2513,2514,5,400,0,0,2514,293,1,0,0,0,2515,2517,
        3,296,148,0,2516,2518,3,298,149,0,2517,2516,1,0,0,0,2517,2518,1,
        0,0,0,2518,2521,1,0,0,0,2519,2521,3,300,150,0,2520,2515,1,0,0,0,
        2520,2519,1,0,0,0,2521,295,1,0,0,0,2522,2525,3,970,485,0,2523,2525,
        3,972,486,0,2524,2522,1,0,0,0,2524,2523,1,0,0,0,2525,297,1,0,0,0,
        2526,2527,7,14,0,0,2527,299,1,0,0,0,2528,2532,5,109,0,0,2529,2530,
        5,216,0,0,2530,2532,5,109,0,0,2531,2528,1,0,0,0,2531,2529,1,0,0,
        0,2532,301,1,0,0,0,2533,2534,7,15,0,0,2534,303,1,0,0,0,2535,2536,
        5,55,0,0,2536,2538,3,926,463,0,2537,2535,1,0,0,0,2537,2538,1,0,0,
        0,2538,2539,1,0,0,0,2539,2541,3,308,154,0,2540,2542,3,370,185,0,
        2541,2540,1,0,0,0,2541,2542,1,0,0,0,2542,305,1,0,0,0,2543,2544,5,
        55,0,0,2544,2545,3,926,463,0,2545,2547,3,308,154,0,2546,2548,3,372,
        186,0,2547,2546,1,0,0,0,2547,2548,1,0,0,0,2548,307,1,0,0,0,2549,
        2552,3,310,155,0,2550,2552,3,312,156,0,2551,2549,1,0,0,0,2551,2550,
        1,0,0,0,2552,309,1,0,0,0,2553,2554,3,368,184,0,2554,2555,3,292,146,
        0,2555,311,1,0,0,0,2556,2557,5,40,0,0,2557,2558,5,399,0,0,2558,2559,
        3,828,414,0,2559,2560,5,400,0,0,2560,313,1,0,0,0,2561,2562,5,55,
        0,0,2562,2564,3,926,463,0,2563,2561,1,0,0,0,2563,2564,1,0,0,0,2564,
        2565,1,0,0,0,2565,2566,5,136,0,0,2566,2567,5,173,0,0,2567,2568,3,
        292,146,0,2568,2569,5,269,0,0,2569,2570,3,660,330,0,2570,2572,3,
        292,146,0,2571,2573,3,370,185,0,2572,2571,1,0,0,0,2572,2573,1,0,
        0,0,2573,315,1,0,0,0,2574,2575,5,55,0,0,2575,2576,3,926,463,0,2576,
        2577,5,136,0,0,2577,2578,5,173,0,0,2578,2579,3,292,146,0,2579,2580,
        5,269,0,0,2580,2581,3,660,330,0,2581,2583,3,292,146,0,2582,2584,
        3,372,186,0,2583,2582,1,0,0,0,2583,2584,1,0,0,0,2584,317,1,0,0,0,
        2585,2588,3,324,162,0,2586,2588,3,320,160,0,2587,2585,1,0,0,0,2587,
        2586,1,0,0,0,2588,319,1,0,0,0,2589,2594,3,322,161,0,2590,2591,5,
        397,0,0,2591,2593,3,322,161,0,2592,2590,1,0,0,0,2593,2596,1,0,0,
        0,2594,2592,1,0,0,0,2594,2595,1,0,0,0,2595,321,1,0,0,0,2596,2594,
        1,0,0,0,2597,2598,5,399,0,0,2598,2599,3,324,162,0,2599,2600,5,400,
        0,0,2600,323,1,0,0,0,2601,2606,3,326,163,0,2602,2603,5,397,0,0,2603,
        2605,3,326,163,0,2604,2602,1,0,0,0,2605,2608,1,0,0,0,2606,2604,1,
        0,0,0,2606,2607,1,0,0,0,2607,325,1,0,0,0,2608,2606,1,0,0,0,2609,
        2610,3,804,402,0,2610,327,1,0,0,0,2611,2614,3,326,163,0,2612,2614,
        3,322,161,0,2613,2611,1,0,0,0,2613,2612,1,0,0,0,2614,329,1,0,0,0,
        2615,2616,7,16,0,0,2616,331,1,0,0,0,2617,2618,5,220,0,0,2618,2619,
        7,17,0,0,2619,333,1,0,0,0,2620,2622,3,284,142,0,2621,2623,3,330,
        165,0,2622,2621,1,0,0,0,2622,2623,1,0,0,0,2623,2625,1,0,0,0,2624,
        2626,3,332,166,0,2625,2624,1,0,0,0,2625,2626,1,0,0,0,2626,335,1,
        0,0,0,2627,2632,3,338,169,0,2628,2629,5,397,0,0,2629,2631,3,338,
        169,0,2630,2628,1,0,0,0,2631,2634,1,0,0,0,2632,2630,1,0,0,0,2632,
        2633,1,0,0,0,2633,337,1,0,0,0,2634,2632,1,0,0,0,2635,2638,3,286,
        143,0,2636,2637,5,47,0,0,2637,2639,5,426,0,0,2638,2636,1,0,0,0,2638,
        2639,1,0,0,0,2639,339,1,0,0,0,2640,2641,7,16,0,0,2641,341,1,0,0,
        0,2642,2645,3,284,142,0,2643,2645,3,828,414,0,2644,2642,1,0,0,0,
        2644,2643,1,0,0,0,2645,2647,1,0,0,0,2646,2648,3,340,170,0,2647,2646,
        1,0,0,0,2647,2648,1,0,0,0,2648,2650,1,0,0,0,2649,2651,3,332,166,
        0,2650,2649,1,0,0,0,2650,2651,1,0,0,0,2651,343,1,0,0,0,2652,2653,
        3,286,143,0,2653,2656,3,376,188,0,2654,2655,5,47,0,0,2655,2657,5,
        426,0,0,2656,2654,1,0,0,0,2656,2657,1,0,0,0,2657,345,1,0,0,0,2658,
        2661,3,348,174,0,2659,2661,3,350,175,0,2660,2658,1,0,0,0,2660,2659,
        1,0,0,0,2661,347,1,0,0,0,2662,2665,3,314,157,0,2663,2665,3,304,152,
        0,2664,2662,1,0,0,0,2664,2663,1,0,0,0,2665,349,1,0,0,0,2666,2667,
        3,286,143,0,2667,2669,3,376,188,0,2668,2670,3,352,176,0,2669,2668,
        1,0,0,0,2669,2670,1,0,0,0,2670,2673,1,0,0,0,2671,2672,5,47,0,0,2672,
        2674,5,426,0,0,2673,2671,1,0,0,0,2673,2674,1,0,0,0,2674,351,1,0,
        0,0,2675,2678,3,354,177,0,2676,2678,3,356,178,0,2677,2675,1,0,0,
        0,2677,2676,1,0,0,0,2678,353,1,0,0,0,2679,2680,5,55,0,0,2680,2682,
        3,926,463,0,2681,2679,1,0,0,0,2681,2682,1,0,0,0,2682,2683,1,0,0,
        0,2683,2684,5,269,0,0,2684,2685,3,660,330,0,2685,2686,5,399,0,0,
        2686,2687,3,284,142,0,2687,2689,5,400,0,0,2688,2690,3,370,185,0,
        2689,2688,1,0,0,0,2689,2690,1,0,0,0,2690,355,1,0,0,0,2691,2692,5,
        55,0,0,2692,2694,3,926,463,0,2693,2691,1,0,0,0,2693,2694,1,0,0,0,
        2694,2695,1,0,0,0,2695,2697,3,364,182,0,2696,2698,3,370,185,0,2697,
        2696,1,0,0,0,2697,2698,1,0,0,0,2698,357,1,0,0,0,2699,2702,3,360,
        180,0,2700,2702,3,362,181,0,2701,2699,1,0,0,0,2701,2700,1,0,0,0,
        2702,359,1,0,0,0,2703,2704,5,55,0,0,2704,2706,3,926,463,0,2705,2703,
        1,0,0,0,2705,2706,1,0,0,0,2706,2707,1,0,0,0,2707,2708,5,269,0,0,
        2708,2709,3,660,330,0,2709,2710,5,399,0,0,2710,2711,3,284,142,0,
        2711,2713,5,400,0,0,2712,2714,3,372,186,0,2713,2712,1,0,0,0,2713,
        2714,1,0,0,0,2714,361,1,0,0,0,2715,2716,5,55,0,0,2716,2718,3,926,
        463,0,2717,2715,1,0,0,0,2717,2718,1,0,0,0,2718,2719,1,0,0,0,2719,
        2721,3,364,182,0,2720,2722,3,372,186,0,2721,2720,1,0,0,0,2721,2722,
        1,0,0,0,2722,363,1,0,0,0,2723,2724,5,216,0,0,2724,2730,5,219,0,0,
        2725,2726,5,83,0,0,2726,2730,3,366,183,0,2727,2730,3,312,156,0,2728,
        2730,3,368,184,0,2729,2723,1,0,0,0,2729,2725,1,0,0,0,2729,2727,1,
        0,0,0,2729,2728,1,0,0,0,2730,365,1,0,0,0,2731,2735,3,804,402,0,2732,
        2735,3,776,388,0,2733,2735,3,790,395,0,2734,2731,1,0,0,0,2734,2732,
        1,0,0,0,2734,2733,1,0,0,0,2735,367,1,0,0,0,2736,2737,5,251,0,0,2737,
        2740,5,173,0,0,2738,2740,5,358,0,0,2739,2736,1,0,0,0,2739,2738,1,
        0,0,0,2740,369,1,0,0,0,2741,2743,3,294,147,0,2742,2744,3,302,151,
        0,2743,2742,1,0,0,0,2743,2744,1,0,0,0,2744,371,1,0,0,0,2745,2747,
        3,294,147,0,2746,2748,3,302,151,0,2747,2746,1,0,0,0,2747,2748,1,
        0,0,0,2748,373,1,0,0,0,2749,2750,3,286,143,0,2750,2751,5,396,0,0,
        2751,2754,3,376,188,0,2752,2753,5,47,0,0,2753,2755,5,426,0,0,2754,
        2752,1,0,0,0,2754,2755,1,0,0,0,2755,375,1,0,0,0,2756,2757,3,380,
        190,0,2757,377,1,0,0,0,2758,2763,3,376,188,0,2759,2760,5,397,0,0,
        2760,2762,3,376,188,0,2761,2759,1,0,0,0,2762,2765,1,0,0,0,2763,2761,
        1,0,0,0,2763,2764,1,0,0,0,2764,379,1,0,0,0,2765,2763,1,0,0,0,2766,
        2772,3,382,191,0,2767,2772,3,384,192,0,2768,2772,3,386,193,0,2769,
        2772,3,388,194,0,2770,2772,3,390,195,0,2771,2766,1,0,0,0,2771,2767,
        1,0,0,0,2771,2768,1,0,0,0,2771,2769,1,0,0,0,2771,2770,1,0,0,0,2772,
        381,1,0,0,0,2773,2811,5,340,0,0,2774,2811,5,311,0,0,2775,2811,5,
        162,0,0,2776,2811,5,163,0,0,2777,2811,5,26,0,0,2778,2811,5,28,0,
        0,2779,2811,5,131,0,0,2780,2811,5,264,0,0,2781,2783,5,100,0,0,2782,
        2784,5,248,0,0,2783,2782,1,0,0,0,2783,2784,1,0,0,0,2784,2811,1,0,
        0,0,2785,2811,5,71,0,0,2786,2811,5,72,0,0,2787,2811,5,337,0,0,2788,
        2811,5,338,0,0,2789,2790,5,337,0,0,2790,2791,5,387,0,0,2791,2792,
        5,188,0,0,2792,2793,5,336,0,0,2793,2811,5,394,0,0,2794,2811,5,323,
        0,0,2795,2811,5,27,0,0,2796,2804,3,990,495,0,2797,2798,5,399,0,0,
        2798,2801,5,431,0,0,2799,2800,5,397,0,0,2800,2802,5,431,0,0,2801,
        2799,1,0,0,0,2801,2802,1,0,0,0,2802,2803,1,0,0,0,2803,2805,5,400,
        0,0,2804,2797,1,0,0,0,2804,2805,1,0,0,0,2805,2811,1,0,0,0,2806,2807,
        7,18,0,0,2807,2808,5,399,0,0,2808,2809,5,431,0,0,2809,2811,5,400,
        0,0,2810,2773,1,0,0,0,2810,2774,1,0,0,0,2810,2775,1,0,0,0,2810,2776,
        1,0,0,0,2810,2777,1,0,0,0,2810,2778,1,0,0,0,2810,2779,1,0,0,0,2810,
        2780,1,0,0,0,2810,2781,1,0,0,0,2810,2785,1,0,0,0,2810,2786,1,0,0,
        0,2810,2787,1,0,0,0,2810,2788,1,0,0,0,2810,2789,1,0,0,0,2810,2794,
        1,0,0,0,2810,2795,1,0,0,0,2810,2796,1,0,0,0,2810,2806,1,0,0,0,2811,
        383,1,0,0,0,2812,2813,5,16,0,0,2813,2814,5,409,0,0,2814,2815,3,380,
        190,0,2815,2816,5,411,0,0,2816,385,1,0,0,0,2817,2818,5,324,0,0,2818,
        2819,5,409,0,0,2819,2820,3,280,140,0,2820,2821,5,411,0,0,2821,387,
        1,0,0,0,2822,2823,5,198,0,0,2823,2824,5,409,0,0,2824,2825,3,382,
        191,0,2825,2826,5,397,0,0,2826,2827,3,380,190,0,2827,2828,5,411,
        0,0,2828,389,1,0,0,0,2829,2830,5,357,0,0,2830,2831,5,409,0,0,2831,
        2832,3,378,189,0,2832,2833,5,411,0,0,2833,391,1,0,0,0,2834,2836,
        7,19,0,0,2835,2837,7,20,0,0,2836,2835,1,0,0,0,2836,2837,1,0,0,0,
        2837,393,1,0,0,0,2838,2840,3,398,199,0,2839,2838,1,0,0,0,2839,2840,
        1,0,0,0,2840,2841,1,0,0,0,2841,2842,3,396,198,0,2842,395,1,0,0,0,
        2843,2846,3,402,201,0,2844,2846,3,406,203,0,2845,2843,1,0,0,0,2845,
        2844,1,0,0,0,2846,397,1,0,0,0,2847,2848,5,387,0,0,2848,2853,3,400,
        200,0,2849,2850,5,397,0,0,2850,2852,3,400,200,0,2851,2849,1,0,0,
        0,2852,2855,1,0,0,0,2853,2851,1,0,0,0,2853,2854,1,0,0,0,2854,399,
        1,0,0,0,2855,2853,1,0,0,0,2856,2861,3,926,463,0,2857,2858,5,399,
        0,0,2858,2859,3,282,141,0,2859,2860,5,400,0,0,2860,2862,1,0,0,0,
        2861,2857,1,0,0,0,2861,2862,1,0,0,0,2862,2863,1,0,0,0,2863,2864,
        5,17,0,0,2864,2865,5,399,0,0,2865,2866,3,394,197,0,2866,2867,5,400,
        0,0,2867,401,1,0,0,0,2868,2874,3,404,202,0,2869,2870,3,392,196,0,
        2870,2871,3,404,202,0,2871,2873,1,0,0,0,2872,2869,1,0,0,0,2873,2876,
        1,0,0,0,2874,2872,1,0,0,0,2874,2875,1,0,0,0,2875,403,1,0,0,0,2876,
        2874,1,0,0,0,2877,2878,3,620,310,0,2878,2879,3,416,208,0,2879,2881,
        3,692,346,0,2880,2882,3,638,319,0,2881,2880,1,0,0,0,2881,2882,1,
        0,0,0,2882,2884,1,0,0,0,2883,2885,3,676,338,0,2884,2883,1,0,0,0,
        2884,2885,1,0,0,0,2885,2887,1,0,0,0,2886,2888,3,724,362,0,2887,2886,
        1,0,0,0,2887,2888,1,0,0,0,2888,2890,1,0,0,0,2889,2891,3,740,370,
        0,2890,2889,1,0,0,0,2890,2891,1,0,0,0,2891,2893,1,0,0,0,2892,2894,
        3,708,354,0,2893,2892,1,0,0,0,2893,2894,1,0,0,0,2894,2896,1,0,0,
        0,2895,2897,3,742,371,0,2896,2895,1,0,0,0,2896,2897,1,0,0,0,2897,
        2899,1,0,0,0,2898,2900,3,764,382,0,2899,2898,1,0,0,0,2899,2900,1,
        0,0,0,2900,2902,1,0,0,0,2901,2903,3,766,383,0,2902,2901,1,0,0,0,
        2902,2903,1,0,0,0,2903,2905,1,0,0,0,2904,2906,3,770,385,0,2905,2904,
        1,0,0,0,2905,2906,1,0,0,0,2906,2908,1,0,0,0,2907,2909,3,772,386,
        0,2908,2907,1,0,0,0,2908,2909,1,0,0,0,2909,2911,1,0,0,0,2910,2912,
        3,420,210,0,2911,2910,1,0,0,0,2911,2912,1,0,0,0,2912,2949,1,0,0,
        0,2913,2914,3,620,310,0,2914,2916,3,692,346,0,2915,2917,3,638,319,
        0,2916,2915,1,0,0,0,2916,2917,1,0,0,0,2917,2919,1,0,0,0,2918,2920,
        3,676,338,0,2919,2918,1,0,0,0,2919,2920,1,0,0,0,2920,2922,1,0,0,
        0,2921,2923,3,724,362,0,2922,2921,1,0,0,0,2922,2923,1,0,0,0,2923,
        2925,1,0,0,0,2924,2926,3,740,370,0,2925,2924,1,0,0,0,2925,2926,1,
        0,0,0,2926,2928,1,0,0,0,2927,2929,3,708,354,0,2928,2927,1,0,0,0,
        2928,2929,1,0,0,0,2929,2931,1,0,0,0,2930,2932,3,742,371,0,2931,2930,
        1,0,0,0,2931,2932,1,0,0,0,2932,2934,1,0,0,0,2933,2935,3,764,382,
        0,2934,2933,1,0,0,0,2934,2935,1,0,0,0,2935,2937,1,0,0,0,2936,2938,
        3,766,383,0,2937,2936,1,0,0,0,2937,2938,1,0,0,0,2938,2940,1,0,0,
        0,2939,2941,3,770,385,0,2940,2939,1,0,0,0,2940,2941,1,0,0,0,2941,
        2943,1,0,0,0,2942,2944,3,772,386,0,2943,2942,1,0,0,0,2943,2944,1,
        0,0,0,2944,2946,1,0,0,0,2945,2947,3,420,210,0,2946,2945,1,0,0,0,
        2946,2947,1,0,0,0,2947,2949,1,0,0,0,2948,2877,1,0,0,0,2948,2913,
        1,0,0,0,2949,405,1,0,0,0,2950,2951,3,416,208,0,2951,2952,3,410,205,
        0,2952,2955,1,0,0,0,2953,2955,3,410,205,0,2954,2950,1,0,0,0,2954,
        2953,1,0,0,0,2955,407,1,0,0,0,2956,2958,3,692,346,0,2957,2959,3,
        620,310,0,2958,2957,1,0,0,0,2958,2959,1,0,0,0,2959,2961,1,0,0,0,
        2960,2962,3,676,338,0,2961,2960,1,0,0,0,2961,2962,1,0,0,0,2962,2964,
        1,0,0,0,2963,2965,3,724,362,0,2964,2963,1,0,0,0,2964,2965,1,0,0,
        0,2965,2967,1,0,0,0,2966,2968,3,740,370,0,2967,2966,1,0,0,0,2967,
        2968,1,0,0,0,2968,2970,1,0,0,0,2969,2971,3,708,354,0,2970,2969,1,
        0,0,0,2970,2971,1,0,0,0,2971,2973,1,0,0,0,2972,2974,3,742,371,0,
        2973,2972,1,0,0,0,2973,2974,1,0,0,0,2974,2981,1,0,0,0,2975,2976,
        5,399,0,0,2976,2977,3,410,205,0,2977,2978,5,400,0,0,2978,2981,1,
        0,0,0,2979,2981,3,680,340,0,2980,2956,1,0,0,0,2980,2975,1,0,0,0,
        2980,2979,1,0,0,0,2981,409,1,0,0,0,2982,2984,3,408,204,0,2983,2985,
        3,412,206,0,2984,2983,1,0,0,0,2984,2985,1,0,0,0,2985,2987,1,0,0,
        0,2986,2988,3,764,382,0,2987,2986,1,0,0,0,2987,2988,1,0,0,0,2988,
        2990,1,0,0,0,2989,2991,3,766,383,0,2990,2989,1,0,0,0,2990,2991,1,
        0,0,0,2991,2993,1,0,0,0,2992,2994,3,770,385,0,2993,2992,1,0,0,0,
        2993,2994,1,0,0,0,2994,2996,1,0,0,0,2995,2997,3,772,386,0,2996,2995,
        1,0,0,0,2996,2997,1,0,0,0,2997,2999,1,0,0,0,2998,3000,3,420,210,
        0,2999,2998,1,0,0,0,2999,3000,1,0,0,0,3000,411,1,0,0,0,3001,3002,
        3,392,196,0,3002,3003,3,408,204,0,3003,3005,1,0,0,0,3004,3001,1,
        0,0,0,3005,3006,1,0,0,0,3006,3004,1,0,0,0,3006,3007,1,0,0,0,3007,
        413,1,0,0,0,3008,3010,3,398,199,0,3009,3008,1,0,0,0,3009,3010,1,
        0,0,0,3010,3011,1,0,0,0,3011,3012,3,410,205,0,3012,415,1,0,0,0,3013,
        3030,5,161,0,0,3014,3015,5,235,0,0,3015,3017,3,418,209,0,3016,3018,
        3,44,22,0,3017,3016,1,0,0,0,3017,3018,1,0,0,0,3018,3031,1,0,0,0,
        3019,3021,5,166,0,0,3020,3022,5,329,0,0,3021,3020,1,0,0,0,3021,3022,
        1,0,0,0,3022,3023,1,0,0,0,3023,3028,3,910,455,0,3024,3025,5,399,
        0,0,3025,3026,3,282,141,0,3026,3027,5,400,0,0,3027,3029,1,0,0,0,
        3028,3024,1,0,0,0,3028,3029,1,0,0,0,3029,3031,1,0,0,0,3030,3014,
        1,0,0,0,3030,3019,1,0,0,0,3031,417,1,0,0,0,3032,3034,5,188,0,0,3033,
        3032,1,0,0,0,3033,3034,1,0,0,0,3034,3035,1,0,0,0,3035,3036,5,93,
        0,0,3036,3038,5,426,0,0,3037,3039,3,250,125,0,3038,3037,1,0,0,0,
        3038,3039,1,0,0,0,3039,3041,1,0,0,0,3040,3042,3,272,136,0,3041,3040,
        1,0,0,0,3041,3042,1,0,0,0,3042,3046,1,0,0,0,3043,3044,5,329,0,0,
        3044,3046,3,910,455,0,3045,3033,1,0,0,0,3045,3043,1,0,0,0,3046,419,
        1,0,0,0,3047,3056,5,185,0,0,3048,3049,5,431,0,0,3049,3051,5,397,
        0,0,3050,3048,1,0,0,0,3050,3051,1,0,0,0,3051,3052,1,0,0,0,3052,3057,
        5,431,0,0,3053,3054,5,431,0,0,3054,3055,5,223,0,0,3055,3057,5,431,
        0,0,3056,3050,1,0,0,0,3056,3053,1,0,0,0,3057,421,1,0,0,0,3058,3059,
        5,86,0,0,3059,3060,5,139,0,0,3060,3062,3,660,330,0,3061,3063,3,676,
        338,0,3062,3061,1,0,0,0,3062,3063,1,0,0,0,3063,423,1,0,0,0,3064,
        3065,3,284,142,0,3065,3066,5,405,0,0,3066,3067,3,426,213,0,3067,
        425,1,0,0,0,3068,3071,3,614,307,0,3069,3071,3,848,424,0,3070,3068,
        1,0,0,0,3070,3069,1,0,0,0,3071,427,1,0,0,0,3072,3073,5,304,0,0,3073,
        3078,3,424,212,0,3074,3075,5,397,0,0,3075,3077,3,424,212,0,3076,
        3074,1,0,0,0,3077,3080,1,0,0,0,3078,3076,1,0,0,0,3078,3079,1,0,0,
        0,3079,429,1,0,0,0,3080,3078,1,0,0,0,3081,3082,5,365,0,0,3082,3083,
        3,660,330,0,3083,3085,3,428,214,0,3084,3086,3,676,338,0,3085,3084,
        1,0,0,0,3085,3086,1,0,0,0,3086,431,1,0,0,0,3087,3092,3,434,217,0,
        3088,3092,3,444,222,0,3089,3092,3,446,223,0,3090,3092,3,448,224,
        0,3091,3087,1,0,0,0,3091,3088,1,0,0,0,3091,3089,1,0,0,0,3091,3090,
        1,0,0,0,3092,433,1,0,0,0,3093,3094,5,318,0,0,3094,3103,5,344,0,0,
        3095,3100,3,436,218,0,3096,3097,5,397,0,0,3097,3099,3,436,218,0,
        3098,3096,1,0,0,0,3099,3102,1,0,0,0,3100,3098,1,0,0,0,3100,3101,
        1,0,0,0,3101,3104,1,0,0,0,3102,3100,1,0,0,0,3103,3095,1,0,0,0,3103,
        3104,1,0,0,0,3104,435,1,0,0,0,3105,3108,3,440,220,0,3106,3108,3,
        438,219,0,3107,3105,1,0,0,0,3107,3106,1,0,0,0,3108,437,1,0,0,0,3109,
        3110,5,261,0,0,3110,3111,7,21,0,0,3111,439,1,0,0,0,3112,3113,5,168,
        0,0,3113,3114,5,182,0,0,3114,3115,3,442,221,0,3115,441,1,0,0,0,3116,
        3117,5,312,0,0,3117,443,1,0,0,0,3118,3120,5,48,0,0,3119,3121,5,389,
        0,0,3120,3119,1,0,0,0,3120,3121,1,0,0,0,3121,445,1,0,0,0,3122,3124,
        5,289,0,0,3123,3125,5,389,0,0,3124,3123,1,0,0,0,3124,3125,1,0,0,
        0,3125,447,1,0,0,0,3126,3127,5,304,0,0,3127,3128,5,22,0,0,3128,3129,
        3,908,454,0,3129,449,1,0,0,0,3130,3131,5,1,0,0,3131,3133,5,346,0,
        0,3132,3134,5,431,0,0,3133,3132,1,0,0,0,3134,3135,1,0,0,0,3135,3133,
        1,0,0,0,3135,3136,1,0,0,0,3136,451,1,0,0,0,3137,3138,5,1,0,0,3138,
        3140,5,50,0,0,3139,3141,5,431,0,0,3140,3139,1,0,0,0,3141,3142,1,
        0,0,0,3142,3140,1,0,0,0,3142,3143,1,0,0,0,3143,453,1,0,0,0,3144,
        3146,5,203,0,0,3145,3147,5,436,0,0,3146,3145,1,0,0,0,3146,3147,1,
        0,0,0,3147,3148,1,0,0,0,3148,3149,5,166,0,0,3149,3154,3,660,330,
        0,3150,3152,5,17,0,0,3151,3150,1,0,0,0,3151,3152,1,0,0,0,3152,3153,
        1,0,0,0,3153,3155,3,926,463,0,3154,3151,1,0,0,0,3154,3155,1,0,0,
        0,3155,3156,1,0,0,0,3156,3157,5,370,0,0,3157,3158,3,628,314,0,3158,
        3159,5,224,0,0,3159,3160,3,828,414,0,3160,3161,3,456,228,0,3161,
        455,1,0,0,0,3162,3165,3,460,230,0,3163,3165,3,462,231,0,3164,3162,
        1,0,0,0,3164,3163,1,0,0,0,3165,3168,1,0,0,0,3166,3164,1,0,0,0,3166,
        3167,1,0,0,0,3167,3170,1,0,0,0,3168,3166,1,0,0,0,3169,3171,3,458,
        229,0,3170,3169,1,0,0,0,3170,3171,1,0,0,0,3171,457,1,0,0,0,3172,
        3173,5,383,0,0,3173,3174,5,216,0,0,3174,3177,5,201,0,0,3175,3176,
        5,11,0,0,3176,3178,3,828,414,0,3177,3175,1,0,0,0,3177,3178,1,0,0,
        0,3178,3179,1,0,0,0,3179,3180,5,335,0,0,3180,3182,5,161,0,0,3181,
        3183,3,292,146,0,3182,3181,1,0,0,0,3182,3183,1,0,0,0,3183,3184,1,
        0,0,0,3184,3185,5,374,0,0,3185,3186,3,686,343,0,3186,459,1,0,0,0,
        3187,3188,5,383,0,0,3188,3189,5,201,0,0,3189,3190,5,11,0,0,3190,
        3191,3,828,414,0,3191,3192,5,335,0,0,3192,3193,3,464,232,0,3193,
        461,1,0,0,0,3194,3195,5,383,0,0,3195,3196,5,201,0,0,3196,3197,5,
        335,0,0,3197,3198,3,464,232,0,3198,463,1,0,0,0,3199,3200,5,365,0,
        0,3200,3203,3,428,214,0,3201,3203,5,86,0,0,3202,3199,1,0,0,0,3202,
        3201,1,0,0,0,3203,465,1,0,0,0,3204,3205,5,176,0,0,3205,3207,5,258,
        0,0,3206,3208,5,426,0,0,3207,3206,1,0,0,0,3208,3209,1,0,0,0,3209,
        3207,1,0,0,0,3209,3210,1,0,0,0,3210,467,1,0,0,0,3211,3212,5,51,0,
        0,3212,3213,5,405,0,0,3213,3214,5,431,0,0,3214,469,1,0,0,0,3215,
        3216,5,246,0,0,3216,3217,5,426,0,0,3217,471,1,0,0,0,3218,3219,5,
        352,0,0,3219,3220,5,426,0,0,3220,473,1,0,0,0,3221,3222,5,320,0,0,
        3222,3223,5,426,0,0,3223,475,1,0,0,0,3224,3248,5,9,0,0,3225,3226,
        5,329,0,0,3226,3227,3,660,330,0,3227,3228,3,478,239,0,3228,3249,
        1,0,0,0,3229,3230,5,378,0,0,3230,3232,3,664,332,0,3231,3233,5,17,
        0,0,3232,3231,1,0,0,0,3232,3233,1,0,0,0,3233,3234,1,0,0,0,3234,3235,
        3,484,242,0,3235,3249,1,0,0,0,3236,3237,5,202,0,0,3237,3238,5,378,
        0,0,3238,3239,3,664,332,0,3239,3240,3,486,243,0,3240,3249,1,0,0,
        0,3241,3242,3,92,46,0,3242,3243,3,492,246,0,3243,3249,1,0,0,0,3244,
        3245,5,69,0,0,3245,3249,3,588,294,0,3246,3247,5,155,0,0,3247,3249,
        3,584,292,0,3248,3225,1,0,0,0,3248,3229,1,0,0,0,3248,3236,1,0,0,
        0,3248,3241,1,0,0,0,3248,3244,1,0,0,0,3248,3246,1,0,0,0,3249,477,
        1,0,0,0,3250,3272,3,502,251,0,3251,3272,3,534,267,0,3252,3272,3,
        536,268,0,3253,3272,3,522,261,0,3254,3272,3,526,263,0,3255,3272,
        3,528,264,0,3256,3272,3,530,265,0,3257,3272,3,538,269,0,3258,3272,
        3,560,280,0,3259,3272,3,562,281,0,3260,3272,3,482,241,0,3261,3272,
        3,512,256,0,3262,3272,3,506,253,0,3263,3272,3,480,240,0,3264,3266,
        3,912,456,0,3265,3264,1,0,0,0,3265,3266,1,0,0,0,3266,3267,1,0,0,
        0,3267,3272,3,480,240,0,3268,3272,3,578,289,0,3269,3272,3,580,290,
        0,3270,3272,3,582,291,0,3271,3250,1,0,0,0,3271,3251,1,0,0,0,3271,
        3252,1,0,0,0,3271,3253,1,0,0,0,3271,3254,1,0,0,0,3271,3255,1,0,0,
        0,3271,3256,1,0,0,0,3271,3257,1,0,0,0,3271,3258,1,0,0,0,3271,3259,
        1,0,0,0,3271,3260,1,0,0,0,3271,3261,1,0,0,0,3271,3262,1,0,0,0,3271,
        3263,1,0,0,0,3271,3265,1,0,0,0,3271,3268,1,0,0,0,3271,3269,1,0,0,
        0,3271,3270,1,0,0,0,3272,479,1,0,0,0,3273,3289,3,546,273,0,3274,
        3289,3,558,279,0,3275,3289,3,568,284,0,3276,3289,3,542,271,0,3277,
        3289,3,564,282,0,3278,3289,3,570,285,0,3279,3289,3,550,275,0,3280,
        3289,3,548,274,0,3281,3289,3,576,288,0,3282,3289,3,516,258,0,3283,
        3289,3,518,259,0,3284,3289,3,514,257,0,3285,3289,3,504,252,0,3286,
        3289,3,508,254,0,3287,3289,3,510,255,0,3288,3273,1,0,0,0,3288,3274,
        1,0,0,0,3288,3275,1,0,0,0,3288,3276,1,0,0,0,3288,3277,1,0,0,0,3288,
        3278,1,0,0,0,3288,3279,1,0,0,0,3288,3280,1,0,0,0,3288,3281,1,0,0,
        0,3288,3282,1,0,0,0,3288,3283,1,0,0,0,3288,3284,1,0,0,0,3288,3285,
        1,0,0,0,3288,3286,1,0,0,0,3288,3287,1,0,0,0,3289,481,1,0,0,0,3290,
        3291,5,237,0,0,3291,3292,5,45,0,0,3292,3293,5,399,0,0,3293,3294,
        3,344,172,0,3294,3295,5,400,0,0,3295,483,1,0,0,0,3296,3302,3,540,
        270,0,3297,3302,3,502,251,0,3298,3302,3,522,261,0,3299,3302,3,536,
        268,0,3300,3302,3,414,207,0,3301,3296,1,0,0,0,3301,3297,1,0,0,0,
        3301,3298,1,0,0,0,3301,3299,1,0,0,0,3301,3300,1,0,0,0,3302,485,1,
        0,0,0,3303,3306,3,488,244,0,3304,3306,3,490,245,0,3305,3303,1,0,
        0,0,3305,3304,1,0,0,0,3306,487,1,0,0,0,3307,3310,3,48,24,0,3308,
        3310,3,50,25,0,3309,3307,1,0,0,0,3309,3308,1,0,0,0,3310,489,1,0,
        0,0,3311,3312,5,265,0,0,3312,491,1,0,0,0,3313,3317,3,494,247,0,3314,
        3317,3,496,248,0,3315,3317,3,498,249,0,3316,3313,1,0,0,0,3316,3314,
        1,0,0,0,3316,3315,1,0,0,0,3317,493,1,0,0,0,3318,3319,3,654,327,0,
        3319,3320,5,304,0,0,3320,3321,5,76,0,0,3321,3322,3,62,31,0,3322,
        495,1,0,0,0,3323,3324,3,654,327,0,3324,3325,5,304,0,0,3325,3326,
        5,236,0,0,3326,3327,3,150,75,0,3327,497,1,0,0,0,3328,3329,3,654,
        327,0,3329,3330,5,304,0,0,3330,3331,7,22,0,0,3331,3332,5,426,0,0,
        3332,499,1,0,0,0,3333,3334,3,654,327,0,3334,3335,5,304,0,0,3335,
        3336,5,196,0,0,3336,3337,5,426,0,0,3337,501,1,0,0,0,3338,3339,5,
        274,0,0,3339,3340,5,341,0,0,3340,3341,3,662,331,0,3341,503,1,0,0,
        0,3342,3345,5,4,0,0,3343,3345,5,278,0,0,3344,3342,1,0,0,0,3344,3343,
        1,0,0,0,3345,3346,1,0,0,0,3346,3347,5,46,0,0,3347,3348,5,399,0,0,
        3348,3349,3,276,138,0,3349,3351,5,400,0,0,3350,3352,3,42,21,0,3351,
        3350,1,0,0,0,3351,3352,1,0,0,0,3352,505,1,0,0,0,3353,3356,5,4,0,
        0,3354,3357,3,316,158,0,3355,3357,3,306,153,0,3356,3354,1,0,0,0,
        3356,3355,1,0,0,0,3357,507,1,0,0,0,3358,3359,5,365,0,0,3359,3361,
        5,46,0,0,3360,3362,3,42,21,0,3361,3360,1,0,0,0,3361,3362,1,0,0,0,
        3362,509,1,0,0,0,3363,3364,3,296,148,0,3364,3366,5,218,0,0,3365,
        3367,5,34,0,0,3366,3365,1,0,0,0,3366,3367,1,0,0,0,3367,3372,1,0,
        0,0,3368,3369,3,296,148,0,3369,3370,5,222,0,0,3370,3372,1,0,0,0,
        3371,3363,1,0,0,0,3371,3368,1,0,0,0,3372,511,1,0,0,0,3373,3374,5,
        101,0,0,3374,3375,5,55,0,0,3375,3376,3,926,463,0,3376,513,1,0,0,
        0,3377,3379,5,38,0,0,3378,3380,5,45,0,0,3379,3378,1,0,0,0,3379,3380,
        1,0,0,0,3380,3381,1,0,0,0,3381,3382,3,284,142,0,3382,3383,3,286,
        143,0,3383,3385,3,376,188,0,3384,3386,3,358,179,0,3385,3384,1,0,
        0,0,3385,3386,1,0,0,0,3386,3389,1,0,0,0,3387,3388,5,47,0,0,3388,
        3390,5,426,0,0,3389,3387,1,0,0,0,3389,3390,1,0,0,0,3390,3392,1,0,
        0,0,3391,3393,3,520,260,0,3392,3391,1,0,0,0,3392,3393,1,0,0,0,3393,
        3395,1,0,0,0,3394,3396,3,42,21,0,3395,3394,1,0,0,0,3395,3396,1,0,
        0,0,3396,515,1,0,0,0,3397,3398,5,365,0,0,3398,3399,5,319,0,0,3399,
        3401,5,134,0,0,3400,3402,5,45,0,0,3401,3400,1,0,0,0,3401,3402,1,
        0,0,0,3402,3403,1,0,0,0,3403,3404,3,284,142,0,3404,3405,5,304,0,
        0,3405,3408,3,254,127,0,3406,3407,5,47,0,0,3407,3409,5,426,0,0,3408,
        3406,1,0,0,0,3408,3409,1,0,0,0,3409,517,1,0,0,0,3410,3411,5,365,
        0,0,3411,3412,5,319,0,0,3412,3413,5,304,0,0,3413,3414,3,254,127,
        0,3414,519,1,0,0,0,3415,3419,5,130,0,0,3416,3417,5,6,0,0,3417,3419,
        3,926,463,0,3418,3415,1,0,0,0,3418,3416,1,0,0,0,3419,521,1,0,0,0,
        3420,3422,5,4,0,0,3421,3423,3,44,22,0,3422,3421,1,0,0,0,3422,3423,
        1,0,0,0,3423,3425,1,0,0,0,3424,3426,3,524,262,0,3425,3424,1,0,0,
        0,3426,3427,1,0,0,0,3427,3425,1,0,0,0,3427,3428,1,0,0,0,3428,523,
        1,0,0,0,3429,3431,3,912,456,0,3430,3432,3,532,266,0,3431,3430,1,
        0,0,0,3431,3432,1,0,0,0,3432,525,1,0,0,0,3433,3437,5,342,0,0,3434,
        3436,3,912,456,0,3435,3434,1,0,0,0,3436,3439,1,0,0,0,3437,3435,1,
        0,0,0,3437,3438,1,0,0,0,3438,527,1,0,0,0,3439,3437,1,0,0,0,3440,
        3444,5,15,0,0,3441,3443,3,912,456,0,3442,3441,1,0,0,0,3443,3446,
        1,0,0,0,3444,3442,1,0,0,0,3444,3445,1,0,0,0,3445,529,1,0,0,0,3446,
        3444,1,0,0,0,3447,3451,5,353,0,0,3448,3450,3,912,456,0,3449,3448,
        1,0,0,0,3450,3453,1,0,0,0,3451,3449,1,0,0,0,3451,3452,1,0,0,0,3452,
        531,1,0,0,0,3453,3451,1,0,0,0,3454,3455,5,189,0,0,3455,3456,5,426,
        0,0,3456,533,1,0,0,0,3457,3458,5,102,0,0,3458,3459,5,239,0,0,3459,
        535,1,0,0,0,3460,3462,5,101,0,0,3461,3463,3,40,20,0,3462,3461,1,
        0,0,0,3462,3463,1,0,0,0,3463,3464,1,0,0,0,3464,3465,5,237,0,0,3465,
        3471,3,916,458,0,3466,3467,5,397,0,0,3467,3468,5,237,0,0,3468,3470,
        3,916,458,0,3469,3466,1,0,0,0,3470,3473,1,0,0,0,3471,3469,1,0,0,
        0,3471,3472,1,0,0,0,3472,3475,1,0,0,0,3473,3471,1,0,0,0,3474,3476,
        3,16,8,0,3475,3474,1,0,0,0,3475,3476,1,0,0,0,3476,3478,1,0,0,0,3477,
        3479,5,255,0,0,3478,3477,1,0,0,0,3478,3479,1,0,0,0,3479,3481,1,0,
        0,0,3480,3482,3,18,9,0,3481,3480,1,0,0,0,3481,3482,1,0,0,0,3482,
        537,1,0,0,0,3483,3484,5,304,0,0,3484,3485,5,332,0,0,3485,3493,3,
        254,127,0,3486,3487,5,363,0,0,3487,3489,5,332,0,0,3488,3490,3,40,
        20,0,3489,3488,1,0,0,0,3489,3490,1,0,0,0,3490,3491,1,0,0,0,3491,
        3493,3,254,127,0,3492,3483,1,0,0,0,3492,3486,1,0,0,0,3493,539,1,
        0,0,0,3494,3495,5,304,0,0,3495,3496,5,332,0,0,3496,3504,3,254,127,
        0,3497,3498,5,363,0,0,3498,3500,5,332,0,0,3499,3501,3,40,20,0,3500,
        3499,1,0,0,0,3500,3501,1,0,0,0,3501,3502,1,0,0,0,3502,3504,3,254,
        127,0,3503,3494,1,0,0,0,3503,3497,1,0,0,0,3504,541,1,0,0,0,3505,
        3515,5,304,0,0,3506,3507,5,301,0,0,3507,3511,5,426,0,0,3508,3509,
        5,387,0,0,3509,3510,5,302,0,0,3510,3512,3,254,127,0,3511,3508,1,
        0,0,0,3511,3512,1,0,0,0,3512,3516,1,0,0,0,3513,3514,5,302,0,0,3514,
        3516,3,254,127,0,3515,3506,1,0,0,0,3515,3513,1,0,0,0,3516,3521,1,
        0,0,0,3517,3518,5,363,0,0,3518,3519,5,302,0,0,3519,3521,3,254,127,
        0,3520,3505,1,0,0,0,3520,3517,1,0,0,0,3521,543,1,0,0,0,3522,3524,
        3,660,330,0,3523,3525,3,912,456,0,3524,3523,1,0,0,0,3524,3525,1,
        0,0,0,3525,545,1,0,0,0,3526,3527,5,304,0,0,3527,3528,5,129,0,0,3528,
        3529,3,586,293,0,3529,547,1,0,0,0,3530,3531,5,216,0,0,3531,3534,
        7,23,0,0,3532,3534,3,234,117,0,3533,3530,1,0,0,0,3533,3532,1,0,0,
        0,3534,549,1,0,0,0,3535,3536,5,304,0,0,3536,3537,5,310,0,0,3537,
        3538,5,189,0,0,3538,3539,3,552,276,0,3539,551,1,0,0,0,3540,3541,
        5,399,0,0,3541,3542,3,554,277,0,3542,3543,5,400,0,0,3543,553,1,0,
        0,0,3544,3549,3,556,278,0,3545,3546,5,397,0,0,3546,3548,3,556,278,
        0,3547,3545,1,0,0,0,3548,3551,1,0,0,0,3549,3547,1,0,0,0,3549,3550,
        1,0,0,0,3550,555,1,0,0,0,3551,3549,1,0,0,0,3552,3553,3,328,164,0,
        3553,3554,5,405,0,0,3554,3555,5,426,0,0,3555,557,1,0,0,0,3556,3557,
        5,304,0,0,3557,3558,5,189,0,0,3558,3559,5,426,0,0,3559,559,1,0,0,
        0,3560,3567,3,238,119,0,3561,3564,5,216,0,0,3562,3565,5,310,0,0,
        3563,3565,3,52,26,0,3564,3562,1,0,0,0,3564,3563,1,0,0,0,3565,3567,
        1,0,0,0,3566,3560,1,0,0,0,3566,3561,1,0,0,0,3567,561,1,0,0,0,3568,
        3569,5,113,0,0,3569,3570,3,912,456,0,3570,3571,5,387,0,0,3571,3572,
        5,329,0,0,3572,3573,3,660,330,0,3573,563,1,0,0,0,3574,3575,5,274,
        0,0,3575,3576,5,341,0,0,3576,3577,3,912,456,0,3577,565,1,0,0,0,3578,
        3579,5,365,0,0,3579,3580,5,319,0,0,3580,3582,5,134,0,0,3581,3583,
        5,45,0,0,3582,3581,1,0,0,0,3582,3583,1,0,0,0,3583,3584,1,0,0,0,3584,
        3585,3,284,142,0,3585,3586,5,304,0,0,3586,3589,3,254,127,0,3587,
        3588,5,47,0,0,3588,3590,5,426,0,0,3589,3587,1,0,0,0,3589,3590,1,
        0,0,0,3590,567,1,0,0,0,3591,3592,5,53,0,0,3592,569,1,0,0,0,3593,
        3594,5,166,0,0,3594,3595,5,431,0,0,3595,3596,5,31,0,0,3596,571,1,
        0,0,0,3597,3598,5,11,0,0,3598,3599,5,380,0,0,3599,573,1,0,0,0,3600,
        3601,5,246,0,0,3601,3602,5,426,0,0,3602,575,1,0,0,0,3603,3604,5,
        49,0,0,3604,3606,5,426,0,0,3605,3607,3,572,286,0,3606,3605,1,0,0,
        0,3606,3607,1,0,0,0,3607,3609,1,0,0,0,3608,3610,3,236,118,0,3609,
        3608,1,0,0,0,3609,3610,1,0,0,0,3610,3612,1,0,0,0,3611,3613,3,764,
        382,0,3612,3611,1,0,0,0,3612,3613,1,0,0,0,3613,3615,1,0,0,0,3614,
        3616,3,574,287,0,3615,3614,1,0,0,0,3615,3616,1,0,0,0,3616,3621,1,
        0,0,0,3617,3618,5,387,0,0,3618,3619,5,235,0,0,3619,3620,5,332,0,
        0,3620,3622,3,254,127,0,3621,3617,1,0,0,0,3621,3622,1,0,0,0,3622,
        577,1,0,0,0,3623,3624,5,304,0,0,3624,3625,5,236,0,0,3625,3626,3,
        148,74,0,3626,579,1,0,0,0,3627,3628,5,304,0,0,3628,3629,5,237,0,
        0,3629,3630,5,316,0,0,3630,3631,5,399,0,0,3631,3632,3,228,114,0,
        3632,3633,5,400,0,0,3633,581,1,0,0,0,3634,3644,5,115,0,0,3635,3636,
        5,289,0,0,3636,3637,5,399,0,0,3637,3645,7,24,0,0,3638,3639,5,118,
        0,0,3639,3640,5,399,0,0,3640,3645,5,426,0,0,3641,3642,5,306,0,0,
        3642,3643,5,399,0,0,3643,3645,5,431,0,0,3644,3635,1,0,0,0,3644,3638,
        1,0,0,0,3644,3641,1,0,0,0,3645,3646,1,0,0,0,3646,3647,5,400,0,0,
        3647,583,1,0,0,0,3648,3649,3,926,463,0,3649,3650,5,224,0,0,3650,
        3652,3,660,330,0,3651,3653,3,912,456,0,3652,3651,1,0,0,0,3652,3653,
        1,0,0,0,3653,3654,1,0,0,0,3654,3655,5,265,0,0,3655,585,1,0,0,0,3656,
        3657,5,160,0,0,3657,3658,5,426,0,0,3658,3659,5,233,0,0,3659,3660,
        5,426,0,0,3660,3661,5,301,0,0,3661,3666,5,426,0,0,3662,3663,5,159,
        0,0,3663,3664,5,426,0,0,3664,3665,5,232,0,0,3665,3667,5,426,0,0,
        3666,3662,1,0,0,0,3666,3667,1,0,0,0,3667,3670,1,0,0,0,3668,3670,
        3,926,463,0,3669,3656,1,0,0,0,3669,3668,1,0,0,0,3670,587,1,0,0,0,
        3671,3675,3,590,295,0,3672,3675,3,592,296,0,3673,3675,3,594,297,
        0,3674,3671,1,0,0,0,3674,3672,1,0,0,0,3674,3673,1,0,0,0,3675,589,
        1,0,0,0,3676,3677,3,654,327,0,3677,3678,5,304,0,0,3678,3679,5,77,
        0,0,3679,3680,3,608,304,0,3680,591,1,0,0,0,3681,3682,3,654,327,0,
        3682,3683,5,304,0,0,3683,3684,5,236,0,0,3684,3685,3,150,75,0,3685,
        593,1,0,0,0,3686,3687,3,654,327,0,3687,3688,5,304,0,0,3688,3689,
        5,367,0,0,3689,3690,5,426,0,0,3690,595,1,0,0,0,3691,3692,5,184,0,
        0,3692,3701,5,128,0,0,3693,3694,5,184,0,0,3694,3695,5,128,0,0,3695,
        3696,3,926,463,0,3696,3697,5,426,0,0,3697,3701,1,0,0,0,3698,3699,
        5,184,0,0,3699,3701,3,660,330,0,3700,3691,1,0,0,0,3700,3693,1,0,
        0,0,3700,3698,1,0,0,0,3701,597,1,0,0,0,3702,3704,5,58,0,0,3703,3705,
        5,333,0,0,3704,3703,1,0,0,0,3704,3705,1,0,0,0,3705,3707,1,0,0,0,
        3706,3708,5,345,0,0,3707,3706,1,0,0,0,3707,3708,1,0,0,0,3708,3710,
        1,0,0,0,3709,3711,5,123,0,0,3710,3709,1,0,0,0,3710,3711,1,0,0,0,
        3711,3712,1,0,0,0,3712,3714,5,329,0,0,3713,3715,3,44,22,0,3714,3713,
        1,0,0,0,3714,3715,1,0,0,0,3715,3716,1,0,0,0,3716,3773,3,662,331,
        0,3717,3719,3,596,298,0,3718,3720,3,222,111,0,3719,3718,1,0,0,0,
        3719,3720,1,0,0,0,3720,3722,1,0,0,0,3721,3723,3,250,125,0,3722,3721,
        1,0,0,0,3722,3723,1,0,0,0,3723,3725,1,0,0,0,3724,3726,3,272,136,
        0,3725,3724,1,0,0,0,3725,3726,1,0,0,0,3726,3728,1,0,0,0,3727,3729,
        3,274,137,0,3728,3727,1,0,0,0,3728,3729,1,0,0,0,3729,3731,1,0,0,
        0,3730,3732,3,252,126,0,3731,3730,1,0,0,0,3731,3732,1,0,0,0,3732,
        3734,1,0,0,0,3733,3735,3,220,110,0,3734,3733,1,0,0,0,3734,3735,1,
        0,0,0,3735,3774,1,0,0,0,3736,3737,5,399,0,0,3737,3738,3,278,139,
        0,3738,3739,5,400,0,0,3739,3741,1,0,0,0,3740,3736,1,0,0,0,3740,3741,
        1,0,0,0,3741,3743,1,0,0,0,3742,3744,3,218,109,0,3743,3742,1,0,0,
        0,3743,3744,1,0,0,0,3744,3746,1,0,0,0,3745,3747,3,222,111,0,3746,
        3745,1,0,0,0,3746,3747,1,0,0,0,3747,3749,1,0,0,0,3748,3750,3,234,
        117,0,3749,3748,1,0,0,0,3749,3750,1,0,0,0,3750,3752,1,0,0,0,3751,
        3753,3,238,119,0,3752,3751,1,0,0,0,3752,3753,1,0,0,0,3753,3755,1,
        0,0,0,3754,3756,3,250,125,0,3755,3754,1,0,0,0,3755,3756,1,0,0,0,
        3756,3758,1,0,0,0,3757,3759,3,272,136,0,3758,3757,1,0,0,0,3758,3759,
        1,0,0,0,3759,3761,1,0,0,0,3760,3762,3,274,137,0,3761,3760,1,0,0,
        0,3761,3762,1,0,0,0,3762,3764,1,0,0,0,3763,3765,3,252,126,0,3764,
        3763,1,0,0,0,3764,3765,1,0,0,0,3765,3767,1,0,0,0,3766,3768,3,220,
        110,0,3767,3766,1,0,0,0,3767,3768,1,0,0,0,3768,3771,1,0,0,0,3769,
        3770,5,17,0,0,3770,3772,3,414,207,0,3771,3769,1,0,0,0,3771,3772,
        1,0,0,0,3772,3774,1,0,0,0,3773,3717,1,0,0,0,3773,3740,1,0,0,0,3774,
        3838,1,0,0,0,3775,3776,5,58,0,0,3776,3777,5,195,0,0,3777,3779,5,
        329,0,0,3778,3780,3,44,22,0,3779,3778,1,0,0,0,3779,3780,1,0,0,0,
        3780,3781,1,0,0,0,3781,3835,3,662,331,0,3782,3784,3,596,298,0,3783,
        3785,3,250,125,0,3784,3783,1,0,0,0,3784,3785,1,0,0,0,3785,3787,1,
        0,0,0,3786,3788,3,272,136,0,3787,3786,1,0,0,0,3787,3788,1,0,0,0,
        3788,3790,1,0,0,0,3789,3791,3,274,137,0,3790,3789,1,0,0,0,3790,3791,
        1,0,0,0,3791,3793,1,0,0,0,3792,3794,3,252,126,0,3793,3792,1,0,0,
        0,3793,3794,1,0,0,0,3794,3796,1,0,0,0,3795,3797,3,220,110,0,3796,
        3795,1,0,0,0,3796,3797,1,0,0,0,3797,3836,1,0,0,0,3798,3799,5,399,
        0,0,3799,3800,3,278,139,0,3800,3801,5,400,0,0,3801,3803,1,0,0,0,
        3802,3798,1,0,0,0,3802,3803,1,0,0,0,3803,3805,1,0,0,0,3804,3806,
        3,218,109,0,3805,3804,1,0,0,0,3805,3806,1,0,0,0,3806,3808,1,0,0,
        0,3807,3809,3,222,111,0,3808,3807,1,0,0,0,3808,3809,1,0,0,0,3809,
        3811,1,0,0,0,3810,3812,3,234,117,0,3811,3810,1,0,0,0,3811,3812,1,
        0,0,0,3812,3814,1,0,0,0,3813,3815,3,238,119,0,3814,3813,1,0,0,0,
        3814,3815,1,0,0,0,3815,3817,1,0,0,0,3816,3818,3,250,125,0,3817,3816,
        1,0,0,0,3817,3818,1,0,0,0,3818,3820,1,0,0,0,3819,3821,3,272,136,
        0,3820,3819,1,0,0,0,3820,3821,1,0,0,0,3821,3823,1,0,0,0,3822,3824,
        3,274,137,0,3823,3822,1,0,0,0,3823,3824,1,0,0,0,3824,3826,1,0,0,
        0,3825,3827,3,252,126,0,3826,3825,1,0,0,0,3826,3827,1,0,0,0,3827,
        3829,1,0,0,0,3828,3830,3,220,110,0,3829,3828,1,0,0,0,3829,3830,1,
        0,0,0,3830,3833,1,0,0,0,3831,3832,5,17,0,0,3832,3834,3,414,207,0,
        3833,3831,1,0,0,0,3833,3834,1,0,0,0,3834,3836,1,0,0,0,3835,3782,
        1,0,0,0,3835,3802,1,0,0,0,3836,3838,1,0,0,0,3837,3702,1,0,0,0,3837,
        3775,1,0,0,0,3838,599,1,0,0,0,3839,3840,5,58,0,0,3840,3842,5,69,
        0,0,3841,3843,3,44,22,0,3842,3841,1,0,0,0,3842,3843,1,0,0,0,3843,
        3844,1,0,0,0,3844,3846,3,926,463,0,3845,3847,3,606,303,0,3846,3845,
        1,0,0,0,3846,3847,1,0,0,0,3847,3849,1,0,0,0,3848,3850,3,604,302,
        0,3849,3848,1,0,0,0,3849,3850,1,0,0,0,3850,3852,1,0,0,0,3851,3853,
        3,602,301,0,3852,3851,1,0,0,0,3852,3853,1,0,0,0,3853,3857,1,0,0,
        0,3854,3855,5,387,0,0,3855,3856,5,77,0,0,3856,3858,3,608,304,0,3857,
        3854,1,0,0,0,3857,3858,1,0,0,0,3858,601,1,0,0,0,3859,3860,5,47,0,
        0,3860,3861,5,426,0,0,3861,603,1,0,0,0,3862,3863,5,367,0,0,3863,
        3864,5,426,0,0,3864,605,1,0,0,0,3865,3866,5,352,0,0,3866,3867,5,
        426,0,0,3867,607,1,0,0,0,3868,3869,5,399,0,0,3869,3870,3,64,32,0,
        3870,3871,5,400,0,0,3871,609,1,0,0,0,3872,3873,5,101,0,0,3873,3875,
        5,69,0,0,3874,3876,3,40,20,0,3875,3874,1,0,0,0,3875,3876,1,0,0,0,
        3876,3877,1,0,0,0,3877,3878,3,926,463,0,3878,611,1,0,0,0,3879,3880,
        3,926,463,0,3880,3881,5,395,0,0,3881,3883,1,0,0,0,3882,3879,1,0,
        0,0,3883,3886,1,0,0,0,3884,3882,1,0,0,0,3884,3885,1,0,0,0,3885,3887,
        1,0,0,0,3886,3884,1,0,0,0,3887,3888,5,415,0,0,3888,613,1,0,0,0,3889,
        3890,5,83,0,0,3890,615,1,0,0,0,3891,3896,3,828,414,0,3892,3893,5,
        397,0,0,3893,3895,3,828,414,0,3894,3892,1,0,0,0,3895,3898,1,0,0,
        0,3896,3894,1,0,0,0,3896,3897,1,0,0,0,3897,617,1,0,0,0,3898,3896,
        1,0,0,0,3899,3904,3,926,463,0,3900,3901,5,397,0,0,3901,3903,3,926,
        463,0,3902,3900,1,0,0,0,3903,3906,1,0,0,0,3904,3902,1,0,0,0,3904,
        3905,1,0,0,0,3905,619,1,0,0,0,3906,3904,1,0,0,0,3907,3908,5,139,
        0,0,3908,3909,3,622,311,0,3909,621,1,0,0,0,3910,3911,3,634,317,0,
        3911,3914,3,630,315,0,3912,3913,5,397,0,0,3913,3915,3,630,315,0,
        3914,3912,1,0,0,0,3915,3916,1,0,0,0,3916,3914,1,0,0,0,3916,3917,
        1,0,0,0,3917,3920,1,0,0,0,3918,3920,3,626,313,0,3919,3910,1,0,0,
        0,3919,3918,1,0,0,0,3920,623,1,0,0,0,3921,3925,3,648,324,0,3922,
        3924,3,638,319,0,3923,3922,1,0,0,0,3924,3927,1,0,0,0,3925,3923,1,
        0,0,0,3925,3926,1,0,0,0,3926,3954,1,0,0,0,3927,3925,1,0,0,0,3928,
        3932,3,690,345,0,3929,3931,3,638,319,0,3930,3929,1,0,0,0,3931,3934,
        1,0,0,0,3932,3930,1,0,0,0,3932,3933,1,0,0,0,3933,3954,1,0,0,0,3934,
        3932,1,0,0,0,3935,3939,3,668,334,0,3936,3938,3,638,319,0,3937,3936,
        1,0,0,0,3938,3941,1,0,0,0,3939,3937,1,0,0,0,3939,3940,1,0,0,0,3940,
        3954,1,0,0,0,3941,3939,1,0,0,0,3942,3946,3,674,337,0,3943,3945,3,
        638,319,0,3944,3943,1,0,0,0,3945,3948,1,0,0,0,3946,3944,1,0,0,0,
        3946,3947,1,0,0,0,3947,3954,1,0,0,0,3948,3946,1,0,0,0,3949,3950,
        5,399,0,0,3950,3951,3,626,313,0,3951,3952,5,400,0,0,3952,3954,1,
        0,0,0,3953,3921,1,0,0,0,3953,3928,1,0,0,0,3953,3935,1,0,0,0,3953,
        3942,1,0,0,0,3953,3949,1,0,0,0,3954,625,1,0,0,0,3955,3966,3,624,
        312,0,3956,3957,3,636,318,0,3957,3962,3,628,314,0,3958,3959,5,224,
        0,0,3959,3963,3,828,414,0,3960,3961,5,370,0,0,3961,3963,3,292,146,
        0,3962,3958,1,0,0,0,3962,3960,1,0,0,0,3962,3963,1,0,0,0,3963,3965,
        1,0,0,0,3964,3956,1,0,0,0,3965,3968,1,0,0,0,3966,3964,1,0,0,0,3966,
        3967,1,0,0,0,3967,627,1,0,0,0,3968,3966,1,0,0,0,3969,3974,3,648,
        324,0,3970,3974,3,690,345,0,3971,3974,3,668,334,0,3972,3974,3,674,
        337,0,3973,3969,1,0,0,0,3973,3970,1,0,0,0,3973,3971,1,0,0,0,3973,
        3972,1,0,0,0,3974,3978,1,0,0,0,3975,3977,3,638,319,0,3976,3975,1,
        0,0,0,3977,3980,1,0,0,0,3978,3976,1,0,0,0,3978,3979,1,0,0,0,3979,
        629,1,0,0,0,3980,3978,1,0,0,0,3981,3983,5,250,0,0,3982,3981,1,0,
        0,0,3982,3983,1,0,0,0,3983,3984,1,0,0,0,3984,3985,3,652,326,0,3985,
        3986,3,632,316,0,3986,631,1,0,0,0,3987,3988,5,399,0,0,3988,3989,
        3,616,308,0,3989,3990,5,400,0,0,3990,633,1,0,0,0,3991,3992,5,359,
        0,0,3992,635,1,0,0,0,3993,4008,5,397,0,0,3994,4005,5,157,0,0,3995,
        4005,5,60,0,0,3996,3998,7,25,0,0,3997,3999,5,231,0,0,3998,3997,1,
        0,0,0,3998,3999,1,0,0,0,3999,4005,1,0,0,0,4000,4002,5,180,0,0,4001,
        4003,7,26,0,0,4002,4001,1,0,0,0,4002,4003,1,0,0,0,4003,4005,1,0,
        0,0,4004,3994,1,0,0,0,4004,3995,1,0,0,0,4004,3996,1,0,0,0,4004,4000,
        1,0,0,0,4004,4005,1,0,0,0,4005,4006,1,0,0,0,4006,4008,5,171,0,0,
        4007,3993,1,0,0,0,4007,4004,1,0,0,0,4008,637,1,0,0,0,4009,4010,5,
        178,0,0,4010,4011,5,378,0,0,4011,4012,5,231,0,0,4012,4013,3,776,
        388,0,4013,4023,3,640,320,0,4014,4015,5,17,0,0,4015,4020,3,926,463,
        0,4016,4017,5,397,0,0,4017,4019,3,926,463,0,4018,4016,1,0,0,0,4019,
        4022,1,0,0,0,4020,4018,1,0,0,0,4020,4021,1,0,0,0,4021,4024,1,0,0,
        0,4022,4020,1,0,0,0,4023,4014,1,0,0,0,4023,4024,1,0,0,0,4024,4067,
        1,0,0,0,4025,4027,5,397,0,0,4026,4025,1,0,0,0,4026,4027,1,0,0,0,
        4027,4028,1,0,0,0,4028,4064,5,178,0,0,4029,4030,5,378,0,0,4030,4031,
        3,776,388,0,4031,4041,3,640,320,0,4032,4033,5,17,0,0,4033,4038,3,
        926,463,0,4034,4035,5,397,0,0,4035,4037,3,926,463,0,4036,4034,1,
        0,0,0,4037,4040,1,0,0,0,4038,4036,1,0,0,0,4038,4039,1,0,0,0,4039,
        4042,1,0,0,0,4040,4038,1,0,0,0,4041,4032,1,0,0,0,4041,4042,1,0,0,
        0,4042,4065,1,0,0,0,4043,4044,5,329,0,0,4044,4045,5,399,0,0,4045,
        4046,3,682,341,0,4046,4048,5,400,0,0,4047,4049,5,17,0,0,4048,4047,
        1,0,0,0,4048,4049,1,0,0,0,4049,4050,1,0,0,0,4050,4062,3,640,320,
        0,4051,4052,5,399,0,0,4052,4057,3,926,463,0,4053,4054,5,397,0,0,
        4054,4056,3,926,463,0,4055,4053,1,0,0,0,4056,4059,1,0,0,0,4057,4055,
        1,0,0,0,4057,4058,1,0,0,0,4058,4060,1,0,0,0,4059,4057,1,0,0,0,4060,
        4061,5,400,0,0,4061,4063,1,0,0,0,4062,4051,1,0,0,0,4062,4063,1,0,
        0,0,4063,4065,1,0,0,0,4064,4029,1,0,0,0,4064,4043,1,0,0,0,4065,4067,
        1,0,0,0,4066,4009,1,0,0,0,4066,4026,1,0,0,0,4067,639,1,0,0,0,4068,
        4069,3,926,463,0,4069,641,1,0,0,0,4070,4071,5,331,0,0,4071,4072,
        5,399,0,0,4072,4073,5,30,0,0,4073,4074,5,431,0,0,4074,4075,5,230,
        0,0,4075,4076,5,221,0,0,4076,4086,5,431,0,0,4077,4078,5,224,0,0,
        4078,4083,3,828,414,0,4079,4080,5,397,0,0,4080,4082,3,828,414,0,
        4081,4079,1,0,0,0,4082,4085,1,0,0,0,4083,4081,1,0,0,0,4083,4084,
        1,0,0,0,4084,4087,1,0,0,0,4085,4083,1,0,0,0,4086,4077,1,0,0,0,4086,
        4087,1,0,0,0,4087,4088,1,0,0,0,4088,4089,5,400,0,0,4089,643,1,0,
        0,0,4090,4091,5,331,0,0,4091,4095,5,399,0,0,4092,4093,5,431,0,0,
        4093,4096,7,27,0,0,4094,4096,5,430,0,0,4095,4092,1,0,0,0,4095,4094,
        1,0,0,0,4096,4097,1,0,0,0,4097,4098,5,400,0,0,4098,645,1,0,0,0,4099,
        4102,3,642,321,0,4100,4102,3,644,322,0,4101,4099,1,0,0,0,4101,4100,
        1,0,0,0,4102,647,1,0,0,0,4103,4105,3,658,329,0,4104,4106,3,254,127,
        0,4105,4104,1,0,0,0,4105,4106,1,0,0,0,4106,4108,1,0,0,0,4107,4109,
        3,646,323,0,4108,4107,1,0,0,0,4108,4109,1,0,0,0,4109,4111,1,0,0,
        0,4110,4112,3,650,325,0,4111,4110,1,0,0,0,4111,4112,1,0,0,0,4112,
        4117,1,0,0,0,4113,4115,5,17,0,0,4114,4113,1,0,0,0,4114,4115,1,0,
        0,0,4115,4116,1,0,0,0,4116,4118,3,926,463,0,4117,4114,1,0,0,0,4117,
        4118,1,0,0,0,4118,649,1,0,0,0,4119,4129,5,134,0,0,4120,4121,5,327,
        0,0,4121,4122,5,17,0,0,4122,4123,5,221,0,0,4123,4130,3,828,414,0,
        4124,4125,5,134,0,0,4125,4126,5,328,0,0,4126,4127,5,17,0,0,4127,
        4128,5,221,0,0,4128,4130,5,431,0,0,4129,4120,1,0,0,0,4129,4124,1,
        0,0,0,4130,651,1,0,0,0,4131,4133,3,658,329,0,4132,4134,3,646,323,
        0,4133,4132,1,0,0,0,4133,4134,1,0,0,0,4134,4139,1,0,0,0,4135,4137,
        5,17,0,0,4136,4135,1,0,0,0,4136,4137,1,0,0,0,4137,4138,1,0,0,0,4138,
        4140,3,926,463,0,4139,4136,1,0,0,0,4139,4140,1,0,0,0,4140,653,1,
        0,0,0,4141,4142,3,926,463,0,4142,655,1,0,0,0,4143,4144,3,926,463,
        0,4144,657,1,0,0,0,4145,4148,3,660,330,0,4146,4148,3,664,332,0,4147,
        4145,1,0,0,0,4147,4146,1,0,0,0,4148,659,1,0,0,0,4149,4150,3,926,
        463,0,4150,4151,5,395,0,0,4151,4154,3,926,463,0,4152,4153,5,395,
        0,0,4153,4155,3,926,463,0,4154,4152,1,0,0,0,4154,4155,1,0,0,0,4155,
        4158,1,0,0,0,4156,4158,3,926,463,0,4157,4149,1,0,0,0,4157,4156,1,
        0,0,0,4158,661,1,0,0,0,4159,4160,3,926,463,0,4160,4161,5,395,0,0,
        4161,4164,3,926,463,0,4162,4163,5,395,0,0,4163,4165,3,926,463,0,
        4164,4162,1,0,0,0,4164,4165,1,0,0,0,4165,4168,1,0,0,0,4166,4168,
        3,926,463,0,4167,4159,1,0,0,0,4167,4166,1,0,0,0,4168,663,1,0,0,0,
        4169,4170,3,926,463,0,4170,4171,5,395,0,0,4171,4173,1,0,0,0,4172,
        4169,1,0,0,0,4172,4173,1,0,0,0,4173,4174,1,0,0,0,4174,4175,3,926,
        463,0,4175,665,1,0,0,0,4176,4177,3,926,463,0,4177,4178,5,395,0,0,
        4178,4180,1,0,0,0,4179,4176,1,0,0,0,4179,4180,1,0,0,0,4180,4181,
        1,0,0,0,4181,4182,3,926,463,0,4182,667,1,0,0,0,4183,4184,5,399,0,
        0,4184,4185,3,394,197,0,4185,4187,5,400,0,0,4186,4188,5,17,0,0,4187,
        4186,1,0,0,0,4187,4188,1,0,0,0,4188,4189,1,0,0,0,4189,4190,3,926,
        463,0,4190,669,1,0,0,0,4191,4193,3,768,384,0,4192,4194,3,764,382,
        0,4193,4192,1,0,0,0,4193,4194,1,0,0,0,4194,4203,1,0,0,0,4195,4203,
        3,764,382,0,4196,4198,3,770,385,0,4197,4199,3,772,386,0,4198,4197,
        1,0,0,0,4198,4199,1,0,0,0,4199,4203,1,0,0,0,4200,4203,3,772,386,
        0,4201,4203,3,766,383,0,4202,4191,1,0,0,0,4202,4195,1,0,0,0,4202,
        4196,1,0,0,0,4202,4200,1,0,0,0,4202,4201,1,0,0,0,4203,671,1,0,0,
        0,4204,4208,3,668,334,0,4205,4208,3,648,324,0,4206,4208,3,674,337,
        0,4207,4204,1,0,0,0,4207,4205,1,0,0,0,4207,4206,1,0,0,0,4208,673,
        1,0,0,0,4209,4210,3,926,463,0,4210,4211,5,399,0,0,4211,4212,5,224,
        0,0,4212,4214,3,672,336,0,4213,4215,3,670,335,0,4214,4213,1,0,0,
        0,4214,4215,1,0,0,0,4215,4231,1,0,0,0,4216,4217,5,432,0,0,4217,4218,
        5,399,0,0,4218,4219,3,828,414,0,4219,4228,5,400,0,0,4220,4221,5,
        397,0,0,4221,4222,5,432,0,0,4222,4223,5,399,0,0,4223,4224,3,828,
        414,0,4224,4225,5,400,0,0,4225,4227,1,0,0,0,4226,4220,1,0,0,0,4227,
        4230,1,0,0,0,4228,4226,1,0,0,0,4228,4229,1,0,0,0,4229,4232,1,0,0,
        0,4230,4228,1,0,0,0,4231,4216,1,0,0,0,4231,4232,1,0,0,0,4232,4233,
        1,0,0,0,4233,4235,5,400,0,0,4234,4236,3,926,463,0,4235,4234,1,0,
        0,0,4235,4236,1,0,0,0,4236,675,1,0,0,0,4237,4238,5,384,0,0,4238,
        4239,3,678,339,0,4239,677,1,0,0,0,4240,4241,3,828,414,0,4241,679,
        1,0,0,0,4242,4243,3,682,341,0,4243,681,1,0,0,0,4244,4245,5,374,0,
        0,4245,4246,3,684,342,0,4246,683,1,0,0,0,4247,4252,3,686,343,0,4248,
        4249,5,397,0,0,4249,4251,3,686,343,0,4250,4248,1,0,0,0,4251,4254,
        1,0,0,0,4252,4250,1,0,0,0,4252,4253,1,0,0,0,4253,4264,1,0,0,0,4254,
        4252,1,0,0,0,4255,4260,3,688,344,0,4256,4257,5,397,0,0,4257,4259,
        3,686,343,0,4258,4256,1,0,0,0,4259,4262,1,0,0,0,4260,4258,1,0,0,
        0,4260,4261,1,0,0,0,4261,4264,1,0,0,0,4262,4260,1,0,0,0,4263,4247,
        1,0,0,0,4263,4255,1,0,0,0,4264,685,1,0,0,0,4265,4266,3,746,373,0,
        4266,687,1,0,0,0,4267,4268,5,399,0,0,4268,4269,3,754,377,0,4269,
        4270,5,400,0,0,4270,689,1,0,0,0,4271,4272,5,329,0,0,4272,4273,5,
        399,0,0,4273,4274,3,682,341,0,4274,4276,5,400,0,0,4275,4277,5,17,
        0,0,4276,4275,1,0,0,0,4276,4277,1,0,0,0,4277,4278,1,0,0,0,4278,4288,
        3,640,320,0,4279,4280,5,399,0,0,4280,4285,3,926,463,0,4281,4282,
        5,397,0,0,4282,4284,3,926,463,0,4283,4281,1,0,0,0,4284,4287,1,0,
        0,0,4285,4283,1,0,0,0,4285,4286,1,0,0,0,4286,4289,1,0,0,0,4287,4285,
        1,0,0,0,4288,4279,1,0,0,0,4288,4289,1,0,0,0,4289,4290,1,0,0,0,4290,
        4291,5,400,0,0,4291,691,1,0,0,0,4292,4294,5,299,0,0,4293,4295,5,
        436,0,0,4294,4293,1,0,0,0,4294,4295,1,0,0,0,4295,4302,1,0,0,0,4296,
        4298,3,694,347,0,4297,4296,1,0,0,0,4297,4298,1,0,0,0,4298,4299,1,
        0,0,0,4299,4303,3,696,348,0,4300,4301,5,347,0,0,4301,4303,3,698,
        349,0,4302,4297,1,0,0,0,4302,4300,1,0,0,0,4303,4306,1,0,0,0,4304,
        4306,3,702,351,0,4305,4292,1,0,0,0,4305,4304,1,0,0,0,4306,693,1,
        0,0,0,4307,4308,7,20,0,0,4308,695,1,0,0,0,4309,4314,3,700,350,0,
        4310,4311,5,397,0,0,4311,4313,3,700,350,0,4312,4310,1,0,0,0,4313,
        4316,1,0,0,0,4314,4312,1,0,0,0,4314,4315,1,0,0,0,4315,697,1,0,0,
        0,4316,4314,1,0,0,0,4317,4318,5,399,0,0,4318,4319,3,706,353,0,4319,
        4320,5,400,0,0,4320,4321,3,240,120,0,4321,4322,3,244,122,0,4322,
        4323,5,370,0,0,4323,4336,5,426,0,0,4324,4334,5,17,0,0,4325,4328,
        5,399,0,0,4326,4329,3,618,309,0,4327,4329,3,276,138,0,4328,4326,
        1,0,0,0,4328,4327,1,0,0,0,4329,4330,1,0,0,0,4330,4331,5,400,0,0,
        4331,4335,1,0,0,0,4332,4335,3,618,309,0,4333,4335,3,276,138,0,4334,
        4325,1,0,0,0,4334,4332,1,0,0,0,4334,4333,1,0,0,0,4335,4337,1,0,0,
        0,4336,4324,1,0,0,0,4336,4337,1,0,0,0,4337,4338,1,0,0,0,4338,4339,
        3,240,120,0,4339,4340,3,242,121,0,4340,699,1,0,0,0,4341,4365,3,612,
        306,0,4342,4345,3,284,142,0,4343,4345,3,828,414,0,4344,4342,1,0,
        0,0,4344,4343,1,0,0,0,4345,4362,1,0,0,0,4346,4348,5,17,0,0,4347,
        4346,1,0,0,0,4347,4348,1,0,0,0,4348,4349,1,0,0,0,4349,4363,3,926,
        463,0,4350,4351,5,17,0,0,4351,4352,5,399,0,0,4352,4357,3,926,463,
        0,4353,4354,5,397,0,0,4354,4356,3,926,463,0,4355,4353,1,0,0,0,4356,
        4359,1,0,0,0,4357,4355,1,0,0,0,4357,4358,1,0,0,0,4358,4360,1,0,0,
        0,4359,4357,1,0,0,0,4360,4361,5,400,0,0,4361,4363,1,0,0,0,4362,4347,
        1,0,0,0,4362,4350,1,0,0,0,4362,4363,1,0,0,0,4363,4365,1,0,0,0,4364,
        4341,1,0,0,0,4364,4344,1,0,0,0,4365,701,1,0,0,0,4366,4367,7,28,0,
        0,4367,4368,3,706,353,0,4368,4369,3,240,120,0,4369,4370,3,244,122,
        0,4370,4371,5,370,0,0,4371,4384,5,426,0,0,4372,4382,5,17,0,0,4373,
        4376,5,399,0,0,4374,4377,3,618,309,0,4375,4377,3,276,138,0,4376,
        4374,1,0,0,0,4376,4375,1,0,0,0,4377,4378,1,0,0,0,4378,4379,5,400,
        0,0,4379,4383,1,0,0,0,4380,4383,3,618,309,0,4381,4383,3,276,138,
        0,4382,4373,1,0,0,0,4382,4380,1,0,0,0,4382,4381,1,0,0,0,4383,4385,
        1,0,0,0,4384,4372,1,0,0,0,4384,4385,1,0,0,0,4385,4386,1,0,0,0,4386,
        4387,3,240,120,0,4387,4388,3,242,121,0,4388,703,1,0,0,0,4389,4392,
        3,612,306,0,4390,4392,3,828,414,0,4391,4389,1,0,0,0,4391,4390,1,
        0,0,0,4392,705,1,0,0,0,4393,4398,3,704,352,0,4394,4395,5,397,0,0,
        4395,4397,3,704,352,0,4396,4394,1,0,0,0,4397,4400,1,0,0,0,4398,4396,
        1,0,0,0,4398,4399,1,0,0,0,4399,707,1,0,0,0,4400,4398,1,0,0,0,4401,
        4402,5,386,0,0,4402,4407,3,710,355,0,4403,4404,5,397,0,0,4404,4406,
        3,710,355,0,4405,4403,1,0,0,0,4406,4409,1,0,0,0,4407,4405,1,0,0,
        0,4407,4408,1,0,0,0,4408,709,1,0,0,0,4409,4407,1,0,0,0,4410,4411,
        3,926,463,0,4411,4412,5,17,0,0,4412,4413,3,712,356,0,4413,711,1,
        0,0,0,4414,4427,3,926,463,0,4415,4417,5,399,0,0,4416,4418,3,926,
        463,0,4417,4416,1,0,0,0,4417,4418,1,0,0,0,4418,4420,1,0,0,0,4419,
        4421,3,670,335,0,4420,4419,1,0,0,0,4420,4421,1,0,0,0,4421,4423,1,
        0,0,0,4422,4424,3,714,357,0,4423,4422,1,0,0,0,4423,4424,1,0,0,0,
        4424,4425,1,0,0,0,4425,4427,5,400,0,0,4426,4414,1,0,0,0,4426,4415,
        1,0,0,0,4427,713,1,0,0,0,4428,4431,3,716,358,0,4429,4431,3,718,359,
        0,4430,4428,1,0,0,0,4430,4429,1,0,0,0,4431,715,1,0,0,0,4432,4439,
        5,292,0,0,4433,4440,3,720,360,0,4434,4435,5,25,0,0,4435,4436,3,722,
        361,0,4436,4437,5,11,0,0,4437,4438,3,722,361,0,4438,4440,1,0,0,0,
        4439,4433,1,0,0,0,4439,4434,1,0,0,0,4440,717,1,0,0,0,4441,4448,5,
        260,0,0,4442,4449,3,720,360,0,4443,4444,5,25,0,0,4444,4445,3,722,
        361,0,4445,4446,5,11,0,0,4446,4447,3,722,361,0,4447,4449,1,0,0,0,
        4448,4442,1,0,0,0,4448,4443,1,0,0,0,4449,719,1,0,0,0,4450,4451,5,
        354,0,0,4451,4457,5,247,0,0,4452,4453,5,62,0,0,4453,4457,5,291,0,
        0,4454,4455,5,431,0,0,4455,4457,5,247,0,0,4456,4450,1,0,0,0,4456,
        4452,1,0,0,0,4456,4454,1,0,0,0,4457,721,1,0,0,0,4458,4459,7,29,0,
        0,4459,4463,7,30,0,0,4460,4461,5,62,0,0,4461,4463,5,291,0,0,4462,
        4458,1,0,0,0,4462,4460,1,0,0,0,4463,723,1,0,0,0,4464,4465,5,144,
        0,0,4465,4466,5,32,0,0,4466,4467,3,726,363,0,4467,725,1,0,0,0,4468,
        4473,3,284,142,0,4469,4473,3,730,365,0,4470,4473,3,732,366,0,4471,
        4473,3,728,364,0,4472,4468,1,0,0,0,4472,4469,1,0,0,0,4472,4470,1,
        0,0,0,4472,4471,1,0,0,0,4473,727,1,0,0,0,4474,4475,5,399,0,0,4475,
        4476,5,400,0,0,4476,729,1,0,0,0,4477,4480,5,290,0,0,4478,4480,5,
        61,0,0,4479,4477,1,0,0,0,4479,4478,1,0,0,0,4480,4481,1,0,0,0,4481,
        4482,5,399,0,0,4482,4487,3,828,414,0,4483,4484,5,397,0,0,4484,4486,
        3,828,414,0,4485,4483,1,0,0,0,4486,4489,1,0,0,0,4487,4485,1,0,0,
        0,4487,4488,1,0,0,0,4488,4490,1,0,0,0,4489,4487,1,0,0,0,4490,4491,
        5,400,0,0,4491,731,1,0,0,0,4492,4497,3,748,374,0,4493,4494,5,387,
        0,0,4494,4498,5,290,0,0,4495,4496,5,387,0,0,4496,4498,5,61,0,0,4497,
        4493,1,0,0,0,4497,4495,1,0,0,0,4497,4498,1,0,0,0,4498,4512,1,0,0,
        0,4499,4500,5,145,0,0,4500,4501,5,305,0,0,4501,4502,5,399,0,0,4502,
        4507,3,734,367,0,4503,4504,5,397,0,0,4504,4506,3,734,367,0,4505,
        4503,1,0,0,0,4506,4509,1,0,0,0,4507,4505,1,0,0,0,4507,4508,1,0,0,
        0,4508,4510,1,0,0,0,4509,4507,1,0,0,0,4510,4511,5,400,0,0,4511,4513,
        1,0,0,0,4512,4499,1,0,0,0,4512,4513,1,0,0,0,4513,733,1,0,0,0,4514,
        4517,3,736,368,0,4515,4517,3,738,369,0,4516,4514,1,0,0,0,4516,4515,
        1,0,0,0,4517,735,1,0,0,0,4518,4520,5,399,0,0,4519,4521,3,828,414,
        0,4520,4519,1,0,0,0,4520,4521,1,0,0,0,4521,4526,1,0,0,0,4522,4523,
        5,397,0,0,4523,4525,3,828,414,0,4524,4522,1,0,0,0,4525,4528,1,0,
        0,0,4526,4524,1,0,0,0,4526,4527,1,0,0,0,4527,4529,1,0,0,0,4528,4526,
        1,0,0,0,4529,4530,5,400,0,0,4530,737,1,0,0,0,4531,4532,3,828,414,
        0,4532,739,1,0,0,0,4533,4534,5,146,0,0,4534,4535,3,744,372,0,4535,
        741,1,0,0,0,4536,4537,5,256,0,0,4537,4538,3,828,414,0,4538,743,1,
        0,0,0,4539,4540,3,828,414,0,4540,745,1,0,0,0,4541,4542,5,399,0,0,
        4542,4543,3,748,374,0,4543,4544,5,400,0,0,4544,747,1,0,0,0,4545,
        4547,3,752,376,0,4546,4548,3,750,375,0,4547,4546,1,0,0,0,4547,4548,
        1,0,0,0,4548,749,1,0,0,0,4549,4550,5,397,0,0,4550,4552,3,752,376,
        0,4551,4549,1,0,0,0,4552,4553,1,0,0,0,4553,4551,1,0,0,0,4553,4554,
        1,0,0,0,4554,751,1,0,0,0,4555,4558,3,614,307,0,4556,4558,3,828,414,
        0,4557,4555,1,0,0,0,4557,4556,1,0,0,0,4558,753,1,0,0,0,4559,4561,
        3,828,414,0,4560,4562,5,17,0,0,4561,4560,1,0,0,0,4561,4562,1,0,0,
        0,4562,4564,1,0,0,0,4563,4565,3,926,463,0,4564,4563,1,0,0,0,4564,
        4565,1,0,0,0,4565,4570,1,0,0,0,4566,4567,5,397,0,0,4567,4569,3,756,
        378,0,4568,4566,1,0,0,0,4569,4572,1,0,0,0,4570,4568,1,0,0,0,4570,
        4571,1,0,0,0,4571,755,1,0,0,0,4572,4570,1,0,0,0,4573,4575,3,828,
        414,0,4574,4576,5,17,0,0,4575,4574,1,0,0,0,4575,4576,1,0,0,0,4576,
        4578,1,0,0,0,4577,4579,3,926,463,0,4578,4577,1,0,0,0,4578,4579,1,
        0,0,0,4579,757,1,0,0,0,4580,4583,3,746,373,0,4581,4583,3,748,374,
        0,4582,4580,1,0,0,0,4582,4581,1,0,0,0,4583,759,1,0,0,0,4584,4585,
        5,399,0,0,4585,4590,3,342,171,0,4586,4587,5,397,0,0,4587,4589,3,
        342,171,0,4588,4586,1,0,0,0,4589,4592,1,0,0,0,4590,4588,1,0,0,0,
        4590,4591,1,0,0,0,4591,4593,1,0,0,0,4592,4590,1,0,0,0,4593,4594,
        5,400,0,0,4594,761,1,0,0,0,4595,4600,3,342,171,0,4596,4597,5,397,
        0,0,4597,4599,3,342,171,0,4598,4596,1,0,0,0,4599,4602,1,0,0,0,4600,
        4598,1,0,0,0,4600,4601,1,0,0,0,4601,763,1,0,0,0,4602,4600,1,0,0,
        0,4603,4604,5,229,0,0,4604,4605,5,32,0,0,4605,4610,3,342,171,0,4606,
        4607,5,397,0,0,4607,4609,3,342,171,0,4608,4606,1,0,0,0,4609,4612,
        1,0,0,0,4610,4608,1,0,0,0,4610,4611,1,0,0,0,4611,765,1,0,0,0,4612,
        4610,1,0,0,0,4613,4614,5,41,0,0,4614,4615,5,32,0,0,4615,4616,3,758,
        379,0,4616,767,1,0,0,0,4617,4618,5,237,0,0,4618,4619,5,32,0,0,4619,
        4620,3,758,379,0,4620,769,1,0,0,0,4621,4622,5,97,0,0,4622,4623,5,
        32,0,0,4623,4624,3,758,379,0,4624,771,1,0,0,0,4625,4626,5,314,0,
        0,4626,4629,5,32,0,0,4627,4630,3,760,380,0,4628,4630,3,762,381,0,
        4629,4627,1,0,0,0,4629,4628,1,0,0,0,4630,773,1,0,0,0,4631,4632,5,
        349,0,0,4632,4636,5,399,0,0,4633,4637,5,179,0,0,4634,4637,5,343,
        0,0,4635,4637,5,29,0,0,4636,4633,1,0,0,0,4636,4634,1,0,0,0,4636,
        4635,1,0,0,0,4636,4637,1,0,0,0,4637,4639,1,0,0,0,4638,4640,3,704,
        352,0,4639,4638,1,0,0,0,4639,4640,1,0,0,0,4640,4641,1,0,0,0,4641,
        4642,5,139,0,0,4642,4643,3,704,352,0,4643,4644,5,400,0,0,4644,775,
        1,0,0,0,4645,4686,3,774,387,0,4646,4647,3,784,392,0,4647,4662,5,
        399,0,0,4648,4663,5,415,0,0,4649,4651,3,694,347,0,4650,4649,1,0,
        0,0,4650,4651,1,0,0,0,4651,4660,1,0,0,0,4652,4657,3,704,352,0,4653,
        4654,5,397,0,0,4654,4656,3,704,352,0,4655,4653,1,0,0,0,4656,4659,
        1,0,0,0,4657,4655,1,0,0,0,4657,4658,1,0,0,0,4658,4661,1,0,0,0,4659,
        4657,1,0,0,0,4660,4652,1,0,0,0,4660,4661,1,0,0,0,4661,4663,1,0,0,
        0,4662,4648,1,0,0,0,4662,4650,1,0,0,0,4663,4683,1,0,0,0,4664,4665,
        5,400,0,0,4665,4666,5,388,0,0,4666,4667,5,144,0,0,4667,4668,5,399,
        0,0,4668,4669,3,764,382,0,4669,4670,5,400,0,0,4670,4684,1,0,0,0,
        4671,4673,5,400,0,0,4672,4674,3,778,389,0,4673,4672,1,0,0,0,4673,
        4674,1,0,0,0,4674,4675,1,0,0,0,4675,4676,5,234,0,0,4676,4684,3,712,
        356,0,4677,4678,3,778,389,0,4678,4679,5,400,0,0,4679,4680,5,234,
        0,0,4680,4681,3,712,356,0,4681,4684,1,0,0,0,4682,4684,5,400,0,0,
        4683,4664,1,0,0,0,4683,4671,1,0,0,0,4683,4677,1,0,0,0,4683,4682,
        1,0,0,0,4684,4686,1,0,0,0,4685,4645,1,0,0,0,4685,4646,1,0,0,0,4686,
        777,1,0,0,0,4687,4688,5,281,0,0,4688,4692,5,220,0,0,4689,4690,5,
        152,0,0,4690,4692,5,220,0,0,4691,4687,1,0,0,0,4691,4689,1,0,0,0,
        4692,779,1,0,0,0,4693,4694,3,928,464,0,4694,781,1,0,0,0,4695,4698,
        3,786,393,0,4696,4698,5,426,0,0,4697,4695,1,0,0,0,4697,4696,1,0,
        0,0,4698,783,1,0,0,0,4699,4702,3,786,393,0,4700,4702,3,788,394,0,
        4701,4699,1,0,0,0,4701,4700,1,0,0,0,4702,785,1,0,0,0,4703,4704,3,
        928,464,0,4704,787,1,0,0,0,4705,4708,3,934,467,0,4706,4708,3,924,
        462,0,4707,4705,1,0,0,0,4707,4706,1,0,0,0,4708,789,1,0,0,0,4709,
        4710,5,36,0,0,4710,4711,5,399,0,0,4711,4712,3,828,414,0,4712,4713,
        5,17,0,0,4713,4716,3,382,191,0,4714,4715,5,137,0,0,4715,4717,5,426,
        0,0,4716,4714,1,0,0,0,4716,4717,1,0,0,0,4717,4718,1,0,0,0,4718,4719,
        5,400,0,0,4719,791,1,0,0,0,4720,4721,5,35,0,0,4721,4727,3,828,414,
        0,4722,4723,5,383,0,0,4723,4724,3,828,414,0,4724,4725,5,335,0,0,
        4725,4726,3,828,414,0,4726,4728,1,0,0,0,4727,4722,1,0,0,0,4728,4729,
        1,0,0,0,4729,4727,1,0,0,0,4729,4730,1,0,0,0,4730,4733,1,0,0,0,4731,
        4732,5,105,0,0,4732,4734,3,828,414,0,4733,4731,1,0,0,0,4733,4734,
        1,0,0,0,4734,4735,1,0,0,0,4735,4736,5,108,0,0,4736,793,1,0,0,0,4737,
        4743,5,35,0,0,4738,4739,5,383,0,0,4739,4740,3,828,414,0,4740,4741,
        5,335,0,0,4741,4742,3,828,414,0,4742,4744,1,0,0,0,4743,4738,1,0,
        0,0,4744,4745,1,0,0,0,4745,4743,1,0,0,0,4745,4746,1,0,0,0,4746,4749,
        1,0,0,0,4747,4748,5,105,0,0,4748,4750,3,828,414,0,4749,4747,1,0,
        0,0,4749,4750,1,0,0,0,4750,4751,1,0,0,0,4751,4752,5,108,0,0,4752,
        795,1,0,0,0,4753,4754,5,132,0,0,4754,4755,5,399,0,0,4755,4758,3,
        828,414,0,4756,4757,5,341,0,0,4757,4759,3,798,399,0,4758,4756,1,
        0,0,0,4758,4759,1,0,0,0,4759,4760,1,0,0,0,4760,4761,5,400,0,0,4761,
        797,1,0,0,0,4762,4771,3,976,488,0,4763,4771,5,257,0,0,4764,4771,
        3,978,489,0,4765,4771,3,980,490,0,4766,4771,3,982,491,0,4767,4771,
        3,984,492,0,4768,4771,3,986,493,0,4769,4771,3,988,494,0,4770,4762,
        1,0,0,0,4770,4763,1,0,0,0,4770,4764,1,0,0,0,4770,4765,1,0,0,0,4770,
        4766,1,0,0,0,4770,4767,1,0,0,0,4770,4768,1,0,0,0,4770,4769,1,0,0,
        0,4771,799,1,0,0,0,4772,4773,5,124,0,0,4773,4774,5,399,0,0,4774,
        4775,3,802,401,0,4775,4776,5,139,0,0,4776,4777,3,828,414,0,4777,
        4778,5,400,0,0,4778,801,1,0,0,0,4779,4788,3,976,488,0,4780,4788,
        5,257,0,0,4781,4788,3,978,489,0,4782,4788,3,980,490,0,4783,4788,
        3,982,491,0,4784,4788,3,984,492,0,4785,4788,3,986,493,0,4786,4788,
        3,988,494,0,4787,4779,1,0,0,0,4787,4780,1,0,0,0,4787,4781,1,0,0,
        0,4787,4782,1,0,0,0,4787,4783,1,0,0,0,4787,4784,1,0,0,0,4787,4785,
        1,0,0,0,4787,4786,1,0,0,0,4788,803,1,0,0,0,4789,4803,3,822,411,0,
        4790,4803,5,431,0,0,4791,4803,3,814,407,0,4792,4803,3,816,408,0,
        4793,4803,3,818,409,0,4794,4803,5,426,0,0,4795,4803,3,810,405,0,
        4796,4803,5,428,0,0,4797,4803,5,429,0,0,4798,4803,3,812,406,0,4799,
        4803,3,906,453,0,4800,4803,5,219,0,0,4801,4803,3,806,403,0,4802,
        4789,1,0,0,0,4802,4790,1,0,0,0,4802,4791,1,0,0,0,4802,4792,1,0,0,
        0,4802,4793,1,0,0,0,4802,4794,1,0,0,0,4802,4795,1,0,0,0,4802,4796,
        1,0,0,0,4802,4797,1,0,0,0,4802,4798,1,0,0,0,4802,4799,1,0,0,0,4802,
        4800,1,0,0,0,4802,4801,1,0,0,0,4803,805,1,0,0,0,4804,4805,3,808,
        404,0,4805,807,1,0,0,0,4806,4807,5,424,0,0,4807,809,1,0,0,0,4808,
        4810,5,426,0,0,4809,4811,5,426,0,0,4810,4809,1,0,0,0,4811,4812,1,
        0,0,0,4812,4810,1,0,0,0,4812,4813,1,0,0,0,4813,811,1,0,0,0,4814,
        4815,5,433,0,0,4815,4816,5,427,0,0,4816,813,1,0,0,0,4817,4818,5,
        71,0,0,4818,4821,5,426,0,0,4819,4821,5,63,0,0,4820,4817,1,0,0,0,
        4820,4819,1,0,0,0,4821,815,1,0,0,0,4822,4823,5,337,0,0,4823,4826,
        5,426,0,0,4824,4826,5,64,0,0,4825,4822,1,0,0,0,4825,4824,1,0,0,0,
        4826,817,1,0,0,0,4827,4828,5,338,0,0,4828,4829,5,426,0,0,4829,819,
        1,0,0,0,4830,4831,7,24,0,0,4831,821,1,0,0,0,4832,4833,3,820,410,
        0,4833,4834,3,826,413,0,4834,823,1,0,0,0,4835,4836,5,399,0,0,4836,
        4837,3,820,410,0,4837,4838,5,400,0,0,4838,4839,3,826,413,0,4839,
        4851,1,0,0,0,4840,4846,5,165,0,0,4841,4847,3,820,410,0,4842,4843,
        5,399,0,0,4843,4844,3,828,414,0,4844,4845,5,400,0,0,4845,4847,1,
        0,0,0,4846,4841,1,0,0,0,4846,4842,1,0,0,0,4847,4848,1,0,0,0,4848,
        4849,3,826,413,0,4849,4851,1,0,0,0,4850,4835,1,0,0,0,4850,4840,1,
        0,0,0,4851,825,1,0,0,0,4852,4853,3,976,488,0,4853,4854,5,341,0,0,
        4854,4855,3,978,489,0,4855,4867,1,0,0,0,4856,4857,3,982,491,0,4857,
        4858,5,341,0,0,4858,4859,3,988,494,0,4859,4867,1,0,0,0,4860,4867,
        3,976,488,0,4861,4867,3,978,489,0,4862,4867,3,982,491,0,4863,4867,
        3,984,492,0,4864,4867,3,986,493,0,4865,4867,3,988,494,0,4866,4852,
        1,0,0,0,4866,4856,1,0,0,0,4866,4860,1,0,0,0,4866,4861,1,0,0,0,4866,
        4862,1,0,0,0,4866,4863,1,0,0,0,4866,4864,1,0,0,0,4866,4865,1,0,0,
        0,4867,827,1,0,0,0,4868,4869,3,904,452,0,4869,829,1,0,0,0,4870,4882,
        3,804,402,0,4871,4882,3,824,412,0,4872,4882,3,790,395,0,4873,4882,
        3,800,400,0,4874,4882,3,796,398,0,4875,4882,3,792,396,0,4876,4882,
        3,794,397,0,4877,4882,3,866,433,0,4878,4882,3,776,388,0,4879,4882,
        3,746,373,0,4880,4882,3,926,463,0,4881,4870,1,0,0,0,4881,4871,1,
        0,0,0,4881,4872,1,0,0,0,4881,4873,1,0,0,0,4881,4874,1,0,0,0,4881,
        4875,1,0,0,0,4881,4876,1,0,0,0,4881,4877,1,0,0,0,4881,4878,1,0,0,
        0,4881,4879,1,0,0,0,4881,4880,1,0,0,0,4882,831,1,0,0,0,4883,4892,
        3,830,415,0,4884,4885,5,401,0,0,4885,4886,3,828,414,0,4886,4887,
        5,402,0,0,4887,4891,1,0,0,0,4888,4889,5,395,0,0,4889,4891,3,926,
        463,0,4890,4884,1,0,0,0,4890,4888,1,0,0,0,4891,4894,1,0,0,0,4892,
        4890,1,0,0,0,4892,4893,1,0,0,0,4893,833,1,0,0,0,4894,4892,1,0,0,
        0,4895,4896,7,31,0,0,4896,835,1,0,0,0,4897,4899,3,834,417,0,4898,
        4897,1,0,0,0,4899,4902,1,0,0,0,4900,4898,1,0,0,0,4900,4901,1,0,0,
        0,4901,4903,1,0,0,0,4902,4900,1,0,0,0,4903,4904,3,832,416,0,4904,
        837,1,0,0,0,4905,4906,5,423,0,0,4906,839,1,0,0,0,4907,4913,3,836,
        418,0,4908,4909,3,838,419,0,4909,4910,3,836,418,0,4910,4912,1,0,
        0,0,4911,4908,1,0,0,0,4912,4915,1,0,0,0,4913,4911,1,0,0,0,4913,4914,
        1,0,0,0,4914,841,1,0,0,0,4915,4913,1,0,0,0,4916,4917,7,32,0,0,4917,
        843,1,0,0,0,4918,4924,3,840,420,0,4919,4920,3,842,421,0,4920,4921,
        3,840,420,0,4921,4923,1,0,0,0,4922,4919,1,0,0,0,4923,4926,1,0,0,
        0,4924,4922,1,0,0,0,4924,4925,1,0,0,0,4925,845,1,0,0,0,4926,4924,
        1,0,0,0,4927,4928,7,33,0,0,4928,847,1,0,0,0,4929,4935,3,844,422,
        0,4930,4931,3,846,423,0,4931,4932,3,844,422,0,4932,4934,1,0,0,0,
        4933,4930,1,0,0,0,4934,4937,1,0,0,0,4935,4933,1,0,0,0,4935,4936,
        1,0,0,0,4936,849,1,0,0,0,4937,4935,1,0,0,0,4938,4939,5,422,0,0,4939,
        851,1,0,0,0,4940,4946,3,848,424,0,4941,4942,3,850,425,0,4942,4943,
        3,848,424,0,4943,4945,1,0,0,0,4944,4941,1,0,0,0,4945,4948,1,0,0,
        0,4946,4944,1,0,0,0,4946,4947,1,0,0,0,4947,853,1,0,0,0,4948,4946,
        1,0,0,0,4949,4950,5,419,0,0,4950,855,1,0,0,0,4951,4957,3,852,426,
        0,4952,4953,3,854,427,0,4953,4954,3,852,426,0,4954,4956,1,0,0,0,
        4955,4952,1,0,0,0,4956,4959,1,0,0,0,4957,4955,1,0,0,0,4957,4958,
        1,0,0,0,4958,857,1,0,0,0,4959,4957,1,0,0,0,4960,4961,5,421,0,0,4961,
        859,1,0,0,0,4962,4968,3,856,428,0,4963,4964,3,858,429,0,4964,4965,
        3,856,428,0,4965,4967,1,0,0,0,4966,4963,1,0,0,0,4967,4970,1,0,0,
        0,4968,4966,1,0,0,0,4968,4969,1,0,0,0,4969,861,1,0,0,0,4970,4968,
        1,0,0,0,4971,4972,7,34,0,0,4972,863,1,0,0,0,4973,4979,3,862,431,
        0,4974,4979,5,408,0,0,4975,4979,5,409,0,0,4976,4979,5,410,0,0,4977,
        4979,5,411,0,0,4978,4973,1,0,0,0,4978,4974,1,0,0,0,4978,4975,1,0,
        0,0,4978,4976,1,0,0,0,4978,4977,1,0,0,0,4979,865,1,0,0,0,4980,4981,
        5,399,0,0,4981,4982,3,410,205,0,4982,4983,5,400,0,0,4983,867,1,0,
        0,0,4984,4988,3,870,435,0,4985,4986,5,117,0,0,4986,4988,3,866,433,
        0,4987,4984,1,0,0,0,4987,4985,1,0,0,0,4988,869,1,0,0,0,4989,4991,
        3,860,430,0,4990,4992,3,872,436,0,4991,4990,1,0,0,0,4991,4992,1,
        0,0,0,4992,871,1,0,0,0,4993,4994,3,864,432,0,4994,4995,3,860,430,
        0,4995,5000,1,0,0,0,4996,5000,3,874,437,0,4997,4998,5,216,0,0,4998,
        5000,3,882,441,0,4999,4993,1,0,0,0,4999,4996,1,0,0,0,4999,4997,1,
        0,0,0,5000,873,1,0,0,0,5001,5002,5,154,0,0,5002,5013,3,880,440,0,
        5003,5004,5,25,0,0,5004,5005,3,860,430,0,5005,5006,5,11,0,0,5006,
        5007,3,860,430,0,5007,5013,1,0,0,0,5008,5009,5,184,0,0,5009,5010,
        7,35,0,0,5010,5013,3,746,373,0,5011,5013,3,876,438,0,5012,5001,1,
        0,0,0,5012,5003,1,0,0,0,5012,5008,1,0,0,0,5012,5011,1,0,0,0,5013,
        875,1,0,0,0,5014,5015,3,922,461,0,5015,5016,3,878,439,0,5016,5017,
        3,866,433,0,5017,877,1,0,0,0,5018,5019,7,36,0,0,5019,879,1,0,0,0,
        5020,5023,3,866,433,0,5021,5023,3,746,373,0,5022,5020,1,0,0,0,5022,
        5021,1,0,0,0,5023,881,1,0,0,0,5024,5025,3,862,431,0,5025,5026,3,
        860,430,0,5026,5029,1,0,0,0,5027,5029,3,874,437,0,5028,5024,1,0,
        0,0,5028,5027,1,0,0,0,5029,883,1,0,0,0,5030,5031,5,167,0,0,5031,
        5032,5,96,0,0,5032,5033,5,139,0,0,5033,885,1,0,0,0,5034,5042,5,405,
        0,0,5035,5042,5,406,0,0,5036,5042,5,407,0,0,5037,5038,5,167,0,0,
        5038,5039,5,216,0,0,5039,5040,5,96,0,0,5040,5042,5,139,0,0,5041,
        5034,1,0,0,0,5041,5035,1,0,0,0,5041,5036,1,0,0,0,5041,5037,1,0,0,
        0,5042,887,1,0,0,0,5043,5052,3,868,434,0,5044,5045,3,886,443,0,5045,
        5046,3,868,434,0,5046,5051,1,0,0,0,5047,5048,3,884,442,0,5048,5049,
        3,868,434,0,5049,5051,1,0,0,0,5050,5044,1,0,0,0,5050,5047,1,0,0,
        0,5051,5054,1,0,0,0,5052,5050,1,0,0,0,5052,5053,1,0,0,0,5053,889,
        1,0,0,0,5054,5052,1,0,0,0,5055,5068,5,219,0,0,5056,5068,5,350,0,
        0,5057,5068,5,125,0,0,5058,5068,5,360,0,0,5059,5060,5,216,0,0,5060,
        5068,5,219,0,0,5061,5062,5,216,0,0,5062,5068,5,350,0,0,5063,5064,
        5,216,0,0,5064,5068,5,125,0,0,5065,5066,5,216,0,0,5066,5068,5,360,
        0,0,5067,5055,1,0,0,0,5067,5056,1,0,0,0,5067,5057,1,0,0,0,5067,5058,
        1,0,0,0,5067,5059,1,0,0,0,5067,5061,1,0,0,0,5067,5063,1,0,0,0,5067,
        5065,1,0,0,0,5068,891,1,0,0,0,5069,5072,3,888,444,0,5070,5071,5,
        167,0,0,5071,5073,3,890,445,0,5072,5070,1,0,0,0,5072,5073,1,0,0,
        0,5073,893,1,0,0,0,5074,5075,5,216,0,0,5075,895,1,0,0,0,5076,5078,
        3,894,447,0,5077,5076,1,0,0,0,5078,5081,1,0,0,0,5079,5077,1,0,0,
        0,5079,5080,1,0,0,0,5080,5082,1,0,0,0,5081,5079,1,0,0,0,5082,5083,
        3,892,446,0,5083,897,1,0,0,0,5084,5085,5,11,0,0,5085,899,1,0,0,0,
        5086,5092,3,896,448,0,5087,5088,3,898,449,0,5088,5089,3,896,448,
        0,5089,5091,1,0,0,0,5090,5087,1,0,0,0,5091,5094,1,0,0,0,5092,5090,
        1,0,0,0,5092,5093,1,0,0,0,5093,901,1,0,0,0,5094,5092,1,0,0,0,5095,
        5096,5,228,0,0,5096,903,1,0,0,0,5097,5103,3,900,450,0,5098,5099,
        3,902,451,0,5099,5100,3,900,450,0,5100,5102,1,0,0,0,5101,5098,1,
        0,0,0,5102,5105,1,0,0,0,5103,5101,1,0,0,0,5103,5104,1,0,0,0,5104,
        905,1,0,0,0,5105,5103,1,0,0,0,5106,5107,7,37,0,0,5107,907,1,0,0,
        0,5108,5109,7,37,0,0,5109,909,1,0,0,0,5110,5112,3,660,330,0,5111,
        5113,3,912,456,0,5112,5111,1,0,0,0,5112,5113,1,0,0,0,5113,911,1,
        0,0,0,5114,5115,5,237,0,0,5115,5116,5,399,0,0,5116,5121,3,914,457,
        0,5117,5118,5,397,0,0,5118,5120,3,914,457,0,5119,5117,1,0,0,0,5120,
        5123,1,0,0,0,5121,5119,1,0,0,0,5121,5122,1,0,0,0,5122,5124,1,0,0,
        0,5123,5121,1,0,0,0,5124,5125,5,400,0,0,5125,913,1,0,0,0,5126,5129,
        3,926,463,0,5127,5128,5,405,0,0,5128,5130,3,804,402,0,5129,5127,
        1,0,0,0,5129,5130,1,0,0,0,5130,915,1,0,0,0,5131,5132,5,399,0,0,5132,
        5137,3,918,459,0,5133,5134,5,397,0,0,5134,5136,3,918,459,0,5135,
        5133,1,0,0,0,5136,5139,1,0,0,0,5137,5135,1,0,0,0,5137,5138,1,0,0,
        0,5138,5140,1,0,0,0,5139,5137,1,0,0,0,5140,5141,5,400,0,0,5141,917,
        1,0,0,0,5142,5143,3,926,463,0,5143,5144,3,920,460,0,5144,5145,3,
        804,402,0,5145,919,1,0,0,0,5146,5149,5,184,0,0,5147,5149,3,922,461,
        0,5148,5146,1,0,0,0,5148,5147,1,0,0,0,5149,921,1,0,0,0,5150,5151,
        7,38,0,0,5151,923,1,0,0,0,5152,5153,7,39,0,0,5153,925,1,0,0,0,5154,
        5157,5,432,0,0,5155,5157,3,932,466,0,5156,5154,1,0,0,0,5156,5155,
        1,0,0,0,5157,927,1,0,0,0,5158,5161,3,926,463,0,5159,5160,5,395,0,
        0,5160,5162,3,926,463,0,5161,5159,1,0,0,0,5161,5162,1,0,0,0,5162,
        929,1,0,0,0,5163,5164,3,926,463,0,5164,931,1,0,0,0,5165,5166,7,40,
        0,0,5166,933,1,0,0,0,5167,5168,7,41,0,0,5168,935,1,0,0,0,5169,5170,
        3,938,469,0,5170,5171,5,0,0,1,5171,937,1,0,0,0,5172,5177,3,940,470,
        0,5173,5174,5,397,0,0,5174,5176,3,940,470,0,5175,5173,1,0,0,0,5176,
        5179,1,0,0,0,5177,5175,1,0,0,0,5177,5178,1,0,0,0,5178,939,1,0,0,
        0,5179,5177,1,0,0,0,5180,5185,3,942,471,0,5181,5182,5,399,0,0,5182,
        5183,3,944,472,0,5183,5184,5,400,0,0,5184,5186,1,0,0,0,5185,5181,
        1,0,0,0,5185,5186,1,0,0,0,5186,941,1,0,0,0,5187,5188,7,42,0,0,5188,
        943,1,0,0,0,5189,5194,3,946,473,0,5190,5191,5,397,0,0,5191,5193,
        3,946,473,0,5192,5190,1,0,0,0,5193,5196,1,0,0,0,5194,5192,1,0,0,
        0,5194,5195,1,0,0,0,5195,945,1,0,0,0,5196,5194,1,0,0,0,5197,5198,
        7,43,0,0,5198,947,1,0,0,0,5199,5200,5,249,0,0,5200,5201,3,926,463,
        0,5201,5202,5,139,0,0,5202,5203,3,394,197,0,5203,949,1,0,0,0,5204,
        5205,5,115,0,0,5205,5206,3,926,463,0,5206,5207,5,370,0,0,5207,5208,
        3,952,476,0,5208,951,1,0,0,0,5209,5214,3,804,402,0,5210,5211,5,397,
        0,0,5211,5213,3,804,402,0,5212,5210,1,0,0,0,5213,5216,1,0,0,0,5214,
        5212,1,0,0,0,5214,5215,1,0,0,0,5215,953,1,0,0,0,5216,5214,1,0,0,
        0,5217,5232,3,964,482,0,5218,5232,3,992,496,0,5219,5232,3,998,499,
        0,5220,5232,3,994,497,0,5221,5232,3,996,498,0,5222,5232,3,1020,510,
        0,5223,5232,3,1022,511,0,5224,5232,3,1024,512,0,5225,5232,3,1030,
        515,0,5226,5232,3,1032,516,0,5227,5232,3,1034,517,0,5228,5232,3,
        1036,518,0,5229,5232,3,1038,519,0,5230,5232,3,1040,520,0,5231,5217,
        1,0,0,0,5231,5218,1,0,0,0,5231,5219,1,0,0,0,5231,5220,1,0,0,0,5231,
        5221,1,0,0,0,5231,5222,1,0,0,0,5231,5223,1,0,0,0,5231,5224,1,0,0,
        0,5231,5225,1,0,0,0,5231,5226,1,0,0,0,5231,5227,1,0,0,0,5231,5228,
        1,0,0,0,5231,5229,1,0,0,0,5231,5230,1,0,0,0,5232,955,1,0,0,0,5233,
        5234,5,259,0,0,5234,5235,5,405,0,0,5235,5241,5,431,0,0,5236,5237,
        5,83,0,0,5237,5238,5,246,0,0,5238,5239,5,405,0,0,5239,5241,3,1000,
        500,0,5240,5233,1,0,0,0,5240,5236,1,0,0,0,5241,957,1,0,0,0,5242,
        5247,3,956,478,0,5243,5244,5,397,0,0,5244,5246,3,956,478,0,5245,
        5243,1,0,0,0,5246,5249,1,0,0,0,5247,5245,1,0,0,0,5247,5248,1,0,0,
        0,5248,959,1,0,0,0,5249,5247,1,0,0,0,5250,5254,5,259,0,0,5251,5252,
        5,83,0,0,5252,5254,5,246,0,0,5253,5250,1,0,0,0,5253,5251,1,0,0,0,
        5254,961,1,0,0,0,5255,5260,3,960,480,0,5256,5257,5,397,0,0,5257,
        5259,3,960,480,0,5258,5256,1,0,0,0,5259,5262,1,0,0,0,5260,5258,1,
        0,0,0,5260,5261,1,0,0,0,5261,963,1,0,0,0,5262,5260,1,0,0,0,5263,
        5264,5,58,0,0,5264,5265,5,280,0,0,5265,5267,5,243,0,0,5266,5268,
        3,44,22,0,5267,5266,1,0,0,0,5267,5268,1,0,0,0,5268,5278,1,0,0,0,
        5269,5270,3,926,463,0,5270,5271,5,184,0,0,5271,5272,3,926,463,0,
        5272,5279,1,0,0,0,5273,5276,3,926,463,0,5274,5275,5,387,0,0,5275,
        5277,3,958,479,0,5276,5274,1,0,0,0,5276,5277,1,0,0,0,5277,5279,1,
        0,0,0,5278,5269,1,0,0,0,5278,5273,1,0,0,0,5279,965,1,0,0,0,5280,
        5281,5,387,0,0,5281,5282,5,278,0,0,5282,967,1,0,0,0,5283,5285,5,
        2,0,0,5284,5286,3,966,483,0,5285,5284,1,0,0,0,5285,5286,1,0,0,0,
        5286,969,1,0,0,0,5287,5288,7,44,0,0,5288,971,1,0,0,0,5289,5290,7,
        45,0,0,5290,973,1,0,0,0,5291,5292,5,362,0,0,5292,975,1,0,0,0,5293,
        5294,7,46,0,0,5294,977,1,0,0,0,5295,5296,7,47,0,0,5296,979,1,0,0,
        0,5297,5298,7,48,0,0,5298,981,1,0,0,0,5299,5300,7,49,0,0,5300,983,
        1,0,0,0,5301,5302,7,50,0,0,5302,985,1,0,0,0,5303,5304,7,51,0,0,5304,
        987,1,0,0,0,5305,5306,7,52,0,0,5306,989,1,0,0,0,5307,5308,7,53,0,
        0,5308,991,1,0,0,0,5309,5310,5,9,0,0,5310,5311,5,280,0,0,5311,5312,
        5,243,0,0,5312,5330,3,926,463,0,5313,5331,5,373,0,0,5314,5331,3,
        972,486,0,5315,5316,5,304,0,0,5316,5331,3,958,479,0,5317,5318,5,
        363,0,0,5318,5331,3,962,481,0,5319,5320,5,274,0,0,5320,5321,5,341,
        0,0,5321,5331,3,926,463,0,5322,5324,3,968,484,0,5323,5325,3,970,
        485,0,5324,5323,1,0,0,0,5324,5325,1,0,0,0,5325,5331,1,0,0,0,5326,
        5328,3,970,485,0,5327,5329,3,968,484,0,5328,5327,1,0,0,0,5328,5329,
        1,0,0,0,5329,5331,1,0,0,0,5330,5313,1,0,0,0,5330,5314,1,0,0,0,5330,
        5315,1,0,0,0,5330,5317,1,0,0,0,5330,5319,1,0,0,0,5330,5322,1,0,0,
        0,5330,5326,1,0,0,0,5331,993,1,0,0,0,5332,5335,3,970,485,0,5333,
        5335,3,972,486,0,5334,5332,1,0,0,0,5334,5333,1,0,0,0,5335,5336,1,
        0,0,0,5336,5337,5,390,0,0,5337,5338,5,197,0,0,5338,995,1,0,0,0,5339,
        5351,5,278,0,0,5340,5341,5,3,0,0,5341,5342,5,280,0,0,5342,5343,5,
        243,0,0,5343,5344,5,387,0,0,5344,5352,3,926,463,0,5345,5346,5,280,
        0,0,5346,5347,5,243,0,0,5347,5348,3,926,463,0,5348,5349,5,387,0,
        0,5349,5350,3,926,463,0,5350,5352,1,0,0,0,5351,5340,1,0,0,0,5351,
        5345,1,0,0,0,5352,997,1,0,0,0,5353,5354,5,101,0,0,5354,5355,5,280,
        0,0,5355,5357,5,243,0,0,5356,5358,3,40,20,0,5357,5356,1,0,0,0,5357,
        5358,1,0,0,0,5358,5359,1,0,0,0,5359,5360,3,926,463,0,5360,999,1,
        0,0,0,5361,5366,3,926,463,0,5362,5363,5,395,0,0,5363,5365,3,926,
        463,0,5364,5362,1,0,0,0,5365,5368,1,0,0,0,5366,5364,1,0,0,0,5366,
        5367,1,0,0,0,5367,1001,1,0,0,0,5368,5366,1,0,0,0,5369,5370,3,1010,
        505,0,5370,1003,1,0,0,0,5371,5372,3,1002,501,0,5372,5373,5,0,0,1,
        5373,1005,1,0,0,0,5374,5379,3,1008,504,0,5375,5376,5,228,0,0,5376,
        5378,3,1008,504,0,5377,5375,1,0,0,0,5378,5381,1,0,0,0,5379,5377,
        1,0,0,0,5379,5380,1,0,0,0,5380,1007,1,0,0,0,5381,5379,1,0,0,0,5382,
        5387,3,1010,505,0,5383,5384,5,11,0,0,5384,5386,3,1010,505,0,5385,
        5383,1,0,0,0,5386,5389,1,0,0,0,5387,5385,1,0,0,0,5387,5388,1,0,0,
        0,5388,1009,1,0,0,0,5389,5387,1,0,0,0,5390,5391,3,926,463,0,5391,
        5392,3,1014,507,0,5392,5393,3,1012,506,0,5393,1011,1,0,0,0,5394,
        5395,7,24,0,0,5395,1013,1,0,0,0,5396,5397,5,411,0,0,5397,1015,1,
        0,0,0,5398,5403,5,176,0,0,5399,5400,5,211,0,0,5400,5401,5,341,0,
        0,5401,5403,3,1000,500,0,5402,5398,1,0,0,0,5402,5399,1,0,0,0,5403,
        1017,1,0,0,0,5404,5405,3,1016,508,0,5405,5406,5,0,0,1,5406,1019,
        1,0,0,0,5407,5408,5,58,0,0,5408,5409,5,348,0,0,5409,5410,3,926,463,
        0,5410,5411,5,395,0,0,5411,5412,3,926,463,0,5412,5413,5,383,0,0,
        5413,5414,3,1002,501,0,5414,5415,5,99,0,0,5415,5416,3,1016,508,0,
        5416,1021,1,0,0,0,5417,5418,5,9,0,0,5418,5419,5,348,0,0,5419,5420,
        3,926,463,0,5420,5421,5,395,0,0,5421,5438,3,926,463,0,5422,5423,
        5,383,0,0,5423,5424,3,1002,501,0,5424,5425,5,99,0,0,5425,5426,3,
        1016,508,0,5426,5439,1,0,0,0,5427,5428,5,4,0,0,5428,5432,5,341,0,
        0,5429,5430,5,101,0,0,5430,5432,5,139,0,0,5431,5427,1,0,0,0,5431,
        5429,1,0,0,0,5432,5436,1,0,0,0,5433,5434,5,246,0,0,5434,5437,3,1000,
        500,0,5435,5437,5,362,0,0,5436,5433,1,0,0,0,5436,5435,1,0,0,0,5437,
        5439,1,0,0,0,5438,5422,1,0,0,0,5438,5431,1,0,0,0,5439,1023,1,0,0,
        0,5440,5441,5,101,0,0,5441,5442,5,348,0,0,5442,5443,3,926,463,0,
        5443,5444,5,395,0,0,5444,5445,3,926,463,0,5445,1025,1,0,0,0,5446,
        5447,5,8,0,0,5447,5448,5,405,0,0,5448,5459,5,431,0,0,5449,5450,5,
        259,0,0,5450,5451,5,405,0,0,5451,5459,5,431,0,0,5452,5453,5,294,
        0,0,5453,5454,5,405,0,0,5454,5459,5,426,0,0,5455,5456,5,240,0,0,
        5456,5457,5,405,0,0,5457,5459,3,1000,500,0,5458,5446,1,0,0,0,5458,
        5449,1,0,0,0,5458,5452,1,0,0,0,5458,5455,1,0,0,0,5459,1027,1,0,0,
        0,5460,5465,3,1026,513,0,5461,5462,5,397,0,0,5462,5464,3,1026,513,
        0,5463,5461,1,0,0,0,5464,5467,1,0,0,0,5465,5463,1,0,0,0,5465,5466,
        1,0,0,0,5466,1029,1,0,0,0,5467,5465,1,0,0,0,5468,5469,5,58,0,0,5469,
        5470,5,246,0,0,5470,5471,3,926,463,0,5471,5472,5,395,0,0,5472,5473,
        3,1000,500,0,5473,5474,5,387,0,0,5474,5475,3,1028,514,0,5475,1031,
        1,0,0,0,5476,5477,5,9,0,0,5477,5478,5,246,0,0,5478,5479,3,926,463,
        0,5479,5480,5,395,0,0,5480,5488,3,1000,500,0,5481,5482,5,304,0,0,
        5482,5489,3,1028,514,0,5483,5484,5,363,0,0,5484,5489,5,294,0,0,5485,
        5486,7,54,0,0,5486,5487,5,348,0,0,5487,5489,3,926,463,0,5488,5481,
        1,0,0,0,5488,5483,1,0,0,0,5488,5485,1,0,0,0,5489,1033,1,0,0,0,5490,
        5491,5,101,0,0,5491,5492,5,246,0,0,5492,5493,3,926,463,0,5493,5494,
        5,395,0,0,5494,5495,3,1000,500,0,5495,1035,1,0,0,0,5496,5497,5,58,
        0,0,5497,5498,7,55,0,0,5498,5499,5,200,0,0,5499,5500,5,426,0,0,5500,
        5501,5,154,0,0,5501,5505,3,926,463,0,5502,5503,5,341,0,0,5503,5506,
        3,1000,500,0,5504,5506,3,974,487,0,5505,5502,1,0,0,0,5505,5504,1,
        0,0,0,5506,5510,1,0,0,0,5507,5508,5,387,0,0,5508,5509,5,229,0,0,
        5509,5511,5,431,0,0,5510,5507,1,0,0,0,5510,5511,1,0,0,0,5511,1037,
        1,0,0,0,5512,5513,5,9,0,0,5513,5514,7,55,0,0,5514,5515,5,200,0,0,
        5515,5516,5,426,0,0,5516,5517,5,154,0,0,5517,5521,3,926,463,0,5518,
        5519,5,341,0,0,5519,5522,3,1000,500,0,5520,5522,3,974,487,0,5521,
        5518,1,0,0,0,5521,5520,1,0,0,0,5522,5526,1,0,0,0,5523,5524,5,387,
        0,0,5524,5525,5,229,0,0,5525,5527,5,431,0,0,5526,5523,1,0,0,0,5526,
        5527,1,0,0,0,5527,1039,1,0,0,0,5528,5529,5,101,0,0,5529,5530,7,55,
        0,0,5530,5531,5,200,0,0,5531,5532,5,426,0,0,5532,5533,5,154,0,0,
        5533,5534,3,926,463,0,5534,1041,1,0,0,0,653,1045,1052,1055,1061,
        1067,1074,1084,1087,1091,1111,1116,1121,1127,1134,1147,1151,1155,
        1160,1167,1171,1176,1183,1187,1198,1204,1211,1260,1288,1292,1296,
        1299,1302,1307,1313,1317,1323,1325,1342,1354,1358,1365,1373,1376,
        1381,1385,1388,1398,1406,1410,1413,1417,1421,1424,1429,1435,1440,
        1445,1449,1460,1462,1466,1476,1480,1486,1489,1496,1501,1509,1514,
        1518,1526,1531,1537,1543,1546,1549,1552,1561,1569,1574,1582,1589,
        1592,1595,1597,1605,1608,1611,1614,1617,1620,1623,1626,1629,1632,
        1635,1637,1649,1655,1663,1665,1675,1681,1696,1713,1718,1722,1726,
        1733,1740,1746,1750,1753,1760,1783,1788,1792,1800,1809,1813,1819,
        1825,1832,1835,1841,1848,1856,1865,1874,1881,1901,1908,1910,1917,
        1927,1935,1939,1943,1956,1965,1981,1985,1990,1995,1998,2001,2005,
        2008,2011,2016,2024,2028,2035,2038,2041,2044,2056,2062,2088,2096,
        2100,2103,2106,2109,2112,2115,2118,2121,2130,2140,2143,2163,2169,
        2175,2178,2180,2187,2194,2207,2212,2221,2229,2237,2247,2260,2273,
        2294,2298,2313,2319,2322,2325,2328,2331,2335,2349,2357,2360,2375,
        2409,2417,2422,2430,2435,2440,2450,2458,2466,2474,2482,2486,2496,
        2500,2508,2517,2520,2524,2531,2537,2541,2547,2551,2563,2572,2583,
        2587,2594,2606,2613,2622,2625,2632,2638,2644,2647,2650,2656,2660,
        2664,2669,2673,2677,2681,2689,2693,2697,2701,2705,2713,2717,2721,
        2729,2734,2739,2743,2747,2754,2763,2771,2783,2801,2804,2810,2836,
        2839,2845,2853,2861,2874,2881,2884,2887,2890,2893,2896,2899,2902,
        2905,2908,2911,2916,2919,2922,2925,2928,2931,2934,2937,2940,2943,
        2946,2948,2954,2958,2961,2964,2967,2970,2973,2980,2984,2987,2990,
        2993,2996,2999,3006,3009,3017,3021,3028,3030,3033,3038,3041,3045,
        3050,3056,3062,3070,3078,3085,3091,3100,3103,3107,3120,3124,3135,
        3142,3146,3151,3154,3164,3166,3170,3177,3182,3202,3209,3232,3248,
        3265,3271,3288,3301,3305,3309,3316,3344,3351,3356,3361,3366,3371,
        3379,3385,3389,3392,3395,3401,3408,3418,3422,3427,3431,3437,3444,
        3451,3462,3471,3475,3478,3481,3489,3492,3500,3503,3511,3515,3520,
        3524,3533,3549,3564,3566,3582,3589,3606,3609,3612,3615,3621,3644,
        3652,3666,3669,3674,3700,3704,3707,3710,3714,3719,3722,3725,3728,
        3731,3734,3740,3743,3746,3749,3752,3755,3758,3761,3764,3767,3771,
        3773,3779,3784,3787,3790,3793,3796,3802,3805,3808,3811,3814,3817,
        3820,3823,3826,3829,3833,3835,3837,3842,3846,3849,3852,3857,3875,
        3884,3896,3904,3916,3919,3925,3932,3939,3946,3953,3962,3966,3973,
        3978,3982,3998,4002,4004,4007,4020,4023,4026,4038,4041,4048,4057,
        4062,4064,4066,4083,4086,4095,4101,4105,4108,4111,4114,4117,4129,
        4133,4136,4139,4147,4154,4157,4164,4167,4172,4179,4187,4193,4198,
        4202,4207,4214,4228,4231,4235,4252,4260,4263,4276,4285,4288,4294,
        4297,4302,4305,4314,4328,4334,4336,4344,4347,4357,4362,4364,4376,
        4382,4384,4391,4398,4407,4417,4420,4423,4426,4430,4439,4448,4456,
        4462,4472,4479,4487,4497,4507,4512,4516,4520,4526,4547,4553,4557,
        4561,4564,4570,4575,4578,4582,4590,4600,4610,4629,4636,4639,4650,
        4657,4660,4662,4673,4683,4685,4691,4697,4701,4707,4716,4729,4733,
        4745,4749,4758,4770,4787,4802,4812,4820,4825,4846,4850,4866,4881,
        4890,4892,4900,4913,4924,4935,4946,4957,4968,4978,4987,4991,4999,
        5012,5022,5028,5041,5050,5052,5067,5072,5079,5092,5103,5112,5121,
        5129,5137,5148,5156,5161,5177,5185,5194,5214,5231,5240,5247,5253,
        5260,5267,5276,5278,5285,5324,5328,5330,5334,5351,5357,5366,5379,
        5387,5402,5431,5436,5438,5458,5465,5488,5505,5510,5521,5526
    ];

    private static __ATN: antlr.ATN;
    public static get _ATN(): antlr.ATN {
        if (!HiveSqlParser.__ATN) {
            HiveSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(HiveSqlParser._serializedATN);
        }

        return HiveSqlParser.__ATN;
    }


    private static readonly vocabulary = new antlr.Vocabulary(HiveSqlParser.literalNames, HiveSqlParser.symbolicNames, []);

    public override get vocabulary(): antlr.Vocabulary {
        return HiveSqlParser.vocabulary;
    }

    private static readonly decisionsToDFA = HiveSqlParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) );
}

export class ProgramContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public EOF(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EOF, 0)!;
    }
    public statement(): StatementContext[];
    public statement(i: number): StatementContext | null;
    public statement(i?: number): StatementContext[] | StatementContext | null {
        if (i === undefined) {
            return this.getRuleContexts(StatementContext);
        }

        return this.getRuleContext(i, StatementContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_program;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterProgram) {
             listener.enterProgram(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitProgram) {
             listener.exitProgram(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitProgram) {
            return visitor.visitProgram(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class StatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public explainStatement(): ExplainStatementContext | null {
        return this.getRuleContext(0, ExplainStatementContext);
    }
    public execStatement(): ExecStatementContext | null {
        return this.getRuleContext(0, ExecStatementContext);
    }
    public SEMICOLON(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.SEMICOLON, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_statement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterStatement) {
             listener.enterStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitStatement) {
             listener.exitStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitStatement) {
            return visitor.visitStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExplainStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXPLAIN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXPLAIN, 0)!;
    }
    public execStatement(): ExecStatementContext | null {
        return this.getRuleContext(0, ExecStatementContext);
    }
    public KW_REWRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0);
    }
    public queryStatementExpression(): QueryStatementExpressionContext | null {
        return this.getRuleContext(0, QueryStatementExpressionContext);
    }
    public explainOption(): ExplainOptionContext[];
    public explainOption(i: number): ExplainOptionContext | null;
    public explainOption(i?: number): ExplainOptionContext[] | ExplainOptionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExplainOptionContext);
        }

        return this.getRuleContext(i, ExplainOptionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_explainStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExplainStatement) {
             listener.enterExplainStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExplainStatement) {
             listener.exitExplainStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExplainStatement) {
            return visitor.visitExplainStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExplainOptionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXTENDED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXTENDED, 0);
    }
    public KW_FORMATTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    public KW_DEPENDENCY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEPENDENCY, 0);
    }
    public KW_CBO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CBO, 0);
    }
    public KW_COST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COST, 0);
    }
    public KW_JOINCOST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_JOINCOST, 0);
    }
    public KW_LOGICAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOGICAL, 0);
    }
    public KW_AUTHORIZATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AUTHORIZATION, 0);
    }
    public KW_ANALYZE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ANALYZE, 0);
    }
    public KW_REOPTIMIZATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REOPTIMIZATION, 0);
    }
    public KW_LOCKS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCKS, 0);
    }
    public KW_AST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AST, 0);
    }
    public KW_VECTORIZATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VECTORIZATION, 0);
    }
    public vectorizationOnly(): VectorizationOnlyContext | null {
        return this.getRuleContext(0, VectorizationOnlyContext);
    }
    public vectorizatonDetail(): VectorizatonDetailContext | null {
        return this.getRuleContext(0, VectorizatonDetailContext);
    }
    public KW_DEBUG(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEBUG, 0);
    }
    public KW_DDL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DDL, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_explainOption;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExplainOption) {
             listener.enterExplainOption(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExplainOption) {
             listener.exitExplainOption(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExplainOption) {
            return visitor.visitExplainOption(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class VectorizationOnlyContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ONLY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ONLY, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_vectorizationOnly;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterVectorizationOnly) {
             listener.enterVectorizationOnly(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitVectorizationOnly) {
             listener.exitVectorizationOnly(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitVectorizationOnly) {
            return visitor.visitVectorizationOnly(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class VectorizatonDetailContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SUMMARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SUMMARY, 0);
    }
    public KW_OPERATOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OPERATOR, 0);
    }
    public KW_EXPRESSION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXPRESSION, 0);
    }
    public KW_DETAIL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DETAIL, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_vectorizatonDetail;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterVectorizatonDetail) {
             listener.enterVectorizatonDetail(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitVectorizatonDetail) {
             listener.exitVectorizatonDetail(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitVectorizatonDetail) {
            return visitor.visitVectorizatonDetail(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExecStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public queryStatementExpression(): QueryStatementExpressionContext | null {
        return this.getRuleContext(0, QueryStatementExpressionContext);
    }
    public loadStatement(): LoadStatementContext | null {
        return this.getRuleContext(0, LoadStatementContext);
    }
    public exportStatement(): ExportStatementContext | null {
        return this.getRuleContext(0, ExportStatementContext);
    }
    public importStatement(): ImportStatementContext | null {
        return this.getRuleContext(0, ImportStatementContext);
    }
    public replDumpStatement(): ReplDumpStatementContext | null {
        return this.getRuleContext(0, ReplDumpStatementContext);
    }
    public replLoadStatement(): ReplLoadStatementContext | null {
        return this.getRuleContext(0, ReplLoadStatementContext);
    }
    public replStatusStatement(): ReplStatusStatementContext | null {
        return this.getRuleContext(0, ReplStatusStatementContext);
    }
    public ddlStatement(): DdlStatementContext | null {
        return this.getRuleContext(0, DdlStatementContext);
    }
    public deleteStatement(): DeleteStatementContext | null {
        return this.getRuleContext(0, DeleteStatementContext);
    }
    public updateStatement(): UpdateStatementContext | null {
        return this.getRuleContext(0, UpdateStatementContext);
    }
    public sqlTransactionStatement(): SqlTransactionStatementContext | null {
        return this.getRuleContext(0, SqlTransactionStatementContext);
    }
    public mergeStatement(): MergeStatementContext | null {
        return this.getRuleContext(0, MergeStatementContext);
    }
    public prepareStatement(): PrepareStatementContext | null {
        return this.getRuleContext(0, PrepareStatementContext);
    }
    public executeStatement(): ExecuteStatementContext | null {
        return this.getRuleContext(0, ExecuteStatementContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_execStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExecStatement) {
             listener.enterExecStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExecStatement) {
             listener.exitExecStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExecStatement) {
            return visitor.visitExecStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LoadStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LOAD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOAD, 0)!;
    }
    public KW_DATA(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DATA, 0)!;
    }
    public KW_INPATH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INPATH, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public KW_INTO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INTO, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableOrPartition(): TableOrPartitionContext {
        return this.getRuleContext(0, TableOrPartitionContext)!;
    }
    public KW_LOCAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCAL, 0);
    }
    public KW_OVERWRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    public inputFileFormat(): InputFileFormatContext | null {
        return this.getRuleContext(0, InputFileFormatContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_loadStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLoadStatement) {
             listener.enterLoadStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLoadStatement) {
             listener.exitLoadStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLoadStatement) {
            return visitor.visitLoadStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropPartitionsIgnoreClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_IGNORE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IGNORE, 0)!;
    }
    public KW_PROTECTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PROTECTION, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropPartitionsIgnoreClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropPartitionsIgnoreClause) {
             listener.enterDropPartitionsIgnoreClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropPartitionsIgnoreClause) {
             listener.exitDropPartitionsIgnoreClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropPartitionsIgnoreClause) {
            return visitor.visitDropPartitionsIgnoreClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplicationClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FOR, 0)!;
    }
    public KW_REPLICATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REPLICATION, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public KW_METADATA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_METADATA, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replicationClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplicationClause) {
             listener.enterReplicationClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplicationClause) {
             listener.exitReplicationClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplicationClause) {
            return visitor.visitReplicationClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExportStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXPORT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXPORT, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableOrPartition(): TableOrPartitionContext {
        return this.getRuleContext(0, TableOrPartitionContext)!;
    }
    public KW_TO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TO, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public replicationClause(): ReplicationClauseContext | null {
        return this.getRuleContext(0, ReplicationClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_exportStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExportStatement) {
             listener.enterExportStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExportStatement) {
             listener.exitExportStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExportStatement) {
            return visitor.visitExportStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ImportStatementContext extends antlr.ParserRuleContext {
    public _path?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_IMPORT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IMPORT, 0)!;
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public tableOrPartition(): TableOrPartitionContext | null {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    public tableLocation(): TableLocationContext | null {
        return this.getRuleContext(0, TableLocationContext);
    }
    public KW_EXTERNAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXTERNAL, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_importStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterImportStatement) {
             listener.enterImportStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitImportStatement) {
             listener.exitImportStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitImportStatement) {
            return visitor.visitImportStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplDumpStatementContext extends antlr.ParserRuleContext {
    public _dbPolicy?: ReplDbPolicyContext;
    public _oldDbPolicy?: ReplDbPolicyContext;
    public _replConf?: ReplConfigsContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REPL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REPL, 0)!;
    }
    public KW_DUMP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DUMP, 0)!;
    }
    public replDbPolicy(): ReplDbPolicyContext[];
    public replDbPolicy(i: number): ReplDbPolicyContext | null;
    public replDbPolicy(i?: number): ReplDbPolicyContext[] | ReplDbPolicyContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ReplDbPolicyContext);
        }

        return this.getRuleContext(i, ReplDbPolicyContext);
    }
    public KW_REPLACE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public replConfigs(): ReplConfigsContext | null {
        return this.getRuleContext(0, ReplConfigsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replDumpStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplDumpStatement) {
             listener.enterReplDumpStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplDumpStatement) {
             listener.exitReplDumpStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplDumpStatement) {
            return visitor.visitReplDumpStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplDbPolicyContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public _tablePolicy?: ReplTableLevelPolicyContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public DOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    public replTableLevelPolicy(): ReplTableLevelPolicyContext | null {
        return this.getRuleContext(0, ReplTableLevelPolicyContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replDbPolicy;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplDbPolicy) {
             listener.enterReplDbPolicy(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplDbPolicy) {
             listener.exitReplDbPolicy(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplDbPolicy) {
            return visitor.visitReplDbPolicy(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplLoadStatementContext extends antlr.ParserRuleContext {
    public _sourceDbPolicy?: ReplDbPolicyContext;
    public _dbName?: DbSchemaNameContext;
    public _replConf?: ReplConfigsContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REPL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REPL, 0)!;
    }
    public KW_LOAD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOAD, 0)!;
    }
    public replDbPolicy(): ReplDbPolicyContext {
        return this.getRuleContext(0, ReplDbPolicyContext)!;
    }
    public KW_INTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public dbSchemaName(): DbSchemaNameContext | null {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    public replConfigs(): ReplConfigsContext | null {
        return this.getRuleContext(0, ReplConfigsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replLoadStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplLoadStatement) {
             listener.enterReplLoadStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplLoadStatement) {
             listener.exitReplLoadStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplLoadStatement) {
            return visitor.visitReplLoadStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplConfigsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public replConfigsList(): ReplConfigsListContext {
        return this.getRuleContext(0, ReplConfigsListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replConfigs;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplConfigs) {
             listener.enterReplConfigs(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplConfigs) {
             listener.exitReplConfigs(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplConfigs) {
            return visitor.visitReplConfigs(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplConfigsListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public keyValueProperty(): KeyValuePropertyContext[];
    public keyValueProperty(i: number): KeyValuePropertyContext | null;
    public keyValueProperty(i?: number): KeyValuePropertyContext[] | KeyValuePropertyContext | null {
        if (i === undefined) {
            return this.getRuleContexts(KeyValuePropertyContext);
        }

        return this.getRuleContext(i, KeyValuePropertyContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replConfigsList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplConfigsList) {
             listener.enterReplConfigsList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplConfigsList) {
             listener.exitReplConfigsList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplConfigsList) {
            return visitor.visitReplConfigsList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplTableLevelPolicyContext extends antlr.ParserRuleContext {
    public _replTablesIncludeList?: Token | null;
    public _replTablesExcludeList?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public DOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replTableLevelPolicy;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplTableLevelPolicy) {
             listener.enterReplTableLevelPolicy(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplTableLevelPolicy) {
             listener.exitReplTableLevelPolicy(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplTableLevelPolicy) {
            return visitor.visitReplTableLevelPolicy(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplStatusStatementContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public _replConf?: ReplConfigsContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REPL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REPL, 0)!;
    }
    public KW_STATUS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_STATUS, 0)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public replConfigs(): ReplConfigsContext | null {
        return this.getRuleContext(0, ReplConfigsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replStatusStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplStatusStatement) {
             listener.enterReplStatusStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplStatusStatement) {
             listener.exitReplStatusStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplStatusStatement) {
            return visitor.visitReplStatusStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DdlStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public createDatabaseStatement(): CreateDatabaseStatementContext | null {
        return this.getRuleContext(0, CreateDatabaseStatementContext);
    }
    public switchDatabaseStatement(): SwitchDatabaseStatementContext | null {
        return this.getRuleContext(0, SwitchDatabaseStatementContext);
    }
    public dropDatabaseStatement(): DropDatabaseStatementContext | null {
        return this.getRuleContext(0, DropDatabaseStatementContext);
    }
    public createTableStatement(): CreateTableStatementContext | null {
        return this.getRuleContext(0, CreateTableStatementContext);
    }
    public dropTableStatement(): DropTableStatementContext | null {
        return this.getRuleContext(0, DropTableStatementContext);
    }
    public truncateTableStatement(): TruncateTableStatementContext | null {
        return this.getRuleContext(0, TruncateTableStatementContext);
    }
    public alterStatement(): AlterStatementContext | null {
        return this.getRuleContext(0, AlterStatementContext);
    }
    public descStatement(): DescStatementContext | null {
        return this.getRuleContext(0, DescStatementContext);
    }
    public showStatement(): ShowStatementContext | null {
        return this.getRuleContext(0, ShowStatementContext);
    }
    public metastoreCheck(): MetastoreCheckContext | null {
        return this.getRuleContext(0, MetastoreCheckContext);
    }
    public createViewStatement(): CreateViewStatementContext | null {
        return this.getRuleContext(0, CreateViewStatementContext);
    }
    public createMaterializedViewStatement(): CreateMaterializedViewStatementContext | null {
        return this.getRuleContext(0, CreateMaterializedViewStatementContext);
    }
    public createScheduledQueryStatement(): CreateScheduledQueryStatementContext | null {
        return this.getRuleContext(0, CreateScheduledQueryStatementContext);
    }
    public alterScheduledQueryStatement(): AlterScheduledQueryStatementContext | null {
        return this.getRuleContext(0, AlterScheduledQueryStatementContext);
    }
    public dropScheduledQueryStatement(): DropScheduledQueryStatementContext | null {
        return this.getRuleContext(0, DropScheduledQueryStatementContext);
    }
    public dropViewStatement(): DropViewStatementContext | null {
        return this.getRuleContext(0, DropViewStatementContext);
    }
    public dropMaterializedViewStatement(): DropMaterializedViewStatementContext | null {
        return this.getRuleContext(0, DropMaterializedViewStatementContext);
    }
    public createFunctionStatement(): CreateFunctionStatementContext | null {
        return this.getRuleContext(0, CreateFunctionStatementContext);
    }
    public createMacroStatement(): CreateMacroStatementContext | null {
        return this.getRuleContext(0, CreateMacroStatementContext);
    }
    public dropFunctionStatement(): DropFunctionStatementContext | null {
        return this.getRuleContext(0, DropFunctionStatementContext);
    }
    public reloadFunctionsStatement(): ReloadFunctionsStatementContext | null {
        return this.getRuleContext(0, ReloadFunctionsStatementContext);
    }
    public dropMacroStatement(): DropMacroStatementContext | null {
        return this.getRuleContext(0, DropMacroStatementContext);
    }
    public createIndexStatement(): CreateIndexStatementContext | null {
        return this.getRuleContext(0, CreateIndexStatementContext);
    }
    public dropIndexStatement(): DropIndexStatementContext | null {
        return this.getRuleContext(0, DropIndexStatementContext);
    }
    public analyzeStatement(): AnalyzeStatementContext | null {
        return this.getRuleContext(0, AnalyzeStatementContext);
    }
    public lockStatement(): LockStatementContext | null {
        return this.getRuleContext(0, LockStatementContext);
    }
    public unlockStatement(): UnlockStatementContext | null {
        return this.getRuleContext(0, UnlockStatementContext);
    }
    public lockDatabase(): LockDatabaseContext | null {
        return this.getRuleContext(0, LockDatabaseContext);
    }
    public unlockDatabase(): UnlockDatabaseContext | null {
        return this.getRuleContext(0, UnlockDatabaseContext);
    }
    public createRoleStatement(): CreateRoleStatementContext | null {
        return this.getRuleContext(0, CreateRoleStatementContext);
    }
    public dropRoleStatement(): DropRoleStatementContext | null {
        return this.getRuleContext(0, DropRoleStatementContext);
    }
    public grantPrivileges(): GrantPrivilegesContext | null {
        return this.getRuleContext(0, GrantPrivilegesContext);
    }
    public revokePrivileges(): RevokePrivilegesContext | null {
        return this.getRuleContext(0, RevokePrivilegesContext);
    }
    public showGrants(): ShowGrantsContext | null {
        return this.getRuleContext(0, ShowGrantsContext);
    }
    public showRoleGrants(): ShowRoleGrantsContext | null {
        return this.getRuleContext(0, ShowRoleGrantsContext);
    }
    public showRolePrincipals(): ShowRolePrincipalsContext | null {
        return this.getRuleContext(0, ShowRolePrincipalsContext);
    }
    public showRoles(): ShowRolesContext | null {
        return this.getRuleContext(0, ShowRolesContext);
    }
    public grantRole(): GrantRoleContext | null {
        return this.getRuleContext(0, GrantRoleContext);
    }
    public revokeRole(): RevokeRoleContext | null {
        return this.getRuleContext(0, RevokeRoleContext);
    }
    public setRole(): SetRoleContext | null {
        return this.getRuleContext(0, SetRoleContext);
    }
    public showCurrentRole(): ShowCurrentRoleContext | null {
        return this.getRuleContext(0, ShowCurrentRoleContext);
    }
    public abortTransactionStatement(): AbortTransactionStatementContext | null {
        return this.getRuleContext(0, AbortTransactionStatementContext);
    }
    public abortCompactionStatement(): AbortCompactionStatementContext | null {
        return this.getRuleContext(0, AbortCompactionStatementContext);
    }
    public killQueryStatement(): KillQueryStatementContext | null {
        return this.getRuleContext(0, KillQueryStatementContext);
    }
    public resourcePlanDdlStatements(): ResourcePlanDdlStatementsContext | null {
        return this.getRuleContext(0, ResourcePlanDdlStatementsContext);
    }
    public createDataConnectorStatement(): CreateDataConnectorStatementContext | null {
        return this.getRuleContext(0, CreateDataConnectorStatementContext);
    }
    public dropDataConnectorStatement(): DropDataConnectorStatementContext | null {
        return this.getRuleContext(0, DropDataConnectorStatementContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_ddlStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDdlStatement) {
             listener.enterDdlStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDdlStatement) {
             listener.exitDdlStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDdlStatement) {
            return visitor.visitDdlStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IfExistsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_IF(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IF, 0)!;
    }
    public KW_EXISTS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXISTS, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_ifExists;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIfExists) {
             listener.enterIfExists(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIfExists) {
             listener.exitIfExists(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIfExists) {
            return visitor.visitIfExists(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RestrictOrCascadeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RESTRICT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RESTRICT, 0);
    }
    public KW_CASCADE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CASCADE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_restrictOrCascade;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRestrictOrCascade) {
             listener.enterRestrictOrCascade(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRestrictOrCascade) {
             listener.exitRestrictOrCascade(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRestrictOrCascade) {
            return visitor.visitRestrictOrCascade(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IfNotExistsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_IF(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IF, 0)!;
    }
    public KW_NOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_NOT, 0)!;
    }
    public KW_EXISTS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXISTS, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_ifNotExists;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIfNotExists) {
             listener.enterIfNotExists(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIfNotExists) {
             listener.exitIfNotExists(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIfNotExists) {
            return visitor.visitIfNotExists(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ForceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FORCE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FORCE, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_force;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterForce) {
             listener.enterForce(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitForce) {
             listener.exitForce(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitForce) {
            return visitor.visitForce(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RewriteEnabledContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public enable(): EnableContext {
        return this.getRuleContext(0, EnableContext)!;
    }
    public KW_REWRITE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rewriteEnabled;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRewriteEnabled) {
             listener.enterRewriteEnabled(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRewriteEnabled) {
             listener.exitRewriteEnabled(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRewriteEnabled) {
            return visitor.visitRewriteEnabled(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RewriteDisabledContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public disable(): DisableContext {
        return this.getRuleContext(0, DisableContext)!;
    }
    public KW_REWRITE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rewriteDisabled;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRewriteDisabled) {
             listener.enterRewriteDisabled(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRewriteDisabled) {
             listener.exitRewriteDisabled(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRewriteDisabled) {
            return visitor.visitRewriteDisabled(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class StoredAsDirsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_STORED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_STORED, 0)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public KW_DIRECTORIES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DIRECTORIES, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_storedAsDirs;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterStoredAsDirs) {
             listener.enterStoredAsDirs(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitStoredAsDirs) {
             listener.exitStoredAsDirs(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitStoredAsDirs) {
            return visitor.visitStoredAsDirs(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class OrReplaceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_OR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OR, 0)!;
    }
    public KW_REPLACE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_orReplace;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterOrReplace) {
             listener.enterOrReplace(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitOrReplace) {
             listener.exitOrReplace(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitOrReplace) {
            return visitor.visitOrReplace(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateDatabaseStatementContext extends antlr.ParserRuleContext {
    public _name?: DbSchemaNameCreateContext;
    public _dbprops?: DbPropertiesContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public db_schema(): Db_schemaContext {
        return this.getRuleContext(0, Db_schemaContext)!;
    }
    public dbSchemaNameCreate(): DbSchemaNameCreateContext {
        return this.getRuleContext(0, DbSchemaNameCreateContext)!;
    }
    public KW_REMOTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REMOTE, 0);
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public databaseComment(): DatabaseCommentContext | null {
        return this.getRuleContext(0, DatabaseCommentContext);
    }
    public dbLocation(): DbLocationContext | null {
        return this.getRuleContext(0, DbLocationContext);
    }
    public dbManagedLocation(): DbManagedLocationContext | null {
        return this.getRuleContext(0, DbManagedLocationContext);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_DBPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0);
    }
    public dbProperties(): DbPropertiesContext | null {
        return this.getRuleContext(0, DbPropertiesContext);
    }
    public dbConnectorName(): DbConnectorNameContext | null {
        return this.getRuleContext(0, DbConnectorNameContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createDatabaseStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateDatabaseStatement) {
             listener.enterCreateDatabaseStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateDatabaseStatement) {
             listener.exitCreateDatabaseStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateDatabaseStatement) {
            return visitor.visitCreateDatabaseStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DbLocationContext extends antlr.ParserRuleContext {
    public _locn?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LOCATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dbLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDbLocation) {
             listener.enterDbLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDbLocation) {
             listener.exitDbLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDbLocation) {
            return visitor.visitDbLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DbManagedLocationContext extends antlr.ParserRuleContext {
    public _locn?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MANAGEDLOCATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dbManagedLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDbManagedLocation) {
             listener.enterDbManagedLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDbManagedLocation) {
             listener.exitDbManagedLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDbManagedLocation) {
            return visitor.visitDbManagedLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DbPropertiesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public dbPropertiesList(): DbPropertiesListContext {
        return this.getRuleContext(0, DbPropertiesListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dbProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDbProperties) {
             listener.enterDbProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDbProperties) {
             listener.exitDbProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDbProperties) {
            return visitor.visitDbProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DbPropertiesListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public keyValueProperty(): KeyValuePropertyContext[];
    public keyValueProperty(i: number): KeyValuePropertyContext | null;
    public keyValueProperty(i?: number): KeyValuePropertyContext[] | KeyValuePropertyContext | null {
        if (i === undefined) {
            return this.getRuleContexts(KeyValuePropertyContext);
        }

        return this.getRuleContext(i, KeyValuePropertyContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dbPropertiesList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDbPropertiesList) {
             listener.enterDbPropertiesList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDbPropertiesList) {
             listener.exitDbPropertiesList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDbPropertiesList) {
            return visitor.visitDbPropertiesList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DbConnectorNameContext extends antlr.ParserRuleContext {
    public _dcName?: DbSchemaNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_USING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_USING, 0)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dbConnectorName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDbConnectorName) {
             listener.enterDbConnectorName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDbConnectorName) {
             listener.exitDbConnectorName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDbConnectorName) {
            return visitor.visitDbConnectorName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SwitchDatabaseStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_USE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_USE, 0)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_switchDatabaseStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSwitchDatabaseStatement) {
             listener.enterSwitchDatabaseStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSwitchDatabaseStatement) {
             listener.exitSwitchDatabaseStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSwitchDatabaseStatement) {
            return visitor.visitSwitchDatabaseStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropDatabaseStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public db_schema(): Db_schemaContext {
        return this.getRuleContext(0, Db_schemaContext)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public restrictOrCascade(): RestrictOrCascadeContext | null {
        return this.getRuleContext(0, RestrictOrCascadeContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropDatabaseStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropDatabaseStatement) {
             listener.enterDropDatabaseStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropDatabaseStatement) {
             listener.exitDropDatabaseStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropDatabaseStatement) {
            return visitor.visitDropDatabaseStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DatabaseCommentContext extends antlr.ParserRuleContext {
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COMMENT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_databaseComment;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDatabaseComment) {
             listener.enterDatabaseComment(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDatabaseComment) {
             listener.exitDatabaseComment(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDatabaseComment) {
            return visitor.visitDatabaseComment(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TruncateTableStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TRUNCATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TRUNCATE, 0)!;
    }
    public tablePartitionPrefix(): TablePartitionPrefixContext {
        return this.getRuleContext(0, TablePartitionPrefixContext)!;
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public KW_COLUMNS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public columnNameList(): ColumnNameListContext | null {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public force(): ForceContext | null {
        return this.getRuleContext(0, ForceContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_truncateTableStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTruncateTableStatement) {
             listener.enterTruncateTableStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTruncateTableStatement) {
             listener.exitTruncateTableStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTruncateTableStatement) {
            return visitor.visitTruncateTableStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropTableStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public KW_PURGE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PURGE, 0);
    }
    public replicationClause(): ReplicationClauseContext | null {
        return this.getRuleContext(0, ReplicationClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropTableStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropTableStatement) {
             listener.enterDropTableStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropTableStatement) {
             listener.exitDropTableStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropTableStatement) {
            return visitor.visitDropTableStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class InputFileFormatContext extends antlr.ParserRuleContext {
    public _inFmt?: Token | null;
    public _serdeCls?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_INPUTFORMAT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0)!;
    }
    public KW_SERDE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SERDE, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_inputFileFormat;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterInputFileFormat) {
             listener.enterInputFileFormat(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitInputFileFormat) {
             listener.exitInputFileFormat(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitInputFileFormat) {
            return visitor.visitInputFileFormat(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TabTypeExprContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public KW_ELEM_TYPE(): antlr.TerminalNode[];
    public KW_ELEM_TYPE(i: number): antlr.TerminalNode | null;
    public KW_ELEM_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_ELEM_TYPE);
    	} else {
    		return this.getToken(HiveSqlParser.KW_ELEM_TYPE, i);
    	}
    }
    public KW_KEY_TYPE(): antlr.TerminalNode[];
    public KW_KEY_TYPE(i: number): antlr.TerminalNode | null;
    public KW_KEY_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_KEY_TYPE);
    	} else {
    		return this.getToken(HiveSqlParser.KW_KEY_TYPE, i);
    	}
    }
    public KW_VALUE_TYPE(): antlr.TerminalNode[];
    public KW_VALUE_TYPE(i: number): antlr.TerminalNode | null;
    public KW_VALUE_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_VALUE_TYPE);
    	} else {
    		return this.getToken(HiveSqlParser.KW_VALUE_TYPE, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tabTypeExpr;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTabTypeExpr) {
             listener.enterTabTypeExpr(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTabTypeExpr) {
             listener.exitTabTypeExpr(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTabTypeExpr) {
            return visitor.visitTabTypeExpr(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartTypeExprContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tabTypeExpr(): TabTypeExprContext {
        return this.getRuleContext(0, TabTypeExprContext)!;
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partTypeExpr;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartTypeExpr) {
             listener.enterPartTypeExpr(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartTypeExpr) {
             listener.exitPartTypeExpr(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartTypeExpr) {
            return visitor.visitPartTypeExpr(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TabPartColTypeExprContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableOrView(): TableOrViewContext {
        return this.getRuleContext(0, TableOrViewContext)!;
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public extColumnName(): ExtColumnNameContext | null {
        return this.getRuleContext(0, ExtColumnNameContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tabPartColTypeExpr;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTabPartColTypeExpr) {
             listener.enterTabPartColTypeExpr(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTabPartColTypeExpr) {
             listener.exitTabPartColTypeExpr(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTabPartColTypeExpr) {
            return visitor.visitTabPartColTypeExpr(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DescStatementContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public _dcName?: DbSchemaNameContext;
    public _name?: FunctionNameForDDLContext;
    public _descOptions?: Token | null;
    public _parttype?: TabPartColTypeExprContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DESCRIBE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DESCRIBE, 0);
    }
    public KW_DESC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DESC, 0);
    }
    public db_schema(): Db_schemaContext | null {
        return this.getRuleContext(0, Db_schemaContext);
    }
    public KW_DATACONNECTOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0);
    }
    public KW_FUNCTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0);
    }
    public dbSchemaName(): DbSchemaNameContext | null {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    public functionNameForDDL(): FunctionNameForDDLContext | null {
        return this.getRuleContext(0, FunctionNameForDDLContext);
    }
    public tabPartColTypeExpr(): TabPartColTypeExprContext | null {
        return this.getRuleContext(0, TabPartColTypeExprContext);
    }
    public KW_EXTENDED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXTENDED, 0);
    }
    public KW_FORMATTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_descStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDescStatement) {
             listener.enterDescStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDescStatement) {
             listener.exitDescStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDescStatement) {
            return visitor.visitDescStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AnalyzeStatementContext extends antlr.ParserRuleContext {
    public _parttype?: TableOrPartitionContext;
    public _noscan?: Token | null;
    public _statsColumnName?: ColumnNameListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ANALYZE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ANALYZE, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableOrPartition(): TableOrPartitionContext {
        return this.getRuleContext(0, TableOrPartitionContext)!;
    }
    public KW_COMPUTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMPUTE, 0);
    }
    public KW_STATISTICS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0);
    }
    public KW_CACHE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CACHE, 0);
    }
    public KW_METADATA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_METADATA, 0);
    }
    public KW_FOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FOR, 0);
    }
    public KW_COLUMNS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    public KW_NOSCAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOSCAN, 0);
    }
    public columnNameList(): ColumnNameListContext | null {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_analyzeStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAnalyzeStatement) {
             listener.enterAnalyzeStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAnalyzeStatement) {
             listener.exitAnalyzeStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAnalyzeStatement) {
            return visitor.visitAnalyzeStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class From_inContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FROM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    public KW_IN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_from_in;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFrom_in) {
             listener.enterFrom_in(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFrom_in) {
             listener.exitFrom_in(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFrom_in) {
            return visitor.visitFrom_in(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Db_schemaContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DATABASE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATABASE, 0);
    }
    public KW_SCHEMA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEMA, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_db_schema;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDb_schema) {
             listener.enterDb_schema(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDb_schema) {
             listener.exitDb_schema(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDb_schema) {
            return visitor.visitDb_schema(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowStatementContext extends antlr.ParserRuleContext {
    public _isExtended?: Token | null;
    public _db_name?: DbSchemaNameContext;
    public _filter?: ShowTablesFilterExprContext;
    public _tabOrViewName?: TableOrViewContext;
    public _tabName?: TableNameContext;
    public _prptyName?: Token | null;
    public _dbName?: DbSchemaNameContext;
    public _parttype?: PartTypeExprContext;
    public _rp_name?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SHOW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SHOW, 0)!;
    }
    public KW_DATABASES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATABASES, 0);
    }
    public KW_SCHEMAS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEMAS, 0);
    }
    public KW_LIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    public showStmtIdentifier(): ShowStmtIdentifierContext | null {
        return this.getRuleContext(0, ShowStmtIdentifierContext);
    }
    public KW_TABLES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLES, 0);
    }
    public from_in(): From_inContext[];
    public from_in(i: number): From_inContext | null;
    public from_in(i?: number): From_inContext[] | From_inContext | null {
        if (i === undefined) {
            return this.getRuleContexts(From_inContext);
        }

        return this.getRuleContext(i, From_inContext);
    }
    public KW_EXTENDED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXTENDED, 0);
    }
    public dbSchemaName(): DbSchemaNameContext | null {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    public showTablesFilterExpr(): ShowTablesFilterExprContext | null {
        return this.getRuleContext(0, ShowTablesFilterExprContext);
    }
    public KW_VIEWS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VIEWS, 0);
    }
    public KW_MATERIALIZED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    public KW_COLUMNS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    public tableOrView(): TableOrViewContext | null {
        return this.getRuleContext(0, TableOrViewContext);
    }
    public KW_SORTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    public KW_FUNCTIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FUNCTIONS, 0);
    }
    public functionNameForDDL(): FunctionNameForDDLContext | null {
        return this.getRuleContext(0, FunctionNameForDDLContext);
    }
    public KW_PARTITIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0);
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public whereClause(): WhereClauseContext | null {
        return this.getRuleContext(0, WhereClauseContext);
    }
    public orderByClause(): OrderByClauseContext | null {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    public limitClause(): LimitClauseContext | null {
        return this.getRuleContext(0, LimitClauseContext);
    }
    public KW_CREATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    public db_schema(): Db_schemaContext | null {
        return this.getRuleContext(0, Db_schemaContext);
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public tableName(): TableNameContext | null {
        return this.getRuleContext(0, TableNameContext);
    }
    public KW_TBLPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_LOCKS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCKS, 0);
    }
    public partTypeExpr(): PartTypeExprContext | null {
        return this.getRuleContext(0, PartTypeExprContext);
    }
    public KW_COMPACTIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0);
    }
    public compactionId(): CompactionIdContext | null {
        return this.getRuleContext(0, CompactionIdContext);
    }
    public compactionPool(): CompactionPoolContext | null {
        return this.getRuleContext(0, CompactionPoolContext);
    }
    public compactionType(): CompactionTypeContext | null {
        return this.getRuleContext(0, CompactionTypeContext);
    }
    public compactionStatus(): CompactionStatusContext | null {
        return this.getRuleContext(0, CompactionStatusContext);
    }
    public KW_TRANSACTIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0);
    }
    public KW_CONF(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONF, 0);
    }
    public KW_RESOURCE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0);
    }
    public KW_PLAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PLAN, 0);
    }
    public KW_PLANS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PLANS, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public KW_DATACONNECTORS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATACONNECTORS, 0);
    }
    public KW_ON(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    public KW_INDEX(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    public KW_INDEXES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INDEXES, 0);
    }
    public KW_FORMATTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowStatement) {
             listener.enterShowStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowStatement) {
             listener.exitShowStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowStatement) {
            return visitor.visitShowStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowTablesFilterExprContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WHERE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WHERE, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public EQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_LIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    public showStmtIdentifier(): ShowStmtIdentifierContext | null {
        return this.getRuleContext(0, ShowStmtIdentifierContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showTablesFilterExpr;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowTablesFilterExpr) {
             listener.enterShowTablesFilterExpr(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowTablesFilterExpr) {
             listener.exitShowTablesFilterExpr(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowTablesFilterExpr) {
            return visitor.visitShowTablesFilterExpr(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LockStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LOCK(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOCK, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public lockMode(): LockModeContext {
        return this.getRuleContext(0, LockModeContext)!;
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_lockStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLockStatement) {
             listener.enterLockStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLockStatement) {
             listener.exitLockStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLockStatement) {
            return visitor.visitLockStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LockDatabaseContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LOCK(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOCK, 0)!;
    }
    public db_schema(): Db_schemaContext {
        return this.getRuleContext(0, Db_schemaContext)!;
    }
    public lockMode(): LockModeContext {
        return this.getRuleContext(0, LockModeContext)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_lockDatabase;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLockDatabase) {
             listener.enterLockDatabase(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLockDatabase) {
             listener.exitLockDatabase(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLockDatabase) {
            return visitor.visitLockDatabase(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LockModeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SHARED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SHARED, 0);
    }
    public KW_EXCLUSIVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXCLUSIVE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_lockMode;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLockMode) {
             listener.enterLockMode(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLockMode) {
             listener.exitLockMode(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLockMode) {
            return visitor.visitLockMode(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UnlockStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNLOCK(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UNLOCK, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_unlockStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUnlockStatement) {
             listener.enterUnlockStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUnlockStatement) {
             listener.exitUnlockStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUnlockStatement) {
            return visitor.visitUnlockStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UnlockDatabaseContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNLOCK(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UNLOCK, 0)!;
    }
    public db_schema(): Db_schemaContext {
        return this.getRuleContext(0, Db_schemaContext)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_unlockDatabase;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUnlockDatabase) {
             listener.enterUnlockDatabase(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUnlockDatabase) {
             listener.exitUnlockDatabase(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUnlockDatabase) {
            return visitor.visitUnlockDatabase(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateRoleStatementContext extends antlr.ParserRuleContext {
    public _roleName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_ROLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROLE, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createRoleStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateRoleStatement) {
             listener.enterCreateRoleStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateRoleStatement) {
             listener.exitCreateRoleStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateRoleStatement) {
            return visitor.visitCreateRoleStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropRoleStatementContext extends antlr.ParserRuleContext {
    public _roleName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_ROLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROLE, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropRoleStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropRoleStatement) {
             listener.enterDropRoleStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropRoleStatement) {
             listener.exitDropRoleStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropRoleStatement) {
            return visitor.visitDropRoleStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GrantPrivilegesContext extends antlr.ParserRuleContext {
    public _privList?: PrivilegeListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_GRANT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_GRANT, 0)!;
    }
    public KW_TO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TO, 0)!;
    }
    public principalSpecification(): PrincipalSpecificationContext {
        return this.getRuleContext(0, PrincipalSpecificationContext)!;
    }
    public privilegeList(): PrivilegeListContext {
        return this.getRuleContext(0, PrivilegeListContext)!;
    }
    public privilegeObject(): PrivilegeObjectContext | null {
        return this.getRuleContext(0, PrivilegeObjectContext);
    }
    public withGrantOption(): WithGrantOptionContext | null {
        return this.getRuleContext(0, WithGrantOptionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_grantPrivileges;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGrantPrivileges) {
             listener.enterGrantPrivileges(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGrantPrivileges) {
             listener.exitGrantPrivileges(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGrantPrivileges) {
            return visitor.visitGrantPrivileges(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RevokePrivilegesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REVOKE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REVOKE, 0)!;
    }
    public privilegeList(): PrivilegeListContext {
        return this.getRuleContext(0, PrivilegeListContext)!;
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public principalSpecification(): PrincipalSpecificationContext {
        return this.getRuleContext(0, PrincipalSpecificationContext)!;
    }
    public grantOptionFor(): GrantOptionForContext | null {
        return this.getRuleContext(0, GrantOptionForContext);
    }
    public privilegeObject(): PrivilegeObjectContext | null {
        return this.getRuleContext(0, PrivilegeObjectContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_revokePrivileges;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRevokePrivileges) {
             listener.enterRevokePrivileges(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRevokePrivileges) {
             listener.exitRevokePrivileges(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRevokePrivileges) {
            return visitor.visitRevokePrivileges(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GrantRoleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_GRANT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_GRANT, 0)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public KW_TO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TO, 0)!;
    }
    public principalSpecification(): PrincipalSpecificationContext {
        return this.getRuleContext(0, PrincipalSpecificationContext)!;
    }
    public KW_ROLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public withAdminOption(): WithAdminOptionContext | null {
        return this.getRuleContext(0, WithAdminOptionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_grantRole;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGrantRole) {
             listener.enterGrantRole(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGrantRole) {
             listener.exitGrantRole(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGrantRole) {
            return visitor.visitGrantRole(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RevokeRoleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REVOKE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REVOKE, 0)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public principalSpecification(): PrincipalSpecificationContext {
        return this.getRuleContext(0, PrincipalSpecificationContext)!;
    }
    public adminOptionFor(): AdminOptionForContext | null {
        return this.getRuleContext(0, AdminOptionForContext);
    }
    public KW_ROLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_revokeRole;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRevokeRole) {
             listener.enterRevokeRole(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRevokeRole) {
             listener.exitRevokeRole(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRevokeRole) {
            return visitor.visitRevokeRole(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowRoleGrantsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SHOW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SHOW, 0)!;
    }
    public KW_ROLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROLE, 0)!;
    }
    public KW_GRANT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_GRANT, 0)!;
    }
    public principalName(): PrincipalNameContext {
        return this.getRuleContext(0, PrincipalNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showRoleGrants;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowRoleGrants) {
             listener.enterShowRoleGrants(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowRoleGrants) {
             listener.exitShowRoleGrants(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowRoleGrants) {
            return visitor.visitShowRoleGrants(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowRolesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SHOW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SHOW, 0)!;
    }
    public KW_ROLES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROLES, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showRoles;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowRoles) {
             listener.enterShowRoles(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowRoles) {
             listener.exitShowRoles(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowRoles) {
            return visitor.visitShowRoles(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowCurrentRoleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SHOW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SHOW, 0)!;
    }
    public KW_CURRENT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CURRENT, 0)!;
    }
    public KW_ROLES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROLES, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showCurrentRole;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowCurrentRole) {
             listener.enterShowCurrentRole(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowCurrentRole) {
             listener.exitShowCurrentRole(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowCurrentRole) {
            return visitor.visitShowCurrentRole(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SetRoleContext extends antlr.ParserRuleContext {
    public _all?: Token | null;
    public _none?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_ROLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROLE, 0)!;
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public KW_ALL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    public KW_NONE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NONE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_setRole;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSetRole) {
             listener.enterSetRole(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSetRole) {
             listener.exitSetRole(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSetRole) {
            return visitor.visitSetRole(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowGrantsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SHOW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SHOW, 0)!;
    }
    public KW_GRANT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_GRANT, 0)!;
    }
    public principalName(): PrincipalNameContext | null {
        return this.getRuleContext(0, PrincipalNameContext);
    }
    public KW_ON(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    public privilegeIncludeColObject(): PrivilegeIncludeColObjectContext | null {
        return this.getRuleContext(0, PrivilegeIncludeColObjectContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showGrants;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowGrants) {
             listener.enterShowGrants(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowGrants) {
             listener.exitShowGrants(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowGrants) {
            return visitor.visitShowGrants(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowRolePrincipalsContext extends antlr.ParserRuleContext {
    public _roleName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SHOW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SHOW, 0)!;
    }
    public KW_PRINCIPALS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PRINCIPALS, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showRolePrincipals;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowRolePrincipals) {
             listener.enterShowRolePrincipals(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowRolePrincipals) {
             listener.exitShowRolePrincipals(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowRolePrincipals) {
            return visitor.visitShowRolePrincipals(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrivilegeIncludeColObjectContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    public privObjectCols(): PrivObjectColsContext | null {
        return this.getRuleContext(0, PrivObjectColsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_privilegeIncludeColObject;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrivilegeIncludeColObject) {
             listener.enterPrivilegeIncludeColObject(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrivilegeIncludeColObject) {
             listener.exitPrivilegeIncludeColObject(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrivilegeIncludeColObject) {
            return visitor.visitPrivilegeIncludeColObject(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrivilegeObjectContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public privObject(): PrivObjectContext {
        return this.getRuleContext(0, PrivObjectContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_privilegeObject;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrivilegeObject) {
             listener.enterPrivilegeObject(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrivilegeObject) {
             listener.exitPrivilegeObject(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrivilegeObject) {
            return visitor.visitPrivilegeObject(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrivObjectContext extends antlr.ParserRuleContext {
    public _path?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public db_schema(): Db_schemaContext | null {
        return this.getRuleContext(0, Db_schemaContext);
    }
    public dbSchemaName(): DbSchemaNameContext | null {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    public tableName(): TableNameContext | null {
        return this.getRuleContext(0, TableNameContext);
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public KW_URI(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_URI, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_SERVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERVER, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_privObject;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrivObject) {
             listener.enterPrivObject(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrivObject) {
             listener.exitPrivObject(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrivObject) {
            return visitor.visitPrivObject(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrivObjectColsContext extends antlr.ParserRuleContext {
    public _cols?: ColumnNameListContext;
    public _path?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public db_schema(): Db_schemaContext | null {
        return this.getRuleContext(0, Db_schemaContext);
    }
    public dbSchemaName(): DbSchemaNameContext | null {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    public tableName(): TableNameContext | null {
        return this.getRuleContext(0, TableNameContext);
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public columnNameList(): ColumnNameListContext | null {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    public KW_URI(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_URI, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_SERVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERVER, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_privObjectCols;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrivObjectCols) {
             listener.enterPrivObjectCols(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrivObjectCols) {
             listener.exitPrivObjectCols(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrivObjectCols) {
            return visitor.visitPrivObjectCols(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrivilegeListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public privlegeDef(): PrivlegeDefContext[];
    public privlegeDef(i: number): PrivlegeDefContext | null;
    public privlegeDef(i?: number): PrivlegeDefContext[] | PrivlegeDefContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrivlegeDefContext);
        }

        return this.getRuleContext(i, PrivlegeDefContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_privilegeList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrivilegeList) {
             listener.enterPrivilegeList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrivilegeList) {
             listener.exitPrivilegeList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrivilegeList) {
            return visitor.visitPrivilegeList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrivlegeDefContext extends antlr.ParserRuleContext {
    public _cols?: ColumnNameListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public privilegeType(): PrivilegeTypeContext {
        return this.getRuleContext(0, PrivilegeTypeContext)!;
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public columnNameList(): ColumnNameListContext | null {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_privlegeDef;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrivlegeDef) {
             listener.enterPrivlegeDef(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrivlegeDef) {
             listener.exitPrivlegeDef(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrivlegeDef) {
            return visitor.visitPrivlegeDef(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrivilegeTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    public KW_ALTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALTER, 0);
    }
    public KW_UPDATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    public KW_CREATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    public KW_DROP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    public KW_INDEX(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    public KW_LOCK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCK, 0);
    }
    public KW_SELECT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SELECT, 0);
    }
    public KW_SHOW_DATABASE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SHOW_DATABASE, 0);
    }
    public KW_INSERT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INSERT, 0);
    }
    public KW_DELETE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DELETE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_privilegeType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrivilegeType) {
             listener.enterPrivilegeType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrivilegeType) {
             listener.exitPrivilegeType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrivilegeType) {
            return visitor.visitPrivilegeType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrincipalSpecificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public principalName(): PrincipalNameContext[];
    public principalName(i: number): PrincipalNameContext | null;
    public principalName(i?: number): PrincipalNameContext[] | PrincipalNameContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrincipalNameContext);
        }

        return this.getRuleContext(i, PrincipalNameContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_principalSpecification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrincipalSpecification) {
             listener.enterPrincipalSpecification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrincipalSpecification) {
             listener.exitPrincipalSpecification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrincipalSpecification) {
            return visitor.visitPrincipalSpecification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrincipalNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_USER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    public principalIdentifier(): PrincipalIdentifierContext | null {
        return this.getRuleContext(0, PrincipalIdentifierContext);
    }
    public KW_GROUP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    public KW_ROLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_principalName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrincipalName) {
             listener.enterPrincipalName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrincipalName) {
             listener.exitPrincipalName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrincipalName) {
            return visitor.visitPrincipalName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrincipalAlterNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_USER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    public principalIdentifier(): PrincipalIdentifierContext | null {
        return this.getRuleContext(0, PrincipalIdentifierContext);
    }
    public KW_ROLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_principalAlterName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrincipalAlterName) {
             listener.enterPrincipalAlterName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrincipalAlterName) {
             listener.exitPrincipalAlterName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrincipalAlterName) {
            return visitor.visitPrincipalAlterName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WithGrantOptionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WITH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WITH, 0)!;
    }
    public KW_GRANT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_GRANT, 0)!;
    }
    public KW_OPTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OPTION, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_withGrantOption;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWithGrantOption) {
             listener.enterWithGrantOption(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWithGrantOption) {
             listener.exitWithGrantOption(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWithGrantOption) {
            return visitor.visitWithGrantOption(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GrantOptionForContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_GRANT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_GRANT, 0)!;
    }
    public KW_OPTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OPTION, 0)!;
    }
    public KW_FOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FOR, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_grantOptionFor;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGrantOptionFor) {
             listener.enterGrantOptionFor(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGrantOptionFor) {
             listener.exitGrantOptionFor(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGrantOptionFor) {
            return visitor.visitGrantOptionFor(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AdminOptionForContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ADMIN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ADMIN, 0)!;
    }
    public KW_OPTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OPTION, 0)!;
    }
    public KW_FOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FOR, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_adminOptionFor;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAdminOptionFor) {
             listener.enterAdminOptionFor(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAdminOptionFor) {
             listener.exitAdminOptionFor(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAdminOptionFor) {
            return visitor.visitAdminOptionFor(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WithAdminOptionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WITH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WITH, 0)!;
    }
    public KW_ADMIN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ADMIN, 0)!;
    }
    public KW_OPTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OPTION, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_withAdminOption;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWithAdminOption) {
             listener.enterWithAdminOption(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWithAdminOption) {
             listener.exitWithAdminOption(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWithAdminOption) {
            return visitor.visitWithAdminOption(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class MetastoreCheckContext extends antlr.ParserRuleContext {
    public _repair?: Token | null;
    public _opt?: Token | null;
    public _parts?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MSCK(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MSCK, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public tableName(): TableNameContext | null {
        return this.getRuleContext(0, TableNameContext);
    }
    public KW_REPAIR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REPAIR, 0);
    }
    public KW_PARTITIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0);
    }
    public KW_ADD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    public KW_DROP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    public KW_SYNC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SYNC, 0);
    }
    public partitionSelectorSpec(): PartitionSelectorSpecContext | null {
        return this.getRuleContext(0, PartitionSelectorSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_metastoreCheck;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterMetastoreCheck) {
             listener.enterMetastoreCheck(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitMetastoreCheck) {
             listener.exitMetastoreCheck(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitMetastoreCheck) {
            return visitor.visitMetastoreCheck(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ResourceListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public resource(): ResourceContext[];
    public resource(i: number): ResourceContext | null;
    public resource(i?: number): ResourceContext[] | ResourceContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ResourceContext);
        }

        return this.getRuleContext(i, ResourceContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_resourceList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterResourceList) {
             listener.enterResourceList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitResourceList) {
             listener.exitResourceList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitResourceList) {
            return visitor.visitResourceList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ResourceContext extends antlr.ParserRuleContext {
    public _resType?: ResourceTypeContext;
    public _resPath?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public resourceType(): ResourceTypeContext {
        return this.getRuleContext(0, ResourceTypeContext)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_resource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterResource) {
             listener.enterResource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitResource) {
             listener.exitResource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitResource) {
            return visitor.visitResource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ResourceTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_JAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_JAR, 0);
    }
    public KW_FILE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FILE, 0);
    }
    public KW_ARCHIVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ARCHIVE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_resourceType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterResourceType) {
             listener.enterResourceType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitResourceType) {
             listener.exitResourceType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitResourceType) {
            return visitor.visitResourceType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateFunctionStatementContext extends antlr.ParserRuleContext {
    public _temp?: Token | null;
    public _rList?: ResourceListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_FUNCTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0)!;
    }
    public functionNameCreate(): FunctionNameCreateContext {
        return this.getRuleContext(0, FunctionNameCreateContext)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public KW_USING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_USING, 0);
    }
    public KW_TEMPORARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    public resourceList(): ResourceListContext | null {
        return this.getRuleContext(0, ResourceListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createFunctionStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateFunctionStatement) {
             listener.enterCreateFunctionStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateFunctionStatement) {
             listener.exitCreateFunctionStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateFunctionStatement) {
            return visitor.visitCreateFunctionStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropFunctionStatementContext extends antlr.ParserRuleContext {
    public _temp?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_FUNCTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0)!;
    }
    public functionNameForDDL(): FunctionNameForDDLContext {
        return this.getRuleContext(0, FunctionNameForDDLContext)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public KW_TEMPORARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropFunctionStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropFunctionStatement) {
             listener.enterDropFunctionStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropFunctionStatement) {
             listener.exitDropFunctionStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropFunctionStatement) {
            return visitor.visitDropFunctionStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReloadFunctionsStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RELOAD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RELOAD, 0)!;
    }
    public KW_FUNCTIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FUNCTIONS, 0);
    }
    public KW_FUNCTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_reloadFunctionsStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReloadFunctionsStatement) {
             listener.enterReloadFunctionsStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReloadFunctionsStatement) {
             listener.exitReloadFunctionsStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReloadFunctionsStatement) {
            return visitor.visitReloadFunctionsStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateMacroStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_TEMPORARY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0)!;
    }
    public KW_MACRO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MACRO, 0)!;
    }
    public Identifier(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.Identifier, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public columnNameTypeList(): ColumnNameTypeListContext | null {
        return this.getRuleContext(0, ColumnNameTypeListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createMacroStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateMacroStatement) {
             listener.enterCreateMacroStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateMacroStatement) {
             listener.exitCreateMacroStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateMacroStatement) {
            return visitor.visitCreateMacroStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropMacroStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_TEMPORARY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0)!;
    }
    public KW_MACRO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MACRO, 0)!;
    }
    public Identifier(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.Identifier, 0)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropMacroStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropMacroStatement) {
             listener.enterDropMacroStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropMacroStatement) {
             listener.exitDropMacroStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropMacroStatement) {
            return visitor.visitDropMacroStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateIndexStatementContext extends antlr.ParserRuleContext {
    public _indextype?: Token | null;
    public _locn?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_INDEX(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INDEX, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode[];
    public KW_TABLE(i: number): antlr.TerminalNode | null;
    public KW_TABLE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_TABLE);
    	} else {
    		return this.getToken(HiveSqlParser.KW_TABLE, i);
    	}
    }
    public tableName(): TableNameContext[];
    public tableName(i: number): TableNameContext | null;
    public tableName(i?: number): TableNameContext[] | TableNameContext | null {
        if (i === undefined) {
            return this.getRuleContexts(TableNameContext);
        }

        return this.getRuleContext(i, TableNameContext);
    }
    public columnParenthesesList(): ColumnParenthesesListContext[];
    public columnParenthesesList(i: number): ColumnParenthesesListContext | null;
    public columnParenthesesList(i?: number): ColumnParenthesesListContext[] | ColumnParenthesesListContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }

        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_DEFERRED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFERRED, 0);
    }
    public KW_REBUILD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REBUILD, 0);
    }
    public KW_IDXPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IDXPROPERTIES, 0);
    }
    public tableProperties(): TablePropertiesContext | null {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    public KW_IN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    public KW_PARTITIONED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0);
    }
    public KW_BY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    public tableFileFormat(): TableFileFormatContext | null {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    public KW_LOCATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0);
    }
    public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | null {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    public tableComment(): TableCommentContext | null {
        return this.getRuleContext(0, TableCommentContext);
    }
    public tableRowFormat(): TableRowFormatContext | null {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createIndexStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateIndexStatement) {
             listener.enterCreateIndexStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateIndexStatement) {
             listener.exitCreateIndexStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateIndexStatement) {
            return visitor.visitCreateIndexStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropIndexStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_INDEX(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INDEX, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropIndexStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropIndexStatement) {
             listener.enterDropIndexStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropIndexStatement) {
             listener.exitDropIndexStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropIndexStatement) {
            return visitor.visitDropIndexStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateViewStatementContext extends antlr.ParserRuleContext {
    public _name?: ViewNameCreateContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_VIEW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_VIEW, 0)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public selectStatementWithCTE(): SelectStatementWithCTEContext {
        return this.getRuleContext(0, SelectStatementWithCTEContext)!;
    }
    public viewNameCreate(): ViewNameCreateContext {
        return this.getRuleContext(0, ViewNameCreateContext)!;
    }
    public orReplace(): OrReplaceContext | null {
        return this.getRuleContext(0, OrReplaceContext);
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public columnNameCommentList(): ColumnNameCommentListContext | null {
        return this.getRuleContext(0, ColumnNameCommentListContext);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public tableComment(): TableCommentContext | null {
        return this.getRuleContext(0, TableCommentContext);
    }
    public viewPartition(): ViewPartitionContext | null {
        return this.getRuleContext(0, ViewPartitionContext);
    }
    public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | null {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createViewStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateViewStatement) {
             listener.enterCreateViewStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateViewStatement) {
             listener.exitCreateViewStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateViewStatement) {
            return visitor.visitCreateViewStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewPartitionContext extends antlr.ParserRuleContext {
    public _spec?: PartitionTransformSpecContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_PARTITIONED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public columnNameList(): ColumnNameListContext | null {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    public KW_SPEC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SPEC, 0);
    }
    public partitionTransformSpec(): PartitionTransformSpecContext | null {
        return this.getRuleContext(0, PartitionTransformSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewPartition;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewPartition) {
             listener.enterViewPartition(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewPartition) {
             listener.exitViewPartition(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewPartition) {
            return visitor.visitViewPartition(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewOrganizationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public viewClusterSpec(): ViewClusterSpecContext | null {
        return this.getRuleContext(0, ViewClusterSpecContext);
    }
    public viewComplexSpec(): ViewComplexSpecContext | null {
        return this.getRuleContext(0, ViewComplexSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewOrganization;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewOrganization) {
             listener.enterViewOrganization(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewOrganization) {
             listener.exitViewOrganization(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewOrganization) {
            return visitor.visitViewOrganization(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewClusterSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CLUSTERED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public columnNameList(): ColumnNameListContext {
        return this.getRuleContext(0, ColumnNameListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewClusterSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewClusterSpec) {
             listener.enterViewClusterSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewClusterSpec) {
             listener.exitViewClusterSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewClusterSpec) {
            return visitor.visitViewClusterSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewComplexSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public viewDistSpec(): ViewDistSpecContext {
        return this.getRuleContext(0, ViewDistSpecContext)!;
    }
    public viewSortSpec(): ViewSortSpecContext {
        return this.getRuleContext(0, ViewSortSpecContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewComplexSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewComplexSpec) {
             listener.enterViewComplexSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewComplexSpec) {
             listener.exitViewComplexSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewComplexSpec) {
            return visitor.visitViewComplexSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewDistSpecContext extends antlr.ParserRuleContext {
    public _colList?: ColumnNameListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DISTRIBUTED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTED, 0)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public columnNameList(): ColumnNameListContext {
        return this.getRuleContext(0, ColumnNameListContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewDistSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewDistSpec) {
             listener.enterViewDistSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewDistSpec) {
             listener.exitViewDistSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewDistSpec) {
            return visitor.visitViewDistSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewSortSpecContext extends antlr.ParserRuleContext {
    public _colList?: ColumnNameListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SORTED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SORTED, 0)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public columnNameList(): ColumnNameListContext {
        return this.getRuleContext(0, ColumnNameListContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewSortSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewSortSpec) {
             listener.enterViewSortSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewSortSpec) {
             listener.exitViewSortSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewSortSpec) {
            return visitor.visitViewSortSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropViewStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_VIEW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_VIEW, 0)!;
    }
    public viewName(): ViewNameContext {
        return this.getRuleContext(0, ViewNameContext)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropViewStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropViewStatement) {
             listener.enterDropViewStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropViewStatement) {
             listener.exitDropViewStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropViewStatement) {
            return visitor.visitDropViewStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateMaterializedViewStatementContext extends antlr.ParserRuleContext {
    public _name?: ViewNameCreateContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_MATERIALIZED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0)!;
    }
    public KW_VIEW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_VIEW, 0)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public selectStatementWithCTE(): SelectStatementWithCTEContext {
        return this.getRuleContext(0, SelectStatementWithCTEContext)!;
    }
    public viewNameCreate(): ViewNameCreateContext {
        return this.getRuleContext(0, ViewNameCreateContext)!;
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public rewriteDisabled(): RewriteDisabledContext | null {
        return this.getRuleContext(0, RewriteDisabledContext);
    }
    public tableComment(): TableCommentContext | null {
        return this.getRuleContext(0, TableCommentContext);
    }
    public viewPartition(): ViewPartitionContext | null {
        return this.getRuleContext(0, ViewPartitionContext);
    }
    public viewOrganization(): ViewOrganizationContext | null {
        return this.getRuleContext(0, ViewOrganizationContext);
    }
    public tableRowFormat(): TableRowFormatContext | null {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    public tableFileFormat(): TableFileFormatContext | null {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    public tableLocation(): TableLocationContext | null {
        return this.getRuleContext(0, TableLocationContext);
    }
    public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | null {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createMaterializedViewStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateMaterializedViewStatement) {
             listener.enterCreateMaterializedViewStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateMaterializedViewStatement) {
             listener.exitCreateMaterializedViewStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateMaterializedViewStatement) {
            return visitor.visitCreateMaterializedViewStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropMaterializedViewStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_MATERIALIZED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0)!;
    }
    public KW_VIEW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_VIEW, 0)!;
    }
    public viewName(): ViewNameContext {
        return this.getRuleContext(0, ViewNameContext)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropMaterializedViewStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropMaterializedViewStatement) {
             listener.enterDropMaterializedViewStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropMaterializedViewStatement) {
             listener.exitDropMaterializedViewStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropMaterializedViewStatement) {
            return visitor.visitDropMaterializedViewStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateScheduledQueryStatementContext extends antlr.ParserRuleContext {
    public _name?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_SCHEDULED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0)!;
    }
    public KW_QUERY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_QUERY, 0)!;
    }
    public scheduleSpec(): ScheduleSpecContext {
        return this.getRuleContext(0, ScheduleSpecContext)!;
    }
    public definedAsSpec(): DefinedAsSpecContext {
        return this.getRuleContext(0, DefinedAsSpecContext)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public executedAsSpec(): ExecutedAsSpecContext | null {
        return this.getRuleContext(0, ExecutedAsSpecContext);
    }
    public enableSpecification(): EnableSpecificationContext | null {
        return this.getRuleContext(0, EnableSpecificationContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createScheduledQueryStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateScheduledQueryStatement) {
             listener.enterCreateScheduledQueryStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateScheduledQueryStatement) {
             listener.exitCreateScheduledQueryStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateScheduledQueryStatement) {
            return visitor.visitCreateScheduledQueryStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropScheduledQueryStatementContext extends antlr.ParserRuleContext {
    public _name?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_SCHEDULED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0)!;
    }
    public KW_QUERY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_QUERY, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropScheduledQueryStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropScheduledQueryStatement) {
             listener.enterDropScheduledQueryStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropScheduledQueryStatement) {
             listener.exitDropScheduledQueryStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropScheduledQueryStatement) {
            return visitor.visitDropScheduledQueryStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterScheduledQueryStatementContext extends antlr.ParserRuleContext {
    public _name?: Id_Context;
    public _mod?: AlterScheduledQueryChangeContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALTER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ALTER, 0)!;
    }
    public KW_SCHEDULED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0)!;
    }
    public KW_QUERY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_QUERY, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public alterScheduledQueryChange(): AlterScheduledQueryChangeContext {
        return this.getRuleContext(0, AlterScheduledQueryChangeContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterScheduledQueryStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterScheduledQueryStatement) {
             listener.enterAlterScheduledQueryStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterScheduledQueryStatement) {
             listener.exitAlterScheduledQueryStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterScheduledQueryStatement) {
            return visitor.visitAlterScheduledQueryStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterScheduledQueryChangeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public scheduleSpec(): ScheduleSpecContext | null {
        return this.getRuleContext(0, ScheduleSpecContext);
    }
    public executedAsSpec(): ExecutedAsSpecContext | null {
        return this.getRuleContext(0, ExecutedAsSpecContext);
    }
    public enableSpecification(): EnableSpecificationContext | null {
        return this.getRuleContext(0, EnableSpecificationContext);
    }
    public definedAsSpec(): DefinedAsSpecContext | null {
        return this.getRuleContext(0, DefinedAsSpecContext);
    }
    public KW_EXECUTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterScheduledQueryChange;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterScheduledQueryChange) {
             listener.enterAlterScheduledQueryChange(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterScheduledQueryChange) {
             listener.exitAlterScheduledQueryChange(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterScheduledQueryChange) {
            return visitor.visitAlterScheduledQueryChange(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ScheduleSpecContext extends antlr.ParserRuleContext {
    public _cronString?: Token | null;
    public _value?: Token | null;
    public _qualifier?: IntervalQualifiersContext;
    public _offsetTs?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CRON(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CRON, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_EVERY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EVERY, 0);
    }
    public intervalQualifiers(): IntervalQualifiersContext | null {
        return this.getRuleContext(0, IntervalQualifiersContext);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public KW_AT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AT, 0);
    }
    public KW_OFFSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OFFSET, 0);
    }
    public KW_BY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_scheduleSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterScheduleSpec) {
             listener.enterScheduleSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitScheduleSpec) {
             listener.exitScheduleSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitScheduleSpec) {
            return visitor.visitScheduleSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExecutedAsSpecContext extends antlr.ParserRuleContext {
    public _executedAs?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXECUTED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXECUTED, 0)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_executedAsSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExecutedAsSpec) {
             listener.enterExecutedAsSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExecutedAsSpec) {
             listener.exitExecutedAsSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExecutedAsSpec) {
            return visitor.visitExecutedAsSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DefinedAsSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public statement(): StatementContext {
        return this.getRuleContext(0, StatementContext)!;
    }
    public KW_DEFINED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFINED, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_definedAsSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDefinedAsSpec) {
             listener.enterDefinedAsSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDefinedAsSpec) {
             listener.exitDefinedAsSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDefinedAsSpec) {
            return visitor.visitDefinedAsSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ShowStmtIdentifierContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_showStmtIdentifier;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterShowStmtIdentifier) {
             listener.enterShowStmtIdentifier(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitShowStmtIdentifier) {
             listener.exitShowStmtIdentifier(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitShowStmtIdentifier) {
            return visitor.visitShowStmtIdentifier(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableCommentContext extends antlr.ParserRuleContext {
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COMMENT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableComment;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableComment) {
             listener.enterTableComment(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableComment) {
             listener.exitTableComment(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableComment) {
            return visitor.visitTableComment(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableLifecycleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LIFECYCLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LIFECYCLE, 0)!;
    }
    public Number(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.Number, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableLifecycle;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableLifecycle) {
             listener.enterTableLifecycle(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableLifecycle) {
             listener.exitTableLifecycle(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableLifecycle) {
            return visitor.visitTableLifecycle(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateTablePartitionSpecContext extends antlr.ParserRuleContext {
    public _opt1?: CreateTablePartitionColumnTypeSpecContext;
    public _opt2?: CreateTablePartitionColumnSpecContext;
    public _spec?: PartitionTransformSpecContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_PARTITIONED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public KW_SPEC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SPEC, 0);
    }
    public partitionTransformSpec(): PartitionTransformSpecContext | null {
        return this.getRuleContext(0, PartitionTransformSpecContext);
    }
    public createTablePartitionColumnTypeSpec(): CreateTablePartitionColumnTypeSpecContext | null {
        return this.getRuleContext(0, CreateTablePartitionColumnTypeSpecContext);
    }
    public createTablePartitionColumnSpec(): CreateTablePartitionColumnSpecContext | null {
        return this.getRuleContext(0, CreateTablePartitionColumnSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createTablePartitionSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateTablePartitionSpec) {
             listener.enterCreateTablePartitionSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateTablePartitionSpec) {
             listener.exitCreateTablePartitionSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateTablePartitionSpec) {
            return visitor.visitCreateTablePartitionSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateTablePartitionColumnTypeSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameTypeConstraint(): ColumnNameTypeConstraintContext[];
    public columnNameTypeConstraint(i: number): ColumnNameTypeConstraintContext | null;
    public columnNameTypeConstraint(i?: number): ColumnNameTypeConstraintContext[] | ColumnNameTypeConstraintContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameTypeConstraintContext);
        }

        return this.getRuleContext(i, ColumnNameTypeConstraintContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createTablePartitionColumnTypeSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateTablePartitionColumnTypeSpec) {
             listener.enterCreateTablePartitionColumnTypeSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateTablePartitionColumnTypeSpec) {
             listener.exitCreateTablePartitionColumnTypeSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateTablePartitionColumnTypeSpec) {
            return visitor.visitCreateTablePartitionColumnTypeSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateTablePartitionColumnSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext[];
    public columnName(i: number): ColumnNameContext | null;
    public columnName(i?: number): ColumnNameContext[] | ColumnNameContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameContext);
        }

        return this.getRuleContext(i, ColumnNameContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createTablePartitionColumnSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateTablePartitionColumnSpec) {
             listener.enterCreateTablePartitionColumnSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateTablePartitionColumnSpec) {
             listener.exitCreateTablePartitionColumnSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateTablePartitionColumnSpec) {
            return visitor.visitCreateTablePartitionColumnSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionTransformSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameTransformConstraint(): ColumnNameTransformConstraintContext[];
    public columnNameTransformConstraint(i: number): ColumnNameTransformConstraintContext | null;
    public columnNameTransformConstraint(i?: number): ColumnNameTransformConstraintContext[] | ColumnNameTransformConstraintContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameTransformConstraintContext);
        }

        return this.getRuleContext(i, ColumnNameTransformConstraintContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionTransformSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionTransformSpec) {
             listener.enterPartitionTransformSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionTransformSpec) {
             listener.exitPartitionTransformSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionTransformSpec) {
            return visitor.visitPartitionTransformSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameTransformConstraintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public partitionTransformType(): PartitionTransformTypeContext {
        return this.getRuleContext(0, PartitionTransformTypeContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameTransformConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameTransformConstraint) {
             listener.enterColumnNameTransformConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameTransformConstraint) {
             listener.exitColumnNameTransformConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameTransformConstraint) {
            return visitor.visitColumnNameTransformConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionTransformTypeContext extends antlr.ParserRuleContext {
    public _value?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public year(): YearContext | null {
        return this.getRuleContext(0, YearContext);
    }
    public month(): MonthContext | null {
        return this.getRuleContext(0, MonthContext);
    }
    public day(): DayContext | null {
        return this.getRuleContext(0, DayContext);
    }
    public hour(): HourContext | null {
        return this.getRuleContext(0, HourContext);
    }
    public COMMA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    public KW_TRUNCATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRUNCATE, 0);
    }
    public KW_BUCKET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BUCKET, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionTransformType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionTransformType) {
             listener.enterPartitionTransformType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionTransformType) {
             listener.exitPartitionTransformType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionTransformType) {
            return visitor.visitPartitionTransformType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableBucketsContext extends antlr.ParserRuleContext {
    public _bucketCols?: ColumnNameListContext;
    public _sortCols?: ColumnNameOrderListContext;
    public _num?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CLUSTERED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0)!;
    }
    public KW_BY(): antlr.TerminalNode[];
    public KW_BY(i: number): antlr.TerminalNode | null;
    public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_BY);
    	} else {
    		return this.getToken(HiveSqlParser.KW_BY, i);
    	}
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public KW_INTO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INTO, 0)!;
    }
    public KW_BUCKETS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BUCKETS, 0)!;
    }
    public columnNameList(): ColumnNameListContext {
        return this.getRuleContext(0, ColumnNameListContext)!;
    }
    public Number(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.Number, 0)!;
    }
    public KW_SORTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    public columnNameOrderList(): ColumnNameOrderListContext | null {
        return this.getRuleContext(0, ColumnNameOrderListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableBuckets;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableBuckets) {
             listener.enterTableBuckets(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableBuckets) {
             listener.exitTableBuckets(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableBuckets) {
            return visitor.visitTableBuckets(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableImplBucketsContext extends antlr.ParserRuleContext {
    public _num?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CLUSTERED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0)!;
    }
    public KW_INTO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INTO, 0)!;
    }
    public KW_BUCKETS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BUCKETS, 0)!;
    }
    public Number(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.Number, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableImplBuckets;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableImplBuckets) {
             listener.enterTableImplBuckets(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableImplBuckets) {
             listener.exitTableImplBuckets(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableImplBuckets) {
            return visitor.visitTableImplBuckets(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableSkewedContext extends antlr.ParserRuleContext {
    public _skewedCols?: ColumnNameListContext;
    public _skewedValues?: SkewedValueElementContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SKEWED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public columnNameList(): ColumnNameListContext {
        return this.getRuleContext(0, ColumnNameListContext)!;
    }
    public skewedValueElement(): SkewedValueElementContext {
        return this.getRuleContext(0, SkewedValueElementContext)!;
    }
    public storedAsDirs(): StoredAsDirsContext | null {
        return this.getRuleContext(0, StoredAsDirsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableSkewed;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableSkewed) {
             listener.enterTableSkewed(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableSkewed) {
             listener.exitTableSkewed(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableSkewed) {
            return visitor.visitTableSkewed(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RowFormatContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public rowFormatSerde(): RowFormatSerdeContext | null {
        return this.getRuleContext(0, RowFormatSerdeContext);
    }
    public rowFormatDelimited(): RowFormatDelimitedContext | null {
        return this.getRuleContext(0, RowFormatDelimitedContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rowFormat;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRowFormat) {
             listener.enterRowFormat(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRowFormat) {
             listener.exitRowFormat(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRowFormat) {
            return visitor.visitRowFormat(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RecordReaderContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RECORDREADER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RECORDREADER, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_recordReader;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRecordReader) {
             listener.enterRecordReader(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRecordReader) {
             listener.exitRecordReader(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRecordReader) {
            return visitor.visitRecordReader(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RecordWriterContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RECORDWRITER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RECORDWRITER, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_recordWriter;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRecordWriter) {
             listener.enterRecordWriter(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRecordWriter) {
             listener.exitRecordWriter(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRecordWriter) {
            return visitor.visitRecordWriter(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RowFormatSerdeContext extends antlr.ParserRuleContext {
    public _name?: Token | null;
    public _serdeprops?: TablePropertiesContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ROW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROW, 0)!;
    }
    public KW_FORMAT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0)!;
    }
    public KW_SERDE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SERDE, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_SERDEPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    public tableProperties(): TablePropertiesContext | null {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rowFormatSerde;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRowFormatSerde) {
             listener.enterRowFormatSerde(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRowFormatSerde) {
             listener.exitRowFormatSerde(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRowFormatSerde) {
            return visitor.visitRowFormatSerde(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RowFormatDelimitedContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ROW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROW, 0)!;
    }
    public KW_FORMAT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0)!;
    }
    public KW_DELIMITED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DELIMITED, 0)!;
    }
    public tableRowFormatFieldIdentifier(): TableRowFormatFieldIdentifierContext | null {
        return this.getRuleContext(0, TableRowFormatFieldIdentifierContext);
    }
    public tableRowFormatCollItemsIdentifier(): TableRowFormatCollItemsIdentifierContext | null {
        return this.getRuleContext(0, TableRowFormatCollItemsIdentifierContext);
    }
    public tableRowFormatMapKeysIdentifier(): TableRowFormatMapKeysIdentifierContext | null {
        return this.getRuleContext(0, TableRowFormatMapKeysIdentifierContext);
    }
    public tableRowFormatLinesIdentifier(): TableRowFormatLinesIdentifierContext | null {
        return this.getRuleContext(0, TableRowFormatLinesIdentifierContext);
    }
    public tableRowNullFormat(): TableRowNullFormatContext | null {
        return this.getRuleContext(0, TableRowNullFormatContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rowFormatDelimited;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRowFormatDelimited) {
             listener.enterRowFormatDelimited(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRowFormatDelimited) {
             listener.exitRowFormatDelimited(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRowFormatDelimited) {
            return visitor.visitRowFormatDelimited(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableRowFormatContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public rowFormatDelimited(): RowFormatDelimitedContext | null {
        return this.getRuleContext(0, RowFormatDelimitedContext);
    }
    public rowFormatSerde(): RowFormatSerdeContext | null {
        return this.getRuleContext(0, RowFormatSerdeContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableRowFormat;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableRowFormat) {
             listener.enterTableRowFormat(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableRowFormat) {
             listener.exitTableRowFormat(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableRowFormat) {
            return visitor.visitTableRowFormat(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TablePropertiesPrefixedContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TBLPROPERTIES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0)!;
    }
    public tableProperties(): TablePropertiesContext {
        return this.getRuleContext(0, TablePropertiesContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tablePropertiesPrefixed;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTablePropertiesPrefixed) {
             listener.enterTablePropertiesPrefixed(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTablePropertiesPrefixed) {
             listener.exitTablePropertiesPrefixed(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTablePropertiesPrefixed) {
            return visitor.visitTablePropertiesPrefixed(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TablePropertiesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public tablePropertiesList(): TablePropertiesListContext {
        return this.getRuleContext(0, TablePropertiesListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableProperties) {
             listener.enterTableProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableProperties) {
             listener.exitTableProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableProperties) {
            return visitor.visitTableProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TablePropertiesListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public keyValueProperty(): KeyValuePropertyContext[];
    public keyValueProperty(i: number): KeyValuePropertyContext | null;
    public keyValueProperty(i?: number): KeyValuePropertyContext[] | KeyValuePropertyContext | null {
        if (i === undefined) {
            return this.getRuleContexts(KeyValuePropertyContext);
        }

        return this.getRuleContext(i, KeyValuePropertyContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public keyProperty(): KeyPropertyContext[];
    public keyProperty(i: number): KeyPropertyContext | null;
    public keyProperty(i?: number): KeyPropertyContext[] | KeyPropertyContext | null {
        if (i === undefined) {
            return this.getRuleContexts(KeyPropertyContext);
        }

        return this.getRuleContext(i, KeyPropertyContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tablePropertiesList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTablePropertiesList) {
             listener.enterTablePropertiesList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTablePropertiesList) {
             listener.exitTablePropertiesList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTablePropertiesList) {
            return visitor.visitTablePropertiesList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class KeyValuePropertyContext extends antlr.ParserRuleContext {
    public _key?: Token | null;
    public _value?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public EQUAL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EQUAL, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_keyValueProperty;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterKeyValueProperty) {
             listener.enterKeyValueProperty(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitKeyValueProperty) {
             listener.exitKeyValueProperty(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitKeyValueProperty) {
            return visitor.visitKeyValueProperty(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class KeyPropertyContext extends antlr.ParserRuleContext {
    public _key?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_keyProperty;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterKeyProperty) {
             listener.enterKeyProperty(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitKeyProperty) {
             listener.exitKeyProperty(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitKeyProperty) {
            return visitor.visitKeyProperty(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableRowFormatFieldIdentifierContext extends antlr.ParserRuleContext {
    public _fldIdnt?: Token | null;
    public _fldEscape?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FIELDS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FIELDS, 0)!;
    }
    public KW_TERMINATED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0)!;
    }
    public KW_BY(): antlr.TerminalNode[];
    public KW_BY(i: number): antlr.TerminalNode | null;
    public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_BY);
    	} else {
    		return this.getToken(HiveSqlParser.KW_BY, i);
    	}
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public KW_ESCAPED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ESCAPED, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableRowFormatFieldIdentifier;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableRowFormatFieldIdentifier) {
             listener.enterTableRowFormatFieldIdentifier(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableRowFormatFieldIdentifier) {
             listener.exitTableRowFormatFieldIdentifier(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableRowFormatFieldIdentifier) {
            return visitor.visitTableRowFormatFieldIdentifier(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableRowFormatCollItemsIdentifierContext extends antlr.ParserRuleContext {
    public _collIdnt?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COLLECTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COLLECTION, 0)!;
    }
    public KW_ITEMS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ITEMS, 0)!;
    }
    public KW_TERMINATED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableRowFormatCollItemsIdentifier) {
             listener.enterTableRowFormatCollItemsIdentifier(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableRowFormatCollItemsIdentifier) {
             listener.exitTableRowFormatCollItemsIdentifier(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableRowFormatCollItemsIdentifier) {
            return visitor.visitTableRowFormatCollItemsIdentifier(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableRowFormatMapKeysIdentifierContext extends antlr.ParserRuleContext {
    public _mapKeysIdnt?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MAP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MAP, 0)!;
    }
    public KW_KEYS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_KEYS, 0)!;
    }
    public KW_TERMINATED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableRowFormatMapKeysIdentifier) {
             listener.enterTableRowFormatMapKeysIdentifier(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableRowFormatMapKeysIdentifier) {
             listener.exitTableRowFormatMapKeysIdentifier(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableRowFormatMapKeysIdentifier) {
            return visitor.visitTableRowFormatMapKeysIdentifier(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableRowFormatLinesIdentifierContext extends antlr.ParserRuleContext {
    public _linesIdnt?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LINES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LINES, 0)!;
    }
    public KW_TERMINATED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableRowFormatLinesIdentifier;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableRowFormatLinesIdentifier) {
             listener.enterTableRowFormatLinesIdentifier(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableRowFormatLinesIdentifier) {
             listener.exitTableRowFormatLinesIdentifier(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableRowFormatLinesIdentifier) {
            return visitor.visitTableRowFormatLinesIdentifier(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableRowNullFormatContext extends antlr.ParserRuleContext {
    public _nullIdnt?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_NULL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_NULL, 0)!;
    }
    public KW_DEFINED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DEFINED, 0)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableRowNullFormat;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableRowNullFormat) {
             listener.enterTableRowNullFormat(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableRowNullFormat) {
             listener.exitTableRowNullFormat(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableRowNullFormat) {
            return visitor.visitTableRowNullFormat(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableFileFormatContext extends antlr.ParserRuleContext {
    public _inFmt?: Token | null;
    public _outFmt?: Token | null;
    public _inDriver?: Token | null;
    public _outDriver?: Token | null;
    public _storageHandler?: Token | null;
    public _serdeprops?: TablePropertiesContext;
    public _fileformat?: Id_Context;
    public _genericSpec?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_STORED(): antlr.TerminalNode[];
    public KW_STORED(i: number): antlr.TerminalNode | null;
    public KW_STORED(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_STORED);
    	} else {
    		return this.getToken(HiveSqlParser.KW_STORED, i);
    	}
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public KW_INPUTFORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0);
    }
    public KW_OUTPUTFORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTPUTFORMAT, 0);
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public KW_INPUTDRIVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INPUTDRIVER, 0);
    }
    public KW_OUTPUTDRIVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTPUTDRIVER, 0);
    }
    public KW_BY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_SERDEPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    public tableProperties(): TablePropertiesContext | null {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableFileFormat;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableFileFormat) {
             listener.enterTableFileFormat(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableFileFormat) {
             listener.exitTableFileFormat(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableFileFormat) {
            return visitor.visitTableFileFormat(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableLocationContext extends antlr.ParserRuleContext {
    public _locn?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LOCATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableLocation) {
             listener.enterTableLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableLocation) {
             listener.exitTableLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableLocation) {
            return visitor.visitTableLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameTypeListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameType(): ColumnNameTypeContext[];
    public columnNameType(i: number): ColumnNameTypeContext | null;
    public columnNameType(i?: number): ColumnNameTypeContext[] | ColumnNameTypeContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameTypeContext);
        }

        return this.getRuleContext(i, ColumnNameTypeContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameTypeList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameTypeList) {
             listener.enterColumnNameTypeList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameTypeList) {
             listener.exitColumnNameTypeList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameTypeList) {
            return visitor.visitColumnNameTypeList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameTypeOrConstraintListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameTypeOrConstraint(): ColumnNameTypeOrConstraintContext[];
    public columnNameTypeOrConstraint(i: number): ColumnNameTypeOrConstraintContext | null;
    public columnNameTypeOrConstraint(i?: number): ColumnNameTypeOrConstraintContext[] | ColumnNameTypeOrConstraintContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameTypeOrConstraintContext);
        }

        return this.getRuleContext(i, ColumnNameTypeOrConstraintContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameTypeOrConstraintList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameTypeOrConstraintList) {
             listener.enterColumnNameTypeOrConstraintList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameTypeOrConstraintList) {
             listener.exitColumnNameTypeOrConstraintList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameTypeOrConstraintList) {
            return visitor.visitColumnNameTypeOrConstraintList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameColonTypeListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameColonType(): ColumnNameColonTypeContext[];
    public columnNameColonType(i: number): ColumnNameColonTypeContext | null;
    public columnNameColonType(i?: number): ColumnNameColonTypeContext[] | ColumnNameColonTypeContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameColonTypeContext);
        }

        return this.getRuleContext(i, ColumnNameColonTypeContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameColonTypeList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameColonTypeList) {
             listener.enterColumnNameColonTypeList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameColonTypeList) {
             listener.exitColumnNameColonTypeList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameColonTypeList) {
            return visitor.visitColumnNameColonTypeList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext[];
    public columnName(i: number): ColumnNameContext | null;
    public columnName(i?: number): ColumnNameContext[] | ColumnNameContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameContext);
        }

        return this.getRuleContext(i, ColumnNameContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameList) {
             listener.enterColumnNameList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameList) {
             listener.exitColumnNameList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameList) {
            return visitor.visitColumnNameList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnName) {
             listener.enterColumnName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnName) {
             listener.exitColumnName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnName) {
            return visitor.visitColumnName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameCreateContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameCreate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameCreate) {
             listener.enterColumnNameCreate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameCreate) {
             listener.exitColumnNameCreate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameCreate) {
            return visitor.visitColumnNameCreate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExtColumnNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public KW_ELEM_TYPE(): antlr.TerminalNode[];
    public KW_ELEM_TYPE(i: number): antlr.TerminalNode | null;
    public KW_ELEM_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_ELEM_TYPE);
    	} else {
    		return this.getToken(HiveSqlParser.KW_ELEM_TYPE, i);
    	}
    }
    public KW_KEY_TYPE(): antlr.TerminalNode[];
    public KW_KEY_TYPE(i: number): antlr.TerminalNode | null;
    public KW_KEY_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_KEY_TYPE);
    	} else {
    		return this.getToken(HiveSqlParser.KW_KEY_TYPE, i);
    	}
    }
    public KW_VALUE_TYPE(): antlr.TerminalNode[];
    public KW_VALUE_TYPE(i: number): antlr.TerminalNode | null;
    public KW_VALUE_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_VALUE_TYPE);
    	} else {
    		return this.getToken(HiveSqlParser.KW_VALUE_TYPE, i);
    	}
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_extColumnName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExtColumnName) {
             listener.enterExtColumnName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExtColumnName) {
             listener.exitExtColumnName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExtColumnName) {
            return visitor.visitExtColumnName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameOrderListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameOrder(): ColumnNameOrderContext[];
    public columnNameOrder(i: number): ColumnNameOrderContext | null;
    public columnNameOrder(i?: number): ColumnNameOrderContext[] | ColumnNameOrderContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameOrderContext);
        }

        return this.getRuleContext(i, ColumnNameOrderContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameOrderList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameOrderList) {
             listener.enterColumnNameOrderList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameOrderList) {
             listener.exitColumnNameOrderList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameOrderList) {
            return visitor.visitColumnNameOrderList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnParenthesesListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public columnNameList(): ColumnNameListContext {
        return this.getRuleContext(0, ColumnNameListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnParenthesesList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnParenthesesList) {
             listener.enterColumnParenthesesList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnParenthesesList) {
             listener.exitColumnParenthesesList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnParenthesesList) {
            return visitor.visitColumnParenthesesList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class EnableValidateSpecificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public enableSpecification(): EnableSpecificationContext | null {
        return this.getRuleContext(0, EnableSpecificationContext);
    }
    public validateSpecification(): ValidateSpecificationContext | null {
        return this.getRuleContext(0, ValidateSpecificationContext);
    }
    public enforcedSpecification(): EnforcedSpecificationContext | null {
        return this.getRuleContext(0, EnforcedSpecificationContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_enableValidateSpecification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterEnableValidateSpecification) {
             listener.enterEnableValidateSpecification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitEnableValidateSpecification) {
             listener.exitEnableValidateSpecification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitEnableValidateSpecification) {
            return visitor.visitEnableValidateSpecification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class EnableSpecificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public enable(): EnableContext | null {
        return this.getRuleContext(0, EnableContext);
    }
    public disable(): DisableContext | null {
        return this.getRuleContext(0, DisableContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_enableSpecification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterEnableSpecification) {
             listener.enterEnableSpecification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitEnableSpecification) {
             listener.exitEnableSpecification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitEnableSpecification) {
            return visitor.visitEnableSpecification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ValidateSpecificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_VALIDATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VALIDATE, 0);
    }
    public KW_NOVALIDATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOVALIDATE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_validateSpecification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterValidateSpecification) {
             listener.enterValidateSpecification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitValidateSpecification) {
             listener.exitValidateSpecification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitValidateSpecification) {
            return visitor.visitValidateSpecification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class EnforcedSpecificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ENFORCED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ENFORCED, 0)!;
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_enforcedSpecification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterEnforcedSpecification) {
             listener.enterEnforcedSpecification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitEnforcedSpecification) {
             listener.exitEnforcedSpecification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitEnforcedSpecification) {
            return visitor.visitEnforcedSpecification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RelySpecificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RELY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RELY, 0);
    }
    public KW_NORELY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NORELY, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_relySpecification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRelySpecification) {
             listener.enterRelySpecification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRelySpecification) {
             listener.exitRelySpecification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRelySpecification) {
            return visitor.visitRelySpecification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateConstraintContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableLevelConstraint(): TableLevelConstraintContext {
        return this.getRuleContext(0, TableLevelConstraintContext)!;
    }
    public KW_CONSTRAINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    public constraintOptsCreate(): ConstraintOptsCreateContext | null {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateConstraint) {
             listener.enterCreateConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateConstraint) {
             listener.exitCreateConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateConstraint) {
            return visitor.visitCreateConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterConstraintWithNameContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CONSTRAINT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0)!;
    }
    public tableLevelConstraint(): TableLevelConstraintContext {
        return this.getRuleContext(0, TableLevelConstraintContext)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public constraintOptsAlter(): ConstraintOptsAlterContext | null {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterConstraintWithName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterConstraintWithName) {
             listener.enterAlterConstraintWithName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterConstraintWithName) {
             listener.exitAlterConstraintWithName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterConstraintWithName) {
            return visitor.visitAlterConstraintWithName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableLevelConstraintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public pkUkConstraint(): PkUkConstraintContext | null {
        return this.getRuleContext(0, PkUkConstraintContext);
    }
    public checkConstraint(): CheckConstraintContext | null {
        return this.getRuleContext(0, CheckConstraintContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableLevelConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableLevelConstraint) {
             listener.enterTableLevelConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableLevelConstraint) {
             listener.exitTableLevelConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableLevelConstraint) {
            return visitor.visitTableLevelConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PkUkConstraintContext extends antlr.ParserRuleContext {
    public _pkCols?: ColumnParenthesesListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableConstraintType(): TableConstraintTypeContext {
        return this.getRuleContext(0, TableConstraintTypeContext)!;
    }
    public columnParenthesesList(): ColumnParenthesesListContext {
        return this.getRuleContext(0, ColumnParenthesesListContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_pkUkConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPkUkConstraint) {
             listener.enterPkUkConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPkUkConstraint) {
             listener.exitPkUkConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPkUkConstraint) {
            return visitor.visitPkUkConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CheckConstraintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CHECK(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CHECK, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_checkConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCheckConstraint) {
             listener.enterCheckConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCheckConstraint) {
             listener.exitCheckConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCheckConstraint) {
            return visitor.visitCheckConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateForeignKeyContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public _fkCols?: ColumnParenthesesListContext;
    public _tabName?: TableNameContext;
    public _parCols?: ColumnParenthesesListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FOREIGN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FOREIGN, 0)!;
    }
    public KW_KEY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_KEY, 0)!;
    }
    public KW_REFERENCES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0)!;
    }
    public columnParenthesesList(): ColumnParenthesesListContext[];
    public columnParenthesesList(i: number): ColumnParenthesesListContext | null;
    public columnParenthesesList(i?: number): ColumnParenthesesListContext[] | ColumnParenthesesListContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }

        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public KW_CONSTRAINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    public constraintOptsCreate(): ConstraintOptsCreateContext | null {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createForeignKey;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateForeignKey) {
             listener.enterCreateForeignKey(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateForeignKey) {
             listener.exitCreateForeignKey(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateForeignKey) {
            return visitor.visitCreateForeignKey(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterForeignKeyWithNameContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public _fkCols?: ColumnParenthesesListContext;
    public _tabName?: TableNameContext;
    public _parCols?: ColumnParenthesesListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CONSTRAINT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0)!;
    }
    public KW_FOREIGN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FOREIGN, 0)!;
    }
    public KW_KEY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_KEY, 0)!;
    }
    public KW_REFERENCES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public columnParenthesesList(): ColumnParenthesesListContext[];
    public columnParenthesesList(i: number): ColumnParenthesesListContext | null;
    public columnParenthesesList(i?: number): ColumnParenthesesListContext[] | ColumnParenthesesListContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }

        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public constraintOptsAlter(): ConstraintOptsAlterContext | null {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterForeignKeyWithName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterForeignKeyWithName) {
             listener.enterAlterForeignKeyWithName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterForeignKeyWithName) {
             listener.exitAlterForeignKeyWithName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterForeignKeyWithName) {
            return visitor.visitAlterForeignKeyWithName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedValueElementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public skewedColumnValues(): SkewedColumnValuesContext | null {
        return this.getRuleContext(0, SkewedColumnValuesContext);
    }
    public skewedColumnValuePairList(): SkewedColumnValuePairListContext | null {
        return this.getRuleContext(0, SkewedColumnValuePairListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedValueElement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedValueElement) {
             listener.enterSkewedValueElement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedValueElement) {
             listener.exitSkewedValueElement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedValueElement) {
            return visitor.visitSkewedValueElement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedColumnValuePairListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public skewedColumnValuePair(): SkewedColumnValuePairContext[];
    public skewedColumnValuePair(i: number): SkewedColumnValuePairContext | null;
    public skewedColumnValuePair(i?: number): SkewedColumnValuePairContext[] | SkewedColumnValuePairContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SkewedColumnValuePairContext);
        }

        return this.getRuleContext(i, SkewedColumnValuePairContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedColumnValuePairList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedColumnValuePairList) {
             listener.enterSkewedColumnValuePairList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedColumnValuePairList) {
             listener.exitSkewedColumnValuePairList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedColumnValuePairList) {
            return visitor.visitSkewedColumnValuePairList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedColumnValuePairContext extends antlr.ParserRuleContext {
    public _colValues?: SkewedColumnValuesContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public skewedColumnValues(): SkewedColumnValuesContext {
        return this.getRuleContext(0, SkewedColumnValuesContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedColumnValuePair;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedColumnValuePair) {
             listener.enterSkewedColumnValuePair(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedColumnValuePair) {
             listener.exitSkewedColumnValuePair(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedColumnValuePair) {
            return visitor.visitSkewedColumnValuePair(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedColumnValuesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public skewedColumnValue(): SkewedColumnValueContext[];
    public skewedColumnValue(i: number): SkewedColumnValueContext | null;
    public skewedColumnValue(i?: number): SkewedColumnValueContext[] | SkewedColumnValueContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SkewedColumnValueContext);
        }

        return this.getRuleContext(i, SkewedColumnValueContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedColumnValues;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedColumnValues) {
             listener.enterSkewedColumnValues(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedColumnValues) {
             listener.exitSkewedColumnValues(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedColumnValues) {
            return visitor.visitSkewedColumnValues(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedColumnValueContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public constant(): ConstantContext {
        return this.getRuleContext(0, ConstantContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedColumnValue;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedColumnValue) {
             listener.enterSkewedColumnValue(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedColumnValue) {
             listener.exitSkewedColumnValue(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedColumnValue) {
            return visitor.visitSkewedColumnValue(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedValueLocationElementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public skewedColumnValue(): SkewedColumnValueContext | null {
        return this.getRuleContext(0, SkewedColumnValueContext);
    }
    public skewedColumnValuePair(): SkewedColumnValuePairContext | null {
        return this.getRuleContext(0, SkewedColumnValuePairContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedValueLocationElement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedValueLocationElement) {
             listener.enterSkewedValueLocationElement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedValueLocationElement) {
             listener.exitSkewedValueLocationElement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedValueLocationElement) {
            return visitor.visitSkewedValueLocationElement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class OrderSpecificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ASC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ASC, 0);
    }
    public KW_DESC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DESC, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_orderSpecification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterOrderSpecification) {
             listener.enterOrderSpecification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitOrderSpecification) {
             listener.exitOrderSpecification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitOrderSpecification) {
            return visitor.visitOrderSpecification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class NullOrderingContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_NULLS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_NULLS, 0)!;
    }
    public KW_FIRST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FIRST, 0);
    }
    public KW_LAST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LAST, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_nullOrdering;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterNullOrdering) {
             listener.enterNullOrdering(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitNullOrdering) {
             listener.exitNullOrdering(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitNullOrdering) {
            return visitor.visitNullOrdering(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameOrderContext extends antlr.ParserRuleContext {
    public _orderSpec?: OrderSpecificationContext;
    public _nullSpec?: NullOrderingContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public orderSpecification(): OrderSpecificationContext | null {
        return this.getRuleContext(0, OrderSpecificationContext);
    }
    public nullOrdering(): NullOrderingContext | null {
        return this.getRuleContext(0, NullOrderingContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameOrder;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameOrder) {
             listener.enterColumnNameOrder(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameOrder) {
             listener.exitColumnNameOrder(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameOrder) {
            return visitor.visitColumnNameOrder(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameCommentListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameComment(): ColumnNameCommentContext[];
    public columnNameComment(i: number): ColumnNameCommentContext | null;
    public columnNameComment(i?: number): ColumnNameCommentContext[] | ColumnNameCommentContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameCommentContext);
        }

        return this.getRuleContext(i, ColumnNameCommentContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameCommentList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameCommentList) {
             listener.enterColumnNameCommentList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameCommentList) {
             listener.exitColumnNameCommentList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameCommentList) {
            return visitor.visitColumnNameCommentList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameCommentContext extends antlr.ParserRuleContext {
    public _colName?: ColumnNameCreateContext;
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnNameCreate(): ColumnNameCreateContext {
        return this.getRuleContext(0, ColumnNameCreateContext)!;
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameComment;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameComment) {
             listener.enterColumnNameComment(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameComment) {
             listener.exitColumnNameComment(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameComment) {
            return visitor.visitColumnNameComment(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class OrderSpecificationRewriteContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ASC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ASC, 0);
    }
    public KW_DESC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DESC, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_orderSpecificationRewrite;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterOrderSpecificationRewrite) {
             listener.enterOrderSpecificationRewrite(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitOrderSpecificationRewrite) {
             listener.exitOrderSpecificationRewrite(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitOrderSpecificationRewrite) {
            return visitor.visitOrderSpecificationRewrite(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnRefOrderContext extends antlr.ParserRuleContext {
    public _orderSpec?: OrderSpecificationRewriteContext;
    public _nullSpec?: NullOrderingContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext | null {
        return this.getRuleContext(0, ColumnNameContext);
    }
    public expression(): ExpressionContext | null {
        return this.getRuleContext(0, ExpressionContext);
    }
    public orderSpecificationRewrite(): OrderSpecificationRewriteContext | null {
        return this.getRuleContext(0, OrderSpecificationRewriteContext);
    }
    public nullOrdering(): NullOrderingContext | null {
        return this.getRuleContext(0, NullOrderingContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnRefOrder;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnRefOrder) {
             listener.enterColumnRefOrder(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnRefOrder) {
             listener.exitColumnRefOrder(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnRefOrder) {
            return visitor.visitColumnRefOrder(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameTypeContext extends antlr.ParserRuleContext {
    public _colName?: ColumnNameCreateContext;
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public colType(): ColTypeContext {
        return this.getRuleContext(0, ColTypeContext)!;
    }
    public columnNameCreate(): ColumnNameCreateContext {
        return this.getRuleContext(0, ColumnNameCreateContext)!;
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameType) {
             listener.enterColumnNameType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameType) {
             listener.exitColumnNameType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameType) {
            return visitor.visitColumnNameType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameTypeOrConstraintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableConstraint(): TableConstraintContext | null {
        return this.getRuleContext(0, TableConstraintContext);
    }
    public columnNameTypeConstraint(): ColumnNameTypeConstraintContext | null {
        return this.getRuleContext(0, ColumnNameTypeConstraintContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameTypeOrConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameTypeOrConstraint) {
             listener.enterColumnNameTypeOrConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameTypeOrConstraint) {
             listener.exitColumnNameTypeOrConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameTypeOrConstraint) {
            return visitor.visitColumnNameTypeOrConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableConstraintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public createForeignKey(): CreateForeignKeyContext | null {
        return this.getRuleContext(0, CreateForeignKeyContext);
    }
    public createConstraint(): CreateConstraintContext | null {
        return this.getRuleContext(0, CreateConstraintContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableConstraint) {
             listener.enterTableConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableConstraint) {
             listener.exitTableConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableConstraint) {
            return visitor.visitTableConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameTypeConstraintContext extends antlr.ParserRuleContext {
    public _colName?: ColumnNameCreateContext;
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public colType(): ColTypeContext {
        return this.getRuleContext(0, ColTypeContext)!;
    }
    public columnNameCreate(): ColumnNameCreateContext {
        return this.getRuleContext(0, ColumnNameCreateContext)!;
    }
    public columnConstraint(): ColumnConstraintContext | null {
        return this.getRuleContext(0, ColumnConstraintContext);
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameTypeConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameTypeConstraint) {
             listener.enterColumnNameTypeConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameTypeConstraint) {
             listener.exitColumnNameTypeConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameTypeConstraint) {
            return visitor.visitColumnNameTypeConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnConstraintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public foreignKeyConstraint(): ForeignKeyConstraintContext | null {
        return this.getRuleContext(0, ForeignKeyConstraintContext);
    }
    public colConstraint(): ColConstraintContext | null {
        return this.getRuleContext(0, ColConstraintContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnConstraint) {
             listener.enterColumnConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnConstraint) {
             listener.exitColumnConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnConstraint) {
            return visitor.visitColumnConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ForeignKeyConstraintContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public _tabName?: TableNameContext;
    public _colName?: ColumnNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REFERENCES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public KW_CONSTRAINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    public constraintOptsCreate(): ConstraintOptsCreateContext | null {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_foreignKeyConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterForeignKeyConstraint) {
             listener.enterForeignKeyConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitForeignKeyConstraint) {
             listener.exitForeignKeyConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitForeignKeyConstraint) {
            return visitor.visitForeignKeyConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColConstraintContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnConstraintType(): ColumnConstraintTypeContext {
        return this.getRuleContext(0, ColumnConstraintTypeContext)!;
    }
    public KW_CONSTRAINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    public constraintOptsCreate(): ConstraintOptsCreateContext | null {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_colConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColConstraint) {
             listener.enterColConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColConstraint) {
             listener.exitColConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColConstraint) {
            return visitor.visitColConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterColumnConstraintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public alterForeignKeyConstraint(): AlterForeignKeyConstraintContext | null {
        return this.getRuleContext(0, AlterForeignKeyConstraintContext);
    }
    public alterColConstraint(): AlterColConstraintContext | null {
        return this.getRuleContext(0, AlterColConstraintContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterColumnConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterColumnConstraint) {
             listener.enterAlterColumnConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterColumnConstraint) {
             listener.exitAlterColumnConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterColumnConstraint) {
            return visitor.visitAlterColumnConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterForeignKeyConstraintContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public _tabName?: TableNameContext;
    public _colName?: ColumnNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REFERENCES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public KW_CONSTRAINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    public constraintOptsAlter(): ConstraintOptsAlterContext | null {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterForeignKeyConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterForeignKeyConstraint) {
             listener.enterAlterForeignKeyConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterForeignKeyConstraint) {
             listener.exitAlterForeignKeyConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterForeignKeyConstraint) {
            return visitor.visitAlterForeignKeyConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterColConstraintContext extends antlr.ParserRuleContext {
    public _constraintName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnConstraintType(): ColumnConstraintTypeContext {
        return this.getRuleContext(0, ColumnConstraintTypeContext)!;
    }
    public KW_CONSTRAINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    public constraintOptsAlter(): ConstraintOptsAlterContext | null {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterColConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterColConstraint) {
             listener.enterAlterColConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterColConstraint) {
             listener.exitAlterColConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterColConstraint) {
            return visitor.visitAlterColConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnConstraintTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public KW_NULL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    public KW_DEFAULT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    public defaultVal(): DefaultValContext | null {
        return this.getRuleContext(0, DefaultValContext);
    }
    public checkConstraint(): CheckConstraintContext | null {
        return this.getRuleContext(0, CheckConstraintContext);
    }
    public tableConstraintType(): TableConstraintTypeContext | null {
        return this.getRuleContext(0, TableConstraintTypeContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnConstraintType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnConstraintType) {
             listener.enterColumnConstraintType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnConstraintType) {
             listener.exitColumnConstraintType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnConstraintType) {
            return visitor.visitColumnConstraintType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DefaultValContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public constant(): ConstantContext | null {
        return this.getRuleContext(0, ConstantContext);
    }
    public function_(): Function_Context | null {
        return this.getRuleContext(0, Function_Context);
    }
    public castExpression(): CastExpressionContext | null {
        return this.getRuleContext(0, CastExpressionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_defaultVal;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDefaultVal) {
             listener.enterDefaultVal(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDefaultVal) {
             listener.exitDefaultVal(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDefaultVal) {
            return visitor.visitDefaultVal(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableConstraintTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_PRIMARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PRIMARY, 0);
    }
    public KW_KEY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_KEY, 0);
    }
    public KW_UNIQUE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNIQUE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableConstraintType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableConstraintType) {
             listener.enterTableConstraintType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableConstraintType) {
             listener.exitTableConstraintType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableConstraintType) {
            return visitor.visitTableConstraintType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ConstraintOptsCreateContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public enableValidateSpecification(): EnableValidateSpecificationContext {
        return this.getRuleContext(0, EnableValidateSpecificationContext)!;
    }
    public relySpecification(): RelySpecificationContext | null {
        return this.getRuleContext(0, RelySpecificationContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_constraintOptsCreate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterConstraintOptsCreate) {
             listener.enterConstraintOptsCreate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitConstraintOptsCreate) {
             listener.exitConstraintOptsCreate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitConstraintOptsCreate) {
            return visitor.visitConstraintOptsCreate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ConstraintOptsAlterContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public enableValidateSpecification(): EnableValidateSpecificationContext {
        return this.getRuleContext(0, EnableValidateSpecificationContext)!;
    }
    public relySpecification(): RelySpecificationContext | null {
        return this.getRuleContext(0, RelySpecificationContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_constraintOptsAlter;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterConstraintOptsAlter) {
             listener.enterConstraintOptsAlter(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitConstraintOptsAlter) {
             listener.exitConstraintOptsAlter(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitConstraintOptsAlter) {
            return visitor.visitConstraintOptsAlter(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnNameColonTypeContext extends antlr.ParserRuleContext {
    public _colName?: ColumnNameCreateContext;
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public COLON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.COLON, 0)!;
    }
    public colType(): ColTypeContext {
        return this.getRuleContext(0, ColTypeContext)!;
    }
    public columnNameCreate(): ColumnNameCreateContext {
        return this.getRuleContext(0, ColumnNameCreateContext)!;
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnNameColonType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnNameColonType) {
             listener.enterColumnNameColonType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnNameColonType) {
             listener.exitColumnNameColonType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnNameColonType) {
            return visitor.visitColumnNameColonType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public type(): TypeContext {
        return this.getRuleContext(0, TypeContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_colType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColType) {
             listener.enterColType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColType) {
             listener.exitColType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColType) {
            return visitor.visitColType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColTypeListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public colType(): ColTypeContext[];
    public colType(i: number): ColTypeContext | null;
    public colType(i?: number): ColTypeContext[] | ColTypeContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColTypeContext);
        }

        return this.getRuleContext(i, ColTypeContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_colTypeList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColTypeList) {
             listener.enterColTypeList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColTypeList) {
             listener.exitColTypeList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColTypeList) {
            return visitor.visitColTypeList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public primitiveType(): PrimitiveTypeContext | null {
        return this.getRuleContext(0, PrimitiveTypeContext);
    }
    public listType(): ListTypeContext | null {
        return this.getRuleContext(0, ListTypeContext);
    }
    public structType(): StructTypeContext | null {
        return this.getRuleContext(0, StructTypeContext);
    }
    public mapType(): MapTypeContext | null {
        return this.getRuleContext(0, MapTypeContext);
    }
    public unionType(): UnionTypeContext | null {
        return this.getRuleContext(0, UnionTypeContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_type;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterType) {
             listener.enterType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitType) {
             listener.exitType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitType) {
            return visitor.visitType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrimitiveTypeContext extends antlr.ParserRuleContext {
    public _prec?: Token | null;
    public _scale?: Token | null;
    public _length?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TINYINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TINYINT, 0);
    }
    public KW_SMALLINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SMALLINT, 0);
    }
    public KW_INT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INT, 0);
    }
    public KW_INTEGER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INTEGER, 0);
    }
    public KW_BIGINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BIGINT, 0);
    }
    public KW_BOOLEAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BOOLEAN, 0);
    }
    public KW_FLOAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FLOAT, 0);
    }
    public KW_REAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REAL, 0);
    }
    public KW_DOUBLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DOUBLE, 0);
    }
    public KW_PRECISION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PRECISION, 0);
    }
    public KW_DATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATE, 0);
    }
    public KW_DATETIME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATETIME, 0);
    }
    public KW_TIMESTAMP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0);
    }
    public KW_TIMESTAMPLOCALTZ(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_LOCAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCAL, 0);
    }
    public KW_TIME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TIME, 0);
    }
    public KW_ZONE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ZONE, 0);
    }
    public KW_STRING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STRING, 0);
    }
    public KW_BINARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BINARY, 0);
    }
    public decimal(): DecimalContext | null {
        return this.getRuleContext(0, DecimalContext);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public Number(): antlr.TerminalNode[];
    public Number(i: number): antlr.TerminalNode | null;
    public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.Number);
    	} else {
    		return this.getToken(HiveSqlParser.Number, i);
    	}
    }
    public COMMA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    public KW_VARCHAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VARCHAR, 0);
    }
    public KW_CHAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CHAR, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_primitiveType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrimitiveType) {
             listener.enterPrimitiveType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrimitiveType) {
             listener.exitPrimitiveType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrimitiveType) {
            return visitor.visitPrimitiveType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ListTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ARRAY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ARRAY, 0)!;
    }
    public LESSTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LESSTHAN, 0)!;
    }
    public type(): TypeContext {
        return this.getRuleContext(0, TypeContext)!;
    }
    public GREATERTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_listType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterListType) {
             listener.enterListType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitListType) {
             listener.exitListType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitListType) {
            return visitor.visitListType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class StructTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_STRUCT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_STRUCT, 0)!;
    }
    public LESSTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LESSTHAN, 0)!;
    }
    public columnNameColonTypeList(): ColumnNameColonTypeListContext {
        return this.getRuleContext(0, ColumnNameColonTypeListContext)!;
    }
    public GREATERTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_structType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterStructType) {
             listener.enterStructType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitStructType) {
             listener.exitStructType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitStructType) {
            return visitor.visitStructType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class MapTypeContext extends antlr.ParserRuleContext {
    public _left?: PrimitiveTypeContext;
    public _right?: TypeContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MAP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MAP, 0)!;
    }
    public LESSTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LESSTHAN, 0)!;
    }
    public COMMA(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.COMMA, 0)!;
    }
    public GREATERTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0)!;
    }
    public primitiveType(): PrimitiveTypeContext {
        return this.getRuleContext(0, PrimitiveTypeContext)!;
    }
    public type(): TypeContext {
        return this.getRuleContext(0, TypeContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_mapType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterMapType) {
             listener.enterMapType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitMapType) {
             listener.exitMapType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitMapType) {
            return visitor.visitMapType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UnionTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNIONTYPE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UNIONTYPE, 0)!;
    }
    public LESSTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LESSTHAN, 0)!;
    }
    public colTypeList(): ColTypeListContext {
        return this.getRuleContext(0, ColTypeListContext)!;
    }
    public GREATERTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_unionType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUnionType) {
             listener.enterUnionType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUnionType) {
             listener.exitUnionType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUnionType) {
            return visitor.visitUnionType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SetOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNION, 0);
    }
    public KW_INTERSECT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INTERSECT, 0);
    }
    public KW_EXCEPT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXCEPT, 0);
    }
    public KW_MINUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MINUS, 0);
    }
    public KW_ALL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    public KW_DISTINCT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_setOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSetOperator) {
             listener.enterSetOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSetOperator) {
             listener.exitSetOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSetOperator) {
            return visitor.visitSetOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class QueryStatementExpressionContext extends antlr.ParserRuleContext {
    public _w?: WithClauseContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public queryStatementExpressionBody(): QueryStatementExpressionBodyContext {
        return this.getRuleContext(0, QueryStatementExpressionBodyContext)!;
    }
    public withClause(): WithClauseContext | null {
        return this.getRuleContext(0, WithClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_queryStatementExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterQueryStatementExpression) {
             listener.enterQueryStatementExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitQueryStatementExpression) {
             listener.exitQueryStatementExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitQueryStatementExpression) {
            return visitor.visitQueryStatementExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class QueryStatementExpressionBodyContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public fromStatement(): FromStatementContext | null {
        return this.getRuleContext(0, FromStatementContext);
    }
    public regularBody(): RegularBodyContext | null {
        return this.getRuleContext(0, RegularBodyContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_queryStatementExpressionBody;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterQueryStatementExpressionBody) {
             listener.enterQueryStatementExpressionBody(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitQueryStatementExpressionBody) {
             listener.exitQueryStatementExpressionBody(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitQueryStatementExpressionBody) {
            return visitor.visitQueryStatementExpressionBody(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WithClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WITH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WITH, 0)!;
    }
    public cteStatement(): CteStatementContext[];
    public cteStatement(i: number): CteStatementContext | null;
    public cteStatement(i?: number): CteStatementContext[] | CteStatementContext | null {
        if (i === undefined) {
            return this.getRuleContexts(CteStatementContext);
        }

        return this.getRuleContext(i, CteStatementContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_withClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWithClause) {
             listener.enterWithClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWithClause) {
             listener.exitWithClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWithClause) {
            return visitor.visitWithClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CteStatementContext extends antlr.ParserRuleContext {
    public _colAliases?: ColumnNameListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public queryStatementExpression(): QueryStatementExpressionContext {
        return this.getRuleContext(0, QueryStatementExpressionContext)!;
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public columnNameList(): ColumnNameListContext | null {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_cteStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCteStatement) {
             listener.enterCteStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCteStatement) {
             listener.exitCteStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCteStatement) {
            return visitor.visitCteStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FromStatementContext extends antlr.ParserRuleContext {
    public _u?: SetOperatorContext;
    public _r?: SingleFromStatementContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public singleFromStatement(): SingleFromStatementContext[];
    public singleFromStatement(i: number): SingleFromStatementContext | null;
    public singleFromStatement(i?: number): SingleFromStatementContext[] | SingleFromStatementContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SingleFromStatementContext);
        }

        return this.getRuleContext(i, SingleFromStatementContext);
    }
    public setOperator(): SetOperatorContext[];
    public setOperator(i: number): SetOperatorContext | null;
    public setOperator(i?: number): SetOperatorContext[] | SetOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SetOperatorContext);
        }

        return this.getRuleContext(i, SetOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_fromStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFromStatement) {
             listener.enterFromStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFromStatement) {
             listener.exitFromStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFromStatement) {
            return visitor.visitFromStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SingleFromStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_singleFromStatement;
    }
    public override copyFrom(ctx: SingleFromStatementContext): void {
        super.copyFrom(ctx);
    }
}
export class FromSelectStmtContext extends SingleFromStatementContext {
    public constructor(ctx: SingleFromStatementContext) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    public fromClause(): FromClauseContext {
        return this.getRuleContext(0, FromClauseContext)!;
    }
    public selectClause(): SelectClauseContext {
        return this.getRuleContext(0, SelectClauseContext)!;
    }
    public lateralView(): LateralViewContext | null {
        return this.getRuleContext(0, LateralViewContext);
    }
    public whereClause(): WhereClauseContext | null {
        return this.getRuleContext(0, WhereClauseContext);
    }
    public groupByClause(): GroupByClauseContext | null {
        return this.getRuleContext(0, GroupByClauseContext);
    }
    public havingClause(): HavingClauseContext | null {
        return this.getRuleContext(0, HavingClauseContext);
    }
    public window_clause(): Window_clauseContext | null {
        return this.getRuleContext(0, Window_clauseContext);
    }
    public qualifyClause(): QualifyClauseContext | null {
        return this.getRuleContext(0, QualifyClauseContext);
    }
    public orderByClause(): OrderByClauseContext | null {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    public clusterByClause(): ClusterByClauseContext | null {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    public distributeByClause(): DistributeByClauseContext | null {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    public sortByClause(): SortByClauseContext | null {
        return this.getRuleContext(0, SortByClauseContext);
    }
    public limitClause(): LimitClauseContext | null {
        return this.getRuleContext(0, LimitClauseContext);
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFromSelectStmt) {
             listener.enterFromSelectStmt(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFromSelectStmt) {
             listener.exitFromSelectStmt(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFromSelectStmt) {
            return visitor.visitFromSelectStmt(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}
export class FromInsertStmtContext extends SingleFromStatementContext {
    public constructor(ctx: SingleFromStatementContext) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    public fromClause(): FromClauseContext {
        return this.getRuleContext(0, FromClauseContext)!;
    }
    public insertClause(): InsertClauseContext {
        return this.getRuleContext(0, InsertClauseContext)!;
    }
    public selectClause(): SelectClauseContext {
        return this.getRuleContext(0, SelectClauseContext)!;
    }
    public lateralView(): LateralViewContext | null {
        return this.getRuleContext(0, LateralViewContext);
    }
    public whereClause(): WhereClauseContext | null {
        return this.getRuleContext(0, WhereClauseContext);
    }
    public groupByClause(): GroupByClauseContext | null {
        return this.getRuleContext(0, GroupByClauseContext);
    }
    public havingClause(): HavingClauseContext | null {
        return this.getRuleContext(0, HavingClauseContext);
    }
    public window_clause(): Window_clauseContext | null {
        return this.getRuleContext(0, Window_clauseContext);
    }
    public qualifyClause(): QualifyClauseContext | null {
        return this.getRuleContext(0, QualifyClauseContext);
    }
    public orderByClause(): OrderByClauseContext | null {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    public clusterByClause(): ClusterByClauseContext | null {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    public distributeByClause(): DistributeByClauseContext | null {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    public sortByClause(): SortByClauseContext | null {
        return this.getRuleContext(0, SortByClauseContext);
    }
    public limitClause(): LimitClauseContext | null {
        return this.getRuleContext(0, LimitClauseContext);
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFromInsertStmt) {
             listener.enterFromInsertStmt(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFromInsertStmt) {
             listener.exitFromInsertStmt(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFromInsertStmt) {
            return visitor.visitFromInsertStmt(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RegularBodyContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_regularBody;
    }
    public override copyFrom(ctx: RegularBodyContext): void {
        super.copyFrom(ctx);
    }
}
export class InsertStmtContext extends RegularBodyContext {
    public _i?: InsertClauseContext;
    public _s?: SelectStatementContext;
    public constructor(ctx: RegularBodyContext) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    public insertClause(): InsertClauseContext {
        return this.getRuleContext(0, InsertClauseContext)!;
    }
    public selectStatement(): SelectStatementContext {
        return this.getRuleContext(0, SelectStatementContext)!;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterInsertStmt) {
             listener.enterInsertStmt(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitInsertStmt) {
             listener.exitInsertStmt(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitInsertStmt) {
            return visitor.visitInsertStmt(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectStmtContext extends RegularBodyContext {
    public constructor(ctx: RegularBodyContext) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    public selectStatement(): SelectStatementContext {
        return this.getRuleContext(0, SelectStatementContext)!;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectStmt) {
             listener.enterSelectStmt(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectStmt) {
             listener.exitSelectStmt(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectStmt) {
            return visitor.visitSelectStmt(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AtomSelectStatementContext extends antlr.ParserRuleContext {
    public _s?: SelectClauseContext;
    public _f?: FromClauseContext;
    public _w?: WhereClauseContext;
    public _g?: GroupByClauseContext;
    public _h?: HavingClauseContext;
    public _win?: Window_clauseContext;
    public _q?: QualifyClauseContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public selectClause(): SelectClauseContext | null {
        return this.getRuleContext(0, SelectClauseContext);
    }
    public fromClause(): FromClauseContext | null {
        return this.getRuleContext(0, FromClauseContext);
    }
    public whereClause(): WhereClauseContext | null {
        return this.getRuleContext(0, WhereClauseContext);
    }
    public groupByClause(): GroupByClauseContext | null {
        return this.getRuleContext(0, GroupByClauseContext);
    }
    public havingClause(): HavingClauseContext | null {
        return this.getRuleContext(0, HavingClauseContext);
    }
    public window_clause(): Window_clauseContext | null {
        return this.getRuleContext(0, Window_clauseContext);
    }
    public qualifyClause(): QualifyClauseContext | null {
        return this.getRuleContext(0, QualifyClauseContext);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public selectStatement(): SelectStatementContext | null {
        return this.getRuleContext(0, SelectStatementContext);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public valuesSource(): ValuesSourceContext | null {
        return this.getRuleContext(0, ValuesSourceContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_atomSelectStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAtomSelectStatement) {
             listener.enterAtomSelectStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAtomSelectStatement) {
             listener.exitAtomSelectStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAtomSelectStatement) {
            return visitor.visitAtomSelectStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectStatementContext extends antlr.ParserRuleContext {
    public _a?: AtomSelectStatementContext;
    public _set_?: SetOpSelectStatementContext;
    public _o?: OrderByClauseContext;
    public _c?: ClusterByClauseContext;
    public _d?: DistributeByClauseContext;
    public _sort?: SortByClauseContext;
    public _l?: LimitClauseContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public atomSelectStatement(): AtomSelectStatementContext {
        return this.getRuleContext(0, AtomSelectStatementContext)!;
    }
    public setOpSelectStatement(): SetOpSelectStatementContext | null {
        return this.getRuleContext(0, SetOpSelectStatementContext);
    }
    public orderByClause(): OrderByClauseContext | null {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    public clusterByClause(): ClusterByClauseContext | null {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    public distributeByClause(): DistributeByClauseContext | null {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    public sortByClause(): SortByClauseContext | null {
        return this.getRuleContext(0, SortByClauseContext);
    }
    public limitClause(): LimitClauseContext | null {
        return this.getRuleContext(0, LimitClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectStatement) {
             listener.enterSelectStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectStatement) {
             listener.exitSelectStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectStatement) {
            return visitor.visitSelectStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SetOpSelectStatementContext extends antlr.ParserRuleContext {
    public _u?: SetOperatorContext;
    public _b?: AtomSelectStatementContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public setOperator(): SetOperatorContext[];
    public setOperator(i: number): SetOperatorContext | null;
    public setOperator(i?: number): SetOperatorContext[] | SetOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SetOperatorContext);
        }

        return this.getRuleContext(i, SetOperatorContext);
    }
    public atomSelectStatement(): AtomSelectStatementContext[];
    public atomSelectStatement(i: number): AtomSelectStatementContext | null;
    public atomSelectStatement(i?: number): AtomSelectStatementContext[] | AtomSelectStatementContext | null {
        if (i === undefined) {
            return this.getRuleContexts(AtomSelectStatementContext);
        }

        return this.getRuleContext(i, AtomSelectStatementContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_setOpSelectStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSetOpSelectStatement) {
             listener.enterSetOpSelectStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSetOpSelectStatement) {
             listener.exitSetOpSelectStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSetOpSelectStatement) {
            return visitor.visitSetOpSelectStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectStatementWithCTEContext extends antlr.ParserRuleContext {
    public _w?: WithClauseContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public selectStatement(): SelectStatementContext {
        return this.getRuleContext(0, SelectStatementContext)!;
    }
    public withClause(): WithClauseContext | null {
        return this.getRuleContext(0, WithClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectStatementWithCTE;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectStatementWithCTE) {
             listener.enterSelectStatementWithCTE(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectStatementWithCTE) {
             listener.exitSelectStatementWithCTE(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectStatementWithCTE) {
            return visitor.visitSelectStatementWithCTE(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class InsertClauseContext extends antlr.ParserRuleContext {
    public _targetCols?: ColumnNameListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_INSERT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INSERT, 0)!;
    }
    public KW_OVERWRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    public destination(): DestinationContext | null {
        return this.getRuleContext(0, DestinationContext);
    }
    public KW_INTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    public tableOrPartition(): TableOrPartitionContext | null {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public columnNameList(): ColumnNameListContext | null {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_insertClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterInsertClause) {
             listener.enterInsertClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitInsertClause) {
             listener.exitInsertClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitInsertClause) {
            return visitor.visitInsertClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DestinationContext extends antlr.ParserRuleContext {
    public _local?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DIRECTORY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DIRECTORY, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public tableRowFormat(): TableRowFormatContext | null {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    public tableFileFormat(): TableFileFormatContext | null {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    public KW_LOCAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCAL, 0);
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public tableOrPartition(): TableOrPartitionContext | null {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_destination;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDestination) {
             listener.enterDestination(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDestination) {
             listener.exitDestination(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDestination) {
            return visitor.visitDestination(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LimitClauseContext extends antlr.ParserRuleContext {
    public _offset?: Token | null;
    public _num?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LIMIT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LIMIT, 0)!;
    }
    public KW_OFFSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OFFSET, 0);
    }
    public Number(): antlr.TerminalNode[];
    public Number(i: number): antlr.TerminalNode | null;
    public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.Number);
    	} else {
    		return this.getToken(HiveSqlParser.Number, i);
    	}
    }
    public COMMA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_limitClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLimitClause) {
             listener.enterLimitClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLimitClause) {
             listener.exitLimitClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLimitClause) {
            return visitor.visitLimitClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DeleteStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DELETE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DELETE, 0)!;
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public whereClause(): WhereClauseContext | null {
        return this.getRuleContext(0, WhereClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_deleteStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDeleteStatement) {
             listener.enterDeleteStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDeleteStatement) {
             listener.exitDeleteStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDeleteStatement) {
            return visitor.visitDeleteStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnAssignmentClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public EQUAL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EQUAL, 0)!;
    }
    public precedencePlusExpressionOrDefault(): PrecedencePlusExpressionOrDefaultContext {
        return this.getRuleContext(0, PrecedencePlusExpressionOrDefaultContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnAssignmentClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnAssignmentClause) {
             listener.enterColumnAssignmentClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnAssignmentClause) {
             listener.exitColumnAssignmentClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnAssignmentClause) {
            return visitor.visitColumnAssignmentClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedencePlusExpressionOrDefaultContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public defaultValue(): DefaultValueContext | null {
        return this.getRuleContext(0, DefaultValueContext);
    }
    public precedencePlusExpression(): PrecedencePlusExpressionContext | null {
        return this.getRuleContext(0, PrecedencePlusExpressionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedencePlusExpressionOrDefault;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedencePlusExpressionOrDefault) {
             listener.enterPrecedencePlusExpressionOrDefault(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedencePlusExpressionOrDefault) {
             listener.exitPrecedencePlusExpressionOrDefault(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedencePlusExpressionOrDefault) {
            return visitor.visitPrecedencePlusExpressionOrDefault(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SetColumnsClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public columnAssignmentClause(): ColumnAssignmentClauseContext[];
    public columnAssignmentClause(i: number): ColumnAssignmentClauseContext | null;
    public columnAssignmentClause(i?: number): ColumnAssignmentClauseContext[] | ColumnAssignmentClauseContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnAssignmentClauseContext);
        }

        return this.getRuleContext(i, ColumnAssignmentClauseContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_setColumnsClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSetColumnsClause) {
             listener.enterSetColumnsClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSetColumnsClause) {
             listener.exitSetColumnsClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSetColumnsClause) {
            return visitor.visitSetColumnsClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UpdateStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UPDATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public setColumnsClause(): SetColumnsClauseContext {
        return this.getRuleContext(0, SetColumnsClauseContext)!;
    }
    public whereClause(): WhereClauseContext | null {
        return this.getRuleContext(0, WhereClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_updateStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUpdateStatement) {
             listener.enterUpdateStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUpdateStatement) {
             listener.exitUpdateStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUpdateStatement) {
            return visitor.visitUpdateStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SqlTransactionStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public startTransactionStatement(): StartTransactionStatementContext | null {
        return this.getRuleContext(0, StartTransactionStatementContext);
    }
    public commitStatement(): CommitStatementContext | null {
        return this.getRuleContext(0, CommitStatementContext);
    }
    public rollbackStatement(): RollbackStatementContext | null {
        return this.getRuleContext(0, RollbackStatementContext);
    }
    public setAutoCommitStatement(): SetAutoCommitStatementContext | null {
        return this.getRuleContext(0, SetAutoCommitStatementContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_sqlTransactionStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSqlTransactionStatement) {
             listener.enterSqlTransactionStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSqlTransactionStatement) {
             listener.exitSqlTransactionStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSqlTransactionStatement) {
            return visitor.visitSqlTransactionStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class StartTransactionStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_START(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_START, 0)!;
    }
    public KW_TRANSACTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TRANSACTION, 0)!;
    }
    public transactionMode(): TransactionModeContext[];
    public transactionMode(i: number): TransactionModeContext | null;
    public transactionMode(i?: number): TransactionModeContext[] | TransactionModeContext | null {
        if (i === undefined) {
            return this.getRuleContexts(TransactionModeContext);
        }

        return this.getRuleContext(i, TransactionModeContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_startTransactionStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterStartTransactionStatement) {
             listener.enterStartTransactionStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitStartTransactionStatement) {
             listener.exitStartTransactionStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitStartTransactionStatement) {
            return visitor.visitStartTransactionStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TransactionModeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public isolationLevel(): IsolationLevelContext | null {
        return this.getRuleContext(0, IsolationLevelContext);
    }
    public transactionAccessMode(): TransactionAccessModeContext | null {
        return this.getRuleContext(0, TransactionAccessModeContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_transactionMode;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTransactionMode) {
             listener.enterTransactionMode(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTransactionMode) {
             listener.exitTransactionMode(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTransactionMode) {
            return visitor.visitTransactionMode(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TransactionAccessModeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_READ(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_READ, 0)!;
    }
    public KW_ONLY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ONLY, 0);
    }
    public KW_WRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WRITE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_transactionAccessMode;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTransactionAccessMode) {
             listener.enterTransactionAccessMode(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTransactionAccessMode) {
             listener.exitTransactionAccessMode(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTransactionAccessMode) {
            return visitor.visitTransactionAccessMode(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IsolationLevelContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ISOLATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ISOLATION, 0)!;
    }
    public KW_LEVEL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LEVEL, 0)!;
    }
    public levelOfIsolation(): LevelOfIsolationContext {
        return this.getRuleContext(0, LevelOfIsolationContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_isolationLevel;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIsolationLevel) {
             listener.enterIsolationLevel(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIsolationLevel) {
             listener.exitIsolationLevel(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIsolationLevel) {
            return visitor.visitIsolationLevel(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LevelOfIsolationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SNAPSHOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SNAPSHOT, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_levelOfIsolation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLevelOfIsolation) {
             listener.enterLevelOfIsolation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLevelOfIsolation) {
             listener.exitLevelOfIsolation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLevelOfIsolation) {
            return visitor.visitLevelOfIsolation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CommitStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COMMIT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COMMIT, 0)!;
    }
    public KW_WORK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WORK, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_commitStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCommitStatement) {
             listener.enterCommitStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCommitStatement) {
             listener.exitCommitStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCommitStatement) {
            return visitor.visitCommitStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RollbackStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ROLLBACK(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROLLBACK, 0)!;
    }
    public KW_WORK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WORK, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rollbackStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRollbackStatement) {
             listener.enterRollbackStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRollbackStatement) {
             listener.exitRollbackStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRollbackStatement) {
            return visitor.visitRollbackStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SetAutoCommitStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_AUTOCOMMIT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AUTOCOMMIT, 0)!;
    }
    public booleanValueTok(): BooleanValueTokContext {
        return this.getRuleContext(0, BooleanValueTokContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_setAutoCommitStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSetAutoCommitStatement) {
             listener.enterSetAutoCommitStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSetAutoCommitStatement) {
             listener.exitSetAutoCommitStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSetAutoCommitStatement) {
            return visitor.visitSetAutoCommitStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AbortTransactionStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ABORT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ABORT, 0)!;
    }
    public KW_TRANSACTIONS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0)!;
    }
    public Number(): antlr.TerminalNode[];
    public Number(i: number): antlr.TerminalNode | null;
    public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.Number);
    	} else {
    		return this.getToken(HiveSqlParser.Number, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_abortTransactionStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAbortTransactionStatement) {
             listener.enterAbortTransactionStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAbortTransactionStatement) {
             listener.exitAbortTransactionStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAbortTransactionStatement) {
            return visitor.visitAbortTransactionStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AbortCompactionStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ABORT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ABORT, 0)!;
    }
    public KW_COMPACTIONS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0)!;
    }
    public Number(): antlr.TerminalNode[];
    public Number(i: number): antlr.TerminalNode | null;
    public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.Number);
    	} else {
    		return this.getToken(HiveSqlParser.Number, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_abortCompactionStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAbortCompactionStatement) {
             listener.enterAbortCompactionStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAbortCompactionStatement) {
             listener.exitAbortCompactionStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAbortCompactionStatement) {
            return visitor.visitAbortCompactionStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class MergeStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MERGE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MERGE, 0)!;
    }
    public KW_INTO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INTO, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public KW_USING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_USING, 0)!;
    }
    public joinSourcePart(): JoinSourcePartContext {
        return this.getRuleContext(0, JoinSourcePartContext)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public whenClauses(): WhenClausesContext {
        return this.getRuleContext(0, WhenClausesContext)!;
    }
    public QUERY_HINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.QUERY_HINT, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_mergeStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterMergeStatement) {
             listener.enterMergeStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitMergeStatement) {
             listener.exitMergeStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitMergeStatement) {
            return visitor.visitMergeStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WhenClausesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public whenMatchedAndClause(): WhenMatchedAndClauseContext[];
    public whenMatchedAndClause(i: number): WhenMatchedAndClauseContext | null;
    public whenMatchedAndClause(i?: number): WhenMatchedAndClauseContext[] | WhenMatchedAndClauseContext | null {
        if (i === undefined) {
            return this.getRuleContexts(WhenMatchedAndClauseContext);
        }

        return this.getRuleContext(i, WhenMatchedAndClauseContext);
    }
    public whenMatchedThenClause(): WhenMatchedThenClauseContext[];
    public whenMatchedThenClause(i: number): WhenMatchedThenClauseContext | null;
    public whenMatchedThenClause(i?: number): WhenMatchedThenClauseContext[] | WhenMatchedThenClauseContext | null {
        if (i === undefined) {
            return this.getRuleContexts(WhenMatchedThenClauseContext);
        }

        return this.getRuleContext(i, WhenMatchedThenClauseContext);
    }
    public whenNotMatchedClause(): WhenNotMatchedClauseContext | null {
        return this.getRuleContext(0, WhenNotMatchedClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_whenClauses;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWhenClauses) {
             listener.enterWhenClauses(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWhenClauses) {
             listener.exitWhenClauses(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWhenClauses) {
            return visitor.visitWhenClauses(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WhenNotMatchedClauseContext extends antlr.ParserRuleContext {
    public _targetCols?: ColumnParenthesesListContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WHEN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WHEN, 0)!;
    }
    public KW_NOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_NOT, 0)!;
    }
    public KW_MATCHED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0)!;
    }
    public KW_THEN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_THEN, 0)!;
    }
    public KW_INSERT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INSERT, 0)!;
    }
    public KW_VALUES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_VALUES, 0)!;
    }
    public valueRowConstructor(): ValueRowConstructorContext {
        return this.getRuleContext(0, ValueRowConstructorContext)!;
    }
    public KW_AND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    public expression(): ExpressionContext | null {
        return this.getRuleContext(0, ExpressionContext);
    }
    public columnParenthesesList(): ColumnParenthesesListContext | null {
        return this.getRuleContext(0, ColumnParenthesesListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_whenNotMatchedClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWhenNotMatchedClause) {
             listener.enterWhenNotMatchedClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWhenNotMatchedClause) {
             listener.exitWhenNotMatchedClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWhenNotMatchedClause) {
            return visitor.visitWhenNotMatchedClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WhenMatchedAndClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WHEN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WHEN, 0)!;
    }
    public KW_MATCHED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0)!;
    }
    public KW_AND(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AND, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public KW_THEN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_THEN, 0)!;
    }
    public updateOrDelete(): UpdateOrDeleteContext {
        return this.getRuleContext(0, UpdateOrDeleteContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_whenMatchedAndClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWhenMatchedAndClause) {
             listener.enterWhenMatchedAndClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWhenMatchedAndClause) {
             listener.exitWhenMatchedAndClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWhenMatchedAndClause) {
            return visitor.visitWhenMatchedAndClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WhenMatchedThenClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WHEN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WHEN, 0)!;
    }
    public KW_MATCHED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0)!;
    }
    public KW_THEN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_THEN, 0)!;
    }
    public updateOrDelete(): UpdateOrDeleteContext {
        return this.getRuleContext(0, UpdateOrDeleteContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_whenMatchedThenClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWhenMatchedThenClause) {
             listener.enterWhenMatchedThenClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWhenMatchedThenClause) {
             listener.exitWhenMatchedThenClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWhenMatchedThenClause) {
            return visitor.visitWhenMatchedThenClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UpdateOrDeleteContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UPDATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    public setColumnsClause(): SetColumnsClauseContext | null {
        return this.getRuleContext(0, SetColumnsClauseContext);
    }
    public KW_DELETE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DELETE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_updateOrDelete;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUpdateOrDelete) {
             listener.enterUpdateOrDelete(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUpdateOrDelete) {
             listener.exitUpdateOrDelete(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUpdateOrDelete) {
            return visitor.visitUpdateOrDelete(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class KillQueryStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_KILL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_KILL, 0)!;
    }
    public KW_QUERY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_QUERY, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_killQueryStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterKillQueryStatement) {
             listener.enterKillQueryStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitKillQueryStatement) {
             listener.exitKillQueryStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitKillQueryStatement) {
            return visitor.visitKillQueryStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CompactionIdContext extends antlr.ParserRuleContext {
    public _compactId?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COMPACT_ID(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COMPACT_ID, 0)!;
    }
    public EQUAL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EQUAL, 0)!;
    }
    public Number(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.Number, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_compactionId;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCompactionId) {
             listener.enterCompactionId(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCompactionId) {
             listener.exitCompactionId(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCompactionId) {
            return visitor.visitCompactionId(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CompactionPoolContext extends antlr.ParserRuleContext {
    public _poolName?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_POOL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_POOL, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_compactionPool;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCompactionPool) {
             listener.enterCompactionPool(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCompactionPool) {
             listener.exitCompactionPool(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCompactionPool) {
            return visitor.visitCompactionPool(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CompactionTypeContext extends antlr.ParserRuleContext {
    public _compactType?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TYPE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TYPE, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_compactionType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCompactionType) {
             listener.enterCompactionType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCompactionType) {
             listener.exitCompactionType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCompactionType) {
            return visitor.visitCompactionType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CompactionStatusContext extends antlr.ParserRuleContext {
    public _status?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_STATUS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_STATUS, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_compactionStatus;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCompactionStatus) {
             listener.enterCompactionStatus(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCompactionStatus) {
             listener.exitCompactionStatus(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCompactionStatus) {
            return visitor.visitCompactionStatus(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementContext extends antlr.ParserRuleContext {
    public _tableNameTree?: ViewNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALTER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ALTER, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public tableName(): TableNameContext | null {
        return this.getRuleContext(0, TableNameContext);
    }
    public alterTableStatementSuffix(): AlterTableStatementSuffixContext | null {
        return this.getRuleContext(0, AlterTableStatementSuffixContext);
    }
    public KW_VIEW(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    public viewName(): ViewNameContext | null {
        return this.getRuleContext(0, ViewNameContext);
    }
    public alterViewStatementSuffix(): AlterViewStatementSuffixContext | null {
        return this.getRuleContext(0, AlterViewStatementSuffixContext);
    }
    public KW_MATERIALIZED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    public alterMaterializedViewStatementSuffix(): AlterMaterializedViewStatementSuffixContext | null {
        return this.getRuleContext(0, AlterMaterializedViewStatementSuffixContext);
    }
    public db_schema(): Db_schemaContext | null {
        return this.getRuleContext(0, Db_schemaContext);
    }
    public alterDatabaseStatementSuffix(): AlterDatabaseStatementSuffixContext | null {
        return this.getRuleContext(0, AlterDatabaseStatementSuffixContext);
    }
    public KW_DATACONNECTOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0);
    }
    public alterDataConnectorStatementSuffix(): AlterDataConnectorStatementSuffixContext | null {
        return this.getRuleContext(0, AlterDataConnectorStatementSuffixContext);
    }
    public KW_INDEX(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    public alterIndexStatementSuffix(): AlterIndexStatementSuffixContext | null {
        return this.getRuleContext(0, AlterIndexStatementSuffixContext);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatement) {
             listener.enterAlterStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatement) {
             listener.exitAlterStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatement) {
            return visitor.visitAlterStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterTableStatementSuffixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public alterStatementSuffixRename(): AlterStatementSuffixRenameContext | null {
        return this.getRuleContext(0, AlterStatementSuffixRenameContext);
    }
    public alterStatementSuffixRecoverPartitions(): AlterStatementSuffixRecoverPartitionsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixRecoverPartitionsContext);
    }
    public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixDropPartitionsContext);
    }
    public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixAddPartitionsContext);
    }
    public alterStatementSuffixTouch(): AlterStatementSuffixTouchContext | null {
        return this.getRuleContext(0, AlterStatementSuffixTouchContext);
    }
    public alterStatementSuffixArchive(): AlterStatementSuffixArchiveContext | null {
        return this.getRuleContext(0, AlterStatementSuffixArchiveContext);
    }
    public alterStatementSuffixUnArchive(): AlterStatementSuffixUnArchiveContext | null {
        return this.getRuleContext(0, AlterStatementSuffixUnArchiveContext);
    }
    public alterStatementSuffixProperties(): AlterStatementSuffixPropertiesContext | null {
        return this.getRuleContext(0, AlterStatementSuffixPropertiesContext);
    }
    public alterStatementSuffixSkewedby(): AlterStatementSuffixSkewedbyContext | null {
        return this.getRuleContext(0, AlterStatementSuffixSkewedbyContext);
    }
    public alterStatementSuffixExchangePartition(): AlterStatementSuffixExchangePartitionContext | null {
        return this.getRuleContext(0, AlterStatementSuffixExchangePartitionContext);
    }
    public alterStatementPartitionKeyType(): AlterStatementPartitionKeyTypeContext | null {
        return this.getRuleContext(0, AlterStatementPartitionKeyTypeContext);
    }
    public alterStatementSuffixDropConstraint(): AlterStatementSuffixDropConstraintContext | null {
        return this.getRuleContext(0, AlterStatementSuffixDropConstraintContext);
    }
    public alterStatementSuffixAddConstraint(): AlterStatementSuffixAddConstraintContext | null {
        return this.getRuleContext(0, AlterStatementSuffixAddConstraintContext);
    }
    public alterTblPartitionStatementSuffix(): AlterTblPartitionStatementSuffixContext | null {
        return this.getRuleContext(0, AlterTblPartitionStatementSuffixContext);
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public alterStatementSuffixSetOwner(): AlterStatementSuffixSetOwnerContext | null {
        return this.getRuleContext(0, AlterStatementSuffixSetOwnerContext);
    }
    public alterStatementSuffixSetPartSpec(): AlterStatementSuffixSetPartSpecContext | null {
        return this.getRuleContext(0, AlterStatementSuffixSetPartSpecContext);
    }
    public alterStatementSuffixExecute(): AlterStatementSuffixExecuteContext | null {
        return this.getRuleContext(0, AlterStatementSuffixExecuteContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterTableStatementSuffix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterTableStatementSuffix) {
             listener.enterAlterTableStatementSuffix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterTableStatementSuffix) {
             listener.exitAlterTableStatementSuffix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterTableStatementSuffix) {
            return visitor.visitAlterTableStatementSuffix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterTblPartitionStatementSuffixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public alterStatementSuffixFileFormat(): AlterStatementSuffixFileFormatContext | null {
        return this.getRuleContext(0, AlterStatementSuffixFileFormatContext);
    }
    public alterStatementSuffixLocation(): AlterStatementSuffixLocationContext | null {
        return this.getRuleContext(0, AlterStatementSuffixLocationContext);
    }
    public alterStatementSuffixMergeFiles(): AlterStatementSuffixMergeFilesContext | null {
        return this.getRuleContext(0, AlterStatementSuffixMergeFilesContext);
    }
    public alterStatementSuffixSerdeProperties(): AlterStatementSuffixSerdePropertiesContext | null {
        return this.getRuleContext(0, AlterStatementSuffixSerdePropertiesContext);
    }
    public alterStatementSuffixRenamePart(): AlterStatementSuffixRenamePartContext | null {
        return this.getRuleContext(0, AlterStatementSuffixRenamePartContext);
    }
    public alterStatementSuffixBucketNum(): AlterStatementSuffixBucketNumContext | null {
        return this.getRuleContext(0, AlterStatementSuffixBucketNumContext);
    }
    public alterTblPartitionStatementSuffixSkewedLocation(): AlterTblPartitionStatementSuffixSkewedLocationContext | null {
        return this.getRuleContext(0, AlterTblPartitionStatementSuffixSkewedLocationContext);
    }
    public alterStatementSuffixClusterbySortby(): AlterStatementSuffixClusterbySortbyContext | null {
        return this.getRuleContext(0, AlterStatementSuffixClusterbySortbyContext);
    }
    public alterStatementSuffixCompact(): AlterStatementSuffixCompactContext | null {
        return this.getRuleContext(0, AlterStatementSuffixCompactContext);
    }
    public alterStatementSuffixUpdateStatsCol(): AlterStatementSuffixUpdateStatsColContext | null {
        return this.getRuleContext(0, AlterStatementSuffixUpdateStatsColContext);
    }
    public alterStatementSuffixUpdateStats(): AlterStatementSuffixUpdateStatsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixUpdateStatsContext);
    }
    public alterStatementSuffixRenameCol(): AlterStatementSuffixRenameColContext | null {
        return this.getRuleContext(0, AlterStatementSuffixRenameColContext);
    }
    public alterStatementSuffixAddCol(): AlterStatementSuffixAddColContext | null {
        return this.getRuleContext(0, AlterStatementSuffixAddColContext);
    }
    public alterStatementSuffixUpdateColumns(): AlterStatementSuffixUpdateColumnsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixUpdateColumnsContext);
    }
    public alterStatementSuffixProtections(): AlterStatementSuffixProtectionsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixProtectionsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterTblPartitionStatementSuffix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterTblPartitionStatementSuffix) {
             listener.enterAlterTblPartitionStatementSuffix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterTblPartitionStatementSuffix) {
             listener.exitAlterTblPartitionStatementSuffix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterTblPartitionStatementSuffix) {
            return visitor.visitAlterTblPartitionStatementSuffix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementPartitionKeyTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_PARTITION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0)!;
    }
    public KW_COLUMN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COLUMN, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public columnNameType(): ColumnNameTypeContext {
        return this.getRuleContext(0, ColumnNameTypeContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementPartitionKeyType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementPartitionKeyType) {
             listener.enterAlterStatementPartitionKeyType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementPartitionKeyType) {
             listener.exitAlterStatementPartitionKeyType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementPartitionKeyType) {
            return visitor.visitAlterStatementPartitionKeyType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterViewStatementSuffixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public alterViewSuffixProperties(): AlterViewSuffixPropertiesContext | null {
        return this.getRuleContext(0, AlterViewSuffixPropertiesContext);
    }
    public alterStatementSuffixRename(): AlterStatementSuffixRenameContext | null {
        return this.getRuleContext(0, AlterStatementSuffixRenameContext);
    }
    public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixAddPartitionsContext);
    }
    public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext | null {
        return this.getRuleContext(0, AlterStatementSuffixDropPartitionsContext);
    }
    public selectStatementWithCTE(): SelectStatementWithCTEContext | null {
        return this.getRuleContext(0, SelectStatementWithCTEContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterViewStatementSuffix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterViewStatementSuffix) {
             listener.enterAlterViewStatementSuffix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterViewStatementSuffix) {
             listener.exitAlterViewStatementSuffix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterViewStatementSuffix) {
            return visitor.visitAlterViewStatementSuffix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterMaterializedViewStatementSuffixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public alterMaterializedViewSuffixRewrite(): AlterMaterializedViewSuffixRewriteContext | null {
        return this.getRuleContext(0, AlterMaterializedViewSuffixRewriteContext);
    }
    public alterMaterializedViewSuffixRebuild(): AlterMaterializedViewSuffixRebuildContext | null {
        return this.getRuleContext(0, AlterMaterializedViewSuffixRebuildContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterMaterializedViewStatementSuffix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterMaterializedViewStatementSuffix) {
             listener.enterAlterMaterializedViewStatementSuffix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterMaterializedViewStatementSuffix) {
             listener.exitAlterMaterializedViewStatementSuffix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterMaterializedViewStatementSuffix) {
            return visitor.visitAlterMaterializedViewStatementSuffix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterMaterializedViewSuffixRewriteContext extends antlr.ParserRuleContext {
    public _mvRewriteFlag?: RewriteEnabledContext;
    public _mvRewriteFlag2?: RewriteDisabledContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public rewriteEnabled(): RewriteEnabledContext | null {
        return this.getRuleContext(0, RewriteEnabledContext);
    }
    public rewriteDisabled(): RewriteDisabledContext | null {
        return this.getRuleContext(0, RewriteDisabledContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterMaterializedViewSuffixRewrite;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterMaterializedViewSuffixRewrite) {
             listener.enterAlterMaterializedViewSuffixRewrite(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterMaterializedViewSuffixRewrite) {
             listener.exitAlterMaterializedViewSuffixRewrite(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterMaterializedViewSuffixRewrite) {
            return visitor.visitAlterMaterializedViewSuffixRewrite(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterMaterializedViewSuffixRebuildContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REBUILD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REBUILD, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterMaterializedViewSuffixRebuild;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterMaterializedViewSuffixRebuild) {
             listener.enterAlterMaterializedViewSuffixRebuild(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterMaterializedViewSuffixRebuild) {
             listener.exitAlterMaterializedViewSuffixRebuild(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterMaterializedViewSuffixRebuild) {
            return visitor.visitAlterMaterializedViewSuffixRebuild(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDatabaseStatementSuffixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public alterDatabaseSuffixProperties(): AlterDatabaseSuffixPropertiesContext | null {
        return this.getRuleContext(0, AlterDatabaseSuffixPropertiesContext);
    }
    public alterDatabaseSuffixSetOwner(): AlterDatabaseSuffixSetOwnerContext | null {
        return this.getRuleContext(0, AlterDatabaseSuffixSetOwnerContext);
    }
    public alterDatabaseSuffixSetLocation(): AlterDatabaseSuffixSetLocationContext | null {
        return this.getRuleContext(0, AlterDatabaseSuffixSetLocationContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDatabaseStatementSuffix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDatabaseStatementSuffix) {
             listener.enterAlterDatabaseStatementSuffix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDatabaseStatementSuffix) {
             listener.exitAlterDatabaseStatementSuffix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDatabaseStatementSuffix) {
            return visitor.visitAlterDatabaseStatementSuffix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDatabaseSuffixPropertiesContext extends antlr.ParserRuleContext {
    public _name?: DbSchemaNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_DBPROPERTIES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0)!;
    }
    public dbProperties(): DbPropertiesContext {
        return this.getRuleContext(0, DbPropertiesContext)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDatabaseSuffixProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDatabaseSuffixProperties) {
             listener.enterAlterDatabaseSuffixProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDatabaseSuffixProperties) {
             listener.exitAlterDatabaseSuffixProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDatabaseSuffixProperties) {
            return visitor.visitAlterDatabaseSuffixProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDatabaseSuffixSetOwnerContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_OWNER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OWNER, 0)!;
    }
    public principalAlterName(): PrincipalAlterNameContext {
        return this.getRuleContext(0, PrincipalAlterNameContext)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDatabaseSuffixSetOwner;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDatabaseSuffixSetOwner) {
             listener.enterAlterDatabaseSuffixSetOwner(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDatabaseSuffixSetOwner) {
             listener.exitAlterDatabaseSuffixSetOwner(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDatabaseSuffixSetOwner) {
            return visitor.visitAlterDatabaseSuffixSetOwner(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDatabaseSuffixSetLocationContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public _newLocation?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public KW_LOCATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0);
    }
    public KW_MANAGEDLOCATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0);
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDatabaseSuffixSetLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDatabaseSuffixSetLocation) {
             listener.enterAlterDatabaseSuffixSetLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDatabaseSuffixSetLocation) {
             listener.exitAlterDatabaseSuffixSetLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDatabaseSuffixSetLocation) {
            return visitor.visitAlterDatabaseSuffixSetLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDatabaseSuffixSetManagedLocationContext extends antlr.ParserRuleContext {
    public _dbName?: DbSchemaNameContext;
    public _newLocation?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_MANAGEDLOCATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDatabaseSuffixSetManagedLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDatabaseSuffixSetManagedLocation) {
             listener.enterAlterDatabaseSuffixSetManagedLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDatabaseSuffixSetManagedLocation) {
             listener.exitAlterDatabaseSuffixSetManagedLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDatabaseSuffixSetManagedLocation) {
            return visitor.visitAlterDatabaseSuffixSetManagedLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixRenameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RENAME(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RENAME, 0)!;
    }
    public KW_TO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TO, 0)!;
    }
    public tableNameCreate(): TableNameCreateContext {
        return this.getRuleContext(0, TableNameCreateContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixRename;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixRename) {
             listener.enterAlterStatementSuffixRename(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixRename) {
             listener.exitAlterStatementSuffixRename(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixRename) {
            return visitor.visitAlterStatementSuffixRename(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixAddColContext extends antlr.ParserRuleContext {
    public _add?: Token | null;
    public _replace?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COLUMNS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public columnNameTypeList(): ColumnNameTypeListContext {
        return this.getRuleContext(0, ColumnNameTypeListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public KW_ADD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    public KW_REPLACE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    public restrictOrCascade(): RestrictOrCascadeContext | null {
        return this.getRuleContext(0, RestrictOrCascadeContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixAddCol;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixAddCol) {
             listener.enterAlterStatementSuffixAddCol(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixAddCol) {
             listener.exitAlterStatementSuffixAddCol(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixAddCol) {
            return visitor.visitAlterStatementSuffixAddCol(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixAddConstraintContext extends antlr.ParserRuleContext {
    public _fk?: AlterForeignKeyWithNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ADD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ADD, 0)!;
    }
    public alterConstraintWithName(): AlterConstraintWithNameContext | null {
        return this.getRuleContext(0, AlterConstraintWithNameContext);
    }
    public alterForeignKeyWithName(): AlterForeignKeyWithNameContext | null {
        return this.getRuleContext(0, AlterForeignKeyWithNameContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixAddConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixAddConstraint) {
             listener.enterAlterStatementSuffixAddConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixAddConstraint) {
             listener.exitAlterStatementSuffixAddConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixAddConstraint) {
            return visitor.visitAlterStatementSuffixAddConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixUpdateColumnsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UPDATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0)!;
    }
    public KW_COLUMNS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0)!;
    }
    public restrictOrCascade(): RestrictOrCascadeContext | null {
        return this.getRuleContext(0, RestrictOrCascadeContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixUpdateColumns;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixUpdateColumns) {
             listener.enterAlterStatementSuffixUpdateColumns(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixUpdateColumns) {
             listener.exitAlterStatementSuffixUpdateColumns(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixUpdateColumns) {
            return visitor.visitAlterStatementSuffixUpdateColumns(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixProtectionsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public enableSpecification(): EnableSpecificationContext {
        return this.getRuleContext(0, EnableSpecificationContext)!;
    }
    public KW_NO_DROP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NO_DROP, 0);
    }
    public KW_CASCADE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CASCADE, 0);
    }
    public KW_OFFLINE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OFFLINE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixProtections;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixProtections) {
             listener.enterAlterStatementSuffixProtections(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixProtections) {
             listener.exitAlterStatementSuffixProtections(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixProtections) {
            return visitor.visitAlterStatementSuffixProtections(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixDropConstraintContext extends antlr.ParserRuleContext {
    public _cName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_CONSTRAINT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixDropConstraint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixDropConstraint) {
             listener.enterAlterStatementSuffixDropConstraint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixDropConstraint) {
             listener.exitAlterStatementSuffixDropConstraint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixDropConstraint) {
            return visitor.visitAlterStatementSuffixDropConstraint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixRenameColContext extends antlr.ParserRuleContext {
    public _oldName?: ColumnNameContext;
    public _newName?: ColumnNameCreateContext;
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CHANGE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CHANGE, 0)!;
    }
    public colType(): ColTypeContext {
        return this.getRuleContext(0, ColTypeContext)!;
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public columnNameCreate(): ColumnNameCreateContext {
        return this.getRuleContext(0, ColumnNameCreateContext)!;
    }
    public KW_COLUMN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLUMN, 0);
    }
    public alterColumnConstraint(): AlterColumnConstraintContext | null {
        return this.getRuleContext(0, AlterColumnConstraintContext);
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public alterStatementChangeColPosition(): AlterStatementChangeColPositionContext | null {
        return this.getRuleContext(0, AlterStatementChangeColPositionContext);
    }
    public restrictOrCascade(): RestrictOrCascadeContext | null {
        return this.getRuleContext(0, RestrictOrCascadeContext);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixRenameCol;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixRenameCol) {
             listener.enterAlterStatementSuffixRenameCol(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixRenameCol) {
             listener.exitAlterStatementSuffixRenameCol(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixRenameCol) {
            return visitor.visitAlterStatementSuffixRenameCol(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixUpdateStatsColContext extends antlr.ParserRuleContext {
    public _colName?: ColumnNameContext;
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UPDATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0)!;
    }
    public KW_STATISTICS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0)!;
    }
    public KW_FOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FOR, 0)!;
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public tableProperties(): TablePropertiesContext {
        return this.getRuleContext(0, TablePropertiesContext)!;
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public KW_COLUMN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLUMN, 0);
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixUpdateStatsCol;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixUpdateStatsCol) {
             listener.enterAlterStatementSuffixUpdateStatsCol(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixUpdateStatsCol) {
             listener.exitAlterStatementSuffixUpdateStatsCol(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixUpdateStatsCol) {
            return visitor.visitAlterStatementSuffixUpdateStatsCol(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixUpdateStatsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UPDATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0)!;
    }
    public KW_STATISTICS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0)!;
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public tableProperties(): TablePropertiesContext {
        return this.getRuleContext(0, TablePropertiesContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixUpdateStats;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixUpdateStats) {
             listener.enterAlterStatementSuffixUpdateStats(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixUpdateStats) {
             listener.exitAlterStatementSuffixUpdateStats(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixUpdateStats) {
            return visitor.visitAlterStatementSuffixUpdateStats(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementChangeColPositionContext extends antlr.ParserRuleContext {
    public _first?: Token | null;
    public _afterCol?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FIRST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FIRST, 0);
    }
    public KW_AFTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AFTER, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementChangeColPosition;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementChangeColPosition) {
             listener.enterAlterStatementChangeColPosition(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementChangeColPosition) {
             listener.exitAlterStatementChangeColPosition(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementChangeColPosition) {
            return visitor.visitAlterStatementChangeColPosition(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixAddPartitionsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ADD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ADD, 0)!;
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public alterStatementSuffixAddPartitionsElement(): AlterStatementSuffixAddPartitionsElementContext[];
    public alterStatementSuffixAddPartitionsElement(i: number): AlterStatementSuffixAddPartitionsElementContext | null;
    public alterStatementSuffixAddPartitionsElement(i?: number): AlterStatementSuffixAddPartitionsElementContext[] | AlterStatementSuffixAddPartitionsElementContext | null {
        if (i === undefined) {
            return this.getRuleContexts(AlterStatementSuffixAddPartitionsElementContext);
        }

        return this.getRuleContext(i, AlterStatementSuffixAddPartitionsElementContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixAddPartitions;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixAddPartitions) {
             listener.enterAlterStatementSuffixAddPartitions(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixAddPartitions) {
             listener.exitAlterStatementSuffixAddPartitions(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixAddPartitions) {
            return visitor.visitAlterStatementSuffixAddPartitions(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixAddPartitionsElementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public partitionSpec(): PartitionSpecContext {
        return this.getRuleContext(0, PartitionSpecContext)!;
    }
    public partitionLocation(): PartitionLocationContext | null {
        return this.getRuleContext(0, PartitionLocationContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixAddPartitionsElement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixAddPartitionsElement) {
             listener.enterAlterStatementSuffixAddPartitionsElement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixAddPartitionsElement) {
             listener.exitAlterStatementSuffixAddPartitionsElement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixAddPartitionsElement) {
            return visitor.visitAlterStatementSuffixAddPartitionsElement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixTouchContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TOUCH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TOUCH, 0)!;
    }
    public partitionSpec(): PartitionSpecContext[];
    public partitionSpec(i: number): PartitionSpecContext | null;
    public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSpecContext);
        }

        return this.getRuleContext(i, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixTouch;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixTouch) {
             listener.enterAlterStatementSuffixTouch(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixTouch) {
             listener.exitAlterStatementSuffixTouch(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixTouch) {
            return visitor.visitAlterStatementSuffixTouch(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixArchiveContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ARCHIVE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ARCHIVE, 0)!;
    }
    public partitionSpec(): PartitionSpecContext[];
    public partitionSpec(i: number): PartitionSpecContext | null;
    public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSpecContext);
        }

        return this.getRuleContext(i, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixArchive;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixArchive) {
             listener.enterAlterStatementSuffixArchive(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixArchive) {
             listener.exitAlterStatementSuffixArchive(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixArchive) {
            return visitor.visitAlterStatementSuffixArchive(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixUnArchiveContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNARCHIVE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UNARCHIVE, 0)!;
    }
    public partitionSpec(): PartitionSpecContext[];
    public partitionSpec(i: number): PartitionSpecContext | null;
    public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSpecContext);
        }

        return this.getRuleContext(i, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixUnArchive;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixUnArchive) {
             listener.enterAlterStatementSuffixUnArchive(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixUnArchive) {
             listener.exitAlterStatementSuffixUnArchive(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixUnArchive) {
            return visitor.visitAlterStatementSuffixUnArchive(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionLocationContext extends antlr.ParserRuleContext {
    public _locn?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LOCATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionLocation) {
             listener.enterPartitionLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionLocation) {
             listener.exitPartitionLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionLocation) {
            return visitor.visitPartitionLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixRecoverPartitionsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RECOVER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RECOVER, 0)!;
    }
    public KW_PARTITIONS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixRecoverPartitions;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixRecoverPartitions) {
             listener.enterAlterStatementSuffixRecoverPartitions(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixRecoverPartitions) {
             listener.exitAlterStatementSuffixRecoverPartitions(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixRecoverPartitions) {
            return visitor.visitAlterStatementSuffixRecoverPartitions(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixDropPartitionsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_PARTITION(): antlr.TerminalNode[];
    public KW_PARTITION(i: number): antlr.TerminalNode | null;
    public KW_PARTITION(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_PARTITION);
    	} else {
    		return this.getToken(HiveSqlParser.KW_PARTITION, i);
    	}
    }
    public partitionSelectorSpec(): PartitionSelectorSpecContext[];
    public partitionSelectorSpec(i: number): PartitionSelectorSpecContext | null;
    public partitionSelectorSpec(i?: number): PartitionSelectorSpecContext[] | PartitionSelectorSpecContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSelectorSpecContext);
        }

        return this.getRuleContext(i, PartitionSelectorSpecContext);
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public dropPartitionsIgnoreClause(): DropPartitionsIgnoreClauseContext | null {
        return this.getRuleContext(0, DropPartitionsIgnoreClauseContext);
    }
    public KW_PURGE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PURGE, 0);
    }
    public replicationClause(): ReplicationClauseContext | null {
        return this.getRuleContext(0, ReplicationClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixDropPartitions;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixDropPartitions) {
             listener.enterAlterStatementSuffixDropPartitions(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixDropPartitions) {
             listener.exitAlterStatementSuffixDropPartitions(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixDropPartitions) {
            return visitor.visitAlterStatementSuffixDropPartitions(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixPropertiesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    public KW_TBLPROPERTIES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0)!;
    }
    public tableProperties(): TablePropertiesContext {
        return this.getRuleContext(0, TablePropertiesContext)!;
    }
    public KW_UNSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixProperties) {
             listener.enterAlterStatementSuffixProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixProperties) {
             listener.exitAlterStatementSuffixProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixProperties) {
            return visitor.visitAlterStatementSuffixProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterViewSuffixPropertiesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    public KW_TBLPROPERTIES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0)!;
    }
    public tableProperties(): TablePropertiesContext {
        return this.getRuleContext(0, TablePropertiesContext)!;
    }
    public KW_UNSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterViewSuffixProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterViewSuffixProperties) {
             listener.enterAlterViewSuffixProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterViewSuffixProperties) {
             listener.exitAlterViewSuffixProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterViewSuffixProperties) {
            return visitor.visitAlterViewSuffixProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixSerdePropertiesContext extends antlr.ParserRuleContext {
    public _serdeName?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    public KW_SERDE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    public KW_SERDEPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    public tableProperties(): TablePropertiesContext | null {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_UNSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixSerdeProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixSerdeProperties) {
             listener.enterAlterStatementSuffixSerdeProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixSerdeProperties) {
             listener.exitAlterStatementSuffixSerdeProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixSerdeProperties) {
            return visitor.visitAlterStatementSuffixSerdeProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TablePartitionPrefixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tablePartitionPrefix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTablePartitionPrefix) {
             listener.enterTablePartitionPrefix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTablePartitionPrefix) {
             listener.exitTablePartitionPrefix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTablePartitionPrefix) {
            return visitor.visitTablePartitionPrefix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixFileFormatContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_FILEFORMAT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FILEFORMAT, 0)!;
    }
    public fileFormat(): FileFormatContext {
        return this.getRuleContext(0, FileFormatContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixFileFormat;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixFileFormat) {
             listener.enterAlterStatementSuffixFileFormat(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixFileFormat) {
             listener.exitAlterStatementSuffixFileFormat(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixFileFormat) {
            return visitor.visitAlterStatementSuffixFileFormat(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixClusterbySortbyContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public KW_CLUSTERED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0);
    }
    public KW_SORTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    public tableBuckets(): TableBucketsContext | null {
        return this.getRuleContext(0, TableBucketsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixClusterbySortby;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixClusterbySortby) {
             listener.enterAlterStatementSuffixClusterbySortby(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixClusterbySortby) {
             listener.exitAlterStatementSuffixClusterbySortby(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixClusterbySortby) {
            return visitor.visitAlterStatementSuffixClusterbySortby(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterTblPartitionStatementSuffixSkewedLocationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_SKEWED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0)!;
    }
    public KW_LOCATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0)!;
    }
    public skewedLocations(): SkewedLocationsContext {
        return this.getRuleContext(0, SkewedLocationsContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterTblPartitionStatementSuffixSkewedLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterTblPartitionStatementSuffixSkewedLocation) {
             listener.enterAlterTblPartitionStatementSuffixSkewedLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterTblPartitionStatementSuffixSkewedLocation) {
             listener.exitAlterTblPartitionStatementSuffixSkewedLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterTblPartitionStatementSuffixSkewedLocation) {
            return visitor.visitAlterTblPartitionStatementSuffixSkewedLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedLocationsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public skewedLocationsList(): SkewedLocationsListContext {
        return this.getRuleContext(0, SkewedLocationsListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedLocations;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedLocations) {
             listener.enterSkewedLocations(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedLocations) {
             listener.exitSkewedLocations(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedLocations) {
            return visitor.visitSkewedLocations(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedLocationsListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public skewedLocationMap(): SkewedLocationMapContext[];
    public skewedLocationMap(i: number): SkewedLocationMapContext | null;
    public skewedLocationMap(i?: number): SkewedLocationMapContext[] | SkewedLocationMapContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SkewedLocationMapContext);
        }

        return this.getRuleContext(i, SkewedLocationMapContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedLocationsList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedLocationsList) {
             listener.enterSkewedLocationsList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedLocationsList) {
             listener.exitSkewedLocationsList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedLocationsList) {
            return visitor.visitSkewedLocationsList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SkewedLocationMapContext extends antlr.ParserRuleContext {
    public _key?: SkewedValueLocationElementContext;
    public _value?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public EQUAL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EQUAL, 0)!;
    }
    public skewedValueLocationElement(): SkewedValueLocationElementContext {
        return this.getRuleContext(0, SkewedValueLocationElementContext)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_skewedLocationMap;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSkewedLocationMap) {
             listener.enterSkewedLocationMap(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSkewedLocationMap) {
             listener.exitSkewedLocationMap(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSkewedLocationMap) {
            return visitor.visitSkewedLocationMap(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixLocationContext extends antlr.ParserRuleContext {
    public _newLoc?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_LOCATION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixLocation;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixLocation) {
             listener.enterAlterStatementSuffixLocation(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixLocation) {
             listener.exitAlterStatementSuffixLocation(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixLocation) {
            return visitor.visitAlterStatementSuffixLocation(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixSkewedbyContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableSkewed(): TableSkewedContext | null {
        return this.getRuleContext(0, TableSkewedContext);
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public KW_SKEWED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0);
    }
    public storedAsDirs(): StoredAsDirsContext | null {
        return this.getRuleContext(0, StoredAsDirsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixSkewedby;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixSkewedby) {
             listener.enterAlterStatementSuffixSkewedby(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixSkewedby) {
             listener.exitAlterStatementSuffixSkewedby(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixSkewedby) {
            return visitor.visitAlterStatementSuffixSkewedby(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixExchangePartitionContext extends antlr.ParserRuleContext {
    public _exchangename?: TableNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXCHANGE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXCHANGE, 0)!;
    }
    public partitionSpec(): PartitionSpecContext {
        return this.getRuleContext(0, PartitionSpecContext)!;
    }
    public KW_WITH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WITH, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixExchangePartition;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixExchangePartition) {
             listener.enterAlterStatementSuffixExchangePartition(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixExchangePartition) {
             listener.exitAlterStatementSuffixExchangePartition(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixExchangePartition) {
            return visitor.visitAlterStatementSuffixExchangePartition(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixRenamePartContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RENAME(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RENAME, 0)!;
    }
    public KW_TO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TO, 0)!;
    }
    public partitionSpec(): PartitionSpecContext {
        return this.getRuleContext(0, PartitionSpecContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixRenamePart;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixRenamePart) {
             listener.enterAlterStatementSuffixRenamePart(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixRenamePart) {
             listener.exitAlterStatementSuffixRenamePart(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixRenamePart) {
            return visitor.visitAlterStatementSuffixRenamePart(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixStatsPartContext extends antlr.ParserRuleContext {
    public _colName?: ColumnNameContext;
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UPDATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0)!;
    }
    public KW_STATISTICS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0)!;
    }
    public KW_FOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FOR, 0)!;
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public tableProperties(): TablePropertiesContext {
        return this.getRuleContext(0, TablePropertiesContext)!;
    }
    public columnName(): ColumnNameContext {
        return this.getRuleContext(0, ColumnNameContext)!;
    }
    public KW_COLUMN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLUMN, 0);
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixStatsPart;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixStatsPart) {
             listener.enterAlterStatementSuffixStatsPart(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixStatsPart) {
             listener.exitAlterStatementSuffixStatsPart(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixStatsPart) {
            return visitor.visitAlterStatementSuffixStatsPart(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixMergeFilesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CONCATENATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CONCATENATE, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixMergeFiles;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixMergeFiles) {
             listener.enterAlterStatementSuffixMergeFiles(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixMergeFiles) {
             listener.exitAlterStatementSuffixMergeFiles(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixMergeFiles) {
            return visitor.visitAlterStatementSuffixMergeFiles(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixBucketNumContext extends antlr.ParserRuleContext {
    public _num?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_INTO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_INTO, 0)!;
    }
    public KW_BUCKETS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BUCKETS, 0)!;
    }
    public Number(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.Number, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixBucketNum;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixBucketNum) {
             listener.enterAlterStatementSuffixBucketNum(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixBucketNum) {
             listener.exitAlterStatementSuffixBucketNum(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixBucketNum) {
            return visitor.visitAlterStatementSuffixBucketNum(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class BlockingContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_AND(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AND, 0)!;
    }
    public KW_WAIT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WAIT, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_blocking;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterBlocking) {
             listener.enterBlocking(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitBlocking) {
             listener.exitBlocking(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitBlocking) {
            return visitor.visitBlocking(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CompactPoolContext extends antlr.ParserRuleContext {
    public _poolName?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_POOL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_POOL, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_compactPool;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCompactPool) {
             listener.enterCompactPool(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCompactPool) {
             listener.exitCompactPool(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCompactPool) {
            return visitor.visitCompactPool(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixCompactContext extends antlr.ParserRuleContext {
    public _compactType?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COMPACT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COMPACT, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public blocking(): BlockingContext | null {
        return this.getRuleContext(0, BlockingContext);
    }
    public tableImplBuckets(): TableImplBucketsContext | null {
        return this.getRuleContext(0, TableImplBucketsContext);
    }
    public orderByClause(): OrderByClauseContext | null {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    public compactPool(): CompactPoolContext | null {
        return this.getRuleContext(0, CompactPoolContext);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_OVERWRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    public KW_TBLPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    public tableProperties(): TablePropertiesContext | null {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixCompact;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixCompact) {
             listener.enterAlterStatementSuffixCompact(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixCompact) {
             listener.exitAlterStatementSuffixCompact(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixCompact) {
            return visitor.visitAlterStatementSuffixCompact(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixSetOwnerContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_OWNER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OWNER, 0)!;
    }
    public principalName(): PrincipalNameContext {
        return this.getRuleContext(0, PrincipalNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixSetOwner;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixSetOwner) {
             listener.enterAlterStatementSuffixSetOwner(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixSetOwner) {
             listener.exitAlterStatementSuffixSetOwner(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixSetOwner) {
            return visitor.visitAlterStatementSuffixSetOwner(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixSetPartSpecContext extends antlr.ParserRuleContext {
    public _spec?: PartitionTransformSpecContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_PARTITION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0)!;
    }
    public KW_SPEC(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SPEC, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public partitionTransformSpec(): PartitionTransformSpecContext {
        return this.getRuleContext(0, PartitionTransformSpecContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixSetPartSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixSetPartSpec) {
             listener.enterAlterStatementSuffixSetPartSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixSetPartSpec) {
             listener.exitAlterStatementSuffixSetPartSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixSetPartSpec) {
            return visitor.visitAlterStatementSuffixSetPartSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterStatementSuffixExecuteContext extends antlr.ParserRuleContext {
    public _rollbackParam?: Token | null;
    public _expireParam?: Token | null;
    public _snapshotParam?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXECUTE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public KW_ROLLBACK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLLBACK, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public KW_EXPIRE_SNAPSHOTS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXPIRE_SNAPSHOTS, 0);
    }
    public KW_SET_CURRENT_SNAPSHOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterStatementSuffixExecute;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterStatementSuffixExecute) {
             listener.enterAlterStatementSuffixExecute(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterStatementSuffixExecute) {
             listener.exitAlterStatementSuffixExecute(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterStatementSuffixExecute) {
            return visitor.visitAlterStatementSuffixExecute(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterIndexStatementSuffixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public KW_REBUILD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REBUILD, 0)!;
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterIndexStatementSuffix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterIndexStatementSuffix) {
             listener.enterAlterIndexStatementSuffix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterIndexStatementSuffix) {
             listener.exitAlterIndexStatementSuffix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterIndexStatementSuffix) {
            return visitor.visitAlterIndexStatementSuffix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FileFormatContext extends antlr.ParserRuleContext {
    public _inFmt?: Token | null;
    public _outFmt?: Token | null;
    public _serdeCls?: Token | null;
    public _inDriver?: Token | null;
    public _outDriver?: Token | null;
    public _genericSpec?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_INPUTFORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0);
    }
    public KW_OUTPUTFORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTPUTFORMAT, 0);
    }
    public KW_SERDE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public KW_INPUTDRIVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INPUTDRIVER, 0);
    }
    public KW_OUTPUTDRIVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTPUTDRIVER, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_fileFormat;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFileFormat) {
             listener.enterFileFormat(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFileFormat) {
             listener.exitFileFormat(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFileFormat) {
            return visitor.visitFileFormat(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDataConnectorStatementSuffixContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public alterDataConnectorSuffixProperties(): AlterDataConnectorSuffixPropertiesContext | null {
        return this.getRuleContext(0, AlterDataConnectorSuffixPropertiesContext);
    }
    public alterDataConnectorSuffixSetOwner(): AlterDataConnectorSuffixSetOwnerContext | null {
        return this.getRuleContext(0, AlterDataConnectorSuffixSetOwnerContext);
    }
    public alterDataConnectorSuffixSetUrl(): AlterDataConnectorSuffixSetUrlContext | null {
        return this.getRuleContext(0, AlterDataConnectorSuffixSetUrlContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDataConnectorStatementSuffix;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDataConnectorStatementSuffix) {
             listener.enterAlterDataConnectorStatementSuffix(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDataConnectorStatementSuffix) {
             listener.exitAlterDataConnectorStatementSuffix(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDataConnectorStatementSuffix) {
            return visitor.visitAlterDataConnectorStatementSuffix(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDataConnectorSuffixPropertiesContext extends antlr.ParserRuleContext {
    public _name?: DbSchemaNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_DCPROPERTIES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0)!;
    }
    public dcProperties(): DcPropertiesContext {
        return this.getRuleContext(0, DcPropertiesContext)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDataConnectorSuffixProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDataConnectorSuffixProperties) {
             listener.enterAlterDataConnectorSuffixProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDataConnectorSuffixProperties) {
             listener.exitAlterDataConnectorSuffixProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDataConnectorSuffixProperties) {
            return visitor.visitAlterDataConnectorSuffixProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDataConnectorSuffixSetOwnerContext extends antlr.ParserRuleContext {
    public _dcName?: DbSchemaNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_OWNER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OWNER, 0)!;
    }
    public principalAlterName(): PrincipalAlterNameContext {
        return this.getRuleContext(0, PrincipalAlterNameContext)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDataConnectorSuffixSetOwner;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDataConnectorSuffixSetOwner) {
             listener.enterAlterDataConnectorSuffixSetOwner(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDataConnectorSuffixSetOwner) {
             listener.exitAlterDataConnectorSuffixSetOwner(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDataConnectorSuffixSetOwner) {
            return visitor.visitAlterDataConnectorSuffixSetOwner(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterDataConnectorSuffixSetUrlContext extends antlr.ParserRuleContext {
    public _dcName?: DbSchemaNameContext;
    public _newUri?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SET, 0)!;
    }
    public KW_URL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_URL, 0)!;
    }
    public dbSchemaName(): DbSchemaNameContext {
        return this.getRuleContext(0, DbSchemaNameContext)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterDataConnectorSuffixSetUrl;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterDataConnectorSuffixSetUrl) {
             listener.enterAlterDataConnectorSuffixSetUrl(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterDataConnectorSuffixSetUrl) {
             listener.exitAlterDataConnectorSuffixSetUrl(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterDataConnectorSuffixSetUrl) {
            return visitor.visitAlterDataConnectorSuffixSetUrl(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LikeTableOrFileContext extends antlr.ParserRuleContext {
    public _format?: Id_Context;
    public _uri?: Token | null;
    public _likeName?: TableNameContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LIKE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LIKE, 0)!;
    }
    public KW_FILE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FILE, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public tableName(): TableNameContext | null {
        return this.getRuleContext(0, TableNameContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_likeTableOrFile;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLikeTableOrFile) {
             listener.enterLikeTableOrFile(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLikeTableOrFile) {
             listener.exitLikeTableOrFile(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLikeTableOrFile) {
            return visitor.visitLikeTableOrFile(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateTableStatementContext extends antlr.ParserRuleContext {
    public _temp?: Token | null;
    public _trans?: Token | null;
    public _ext?: Token | null;
    public _name?: TableNameCreateContext;
    public _mgd?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public tableNameCreate(): TableNameCreateContext {
        return this.getRuleContext(0, TableNameCreateContext)!;
    }
    public likeTableOrFile(): LikeTableOrFileContext | null {
        return this.getRuleContext(0, LikeTableOrFileContext);
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public KW_TEMPORARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    public KW_TRANSACTIONAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONAL, 0);
    }
    public KW_EXTERNAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXTERNAL, 0);
    }
    public createTablePartitionSpec(): CreateTablePartitionSpecContext | null {
        return this.getRuleContext(0, CreateTablePartitionSpecContext);
    }
    public tableRowFormat(): TableRowFormatContext | null {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    public tableFileFormat(): TableFileFormatContext | null {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    public tableLocation(): TableLocationContext | null {
        return this.getRuleContext(0, TableLocationContext);
    }
    public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | null {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    public tableLifecycle(): TableLifecycleContext | null {
        return this.getRuleContext(0, TableLifecycleContext);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public columnNameTypeOrConstraintList(): ColumnNameTypeOrConstraintListContext | null {
        return this.getRuleContext(0, ColumnNameTypeOrConstraintListContext);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public tableComment(): TableCommentContext | null {
        return this.getRuleContext(0, TableCommentContext);
    }
    public tableBuckets(): TableBucketsContext | null {
        return this.getRuleContext(0, TableBucketsContext);
    }
    public tableSkewed(): TableSkewedContext | null {
        return this.getRuleContext(0, TableSkewedContext);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public selectStatementWithCTE(): SelectStatementWithCTEContext | null {
        return this.getRuleContext(0, SelectStatementWithCTEContext);
    }
    public KW_MANAGED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MANAGED, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createTableStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateTableStatement) {
             listener.enterCreateTableStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateTableStatement) {
             listener.exitCreateTableStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateTableStatement) {
            return visitor.visitCreateTableStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateDataConnectorStatementContext extends antlr.ParserRuleContext {
    public _name?: Id_Context;
    public _dcprops?: DcPropertiesContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_DATACONNECTOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public dataConnectorType(): DataConnectorTypeContext | null {
        return this.getRuleContext(0, DataConnectorTypeContext);
    }
    public dataConnectorUrl(): DataConnectorUrlContext | null {
        return this.getRuleContext(0, DataConnectorUrlContext);
    }
    public dataConnectorComment(): DataConnectorCommentContext | null {
        return this.getRuleContext(0, DataConnectorCommentContext);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_DCPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0);
    }
    public dcProperties(): DcPropertiesContext | null {
        return this.getRuleContext(0, DcPropertiesContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createDataConnectorStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateDataConnectorStatement) {
             listener.enterCreateDataConnectorStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateDataConnectorStatement) {
             listener.exitCreateDataConnectorStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateDataConnectorStatement) {
            return visitor.visitCreateDataConnectorStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DataConnectorCommentContext extends antlr.ParserRuleContext {
    public _comment?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_COMMENT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dataConnectorComment;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDataConnectorComment) {
             listener.enterDataConnectorComment(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDataConnectorComment) {
             listener.exitDataConnectorComment(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDataConnectorComment) {
            return visitor.visitDataConnectorComment(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DataConnectorUrlContext extends antlr.ParserRuleContext {
    public _url?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_URL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_URL, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dataConnectorUrl;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDataConnectorUrl) {
             listener.enterDataConnectorUrl(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDataConnectorUrl) {
             listener.exitDataConnectorUrl(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDataConnectorUrl) {
            return visitor.visitDataConnectorUrl(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DataConnectorTypeContext extends antlr.ParserRuleContext {
    public _dcType?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TYPE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TYPE, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dataConnectorType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDataConnectorType) {
             listener.enterDataConnectorType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDataConnectorType) {
             listener.exitDataConnectorType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDataConnectorType) {
            return visitor.visitDataConnectorType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DcPropertiesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public dbPropertiesList(): DbPropertiesListContext {
        return this.getRuleContext(0, DbPropertiesListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dcProperties;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDcProperties) {
             listener.enterDcProperties(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDcProperties) {
             listener.exitDcProperties(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDcProperties) {
            return visitor.visitDcProperties(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropDataConnectorStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_DATACONNECTOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropDataConnectorStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropDataConnectorStatement) {
             listener.enterDropDataConnectorStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropDataConnectorStatement) {
             listener.exitDropDataConnectorStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropDataConnectorStatement) {
            return visitor.visitDropDataConnectorStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableAllColumnsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public STAR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.STAR, 0)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableAllColumns;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableAllColumns) {
             listener.enterTableAllColumns(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableAllColumns) {
             listener.exitTableAllColumns(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableAllColumns) {
            return visitor.visitTableAllColumns(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DefaultValueContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DEFAULT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_defaultValue;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDefaultValue) {
             listener.enterDefaultValue(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDefaultValue) {
             listener.exitDefaultValue(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDefaultValue) {
            return visitor.visitDefaultValue(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expressionList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpressionList) {
             listener.enterExpressionList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpressionList) {
             listener.exitExpressionList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpressionList) {
            return visitor.visitExpressionList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AliasListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_aliasList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAliasList) {
             listener.enterAliasList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAliasList) {
             listener.exitAliasList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAliasList) {
            return visitor.visitAliasList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FromClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public fromSource(): FromSourceContext {
        return this.getRuleContext(0, FromSourceContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_fromClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFromClause) {
             listener.enterFromClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFromClause) {
             listener.exitFromClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFromClause) {
            return visitor.visitFromClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FromSourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public uniqueJoinToken(): UniqueJoinTokenContext | null {
        return this.getRuleContext(0, UniqueJoinTokenContext);
    }
    public uniqueJoinSource(): UniqueJoinSourceContext[];
    public uniqueJoinSource(i: number): UniqueJoinSourceContext | null;
    public uniqueJoinSource(i?: number): UniqueJoinSourceContext[] | UniqueJoinSourceContext | null {
        if (i === undefined) {
            return this.getRuleContexts(UniqueJoinSourceContext);
        }

        return this.getRuleContext(i, UniqueJoinSourceContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public joinSource(): JoinSourceContext | null {
        return this.getRuleContext(0, JoinSourceContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_fromSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFromSource) {
             listener.enterFromSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFromSource) {
             listener.exitFromSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFromSource) {
            return visitor.visitFromSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AtomjoinSourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableSource(): TableSourceContext | null {
        return this.getRuleContext(0, TableSourceContext);
    }
    public lateralView(): LateralViewContext[];
    public lateralView(i: number): LateralViewContext | null;
    public lateralView(i?: number): LateralViewContext[] | LateralViewContext | null {
        if (i === undefined) {
            return this.getRuleContexts(LateralViewContext);
        }

        return this.getRuleContext(i, LateralViewContext);
    }
    public virtualTableSource(): VirtualTableSourceContext | null {
        return this.getRuleContext(0, VirtualTableSourceContext);
    }
    public subQuerySource(): SubQuerySourceContext | null {
        return this.getRuleContext(0, SubQuerySourceContext);
    }
    public partitionedTableFunction(): PartitionedTableFunctionContext | null {
        return this.getRuleContext(0, PartitionedTableFunctionContext);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public joinSource(): JoinSourceContext | null {
        return this.getRuleContext(0, JoinSourceContext);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_atomjoinSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAtomjoinSource) {
             listener.enterAtomjoinSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAtomjoinSource) {
             listener.exitAtomjoinSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAtomjoinSource) {
            return visitor.visitAtomjoinSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class JoinSourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public atomjoinSource(): AtomjoinSourceContext {
        return this.getRuleContext(0, AtomjoinSourceContext)!;
    }
    public joinToken(): JoinTokenContext[];
    public joinToken(i: number): JoinTokenContext | null;
    public joinToken(i?: number): JoinTokenContext[] | JoinTokenContext | null {
        if (i === undefined) {
            return this.getRuleContexts(JoinTokenContext);
        }

        return this.getRuleContext(i, JoinTokenContext);
    }
    public joinSourcePart(): JoinSourcePartContext[];
    public joinSourcePart(i: number): JoinSourcePartContext | null;
    public joinSourcePart(i?: number): JoinSourcePartContext[] | JoinSourcePartContext | null {
        if (i === undefined) {
            return this.getRuleContexts(JoinSourcePartContext);
        }

        return this.getRuleContext(i, JoinSourcePartContext);
    }
    public KW_ON(): antlr.TerminalNode[];
    public KW_ON(i: number): antlr.TerminalNode | null;
    public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_ON);
    	} else {
    		return this.getToken(HiveSqlParser.KW_ON, i);
    	}
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public KW_USING(): antlr.TerminalNode[];
    public KW_USING(i: number): antlr.TerminalNode | null;
    public KW_USING(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_USING);
    	} else {
    		return this.getToken(HiveSqlParser.KW_USING, i);
    	}
    }
    public columnParenthesesList(): ColumnParenthesesListContext[];
    public columnParenthesesList(i: number): ColumnParenthesesListContext | null;
    public columnParenthesesList(i?: number): ColumnParenthesesListContext[] | ColumnParenthesesListContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }

        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_joinSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterJoinSource) {
             listener.enterJoinSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitJoinSource) {
             listener.exitJoinSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitJoinSource) {
            return visitor.visitJoinSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class JoinSourcePartContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableSource(): TableSourceContext | null {
        return this.getRuleContext(0, TableSourceContext);
    }
    public virtualTableSource(): VirtualTableSourceContext | null {
        return this.getRuleContext(0, VirtualTableSourceContext);
    }
    public subQuerySource(): SubQuerySourceContext | null {
        return this.getRuleContext(0, SubQuerySourceContext);
    }
    public partitionedTableFunction(): PartitionedTableFunctionContext | null {
        return this.getRuleContext(0, PartitionedTableFunctionContext);
    }
    public lateralView(): LateralViewContext[];
    public lateralView(i: number): LateralViewContext | null;
    public lateralView(i?: number): LateralViewContext[] | LateralViewContext | null {
        if (i === undefined) {
            return this.getRuleContexts(LateralViewContext);
        }

        return this.getRuleContext(i, LateralViewContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_joinSourcePart;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterJoinSourcePart) {
             listener.enterJoinSourcePart(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitJoinSourcePart) {
             listener.exitJoinSourcePart(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitJoinSourcePart) {
            return visitor.visitJoinSourcePart(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UniqueJoinSourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public uniqueJoinTableSource(): UniqueJoinTableSourceContext {
        return this.getRuleContext(0, UniqueJoinTableSourceContext)!;
    }
    public uniqueJoinExpr(): UniqueJoinExprContext {
        return this.getRuleContext(0, UniqueJoinExprContext)!;
    }
    public KW_PRESERVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PRESERVE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_uniqueJoinSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUniqueJoinSource) {
             listener.enterUniqueJoinSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUniqueJoinSource) {
             listener.exitUniqueJoinSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUniqueJoinSource) {
            return visitor.visitUniqueJoinSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UniqueJoinExprContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public expressionList(): ExpressionListContext {
        return this.getRuleContext(0, ExpressionListContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_uniqueJoinExpr;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUniqueJoinExpr) {
             listener.enterUniqueJoinExpr(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUniqueJoinExpr) {
             listener.exitUniqueJoinExpr(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUniqueJoinExpr) {
            return visitor.visitUniqueJoinExpr(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UniqueJoinTokenContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNIQUEJOIN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UNIQUEJOIN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_uniqueJoinToken;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUniqueJoinToken) {
             listener.enterUniqueJoinToken(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUniqueJoinToken) {
             listener.exitUniqueJoinToken(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUniqueJoinToken) {
            return visitor.visitUniqueJoinToken(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class JoinTokenContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public COMMA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    public KW_JOIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_JOIN, 0);
    }
    public KW_INNER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INNER, 0);
    }
    public KW_CROSS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CROSS, 0);
    }
    public KW_LEFT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LEFT, 0);
    }
    public KW_RIGHT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RIGHT, 0);
    }
    public KW_FULL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FULL, 0);
    }
    public KW_OUTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTER, 0);
    }
    public KW_SEMI(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SEMI, 0);
    }
    public KW_ANTI(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ANTI, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_joinToken;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterJoinToken) {
             listener.enterJoinToken(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitJoinToken) {
             listener.exitJoinToken(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitJoinToken) {
            return visitor.visitJoinToken(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class LateralViewContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LATERAL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_LATERAL, 0)!;
    }
    public KW_VIEW(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    public KW_OUTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTER, 0);
    }
    public function_(): Function_Context | null {
        return this.getRuleContext(0, Function_Context);
    }
    public tableAlias(): TableAliasContext | null {
        return this.getRuleContext(0, TableAliasContext);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public KW_TABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public valuesClause(): ValuesClauseContext | null {
        return this.getRuleContext(0, ValuesClauseContext);
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_lateralView;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterLateralView) {
             listener.enterLateralView(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitLateralView) {
             listener.exitLateralView(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitLateralView) {
            return visitor.visitLateralView(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableAliasContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableAlias;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableAlias) {
             listener.enterTableAlias(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableAlias) {
             listener.exitTableAlias(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableAlias) {
            return visitor.visitTableAlias(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableBucketSampleContext extends antlr.ParserRuleContext {
    public _numerator?: Token | null;
    public _denominator?: Token | null;
    public _expression?: ExpressionContext;
    public _expr: ExpressionContext[] = [];
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TABLESAMPLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLESAMPLE, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public KW_BUCKET(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BUCKET, 0)!;
    }
    public KW_OUT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OUT, 0)!;
    }
    public KW_OF(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OF, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public Number(): antlr.TerminalNode[];
    public Number(i: number): antlr.TerminalNode | null;
    public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.Number);
    	} else {
    		return this.getToken(HiveSqlParser.Number, i);
    	}
    }
    public KW_ON(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableBucketSample;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableBucketSample) {
             listener.enterTableBucketSample(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableBucketSample) {
             listener.exitTableBucketSample(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableBucketSample) {
            return visitor.visitTableBucketSample(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SplitSampleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TABLESAMPLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLESAMPLE, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public ByteLengthLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.ByteLengthLiteral, 0);
    }
    public KW_PERCENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PERCENT, 0);
    }
    public KW_ROWS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROWS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_splitSample;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSplitSample) {
             listener.enterSplitSample(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSplitSample) {
             listener.exitSplitSample(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSplitSample) {
            return visitor.visitSplitSample(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableSampleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableBucketSample(): TableBucketSampleContext | null {
        return this.getRuleContext(0, TableBucketSampleContext);
    }
    public splitSample(): SplitSampleContext | null {
        return this.getRuleContext(0, SplitSampleContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableSample;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableSample) {
             listener.enterTableSample(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableSample) {
             listener.exitTableSample(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableSample) {
            return visitor.visitTableSample(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableSourceContext extends antlr.ParserRuleContext {
    public _tabname?: TableOrViewContext;
    public _props?: TablePropertiesContext;
    public _ts?: TableSampleContext;
    public _asOf?: AsOfClauseContext;
    public _alias?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableOrView(): TableOrViewContext {
        return this.getRuleContext(0, TableOrViewContext)!;
    }
    public tableProperties(): TablePropertiesContext | null {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    public tableSample(): TableSampleContext | null {
        return this.getRuleContext(0, TableSampleContext);
    }
    public asOfClause(): AsOfClauseContext | null {
        return this.getRuleContext(0, AsOfClauseContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableSource) {
             listener.enterTableSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableSource) {
             listener.exitTableSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableSource) {
            return visitor.visitTableSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AsOfClauseContext extends antlr.ParserRuleContext {
    public _asOfTime?: ExpressionContext;
    public _asOfVersion?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FOR(): antlr.TerminalNode[];
    public KW_FOR(i: number): antlr.TerminalNode | null;
    public KW_FOR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_FOR);
    	} else {
    		return this.getToken(HiveSqlParser.KW_FOR, i);
    	}
    }
    public KW_SYSTEM_TIME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SYSTEM_TIME, 0);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public KW_OF(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OF, 0);
    }
    public KW_SYSTEM_VERSION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SYSTEM_VERSION, 0);
    }
    public expression(): ExpressionContext | null {
        return this.getRuleContext(0, ExpressionContext);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_asOfClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAsOfClause) {
             listener.enterAsOfClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAsOfClause) {
             listener.exitAsOfClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAsOfClause) {
            return visitor.visitAsOfClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UniqueJoinTableSourceContext extends antlr.ParserRuleContext {
    public _tabname?: TableOrViewContext;
    public _ts?: TableSampleContext;
    public _alias?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableOrView(): TableOrViewContext {
        return this.getRuleContext(0, TableOrViewContext)!;
    }
    public tableSample(): TableSampleContext | null {
        return this.getRuleContext(0, TableSampleContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_uniqueJoinTableSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUniqueJoinTableSource) {
             listener.enterUniqueJoinTableSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUniqueJoinTableSource) {
             listener.exitUniqueJoinTableSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUniqueJoinTableSource) {
            return visitor.visitUniqueJoinTableSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DbSchemaNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dbSchemaName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDbSchemaName) {
             listener.enterDbSchemaName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDbSchemaName) {
             listener.exitDbSchemaName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDbSchemaName) {
            return visitor.visitDbSchemaName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DbSchemaNameCreateContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dbSchemaNameCreate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDbSchemaNameCreate) {
             listener.enterDbSchemaNameCreate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDbSchemaNameCreate) {
             listener.exitDbSchemaNameCreate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDbSchemaNameCreate) {
            return visitor.visitDbSchemaNameCreate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableOrViewContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableName(): TableNameContext | null {
        return this.getRuleContext(0, TableNameContext);
    }
    public viewName(): ViewNameContext | null {
        return this.getRuleContext(0, ViewNameContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableOrView;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableOrView) {
             listener.enterTableOrView(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableOrView) {
             listener.exitTableOrView(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableOrView) {
            return visitor.visitTableOrView(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableNameContext extends antlr.ParserRuleContext {
    public _db?: Id_Context;
    public _tab?: Id_Context;
    public _meta?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableName) {
             listener.enterTableName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableName) {
             listener.exitTableName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableName) {
            return visitor.visitTableName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableNameCreateContext extends antlr.ParserRuleContext {
    public _db?: Id_Context;
    public _tab?: Id_Context;
    public _meta?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableNameCreate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableNameCreate) {
             listener.enterTableNameCreate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableNameCreate) {
             listener.exitTableNameCreate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableNameCreate) {
            return visitor.visitTableNameCreate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewNameContext extends antlr.ParserRuleContext {
    public _db?: Id_Context;
    public _view?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public DOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewName) {
             listener.enterViewName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewName) {
             listener.exitViewName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewName) {
            return visitor.visitViewName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ViewNameCreateContext extends antlr.ParserRuleContext {
    public _db?: Id_Context;
    public _view?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public DOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_viewNameCreate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterViewNameCreate) {
             listener.enterViewNameCreate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitViewNameCreate) {
             listener.exitViewNameCreate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitViewNameCreate) {
            return visitor.visitViewNameCreate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SubQuerySourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public queryStatementExpression(): QueryStatementExpressionContext {
        return this.getRuleContext(0, QueryStatementExpressionContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_subQuerySource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSubQuerySource) {
             listener.enterSubQuerySource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSubQuerySource) {
             listener.exitSubQuerySource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSubQuerySource) {
            return visitor.visitSubQuerySource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitioningSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public partitionByClause(): PartitionByClauseContext | null {
        return this.getRuleContext(0, PartitionByClauseContext);
    }
    public orderByClause(): OrderByClauseContext | null {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    public distributeByClause(): DistributeByClauseContext | null {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    public sortByClause(): SortByClauseContext | null {
        return this.getRuleContext(0, SortByClauseContext);
    }
    public clusterByClause(): ClusterByClauseContext | null {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitioningSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitioningSpec) {
             listener.enterPartitioningSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitioningSpec) {
             listener.exitPartitioningSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitioningSpec) {
            return visitor.visitPartitioningSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionTableFunctionSourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public subQuerySource(): SubQuerySourceContext | null {
        return this.getRuleContext(0, SubQuerySourceContext);
    }
    public tableSource(): TableSourceContext | null {
        return this.getRuleContext(0, TableSourceContext);
    }
    public partitionedTableFunction(): PartitionedTableFunctionContext | null {
        return this.getRuleContext(0, PartitionedTableFunctionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionTableFunctionSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionTableFunctionSource) {
             listener.enterPartitionTableFunctionSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionTableFunctionSource) {
             listener.exitPartitionTableFunctionSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionTableFunctionSource) {
            return visitor.visitPartitionTableFunctionSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionedTableFunctionContext extends antlr.ParserRuleContext {
    public _n?: Id_Context;
    public _ptfsrc?: PartitionTableFunctionSourceContext;
    public _spec?: PartitioningSpecContext;
    public _alias?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public KW_ON(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ON, 0)!;
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public partitionTableFunctionSource(): PartitionTableFunctionSourceContext {
        return this.getRuleContext(0, PartitionTableFunctionSourceContext)!;
    }
    public Identifier(): antlr.TerminalNode[];
    public Identifier(i: number): antlr.TerminalNode | null;
    public Identifier(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.Identifier);
    	} else {
    		return this.getToken(HiveSqlParser.Identifier, i);
    	}
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public partitioningSpec(): PartitioningSpecContext | null {
        return this.getRuleContext(0, PartitioningSpecContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionedTableFunction;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionedTableFunction) {
             listener.enterPartitionedTableFunction(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionedTableFunction) {
             listener.exitPartitionedTableFunction(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionedTableFunction) {
            return visitor.visitPartitionedTableFunction(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WhereClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WHERE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WHERE, 0)!;
    }
    public searchCondition(): SearchConditionContext {
        return this.getRuleContext(0, SearchConditionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_whereClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWhereClause) {
             listener.enterWhereClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWhereClause) {
             listener.exitWhereClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWhereClause) {
            return visitor.visitWhereClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SearchConditionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_searchCondition;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSearchCondition) {
             listener.enterSearchCondition(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSearchCondition) {
             listener.exitSearchCondition(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSearchCondition) {
            return visitor.visitSearchCondition(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ValuesSourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public valuesClause(): ValuesClauseContext {
        return this.getRuleContext(0, ValuesClauseContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_valuesSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterValuesSource) {
             listener.enterValuesSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitValuesSource) {
             listener.exitValuesSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitValuesSource) {
            return visitor.visitValuesSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ValuesClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_VALUES(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_VALUES, 0)!;
    }
    public valuesTableConstructor(): ValuesTableConstructorContext {
        return this.getRuleContext(0, ValuesTableConstructorContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_valuesClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterValuesClause) {
             listener.enterValuesClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitValuesClause) {
             listener.exitValuesClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitValuesClause) {
            return visitor.visitValuesClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ValuesTableConstructorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public valueRowConstructor(): ValueRowConstructorContext[];
    public valueRowConstructor(i: number): ValueRowConstructorContext | null;
    public valueRowConstructor(i?: number): ValueRowConstructorContext[] | ValueRowConstructorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ValueRowConstructorContext);
        }

        return this.getRuleContext(i, ValueRowConstructorContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public firstValueRowConstructor(): FirstValueRowConstructorContext | null {
        return this.getRuleContext(0, FirstValueRowConstructorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_valuesTableConstructor;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterValuesTableConstructor) {
             listener.enterValuesTableConstructor(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitValuesTableConstructor) {
             listener.exitValuesTableConstructor(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitValuesTableConstructor) {
            return visitor.visitValuesTableConstructor(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ValueRowConstructorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expressionsInParenthesis(): ExpressionsInParenthesisContext {
        return this.getRuleContext(0, ExpressionsInParenthesisContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_valueRowConstructor;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterValueRowConstructor) {
             listener.enterValueRowConstructor(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitValueRowConstructor) {
             listener.exitValueRowConstructor(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitValueRowConstructor) {
            return visitor.visitValueRowConstructor(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FirstValueRowConstructorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public firstExpressionsWithAlias(): FirstExpressionsWithAliasContext {
        return this.getRuleContext(0, FirstExpressionsWithAliasContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_firstValueRowConstructor;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFirstValueRowConstructor) {
             listener.enterFirstValueRowConstructor(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFirstValueRowConstructor) {
             listener.exitFirstValueRowConstructor(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFirstValueRowConstructor) {
            return visitor.visitFirstValueRowConstructor(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class VirtualTableSourceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TABLE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TABLE, 0)!;
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public valuesClause(): ValuesClauseContext {
        return this.getRuleContext(0, ValuesClauseContext)!;
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public tableAlias(): TableAliasContext {
        return this.getRuleContext(0, TableAliasContext)!;
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_virtualTableSource;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterVirtualTableSource) {
             listener.enterVirtualTableSource(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitVirtualTableSource) {
             listener.exitVirtualTableSource(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitVirtualTableSource) {
            return visitor.visitVirtualTableSource(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SELECT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SELECT, 0);
    }
    public selectList(): SelectListContext | null {
        return this.getRuleContext(0, SelectListContext);
    }
    public KW_TRANSFORM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRANSFORM, 0);
    }
    public selectTrfmClause(): SelectTrfmClauseContext | null {
        return this.getRuleContext(0, SelectTrfmClauseContext);
    }
    public QUERY_HINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.QUERY_HINT, 0);
    }
    public all_distinct(): All_distinctContext | null {
        return this.getRuleContext(0, All_distinctContext);
    }
    public trfmClause(): TrfmClauseContext | null {
        return this.getRuleContext(0, TrfmClauseContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectClause) {
             listener.enterSelectClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectClause) {
             listener.exitSelectClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectClause) {
            return visitor.visitSelectClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class All_distinctContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    public KW_DISTINCT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_all_distinct;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAll_distinct) {
             listener.enterAll_distinct(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAll_distinct) {
             listener.exitAll_distinct(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAll_distinct) {
            return visitor.visitAll_distinct(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public selectItem(): SelectItemContext[];
    public selectItem(i: number): SelectItemContext | null;
    public selectItem(i?: number): SelectItemContext[] | SelectItemContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SelectItemContext);
        }

        return this.getRuleContext(i, SelectItemContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectList) {
             listener.enterSelectList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectList) {
             listener.exitSelectList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectList) {
            return visitor.visitSelectList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectTrfmClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public selectExpressionList(): SelectExpressionListContext {
        return this.getRuleContext(0, SelectExpressionListContext)!;
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public rowFormat(): RowFormatContext[];
    public rowFormat(i: number): RowFormatContext | null;
    public rowFormat(i?: number): RowFormatContext[] | RowFormatContext | null {
        if (i === undefined) {
            return this.getRuleContexts(RowFormatContext);
        }

        return this.getRuleContext(i, RowFormatContext);
    }
    public recordWriter(): RecordWriterContext {
        return this.getRuleContext(0, RecordWriterContext)!;
    }
    public KW_USING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_USING, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public recordReader(): RecordReaderContext {
        return this.getRuleContext(0, RecordReaderContext)!;
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public aliasList(): AliasListContext | null {
        return this.getRuleContext(0, AliasListContext);
    }
    public columnNameTypeList(): ColumnNameTypeListContext | null {
        return this.getRuleContext(0, ColumnNameTypeListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectTrfmClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectTrfmClause) {
             listener.enterSelectTrfmClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectTrfmClause) {
             listener.exitSelectTrfmClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectTrfmClause) {
            return visitor.visitSelectTrfmClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectItemContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableAllColumns(): TableAllColumnsContext | null {
        return this.getRuleContext(0, TableAllColumnsContext);
    }
    public columnName(): ColumnNameContext | null {
        return this.getRuleContext(0, ColumnNameContext);
    }
    public expression(): ExpressionContext | null {
        return this.getRuleContext(0, ExpressionContext);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectItem;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectItem) {
             listener.enterSelectItem(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectItem) {
             listener.exitSelectItem(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectItem) {
            return visitor.visitSelectItem(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TrfmClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public selectExpressionList(): SelectExpressionListContext {
        return this.getRuleContext(0, SelectExpressionListContext)!;
    }
    public rowFormat(): RowFormatContext[];
    public rowFormat(i: number): RowFormatContext | null;
    public rowFormat(i?: number): RowFormatContext[] | RowFormatContext | null {
        if (i === undefined) {
            return this.getRuleContexts(RowFormatContext);
        }

        return this.getRuleContext(i, RowFormatContext);
    }
    public recordWriter(): RecordWriterContext {
        return this.getRuleContext(0, RecordWriterContext)!;
    }
    public KW_USING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_USING, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public recordReader(): RecordReaderContext {
        return this.getRuleContext(0, RecordReaderContext)!;
    }
    public KW_MAP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    public KW_REDUCE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REDUCE, 0);
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public aliasList(): AliasListContext | null {
        return this.getRuleContext(0, AliasListContext);
    }
    public columnNameTypeList(): ColumnNameTypeListContext | null {
        return this.getRuleContext(0, ColumnNameTypeListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_trfmClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTrfmClause) {
             listener.enterTrfmClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTrfmClause) {
             listener.exitTrfmClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTrfmClause) {
            return visitor.visitTrfmClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableAllColumns(): TableAllColumnsContext | null {
        return this.getRuleContext(0, TableAllColumnsContext);
    }
    public expression(): ExpressionContext | null {
        return this.getRuleContext(0, ExpressionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectExpression) {
             listener.enterSelectExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectExpression) {
             listener.exitSelectExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectExpression) {
            return visitor.visitSelectExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SelectExpressionListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public selectExpression(): SelectExpressionContext[];
    public selectExpression(i: number): SelectExpressionContext | null;
    public selectExpression(i?: number): SelectExpressionContext[] | SelectExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SelectExpressionContext);
        }

        return this.getRuleContext(i, SelectExpressionContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_selectExpressionList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSelectExpressionList) {
             listener.enterSelectExpressionList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSelectExpressionList) {
             listener.exitSelectExpressionList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSelectExpressionList) {
            return visitor.visitSelectExpressionList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_clauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WINDOW(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WINDOW, 0)!;
    }
    public window_defn(): Window_defnContext[];
    public window_defn(i: number): Window_defnContext | null;
    public window_defn(i?: number): Window_defnContext[] | Window_defnContext | null {
        if (i === undefined) {
            return this.getRuleContexts(Window_defnContext);
        }

        return this.getRuleContext(i, Window_defnContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_clause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_clause) {
             listener.enterWindow_clause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_clause) {
             listener.exitWindow_clause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_clause) {
            return visitor.visitWindow_clause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_defnContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public window_specification(): Window_specificationContext {
        return this.getRuleContext(0, Window_specificationContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_defn;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_defn) {
             listener.enterWindow_defn(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_defn) {
             listener.exitWindow_defn(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_defn) {
            return visitor.visitWindow_defn(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_specificationContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public partitioningSpec(): PartitioningSpecContext | null {
        return this.getRuleContext(0, PartitioningSpecContext);
    }
    public window_frame(): Window_frameContext | null {
        return this.getRuleContext(0, Window_frameContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_specification;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_specification) {
             listener.enterWindow_specification(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_specification) {
             listener.exitWindow_specification(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_specification) {
            return visitor.visitWindow_specification(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_frameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public window_range_expression(): Window_range_expressionContext | null {
        return this.getRuleContext(0, Window_range_expressionContext);
    }
    public window_value_expression(): Window_value_expressionContext | null {
        return this.getRuleContext(0, Window_value_expressionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_frame;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_frame) {
             listener.enterWindow_frame(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_frame) {
             listener.exitWindow_frame(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_frame) {
            return visitor.visitWindow_frame(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_range_expressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ROWS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ROWS, 0)!;
    }
    public window_frame_start_boundary(): Window_frame_start_boundaryContext | null {
        return this.getRuleContext(0, Window_frame_start_boundaryContext);
    }
    public KW_BETWEEN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    public window_frame_boundary(): Window_frame_boundaryContext[];
    public window_frame_boundary(i: number): Window_frame_boundaryContext | null;
    public window_frame_boundary(i?: number): Window_frame_boundaryContext[] | Window_frame_boundaryContext | null {
        if (i === undefined) {
            return this.getRuleContexts(Window_frame_boundaryContext);
        }

        return this.getRuleContext(i, Window_frame_boundaryContext);
    }
    public KW_AND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_range_expression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_range_expression) {
             listener.enterWindow_range_expression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_range_expression) {
             listener.exitWindow_range_expression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_range_expression) {
            return visitor.visitWindow_range_expression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_value_expressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RANGE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RANGE, 0)!;
    }
    public window_frame_start_boundary(): Window_frame_start_boundaryContext | null {
        return this.getRuleContext(0, Window_frame_start_boundaryContext);
    }
    public KW_BETWEEN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    public window_frame_boundary(): Window_frame_boundaryContext[];
    public window_frame_boundary(i: number): Window_frame_boundaryContext | null;
    public window_frame_boundary(i?: number): Window_frame_boundaryContext[] | Window_frame_boundaryContext | null {
        if (i === undefined) {
            return this.getRuleContexts(Window_frame_boundaryContext);
        }

        return this.getRuleContext(i, Window_frame_boundaryContext);
    }
    public KW_AND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_value_expression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_value_expression) {
             listener.enterWindow_value_expression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_value_expression) {
             listener.exitWindow_value_expression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_value_expression) {
            return visitor.visitWindow_value_expression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_frame_start_boundaryContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNBOUNDED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNBOUNDED, 0);
    }
    public KW_PRECEDING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PRECEDING, 0);
    }
    public KW_CURRENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CURRENT, 0);
    }
    public KW_ROW(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROW, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_frame_start_boundary;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_frame_start_boundary) {
             listener.enterWindow_frame_start_boundary(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_frame_start_boundary) {
             listener.exitWindow_frame_start_boundary(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_frame_start_boundary) {
            return visitor.visitWindow_frame_start_boundary(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Window_frame_boundaryContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNBOUNDED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNBOUNDED, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public KW_PRECEDING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PRECEDING, 0);
    }
    public KW_FOLLOWING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FOLLOWING, 0);
    }
    public KW_CURRENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CURRENT, 0);
    }
    public KW_ROW(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROW, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_window_frame_boundary;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWindow_frame_boundary) {
             listener.enterWindow_frame_boundary(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWindow_frame_boundary) {
             listener.exitWindow_frame_boundary(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWindow_frame_boundary) {
            return visitor.visitWindow_frame_boundary(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GroupByClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_GROUP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_GROUP, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public groupby_expression(): Groupby_expressionContext {
        return this.getRuleContext(0, Groupby_expressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_groupByClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGroupByClause) {
             listener.enterGroupByClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGroupByClause) {
             listener.exitGroupByClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGroupByClause) {
            return visitor.visitGroupByClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Groupby_expressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnName(): ColumnNameContext | null {
        return this.getRuleContext(0, ColumnNameContext);
    }
    public rollupStandard(): RollupStandardContext | null {
        return this.getRuleContext(0, RollupStandardContext);
    }
    public rollupOldSyntax(): RollupOldSyntaxContext | null {
        return this.getRuleContext(0, RollupOldSyntaxContext);
    }
    public groupByEmpty(): GroupByEmptyContext | null {
        return this.getRuleContext(0, GroupByEmptyContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_groupby_expression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGroupby_expression) {
             listener.enterGroupby_expression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGroupby_expression) {
             listener.exitGroupby_expression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGroupby_expression) {
            return visitor.visitGroupby_expression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GroupByEmptyContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_groupByEmpty;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGroupByEmpty) {
             listener.enterGroupByEmpty(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGroupByEmpty) {
             listener.exitGroupByEmpty(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGroupByEmpty) {
            return visitor.visitGroupByEmpty(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RollupStandardContext extends antlr.ParserRuleContext {
    public _rollup?: Token | null;
    public _cube?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public KW_ROLLUP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLLUP, 0);
    }
    public KW_CUBE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CUBE, 0);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rollupStandard;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRollupStandard) {
             listener.enterRollupStandard(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRollupStandard) {
             listener.exitRollupStandard(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRollupStandard) {
            return visitor.visitRollupStandard(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RollupOldSyntaxContext extends antlr.ParserRuleContext {
    public _expr?: ExpressionsNotInParenthesisContext;
    public _rollup?: Token | null;
    public _cube?: Token | null;
    public _sets?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext {
        return this.getRuleContext(0, ExpressionsNotInParenthesisContext)!;
    }
    public KW_ROLLUP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLLUP, 0);
    }
    public KW_CUBE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CUBE, 0);
    }
    public KW_SETS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SETS, 0);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public groupingSetExpression(): GroupingSetExpressionContext[];
    public groupingSetExpression(i: number): GroupingSetExpressionContext | null;
    public groupingSetExpression(i?: number): GroupingSetExpressionContext[] | GroupingSetExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(GroupingSetExpressionContext);
        }

        return this.getRuleContext(i, GroupingSetExpressionContext);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_GROUPING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_GROUPING, 0);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rollupOldSyntax;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRollupOldSyntax) {
             listener.enterRollupOldSyntax(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRollupOldSyntax) {
             listener.exitRollupOldSyntax(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRollupOldSyntax) {
            return visitor.visitRollupOldSyntax(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GroupingSetExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public groupingSetExpressionMultiple(): GroupingSetExpressionMultipleContext | null {
        return this.getRuleContext(0, GroupingSetExpressionMultipleContext);
    }
    public groupingExpressionSingle(): GroupingExpressionSingleContext | null {
        return this.getRuleContext(0, GroupingExpressionSingleContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_groupingSetExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGroupingSetExpression) {
             listener.enterGroupingSetExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGroupingSetExpression) {
             listener.exitGroupingSetExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGroupingSetExpression) {
            return visitor.visitGroupingSetExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GroupingSetExpressionMultipleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_groupingSetExpressionMultiple;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGroupingSetExpressionMultiple) {
             listener.enterGroupingSetExpressionMultiple(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGroupingSetExpressionMultiple) {
             listener.exitGroupingSetExpressionMultiple(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGroupingSetExpressionMultiple) {
            return visitor.visitGroupingSetExpressionMultiple(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GroupingExpressionSingleContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_groupingExpressionSingle;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGroupingExpressionSingle) {
             listener.enterGroupingExpressionSingle(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGroupingExpressionSingle) {
             listener.exitGroupingExpressionSingle(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGroupingExpressionSingle) {
            return visitor.visitGroupingExpressionSingle(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HavingClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_HAVING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_HAVING, 0)!;
    }
    public havingCondition(): HavingConditionContext {
        return this.getRuleContext(0, HavingConditionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_havingClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHavingClause) {
             listener.enterHavingClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHavingClause) {
             listener.exitHavingClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHavingClause) {
            return visitor.visitHavingClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class QualifyClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_QUALIFY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_QUALIFY, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_qualifyClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterQualifyClause) {
             listener.enterQualifyClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitQualifyClause) {
             listener.exitQualifyClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitQualifyClause) {
            return visitor.visitQualifyClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HavingConditionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_havingCondition;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHavingCondition) {
             listener.enterHavingCondition(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHavingCondition) {
             listener.exitHavingCondition(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHavingCondition) {
            return visitor.visitHavingCondition(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionsInParenthesisContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext {
        return this.getRuleContext(0, ExpressionsNotInParenthesisContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expressionsInParenthesis;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpressionsInParenthesis) {
             listener.enterExpressionsInParenthesis(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpressionsInParenthesis) {
             listener.exitExpressionsInParenthesis(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpressionsInParenthesis) {
            return visitor.visitExpressionsInParenthesis(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionsNotInParenthesisContext extends antlr.ParserRuleContext {
    public _first?: ExpressionOrDefaultContext;
    public _more?: ExpressionPartContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expressionOrDefault(): ExpressionOrDefaultContext {
        return this.getRuleContext(0, ExpressionOrDefaultContext)!;
    }
    public expressionPart(): ExpressionPartContext | null {
        return this.getRuleContext(0, ExpressionPartContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expressionsNotInParenthesis;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpressionsNotInParenthesis) {
             listener.enterExpressionsNotInParenthesis(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpressionsNotInParenthesis) {
             listener.exitExpressionsNotInParenthesis(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpressionsNotInParenthesis) {
            return visitor.visitExpressionsNotInParenthesis(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionPartContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public expressionOrDefault(): ExpressionOrDefaultContext[];
    public expressionOrDefault(i: number): ExpressionOrDefaultContext | null;
    public expressionOrDefault(i?: number): ExpressionOrDefaultContext[] | ExpressionOrDefaultContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionOrDefaultContext);
        }

        return this.getRuleContext(i, ExpressionOrDefaultContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expressionPart;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpressionPart) {
             listener.enterExpressionPart(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpressionPart) {
             listener.exitExpressionPart(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpressionPart) {
            return visitor.visitExpressionPart(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionOrDefaultContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public defaultValue(): DefaultValueContext | null {
        return this.getRuleContext(0, DefaultValueContext);
    }
    public expression(): ExpressionContext | null {
        return this.getRuleContext(0, ExpressionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expressionOrDefault;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpressionOrDefault) {
             listener.enterExpressionOrDefault(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpressionOrDefault) {
             listener.exitExpressionOrDefault(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpressionOrDefault) {
            return visitor.visitExpressionOrDefault(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FirstExpressionsWithAliasContext extends antlr.ParserRuleContext {
    public _first?: ExpressionContext;
    public _colAlias?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public expressionWithAlias(): ExpressionWithAliasContext[];
    public expressionWithAlias(i: number): ExpressionWithAliasContext | null;
    public expressionWithAlias(i?: number): ExpressionWithAliasContext[] | ExpressionWithAliasContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionWithAliasContext);
        }

        return this.getRuleContext(i, ExpressionWithAliasContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_firstExpressionsWithAlias;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFirstExpressionsWithAlias) {
             listener.enterFirstExpressionsWithAlias(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFirstExpressionsWithAlias) {
             listener.exitFirstExpressionsWithAlias(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFirstExpressionsWithAlias) {
            return visitor.visitFirstExpressionsWithAlias(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionWithAliasContext extends antlr.ParserRuleContext {
    public _alias?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public KW_AS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expressionWithAlias;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpressionWithAlias) {
             listener.enterExpressionWithAlias(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpressionWithAlias) {
             listener.exitExpressionWithAlias(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpressionWithAlias) {
            return visitor.visitExpressionWithAlias(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public expressionsInParenthesis(): ExpressionsInParenthesisContext | null {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext | null {
        return this.getRuleContext(0, ExpressionsNotInParenthesisContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expressions;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpressions) {
             listener.enterExpressions(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpressions) {
             listener.exitExpressions(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpressions) {
            return visitor.visitExpressions(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnRefOrderInParenthesisContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public columnRefOrder(): ColumnRefOrderContext[];
    public columnRefOrder(i: number): ColumnRefOrderContext | null;
    public columnRefOrder(i?: number): ColumnRefOrderContext[] | ColumnRefOrderContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnRefOrderContext);
        }

        return this.getRuleContext(i, ColumnRefOrderContext);
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnRefOrderInParenthesis;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnRefOrderInParenthesis) {
             listener.enterColumnRefOrderInParenthesis(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnRefOrderInParenthesis) {
             listener.exitColumnRefOrderInParenthesis(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnRefOrderInParenthesis) {
            return visitor.visitColumnRefOrderInParenthesis(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ColumnRefOrderNotInParenthesisContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public columnRefOrder(): ColumnRefOrderContext[];
    public columnRefOrder(i: number): ColumnRefOrderContext | null;
    public columnRefOrder(i?: number): ColumnRefOrderContext[] | ColumnRefOrderContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnRefOrderContext);
        }

        return this.getRuleContext(i, ColumnRefOrderContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_columnRefOrderNotInParenthesis;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterColumnRefOrderNotInParenthesis) {
             listener.enterColumnRefOrderNotInParenthesis(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitColumnRefOrderNotInParenthesis) {
             listener.exitColumnRefOrderNotInParenthesis(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitColumnRefOrderNotInParenthesis) {
            return visitor.visitColumnRefOrderNotInParenthesis(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class OrderByClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ORDER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ORDER, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public columnRefOrder(): ColumnRefOrderContext[];
    public columnRefOrder(i: number): ColumnRefOrderContext | null;
    public columnRefOrder(i?: number): ColumnRefOrderContext[] | ColumnRefOrderContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ColumnRefOrderContext);
        }

        return this.getRuleContext(i, ColumnRefOrderContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_orderByClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterOrderByClause) {
             listener.enterOrderByClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitOrderByClause) {
             listener.exitOrderByClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitOrderByClause) {
            return visitor.visitOrderByClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ClusterByClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CLUSTER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CLUSTER, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public expressions(): ExpressionsContext {
        return this.getRuleContext(0, ExpressionsContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_clusterByClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterClusterByClause) {
             listener.enterClusterByClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitClusterByClause) {
             listener.exitClusterByClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitClusterByClause) {
            return visitor.visitClusterByClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionByClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_PARTITION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public expressions(): ExpressionsContext {
        return this.getRuleContext(0, ExpressionsContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionByClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionByClause) {
             listener.enterPartitionByClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionByClause) {
             listener.exitPartitionByClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionByClause) {
            return visitor.visitPartitionByClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DistributeByClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DISTRIBUTE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTE, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public expressions(): ExpressionsContext {
        return this.getRuleContext(0, ExpressionsContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_distributeByClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDistributeByClause) {
             listener.enterDistributeByClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDistributeByClause) {
             listener.exitDistributeByClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDistributeByClause) {
            return visitor.visitDistributeByClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SortByClauseContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SORT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_SORT, 0)!;
    }
    public KW_BY(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_BY, 0)!;
    }
    public columnRefOrderInParenthesis(): ColumnRefOrderInParenthesisContext | null {
        return this.getRuleContext(0, ColumnRefOrderInParenthesisContext);
    }
    public columnRefOrderNotInParenthesis(): ColumnRefOrderNotInParenthesisContext | null {
        return this.getRuleContext(0, ColumnRefOrderNotInParenthesisContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_sortByClause;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSortByClause) {
             listener.enterSortByClause(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSortByClause) {
             listener.exitSortByClause(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSortByClause) {
            return visitor.visitSortByClause(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TrimFunctionContext extends antlr.ParserRuleContext {
    public _leading?: Token | null;
    public _trailing?: Token | null;
    public _trim_characters?: SelectExpressionContext;
    public _str?: SelectExpressionContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TRIM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TRIM, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public selectExpression(): SelectExpressionContext[];
    public selectExpression(i: number): SelectExpressionContext | null;
    public selectExpression(i?: number): SelectExpressionContext[] | SelectExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SelectExpressionContext);
        }

        return this.getRuleContext(i, SelectExpressionContext);
    }
    public KW_BOTH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BOTH, 0);
    }
    public KW_LEADING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LEADING, 0);
    }
    public KW_TRAILING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRAILING, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_trimFunction;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTrimFunction) {
             listener.enterTrimFunction(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTrimFunction) {
             listener.exitTrimFunction(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTrimFunction) {
            return visitor.visitTrimFunction(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Function_Context extends antlr.ParserRuleContext {
    public _star?: Token | null;
    public _dist?: All_distinctContext;
    public _within?: Token | null;
    public _ordBy?: OrderByClauseContext;
    public _nt?: Null_treatmentContext;
    public _ws?: Window_specificationContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public trimFunction(): TrimFunctionContext | null {
        return this.getRuleContext(0, TrimFunctionContext);
    }
    public functionNameForInvoke(): FunctionNameForInvokeContext | null {
        return this.getRuleContext(0, FunctionNameForInvokeContext);
    }
    public LPAREN(): antlr.TerminalNode[];
    public LPAREN(i: number): antlr.TerminalNode | null;
    public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.LPAREN, i);
    	}
    }
    public RPAREN(): antlr.TerminalNode[];
    public RPAREN(i: number): antlr.TerminalNode | null;
    public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RPAREN);
    	} else {
    		return this.getToken(HiveSqlParser.RPAREN, i);
    	}
    }
    public KW_GROUP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    public KW_OVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OVER, 0);
    }
    public STAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.STAR, 0);
    }
    public KW_WITHIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITHIN, 0);
    }
    public orderByClause(): OrderByClauseContext | null {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    public window_specification(): Window_specificationContext | null {
        return this.getRuleContext(0, Window_specificationContext);
    }
    public null_treatment(): Null_treatmentContext | null {
        return this.getRuleContext(0, Null_treatmentContext);
    }
    public selectExpression(): SelectExpressionContext[];
    public selectExpression(i: number): SelectExpressionContext | null;
    public selectExpression(i?: number): SelectExpressionContext[] | SelectExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(SelectExpressionContext);
        }

        return this.getRuleContext(i, SelectExpressionContext);
    }
    public all_distinct(): All_distinctContext | null {
        return this.getRuleContext(0, All_distinctContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_function_;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFunction_) {
             listener.enterFunction_(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFunction_) {
             listener.exitFunction_(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFunction_) {
            return visitor.visitFunction_(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Null_treatmentContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_RESPECT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RESPECT, 0);
    }
    public KW_NULLS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_NULLS, 0)!;
    }
    public KW_IGNORE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IGNORE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_null_treatment;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterNull_treatment) {
             listener.enterNull_treatment(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitNull_treatment) {
             listener.exitNull_treatment(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitNull_treatment) {
            return visitor.visitNull_treatment(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FunctionNameCreateContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public functionIdentifier(): FunctionIdentifierContext {
        return this.getRuleContext(0, FunctionIdentifierContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_functionNameCreate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFunctionNameCreate) {
             listener.enterFunctionNameCreate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFunctionNameCreate) {
             listener.exitFunctionNameCreate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFunctionNameCreate) {
            return visitor.visitFunctionNameCreate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FunctionNameForDDLContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public userDefinedFuncName(): UserDefinedFuncNameContext | null {
        return this.getRuleContext(0, UserDefinedFuncNameContext);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_functionNameForDDL;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFunctionNameForDDL) {
             listener.enterFunctionNameForDDL(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFunctionNameForDDL) {
             listener.exitFunctionNameForDDL(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFunctionNameForDDL) {
            return visitor.visitFunctionNameForDDL(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FunctionNameForInvokeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public userDefinedFuncName(): UserDefinedFuncNameContext | null {
        return this.getRuleContext(0, UserDefinedFuncNameContext);
    }
    public internalFunctionName(): InternalFunctionNameContext | null {
        return this.getRuleContext(0, InternalFunctionNameContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_functionNameForInvoke;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFunctionNameForInvoke) {
             listener.enterFunctionNameForInvoke(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFunctionNameForInvoke) {
             listener.exitFunctionNameForInvoke(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFunctionNameForInvoke) {
            return visitor.visitFunctionNameForInvoke(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UserDefinedFuncNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public functionIdentifier(): FunctionIdentifierContext {
        return this.getRuleContext(0, FunctionIdentifierContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_userDefinedFuncName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUserDefinedFuncName) {
             listener.enterUserDefinedFuncName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUserDefinedFuncName) {
             listener.exitUserDefinedFuncName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUserDefinedFuncName) {
            return visitor.visitUserDefinedFuncName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class InternalFunctionNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public sql11ReservedKeywordsUsedAsFunctionName(): Sql11ReservedKeywordsUsedAsFunctionNameContext | null {
        return this.getRuleContext(0, Sql11ReservedKeywordsUsedAsFunctionNameContext);
    }
    public sysFuncNames(): SysFuncNamesContext | null {
        return this.getRuleContext(0, SysFuncNamesContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_internalFunctionName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterInternalFunctionName) {
             listener.enterInternalFunctionName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitInternalFunctionName) {
             listener.exitInternalFunctionName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitInternalFunctionName) {
            return visitor.visitInternalFunctionName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CastExpressionContext extends antlr.ParserRuleContext {
    public _toType?: PrimitiveTypeContext;
    public _fmt?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CAST(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CAST, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public KW_AS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AS, 0)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public primitiveType(): PrimitiveTypeContext {
        return this.getRuleContext(0, PrimitiveTypeContext)!;
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_FORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_castExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCastExpression) {
             listener.enterCastExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCastExpression) {
             listener.exitCastExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCastExpression) {
            return visitor.visitCastExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CaseExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CASE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CASE, 0)!;
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public KW_END(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_END, 0)!;
    }
    public KW_WHEN(): antlr.TerminalNode[];
    public KW_WHEN(i: number): antlr.TerminalNode | null;
    public KW_WHEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_WHEN);
    	} else {
    		return this.getToken(HiveSqlParser.KW_WHEN, i);
    	}
    }
    public KW_THEN(): antlr.TerminalNode[];
    public KW_THEN(i: number): antlr.TerminalNode | null;
    public KW_THEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_THEN);
    	} else {
    		return this.getToken(HiveSqlParser.KW_THEN, i);
    	}
    }
    public KW_ELSE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ELSE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_caseExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCaseExpression) {
             listener.enterCaseExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCaseExpression) {
             listener.exitCaseExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCaseExpression) {
            return visitor.visitCaseExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WhenExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CASE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CASE, 0)!;
    }
    public KW_END(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_END, 0)!;
    }
    public KW_WHEN(): antlr.TerminalNode[];
    public KW_WHEN(i: number): antlr.TerminalNode | null;
    public KW_WHEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_WHEN);
    	} else {
    		return this.getToken(HiveSqlParser.KW_WHEN, i);
    	}
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public KW_THEN(): antlr.TerminalNode[];
    public KW_THEN(i: number): antlr.TerminalNode | null;
    public KW_THEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_THEN);
    	} else {
    		return this.getToken(HiveSqlParser.KW_THEN, i);
    	}
    }
    public KW_ELSE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ELSE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_whenExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWhenExpression) {
             listener.enterWhenExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWhenExpression) {
             listener.exitWhenExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWhenExpression) {
            return visitor.visitWhenExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FloorExpressionContext extends antlr.ParserRuleContext {
    public _floorUnit?: FloorDateQualifiersContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_FLOOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FLOOR, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public KW_TO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    public floorDateQualifiers(): FloorDateQualifiersContext | null {
        return this.getRuleContext(0, FloorDateQualifiersContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_floorExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFloorExpression) {
             listener.enterFloorExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFloorExpression) {
             listener.exitFloorExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFloorExpression) {
            return visitor.visitFloorExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FloorDateQualifiersContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public year(): YearContext | null {
        return this.getRuleContext(0, YearContext);
    }
    public KW_QUARTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUARTER, 0);
    }
    public month(): MonthContext | null {
        return this.getRuleContext(0, MonthContext);
    }
    public week(): WeekContext | null {
        return this.getRuleContext(0, WeekContext);
    }
    public day(): DayContext | null {
        return this.getRuleContext(0, DayContext);
    }
    public hour(): HourContext | null {
        return this.getRuleContext(0, HourContext);
    }
    public minute(): MinuteContext | null {
        return this.getRuleContext(0, MinuteContext);
    }
    public second(): SecondContext | null {
        return this.getRuleContext(0, SecondContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_floorDateQualifiers;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFloorDateQualifiers) {
             listener.enterFloorDateQualifiers(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFloorDateQualifiers) {
             listener.exitFloorDateQualifiers(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFloorDateQualifiers) {
            return visitor.visitFloorDateQualifiers(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExtractExpressionContext extends antlr.ParserRuleContext {
    public _timeUnit?: TimeQualifiersContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXTRACT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXTRACT, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public expression(): ExpressionContext {
        return this.getRuleContext(0, ExpressionContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public timeQualifiers(): TimeQualifiersContext {
        return this.getRuleContext(0, TimeQualifiersContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_extractExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExtractExpression) {
             listener.enterExtractExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExtractExpression) {
             listener.exitExtractExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExtractExpression) {
            return visitor.visitExtractExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TimeQualifiersContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public year(): YearContext | null {
        return this.getRuleContext(0, YearContext);
    }
    public KW_QUARTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUARTER, 0);
    }
    public month(): MonthContext | null {
        return this.getRuleContext(0, MonthContext);
    }
    public week(): WeekContext | null {
        return this.getRuleContext(0, WeekContext);
    }
    public day(): DayContext | null {
        return this.getRuleContext(0, DayContext);
    }
    public hour(): HourContext | null {
        return this.getRuleContext(0, HourContext);
    }
    public minute(): MinuteContext | null {
        return this.getRuleContext(0, MinuteContext);
    }
    public second(): SecondContext | null {
        return this.getRuleContext(0, SecondContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_timeQualifiers;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTimeQualifiers) {
             listener.enterTimeQualifiers(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTimeQualifiers) {
             listener.exitTimeQualifiers(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTimeQualifiers) {
            return visitor.visitTimeQualifiers(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ConstantContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public intervalLiteral(): IntervalLiteralContext | null {
        return this.getRuleContext(0, IntervalLiteralContext);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public dateLiteral(): DateLiteralContext | null {
        return this.getRuleContext(0, DateLiteralContext);
    }
    public timestampLiteral(): TimestampLiteralContext | null {
        return this.getRuleContext(0, TimestampLiteralContext);
    }
    public timestampLocalTZLiteral(): TimestampLocalTZLiteralContext | null {
        return this.getRuleContext(0, TimestampLocalTZLiteralContext);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public stringLiteralSequence(): StringLiteralSequenceContext | null {
        return this.getRuleContext(0, StringLiteralSequenceContext);
    }
    public IntegralLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.IntegralLiteral, 0);
    }
    public NumberLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.NumberLiteral, 0);
    }
    public charSetStringLiteral(): CharSetStringLiteralContext | null {
        return this.getRuleContext(0, CharSetStringLiteralContext);
    }
    public booleanValue(): BooleanValueContext | null {
        return this.getRuleContext(0, BooleanValueContext);
    }
    public KW_NULL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    public prepareStmtParam(): PrepareStmtParamContext | null {
        return this.getRuleContext(0, PrepareStmtParamContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_constant;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterConstant) {
             listener.enterConstant(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitConstant) {
             listener.exitConstant(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitConstant) {
            return visitor.visitConstant(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrepareStmtParamContext extends antlr.ParserRuleContext {
    public _p?: ParameterIdxContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public parameterIdx(): ParameterIdxContext {
        return this.getRuleContext(0, ParameterIdxContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_prepareStmtParam;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrepareStmtParam) {
             listener.enterPrepareStmtParam(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrepareStmtParam) {
             listener.exitPrepareStmtParam(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrepareStmtParam) {
            return visitor.visitPrepareStmtParam(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ParameterIdxContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public QUESTION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.QUESTION, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_parameterIdx;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterParameterIdx) {
             listener.enterParameterIdx(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitParameterIdx) {
             listener.exitParameterIdx(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitParameterIdx) {
            return visitor.visitParameterIdx(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class StringLiteralSequenceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public StringLiteral(): antlr.TerminalNode[];
    public StringLiteral(i: number): antlr.TerminalNode | null;
    public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.StringLiteral);
    	} else {
    		return this.getToken(HiveSqlParser.StringLiteral, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_stringLiteralSequence;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterStringLiteralSequence) {
             listener.enterStringLiteralSequence(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitStringLiteralSequence) {
             listener.exitStringLiteralSequence(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitStringLiteralSequence) {
            return visitor.visitStringLiteralSequence(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CharSetStringLiteralContext extends antlr.ParserRuleContext {
    public _csName?: Token | null;
    public _csLiteral?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public CharSetName(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.CharSetName, 0)!;
    }
    public CharSetLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.CharSetLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_charSetStringLiteral;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCharSetStringLiteral) {
             listener.enterCharSetStringLiteral(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCharSetStringLiteral) {
             listener.exitCharSetStringLiteral(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCharSetStringLiteral) {
            return visitor.visitCharSetStringLiteral(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DateLiteralContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATE, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_CURRENT_DATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CURRENT_DATE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dateLiteral;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDateLiteral) {
             listener.enterDateLiteral(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDateLiteral) {
             listener.exitDateLiteral(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDateLiteral) {
            return visitor.visitDateLiteral(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TimestampLiteralContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TIMESTAMP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_timestampLiteral;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTimestampLiteral) {
             listener.enterTimestampLiteral(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTimestampLiteral) {
             listener.exitTimestampLiteral(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTimestampLiteral) {
            return visitor.visitTimestampLiteral(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TimestampLocalTZLiteralContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TIMESTAMPLOCALTZ(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_timestampLocalTZLiteral;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTimestampLocalTZLiteral) {
             listener.enterTimestampLocalTZLiteral(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTimestampLocalTZLiteral) {
             listener.exitTimestampLocalTZLiteral(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTimestampLocalTZLiteral) {
            return visitor.visitTimestampLocalTZLiteral(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IntervalValueContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_intervalValue;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIntervalValue) {
             listener.enterIntervalValue(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIntervalValue) {
             listener.exitIntervalValue(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIntervalValue) {
            return visitor.visitIntervalValue(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IntervalLiteralContext extends antlr.ParserRuleContext {
    public _value?: IntervalValueContext;
    public _qualifiers?: IntervalQualifiersContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public intervalValue(): IntervalValueContext {
        return this.getRuleContext(0, IntervalValueContext)!;
    }
    public intervalQualifiers(): IntervalQualifiersContext {
        return this.getRuleContext(0, IntervalQualifiersContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_intervalLiteral;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIntervalLiteral) {
             listener.enterIntervalLiteral(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIntervalLiteral) {
             listener.exitIntervalLiteral(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIntervalLiteral) {
            return visitor.visitIntervalLiteral(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IntervalExpressionContext extends antlr.ParserRuleContext {
    public _value?: IntervalValueContext;
    public _qualifiers?: IntervalQualifiersContext;
    public _expr?: ExpressionContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public intervalValue(): IntervalValueContext | null {
        return this.getRuleContext(0, IntervalValueContext);
    }
    public intervalQualifiers(): IntervalQualifiersContext {
        return this.getRuleContext(0, IntervalQualifiersContext)!;
    }
    public KW_INTERVAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INTERVAL, 0);
    }
    public expression(): ExpressionContext | null {
        return this.getRuleContext(0, ExpressionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_intervalExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIntervalExpression) {
             listener.enterIntervalExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIntervalExpression) {
             listener.exitIntervalExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIntervalExpression) {
            return visitor.visitIntervalExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IntervalQualifiersContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public year(): YearContext | null {
        return this.getRuleContext(0, YearContext);
    }
    public KW_TO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    public month(): MonthContext | null {
        return this.getRuleContext(0, MonthContext);
    }
    public day(): DayContext | null {
        return this.getRuleContext(0, DayContext);
    }
    public second(): SecondContext | null {
        return this.getRuleContext(0, SecondContext);
    }
    public hour(): HourContext | null {
        return this.getRuleContext(0, HourContext);
    }
    public minute(): MinuteContext | null {
        return this.getRuleContext(0, MinuteContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_intervalQualifiers;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIntervalQualifiers) {
             listener.enterIntervalQualifiers(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIntervalQualifiers) {
             listener.exitIntervalQualifiers(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIntervalQualifiers) {
            return visitor.visitIntervalQualifiers(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceOrExpression(): PrecedenceOrExpressionContext {
        return this.getRuleContext(0, PrecedenceOrExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_expression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExpression) {
             listener.enterExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExpression) {
             listener.exitExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExpression) {
            return visitor.visitExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AtomExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public constant(): ConstantContext | null {
        return this.getRuleContext(0, ConstantContext);
    }
    public intervalExpression(): IntervalExpressionContext | null {
        return this.getRuleContext(0, IntervalExpressionContext);
    }
    public castExpression(): CastExpressionContext | null {
        return this.getRuleContext(0, CastExpressionContext);
    }
    public extractExpression(): ExtractExpressionContext | null {
        return this.getRuleContext(0, ExtractExpressionContext);
    }
    public floorExpression(): FloorExpressionContext | null {
        return this.getRuleContext(0, FloorExpressionContext);
    }
    public caseExpression(): CaseExpressionContext | null {
        return this.getRuleContext(0, CaseExpressionContext);
    }
    public whenExpression(): WhenExpressionContext | null {
        return this.getRuleContext(0, WhenExpressionContext);
    }
    public subQueryExpression(): SubQueryExpressionContext | null {
        return this.getRuleContext(0, SubQueryExpressionContext);
    }
    public function_(): Function_Context | null {
        return this.getRuleContext(0, Function_Context);
    }
    public expressionsInParenthesis(): ExpressionsInParenthesisContext | null {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    public id_(): Id_Context | null {
        return this.getRuleContext(0, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_atomExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAtomExpression) {
             listener.enterAtomExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAtomExpression) {
             listener.exitAtomExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAtomExpression) {
            return visitor.visitAtomExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceFieldExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public atomExpression(): AtomExpressionContext {
        return this.getRuleContext(0, AtomExpressionContext)!;
    }
    public LSQUARE(): antlr.TerminalNode[];
    public LSQUARE(i: number): antlr.TerminalNode | null;
    public LSQUARE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.LSQUARE);
    	} else {
    		return this.getToken(HiveSqlParser.LSQUARE, i);
    	}
    }
    public expression(): ExpressionContext[];
    public expression(i: number): ExpressionContext | null;
    public expression(i?: number): ExpressionContext[] | ExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }

        return this.getRuleContext(i, ExpressionContext);
    }
    public RSQUARE(): antlr.TerminalNode[];
    public RSQUARE(i: number): antlr.TerminalNode | null;
    public RSQUARE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.RSQUARE);
    	} else {
    		return this.getToken(HiveSqlParser.RSQUARE, i);
    	}
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceFieldExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceFieldExpression) {
             listener.enterPrecedenceFieldExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceFieldExpression) {
             listener.exitPrecedenceFieldExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceFieldExpression) {
            return visitor.visitPrecedenceFieldExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceUnaryOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public PLUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.PLUS, 0);
    }
    public MINUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.MINUS, 0);
    }
    public TILDE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.TILDE, 0);
    }
    public BITWISENOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.BITWISENOT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceUnaryOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceUnaryOperator) {
             listener.enterPrecedenceUnaryOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceUnaryOperator) {
             listener.exitPrecedenceUnaryOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceUnaryOperator) {
            return visitor.visitPrecedenceUnaryOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceUnaryPrefixExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceFieldExpression(): PrecedenceFieldExpressionContext {
        return this.getRuleContext(0, PrecedenceFieldExpressionContext)!;
    }
    public precedenceUnaryOperator(): PrecedenceUnaryOperatorContext[];
    public precedenceUnaryOperator(i: number): PrecedenceUnaryOperatorContext | null;
    public precedenceUnaryOperator(i?: number): PrecedenceUnaryOperatorContext[] | PrecedenceUnaryOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceUnaryOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceUnaryOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceUnaryPrefixExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceUnaryPrefixExpression) {
             listener.enterPrecedenceUnaryPrefixExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceUnaryPrefixExpression) {
             listener.exitPrecedenceUnaryPrefixExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceUnaryPrefixExpression) {
            return visitor.visitPrecedenceUnaryPrefixExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceBitwiseXorOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public BITWISEXOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.BITWISEXOR, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceBitwiseXorOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceBitwiseXorOperator) {
             listener.enterPrecedenceBitwiseXorOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceBitwiseXorOperator) {
             listener.exitPrecedenceBitwiseXorOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceBitwiseXorOperator) {
            return visitor.visitPrecedenceBitwiseXorOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceBitwiseXorExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceUnaryPrefixExpression(): PrecedenceUnaryPrefixExpressionContext[];
    public precedenceUnaryPrefixExpression(i: number): PrecedenceUnaryPrefixExpressionContext | null;
    public precedenceUnaryPrefixExpression(i?: number): PrecedenceUnaryPrefixExpressionContext[] | PrecedenceUnaryPrefixExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceUnaryPrefixExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceUnaryPrefixExpressionContext);
    }
    public precedenceBitwiseXorOperator(): PrecedenceBitwiseXorOperatorContext[];
    public precedenceBitwiseXorOperator(i: number): PrecedenceBitwiseXorOperatorContext | null;
    public precedenceBitwiseXorOperator(i?: number): PrecedenceBitwiseXorOperatorContext[] | PrecedenceBitwiseXorOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceBitwiseXorOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceBitwiseXorOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceBitwiseXorExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceBitwiseXorExpression) {
             listener.enterPrecedenceBitwiseXorExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceBitwiseXorExpression) {
             listener.exitPrecedenceBitwiseXorExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceBitwiseXorExpression) {
            return visitor.visitPrecedenceBitwiseXorExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceStarOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public STAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.STAR, 0);
    }
    public DIVIDE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DIVIDE, 0);
    }
    public MOD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.MOD, 0);
    }
    public DIV(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DIV, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceStarOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceStarOperator) {
             listener.enterPrecedenceStarOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceStarOperator) {
             listener.exitPrecedenceStarOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceStarOperator) {
            return visitor.visitPrecedenceStarOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceStarExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceBitwiseXorExpression(): PrecedenceBitwiseXorExpressionContext[];
    public precedenceBitwiseXorExpression(i: number): PrecedenceBitwiseXorExpressionContext | null;
    public precedenceBitwiseXorExpression(i?: number): PrecedenceBitwiseXorExpressionContext[] | PrecedenceBitwiseXorExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceBitwiseXorExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceBitwiseXorExpressionContext);
    }
    public precedenceStarOperator(): PrecedenceStarOperatorContext[];
    public precedenceStarOperator(i: number): PrecedenceStarOperatorContext | null;
    public precedenceStarOperator(i?: number): PrecedenceStarOperatorContext[] | PrecedenceStarOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceStarOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceStarOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceStarExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceStarExpression) {
             listener.enterPrecedenceStarExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceStarExpression) {
             listener.exitPrecedenceStarExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceStarExpression) {
            return visitor.visitPrecedenceStarExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedencePlusOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public PLUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.PLUS, 0);
    }
    public MINUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.MINUS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedencePlusOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedencePlusOperator) {
             listener.enterPrecedencePlusOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedencePlusOperator) {
             listener.exitPrecedencePlusOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedencePlusOperator) {
            return visitor.visitPrecedencePlusOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedencePlusExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceStarExpression(): PrecedenceStarExpressionContext[];
    public precedenceStarExpression(i: number): PrecedenceStarExpressionContext | null;
    public precedenceStarExpression(i?: number): PrecedenceStarExpressionContext[] | PrecedenceStarExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceStarExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceStarExpressionContext);
    }
    public precedencePlusOperator(): PrecedencePlusOperatorContext[];
    public precedencePlusOperator(i: number): PrecedencePlusOperatorContext | null;
    public precedencePlusOperator(i?: number): PrecedencePlusOperatorContext[] | PrecedencePlusOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedencePlusOperatorContext);
        }

        return this.getRuleContext(i, PrecedencePlusOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedencePlusExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedencePlusExpression) {
             listener.enterPrecedencePlusExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedencePlusExpression) {
             listener.exitPrecedencePlusExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedencePlusExpression) {
            return visitor.visitPrecedencePlusExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceConcatenateOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public CONCATENATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.CONCATENATE, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceConcatenateOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceConcatenateOperator) {
             listener.enterPrecedenceConcatenateOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceConcatenateOperator) {
             listener.exitPrecedenceConcatenateOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceConcatenateOperator) {
            return visitor.visitPrecedenceConcatenateOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceConcatenateExpressionContext extends antlr.ParserRuleContext {
    public _plus?: PrecedencePlusExpressionContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedencePlusExpression(): PrecedencePlusExpressionContext[];
    public precedencePlusExpression(i: number): PrecedencePlusExpressionContext | null;
    public precedencePlusExpression(i?: number): PrecedencePlusExpressionContext[] | PrecedencePlusExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedencePlusExpressionContext);
        }

        return this.getRuleContext(i, PrecedencePlusExpressionContext);
    }
    public precedenceConcatenateOperator(): PrecedenceConcatenateOperatorContext[];
    public precedenceConcatenateOperator(i: number): PrecedenceConcatenateOperatorContext | null;
    public precedenceConcatenateOperator(i?: number): PrecedenceConcatenateOperatorContext[] | PrecedenceConcatenateOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceConcatenateOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceConcatenateOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceConcatenateExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceConcatenateExpression) {
             listener.enterPrecedenceConcatenateExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceConcatenateExpression) {
             listener.exitPrecedenceConcatenateExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceConcatenateExpression) {
            return visitor.visitPrecedenceConcatenateExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceAmpersandOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public AMPERSAND(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.AMPERSAND, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceAmpersandOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceAmpersandOperator) {
             listener.enterPrecedenceAmpersandOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceAmpersandOperator) {
             listener.exitPrecedenceAmpersandOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceAmpersandOperator) {
            return visitor.visitPrecedenceAmpersandOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceAmpersandExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceConcatenateExpression(): PrecedenceConcatenateExpressionContext[];
    public precedenceConcatenateExpression(i: number): PrecedenceConcatenateExpressionContext | null;
    public precedenceConcatenateExpression(i?: number): PrecedenceConcatenateExpressionContext[] | PrecedenceConcatenateExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceConcatenateExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceConcatenateExpressionContext);
    }
    public precedenceAmpersandOperator(): PrecedenceAmpersandOperatorContext[];
    public precedenceAmpersandOperator(i: number): PrecedenceAmpersandOperatorContext | null;
    public precedenceAmpersandOperator(i?: number): PrecedenceAmpersandOperatorContext[] | PrecedenceAmpersandOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceAmpersandOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceAmpersandOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceAmpersandExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceAmpersandExpression) {
             listener.enterPrecedenceAmpersandExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceAmpersandExpression) {
             listener.exitPrecedenceAmpersandExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceAmpersandExpression) {
            return visitor.visitPrecedenceAmpersandExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceBitwiseOrOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public BITWISEOR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.BITWISEOR, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceBitwiseOrOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceBitwiseOrOperator) {
             listener.enterPrecedenceBitwiseOrOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceBitwiseOrOperator) {
             listener.exitPrecedenceBitwiseOrOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceBitwiseOrOperator) {
            return visitor.visitPrecedenceBitwiseOrOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceBitwiseOrExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceAmpersandExpression(): PrecedenceAmpersandExpressionContext[];
    public precedenceAmpersandExpression(i: number): PrecedenceAmpersandExpressionContext | null;
    public precedenceAmpersandExpression(i?: number): PrecedenceAmpersandExpressionContext[] | PrecedenceAmpersandExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceAmpersandExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceAmpersandExpressionContext);
    }
    public precedenceBitwiseOrOperator(): PrecedenceBitwiseOrOperatorContext[];
    public precedenceBitwiseOrOperator(i: number): PrecedenceBitwiseOrOperatorContext | null;
    public precedenceBitwiseOrOperator(i?: number): PrecedenceBitwiseOrOperatorContext[] | PrecedenceBitwiseOrOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceBitwiseOrOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceBitwiseOrOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceBitwiseOrExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceBitwiseOrExpression) {
             listener.enterPrecedenceBitwiseOrExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceBitwiseOrExpression) {
             listener.exitPrecedenceBitwiseOrExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceBitwiseOrExpression) {
            return visitor.visitPrecedenceBitwiseOrExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceRegexpOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    public KW_RLIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RLIKE, 0);
    }
    public KW_REGEXP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REGEXP, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceRegexpOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceRegexpOperator) {
             listener.enterPrecedenceRegexpOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceRegexpOperator) {
             listener.exitPrecedenceRegexpOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceRegexpOperator) {
            return visitor.visitPrecedenceRegexpOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext | null {
        return this.getRuleContext(0, PrecedenceRegexpOperatorContext);
    }
    public LESSTHANOREQUALTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LESSTHANOREQUALTO, 0);
    }
    public LESSTHAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    public GREATERTHANOREQUALTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.GREATERTHANOREQUALTO, 0);
    }
    public GREATERTHAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarOperator) {
             listener.enterPrecedenceSimilarOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarOperator) {
             listener.exitPrecedenceSimilarOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarOperator) {
            return visitor.visitPrecedenceSimilarOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SubQueryExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public selectStatement(): SelectStatementContext {
        return this.getRuleContext(0, SelectStatementContext)!;
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_subQueryExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSubQueryExpression) {
             listener.enterSubQueryExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSubQueryExpression) {
             listener.exitSubQueryExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSubQueryExpression) {
            return visitor.visitSubQueryExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceSimilarExpressionMain(): PrecedenceSimilarExpressionMainContext | null {
        return this.getRuleContext(0, PrecedenceSimilarExpressionMainContext);
    }
    public KW_EXISTS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXISTS, 0);
    }
    public subQueryExpression(): SubQueryExpressionContext | null {
        return this.getRuleContext(0, SubQueryExpressionContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarExpression) {
             listener.enterPrecedenceSimilarExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarExpression) {
             listener.exitPrecedenceSimilarExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarExpression) {
            return visitor.visitPrecedenceSimilarExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarExpressionMainContext extends antlr.ParserRuleContext {
    public _a?: PrecedenceBitwiseOrExpressionContext;
    public _part?: PrecedenceSimilarExpressionPartContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext {
        return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext)!;
    }
    public precedenceSimilarExpressionPart(): PrecedenceSimilarExpressionPartContext | null {
        return this.getRuleContext(0, PrecedenceSimilarExpressionPartContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarExpressionMain;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarExpressionMain) {
             listener.enterPrecedenceSimilarExpressionMain(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarExpressionMain) {
             listener.exitPrecedenceSimilarExpressionMain(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarExpressionMain) {
            return visitor.visitPrecedenceSimilarExpressionMain(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarExpressionPartContext extends antlr.ParserRuleContext {
    public _equalExpr?: PrecedenceBitwiseOrExpressionContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceSimilarOperator(): PrecedenceSimilarOperatorContext | null {
        return this.getRuleContext(0, PrecedenceSimilarOperatorContext);
    }
    public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext | null {
        return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext);
    }
    public precedenceSimilarExpressionAtom(): PrecedenceSimilarExpressionAtomContext | null {
        return this.getRuleContext(0, PrecedenceSimilarExpressionAtomContext);
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public precedenceSimilarExpressionPartNot(): PrecedenceSimilarExpressionPartNotContext | null {
        return this.getRuleContext(0, PrecedenceSimilarExpressionPartNotContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarExpressionPart;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarExpressionPart) {
             listener.enterPrecedenceSimilarExpressionPart(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarExpressionPart) {
             listener.exitPrecedenceSimilarExpressionPart(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarExpressionPart) {
            return visitor.visitPrecedenceSimilarExpressionPart(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarExpressionAtomContext extends antlr.ParserRuleContext {
    public _min?: PrecedenceBitwiseOrExpressionContext;
    public _max?: PrecedenceBitwiseOrExpressionContext;
    public _expr?: ExpressionsInParenthesisContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_IN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    public precedenceSimilarExpressionIn(): PrecedenceSimilarExpressionInContext | null {
        return this.getRuleContext(0, PrecedenceSimilarExpressionInContext);
    }
    public KW_BETWEEN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    public KW_AND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext[];
    public precedenceBitwiseOrExpression(i: number): PrecedenceBitwiseOrExpressionContext | null;
    public precedenceBitwiseOrExpression(i?: number): PrecedenceBitwiseOrExpressionContext[] | PrecedenceBitwiseOrExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceBitwiseOrExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceBitwiseOrExpressionContext);
    }
    public KW_LIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    public KW_ANY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ANY, 0);
    }
    public KW_ALL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    public expressionsInParenthesis(): ExpressionsInParenthesisContext | null {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    public precedenceSimilarExpressionQuantifierPredicate(): PrecedenceSimilarExpressionQuantifierPredicateContext | null {
        return this.getRuleContext(0, PrecedenceSimilarExpressionQuantifierPredicateContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarExpressionAtom;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarExpressionAtom) {
             listener.enterPrecedenceSimilarExpressionAtom(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarExpressionAtom) {
             listener.exitPrecedenceSimilarExpressionAtom(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarExpressionAtom) {
            return visitor.visitPrecedenceSimilarExpressionAtom(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarExpressionQuantifierPredicateContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public subQuerySelectorOperator(): SubQuerySelectorOperatorContext {
        return this.getRuleContext(0, SubQuerySelectorOperatorContext)!;
    }
    public quantifierType(): QuantifierTypeContext {
        return this.getRuleContext(0, QuantifierTypeContext)!;
    }
    public subQueryExpression(): SubQueryExpressionContext {
        return this.getRuleContext(0, SubQueryExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarExpressionQuantifierPredicate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarExpressionQuantifierPredicate) {
             listener.enterPrecedenceSimilarExpressionQuantifierPredicate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarExpressionQuantifierPredicate) {
             listener.exitPrecedenceSimilarExpressionQuantifierPredicate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarExpressionQuantifierPredicate) {
            return visitor.visitPrecedenceSimilarExpressionQuantifierPredicate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class QuantifierTypeContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ANY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ANY, 0);
    }
    public KW_SOME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SOME, 0);
    }
    public KW_ALL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_quantifierType;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterQuantifierType) {
             listener.enterQuantifierType(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitQuantifierType) {
             listener.exitQuantifierType(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitQuantifierType) {
            return visitor.visitQuantifierType(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarExpressionInContext extends antlr.ParserRuleContext {
    public _expr?: ExpressionsInParenthesisContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public subQueryExpression(): SubQueryExpressionContext | null {
        return this.getRuleContext(0, SubQueryExpressionContext);
    }
    public expressionsInParenthesis(): ExpressionsInParenthesisContext | null {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarExpressionIn;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarExpressionIn) {
             listener.enterPrecedenceSimilarExpressionIn(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarExpressionIn) {
             listener.exitPrecedenceSimilarExpressionIn(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarExpressionIn) {
            return visitor.visitPrecedenceSimilarExpressionIn(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceSimilarExpressionPartNotContext extends antlr.ParserRuleContext {
    public _notExpr?: PrecedenceBitwiseOrExpressionContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext | null {
        return this.getRuleContext(0, PrecedenceRegexpOperatorContext);
    }
    public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext | null {
        return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext);
    }
    public precedenceSimilarExpressionAtom(): PrecedenceSimilarExpressionAtomContext | null {
        return this.getRuleContext(0, PrecedenceSimilarExpressionAtomContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceSimilarExpressionPartNot;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceSimilarExpressionPartNot) {
             listener.enterPrecedenceSimilarExpressionPartNot(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceSimilarExpressionPartNot) {
             listener.exitPrecedenceSimilarExpressionPartNot(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceSimilarExpressionPartNot) {
            return visitor.visitPrecedenceSimilarExpressionPartNot(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceDistinctOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_IS(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IS, 0)!;
    }
    public KW_DISTINCT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0)!;
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceDistinctOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceDistinctOperator) {
             listener.enterPrecedenceDistinctOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceDistinctOperator) {
             listener.exitPrecedenceDistinctOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceDistinctOperator) {
            return visitor.visitPrecedenceDistinctOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceEqualOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public EQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    public EQUAL_NS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL_NS, 0);
    }
    public NOTEQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.NOTEQUAL, 0);
    }
    public KW_IS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IS, 0);
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public KW_DISTINCT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    public KW_FROM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceEqualOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceEqualOperator) {
             listener.enterPrecedenceEqualOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceEqualOperator) {
             listener.exitPrecedenceEqualOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceEqualOperator) {
            return visitor.visitPrecedenceEqualOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceEqualExpressionContext extends antlr.ParserRuleContext {
    public _precedenceEqualOperator?: PrecedenceEqualOperatorContext;
    public _equal: PrecedenceEqualOperatorContext[] = [];
    public _precedenceSimilarExpression?: PrecedenceSimilarExpressionContext;
    public _p: PrecedenceSimilarExpressionContext[] = [];
    public _precedenceDistinctOperator?: PrecedenceDistinctOperatorContext;
    public _dist: PrecedenceDistinctOperatorContext[] = [];
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceSimilarExpression(): PrecedenceSimilarExpressionContext[];
    public precedenceSimilarExpression(i: number): PrecedenceSimilarExpressionContext | null;
    public precedenceSimilarExpression(i?: number): PrecedenceSimilarExpressionContext[] | PrecedenceSimilarExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceSimilarExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceSimilarExpressionContext);
    }
    public precedenceEqualOperator(): PrecedenceEqualOperatorContext[];
    public precedenceEqualOperator(i: number): PrecedenceEqualOperatorContext | null;
    public precedenceEqualOperator(i?: number): PrecedenceEqualOperatorContext[] | PrecedenceEqualOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceEqualOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceEqualOperatorContext);
    }
    public precedenceDistinctOperator(): PrecedenceDistinctOperatorContext[];
    public precedenceDistinctOperator(i: number): PrecedenceDistinctOperatorContext | null;
    public precedenceDistinctOperator(i?: number): PrecedenceDistinctOperatorContext[] | PrecedenceDistinctOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceDistinctOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceDistinctOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceEqualExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceEqualExpression) {
             listener.enterPrecedenceEqualExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceEqualExpression) {
             listener.exitPrecedenceEqualExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceEqualExpression) {
            return visitor.visitPrecedenceEqualExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class IsConditionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_NULL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    public KW_TRUE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRUE, 0);
    }
    public KW_FALSE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FALSE, 0);
    }
    public KW_UNKNOWN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNKNOWN, 0);
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_isCondition;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterIsCondition) {
             listener.enterIsCondition(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitIsCondition) {
             listener.exitIsCondition(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitIsCondition) {
            return visitor.visitIsCondition(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceUnarySuffixExpressionContext extends antlr.ParserRuleContext {
    public _a?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceEqualExpression(): PrecedenceEqualExpressionContext {
        return this.getRuleContext(0, PrecedenceEqualExpressionContext)!;
    }
    public isCondition(): IsConditionContext | null {
        return this.getRuleContext(0, IsConditionContext);
    }
    public KW_IS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceUnarySuffixExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceUnarySuffixExpression) {
             listener.enterPrecedenceUnarySuffixExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceUnarySuffixExpression) {
             listener.exitPrecedenceUnarySuffixExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceUnarySuffixExpression) {
            return visitor.visitPrecedenceUnarySuffixExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceNotOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_NOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_NOT, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceNotOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceNotOperator) {
             listener.enterPrecedenceNotOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceNotOperator) {
             listener.exitPrecedenceNotOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceNotOperator) {
            return visitor.visitPrecedenceNotOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceNotExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceUnarySuffixExpression(): PrecedenceUnarySuffixExpressionContext {
        return this.getRuleContext(0, PrecedenceUnarySuffixExpressionContext)!;
    }
    public precedenceNotOperator(): PrecedenceNotOperatorContext[];
    public precedenceNotOperator(i: number): PrecedenceNotOperatorContext | null;
    public precedenceNotOperator(i?: number): PrecedenceNotOperatorContext[] | PrecedenceNotOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceNotOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceNotOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceNotExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceNotExpression) {
             listener.enterPrecedenceNotExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceNotExpression) {
             listener.exitPrecedenceNotExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceNotExpression) {
            return visitor.visitPrecedenceNotExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceAndOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_AND(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_AND, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceAndOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceAndOperator) {
             listener.enterPrecedenceAndOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceAndOperator) {
             listener.exitPrecedenceAndOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceAndOperator) {
            return visitor.visitPrecedenceAndOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceAndExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceNotExpression(): PrecedenceNotExpressionContext[];
    public precedenceNotExpression(i: number): PrecedenceNotExpressionContext | null;
    public precedenceNotExpression(i?: number): PrecedenceNotExpressionContext[] | PrecedenceNotExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceNotExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceNotExpressionContext);
    }
    public precedenceAndOperator(): PrecedenceAndOperatorContext[];
    public precedenceAndOperator(i: number): PrecedenceAndOperatorContext | null;
    public precedenceAndOperator(i?: number): PrecedenceAndOperatorContext[] | PrecedenceAndOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceAndOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceAndOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceAndExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceAndExpression) {
             listener.enterPrecedenceAndExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceAndExpression) {
             listener.exitPrecedenceAndExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceAndExpression) {
            return visitor.visitPrecedenceAndExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceOrOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_OR(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_OR, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceOrOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceOrOperator) {
             listener.enterPrecedenceOrOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceOrOperator) {
             listener.exitPrecedenceOrOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceOrOperator) {
            return visitor.visitPrecedenceOrOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrecedenceOrExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public precedenceAndExpression(): PrecedenceAndExpressionContext[];
    public precedenceAndExpression(i: number): PrecedenceAndExpressionContext | null;
    public precedenceAndExpression(i?: number): PrecedenceAndExpressionContext[] | PrecedenceAndExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceAndExpressionContext);
        }

        return this.getRuleContext(i, PrecedenceAndExpressionContext);
    }
    public precedenceOrOperator(): PrecedenceOrOperatorContext[];
    public precedenceOrOperator(i: number): PrecedenceOrOperatorContext | null;
    public precedenceOrOperator(i?: number): PrecedenceOrOperatorContext[] | PrecedenceOrOperatorContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceOrOperatorContext);
        }

        return this.getRuleContext(i, PrecedenceOrOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_precedenceOrExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrecedenceOrExpression) {
             listener.enterPrecedenceOrExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrecedenceOrExpression) {
             listener.exitPrecedenceOrExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrecedenceOrExpression) {
            return visitor.visitPrecedenceOrExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class BooleanValueContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TRUE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRUE, 0);
    }
    public KW_FALSE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FALSE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_booleanValue;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterBooleanValue) {
             listener.enterBooleanValue(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitBooleanValue) {
             listener.exitBooleanValue(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitBooleanValue) {
            return visitor.visitBooleanValue(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class BooleanValueTokContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_TRUE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRUE, 0);
    }
    public KW_FALSE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FALSE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_booleanValueTok;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterBooleanValueTok) {
             listener.enterBooleanValueTok(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitBooleanValueTok) {
             listener.exitBooleanValueTok(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitBooleanValueTok) {
            return visitor.visitBooleanValueTok(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TableOrPartitionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public tableName(): TableNameContext {
        return this.getRuleContext(0, TableNameContext)!;
    }
    public partitionSpec(): PartitionSpecContext | null {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_tableOrPartition;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTableOrPartition) {
             listener.enterTableOrPartition(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTableOrPartition) {
             listener.exitTableOrPartition(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTableOrPartition) {
            return visitor.visitTableOrPartition(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_PARTITION(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0)!;
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public partitionVal(): PartitionValContext[];
    public partitionVal(i: number): PartitionValContext | null;
    public partitionVal(i?: number): PartitionValContext[] | PartitionValContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PartitionValContext);
        }

        return this.getRuleContext(i, PartitionValContext);
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionSpec) {
             listener.enterPartitionSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionSpec) {
             listener.exitPartitionSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionSpec) {
            return visitor.visitPartitionSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionValContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public EQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    public constant(): ConstantContext | null {
        return this.getRuleContext(0, ConstantContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionVal;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionVal) {
             listener.enterPartitionVal(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionVal) {
             listener.exitPartitionVal(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionVal) {
            return visitor.visitPartitionVal(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionSelectorSpecContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public LPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.LPAREN, 0)!;
    }
    public partitionSelectorVal(): PartitionSelectorValContext[];
    public partitionSelectorVal(i: number): PartitionSelectorValContext | null;
    public partitionSelectorVal(i?: number): PartitionSelectorValContext[] | PartitionSelectorValContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSelectorValContext);
        }

        return this.getRuleContext(i, PartitionSelectorValContext);
    }
    public RPAREN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.RPAREN, 0)!;
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionSelectorSpec;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionSelectorSpec) {
             listener.enterPartitionSelectorSpec(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionSelectorSpec) {
             listener.exitPartitionSelectorSpec(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionSelectorSpec) {
            return visitor.visitPartitionSelectorSpec(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionSelectorValContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public partitionSelectorOperator(): PartitionSelectorOperatorContext {
        return this.getRuleContext(0, PartitionSelectorOperatorContext)!;
    }
    public constant(): ConstantContext {
        return this.getRuleContext(0, ConstantContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionSelectorVal;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionSelectorVal) {
             listener.enterPartitionSelectorVal(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionSelectorVal) {
             listener.exitPartitionSelectorVal(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionSelectorVal) {
            return visitor.visitPartitionSelectorVal(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PartitionSelectorOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_LIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    public subQuerySelectorOperator(): SubQuerySelectorOperatorContext | null {
        return this.getRuleContext(0, SubQuerySelectorOperatorContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_partitionSelectorOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPartitionSelectorOperator) {
             listener.enterPartitionSelectorOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPartitionSelectorOperator) {
             listener.exitPartitionSelectorOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPartitionSelectorOperator) {
            return visitor.visitPartitionSelectorOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SubQuerySelectorOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public EQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    public NOTEQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.NOTEQUAL, 0);
    }
    public LESSTHANOREQUALTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LESSTHANOREQUALTO, 0);
    }
    public LESSTHAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    public GREATERTHANOREQUALTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.GREATERTHANOREQUALTO, 0);
    }
    public GREATERTHAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_subQuerySelectorOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSubQuerySelectorOperator) {
             listener.enterSubQuerySelectorOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSubQuerySelectorOperator) {
             listener.exitSubQuerySelectorOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSubQuerySelectorOperator) {
            return visitor.visitSubQuerySelectorOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SysFuncNamesContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_AND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    public KW_OR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OR, 0);
    }
    public KW_NOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    public KW_LIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    public KW_IF(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IF, 0);
    }
    public KW_CASE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CASE, 0);
    }
    public KW_WHEN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WHEN, 0);
    }
    public KW_FLOOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FLOOR, 0);
    }
    public KW_TINYINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TINYINT, 0);
    }
    public KW_SMALLINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SMALLINT, 0);
    }
    public KW_INT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INT, 0);
    }
    public KW_INTEGER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INTEGER, 0);
    }
    public KW_BIGINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BIGINT, 0);
    }
    public KW_FLOAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FLOAT, 0);
    }
    public KW_REAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REAL, 0);
    }
    public KW_DOUBLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DOUBLE, 0);
    }
    public KW_BOOLEAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BOOLEAN, 0);
    }
    public KW_STRING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STRING, 0);
    }
    public KW_BINARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BINARY, 0);
    }
    public KW_ARRAY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ARRAY, 0);
    }
    public KW_MAP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    public KW_STRUCT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STRUCT, 0);
    }
    public KW_UNIONTYPE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNIONTYPE, 0);
    }
    public EQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    public EQUAL_NS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL_NS, 0);
    }
    public NOTEQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.NOTEQUAL, 0);
    }
    public LESSTHANOREQUALTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LESSTHANOREQUALTO, 0);
    }
    public LESSTHAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    public GREATERTHANOREQUALTO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.GREATERTHANOREQUALTO, 0);
    }
    public GREATERTHAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    public DIVIDE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DIVIDE, 0);
    }
    public PLUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.PLUS, 0);
    }
    public MINUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.MINUS, 0);
    }
    public STAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.STAR, 0);
    }
    public MOD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.MOD, 0);
    }
    public DIV(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DIV, 0);
    }
    public AMPERSAND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.AMPERSAND, 0);
    }
    public TILDE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.TILDE, 0);
    }
    public BITWISEOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.BITWISEOR, 0);
    }
    public BITWISEXOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.BITWISEXOR, 0);
    }
    public KW_RLIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RLIKE, 0);
    }
    public KW_REGEXP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REGEXP, 0);
    }
    public KW_IN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    public KW_BETWEEN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_sysFuncNames;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSysFuncNames) {
             listener.enterSysFuncNames(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSysFuncNames) {
             listener.exitSysFuncNames(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSysFuncNames) {
            return visitor.visitSysFuncNames(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Id_Context extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public Identifier(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Identifier, 0);
    }
    public nonReserved(): NonReservedContext | null {
        return this.getRuleContext(0, NonReservedContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_id_;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterId_) {
             listener.enterId_(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitId_) {
             listener.exitId_(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitId_) {
            return visitor.visitId_(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class FunctionIdentifierContext extends antlr.ParserRuleContext {
    public _fn?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public DOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_functionIdentifier;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterFunctionIdentifier) {
             listener.enterFunctionIdentifier(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitFunctionIdentifier) {
             listener.exitFunctionIdentifier(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitFunctionIdentifier) {
            return visitor.visitFunctionIdentifier(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrincipalIdentifierContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_principalIdentifier;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrincipalIdentifier) {
             listener.enterPrincipalIdentifier(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrincipalIdentifier) {
             listener.exitPrincipalIdentifier(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrincipalIdentifier) {
            return visitor.visitPrincipalIdentifier(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class NonReservedContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ABORT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ABORT, 0);
    }
    public KW_ACTIVATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ACTIVATE, 0);
    }
    public KW_ACTIVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ACTIVE, 0);
    }
    public KW_ADD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    public KW_ADMIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ADMIN, 0);
    }
    public KW_AFTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AFTER, 0);
    }
    public KW_ALLOC_FRACTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALLOC_FRACTION, 0);
    }
    public KW_ANALYZE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ANALYZE, 0);
    }
    public KW_ARCHIVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ARCHIVE, 0);
    }
    public KW_ASC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ASC, 0);
    }
    public KW_AST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AST, 0);
    }
    public KW_AT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AT, 0);
    }
    public KW_AUTOCOMMIT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_AUTOCOMMIT, 0);
    }
    public KW_BATCH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BATCH, 0);
    }
    public KW_BEFORE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BEFORE, 0);
    }
    public KW_BUCKET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BUCKET, 0);
    }
    public KW_BUCKETS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BUCKETS, 0);
    }
    public KW_CACHE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CACHE, 0);
    }
    public KW_CASCADE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CASCADE, 0);
    }
    public KW_CBO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CBO, 0);
    }
    public KW_CHANGE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CHANGE, 0);
    }
    public KW_CHECK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CHECK, 0);
    }
    public KW_CLUSTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CLUSTER, 0);
    }
    public KW_CLUSTERED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0);
    }
    public KW_CLUSTERSTATUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CLUSTERSTATUS, 0);
    }
    public KW_COLLECTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLLECTION, 0);
    }
    public KW_COLUMNS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    public KW_COMMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    public KW_COMPACT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMPACT, 0);
    }
    public KW_COMPACTIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0);
    }
    public KW_COMPUTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COMPUTE, 0);
    }
    public KW_CONCATENATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONCATENATE, 0);
    }
    public KW_CONTINUE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CONTINUE, 0);
    }
    public KW_COST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_COST, 0);
    }
    public KW_CRON(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CRON, 0);
    }
    public KW_DATA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATA, 0);
    }
    public KW_DATABASES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATABASES, 0);
    }
    public KW_DATETIME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATETIME, 0);
    }
    public KW_DAY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DAY, 0);
    }
    public KW_DAYS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DAYS, 0);
    }
    public KW_DAYOFWEEK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DAYOFWEEK, 0);
    }
    public KW_DBPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0);
    }
    public KW_DCPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0);
    }
    public KW_DEBUG(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEBUG, 0);
    }
    public KW_DEFAULT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    public KW_DEFERRED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFERRED, 0);
    }
    public KW_DEFINED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFINED, 0);
    }
    public KW_DELIMITED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DELIMITED, 0);
    }
    public KW_DEPENDENCY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEPENDENCY, 0);
    }
    public KW_DESC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DESC, 0);
    }
    public KW_DETAIL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DETAIL, 0);
    }
    public KW_DIRECTORIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DIRECTORIES, 0);
    }
    public KW_DIRECTORY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DIRECTORY, 0);
    }
    public KW_DISABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISABLE, 0);
    }
    public KW_DISABLED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISABLED, 0);
    }
    public KW_DISTRIBUTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTE, 0);
    }
    public KW_DISTRIBUTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTED, 0);
    }
    public KW_DO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DO, 0);
    }
    public KW_DUMP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DUMP, 0);
    }
    public KW_ELEM_TYPE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ELEM_TYPE, 0);
    }
    public KW_ENABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ENABLE, 0);
    }
    public KW_ENABLED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ENABLED, 0);
    }
    public KW_ENFORCED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ENFORCED, 0);
    }
    public KW_ESCAPED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ESCAPED, 0);
    }
    public KW_EVERY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EVERY, 0);
    }
    public KW_EXCLUSIVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXCLUSIVE, 0);
    }
    public KW_EXECUTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0);
    }
    public KW_EXECUTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXECUTED, 0);
    }
    public KW_EXPIRE_SNAPSHOTS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXPIRE_SNAPSHOTS, 0);
    }
    public KW_EXPLAIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXPLAIN, 0);
    }
    public KW_EXPORT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXPORT, 0);
    }
    public KW_EXPRESSION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_EXPRESSION, 0);
    }
    public KW_FIELDS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FIELDS, 0);
    }
    public KW_FILE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FILE, 0);
    }
    public KW_FILEFORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FILEFORMAT, 0);
    }
    public KW_FIRST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FIRST, 0);
    }
    public KW_FORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0);
    }
    public KW_FORMATTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    public KW_FUNCTIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FUNCTIONS, 0);
    }
    public KW_HOLD_DDLTIME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_HOLD_DDLTIME, 0);
    }
    public KW_HOUR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_HOUR, 0);
    }
    public KW_HOURS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_HOURS, 0);
    }
    public KW_IDXPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IDXPROPERTIES, 0);
    }
    public KW_IGNORE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IGNORE, 0);
    }
    public KW_INDEX(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    public KW_INDEXES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INDEXES, 0);
    }
    public KW_INPATH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INPATH, 0);
    }
    public KW_INPUTDRIVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INPUTDRIVER, 0);
    }
    public KW_INPUTFORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0);
    }
    public KW_ISOLATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ISOLATION, 0);
    }
    public KW_ITEMS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ITEMS, 0);
    }
    public KW_JAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_JAR, 0);
    }
    public KW_JOINCOST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_JOINCOST, 0);
    }
    public KW_KEY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_KEY, 0);
    }
    public KW_KEYS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_KEYS, 0);
    }
    public KW_KEY_TYPE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_KEY_TYPE, 0);
    }
    public KW_KILL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_KILL, 0);
    }
    public KW_LAST(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LAST, 0);
    }
    public KW_LEVEL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LEVEL, 0);
    }
    public KW_LIFECYCLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIFECYCLE, 0);
    }
    public KW_LIMIT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIMIT, 0);
    }
    public KW_LINES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LINES, 0);
    }
    public KW_LOAD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOAD, 0);
    }
    public KW_LOCATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0);
    }
    public KW_LOCK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCK, 0);
    }
    public KW_LOCKS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOCKS, 0);
    }
    public KW_LOGICAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LOGICAL, 0);
    }
    public KW_LONG(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LONG, 0);
    }
    public KW_MANAGED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MANAGED, 0);
    }
    public KW_MANAGEDLOCATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0);
    }
    public KW_MANAGEMENT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MANAGEMENT, 0);
    }
    public KW_MAPJOIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MAPJOIN, 0);
    }
    public KW_MAPPING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MAPPING, 0);
    }
    public KW_MATCHED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0);
    }
    public KW_MATERIALIZED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    public KW_METADATA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_METADATA, 0);
    }
    public KW_MINUTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MINUTE, 0);
    }
    public KW_MINUTES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MINUTES, 0);
    }
    public KW_MONTH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MONTH, 0);
    }
    public KW_MONTHS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MONTHS, 0);
    }
    public KW_MOVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MOVE, 0);
    }
    public KW_MSCK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MSCK, 0);
    }
    public KW_NORELY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NORELY, 0);
    }
    public KW_NOSCAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOSCAN, 0);
    }
    public KW_NOVALIDATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NOVALIDATE, 0);
    }
    public KW_NO_DROP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NO_DROP, 0);
    }
    public KW_NULLS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NULLS, 0);
    }
    public KW_OFFLINE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OFFLINE, 0);
    }
    public KW_OFFSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OFFSET, 0);
    }
    public KW_OPERATOR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OPERATOR, 0);
    }
    public KW_OPTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OPTION, 0);
    }
    public KW_OUTPUTDRIVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTPUTDRIVER, 0);
    }
    public KW_OUTPUTFORMAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OUTPUTFORMAT, 0);
    }
    public KW_OVERWRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    public KW_OWNER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_OWNER, 0);
    }
    public KW_PARTITIONED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0);
    }
    public KW_PARTITIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0);
    }
    public KW_PATH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PATH, 0);
    }
    public KW_PLAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PLAN, 0);
    }
    public KW_PLANS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PLANS, 0);
    }
    public KW_PLUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PLUS, 0);
    }
    public KW_POOL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    public KW_PRINCIPALS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PRINCIPALS, 0);
    }
    public KW_PROTECTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PROTECTION, 0);
    }
    public KW_PURGE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PURGE, 0);
    }
    public KW_QUARTER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUARTER, 0);
    }
    public KW_QUERY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUERY, 0);
    }
    public KW_QUERY_PARALLELISM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    public KW_READ(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_READ, 0);
    }
    public KW_READONLY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_READONLY, 0);
    }
    public KW_REBUILD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REBUILD, 0);
    }
    public KW_RECORDREADER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RECORDREADER, 0);
    }
    public KW_RECORDWRITER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RECORDWRITER, 0);
    }
    public KW_RELOAD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RELOAD, 0);
    }
    public KW_RELY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RELY, 0);
    }
    public KW_REMOTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REMOTE, 0);
    }
    public KW_RENAME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RENAME, 0);
    }
    public KW_REOPTIMIZATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REOPTIMIZATION, 0);
    }
    public KW_REPAIR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REPAIR, 0);
    }
    public KW_REPL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REPL, 0);
    }
    public KW_REPLACE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    public KW_REPLICATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REPLICATION, 0);
    }
    public KW_RESOURCE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0);
    }
    public KW_RESPECT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RESPECT, 0);
    }
    public KW_RESTRICT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RESTRICT, 0);
    }
    public KW_REWRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0);
    }
    public KW_ROLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    public KW_ROLES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ROLES, 0);
    }
    public KW_SCHEDULED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0);
    }
    public KW_SCHEDULING_POLICY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0);
    }
    public KW_SCHEMA(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEMA, 0);
    }
    public KW_SCHEMAS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEMAS, 0);
    }
    public KW_SECOND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SECOND, 0);
    }
    public KW_SECONDS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SECONDS, 0);
    }
    public KW_SEMI(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SEMI, 0);
    }
    public KW_SERDE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    public KW_SERDEPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    public KW_SERVER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SERVER, 0);
    }
    public KW_SETS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SETS, 0);
    }
    public KW_SET_CURRENT_SNAPSHOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT, 0);
    }
    public KW_SHARED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SHARED, 0);
    }
    public KW_SHOW(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    public KW_SHOW_DATABASE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SHOW_DATABASE, 0);
    }
    public KW_SKEWED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0);
    }
    public KW_SNAPSHOT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SNAPSHOT, 0);
    }
    public KW_SORT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SORT, 0);
    }
    public KW_SORTED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    public KW_SPEC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SPEC, 0);
    }
    public KW_SSL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SSL, 0);
    }
    public KW_STATISTICS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0);
    }
    public KW_STATUS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STATUS, 0);
    }
    public KW_STORED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STORED, 0);
    }
    public KW_STREAMTABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STREAMTABLE, 0);
    }
    public KW_STRING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STRING, 0);
    }
    public KW_STRUCT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STRUCT, 0);
    }
    public KW_SUMMARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SUMMARY, 0);
    }
    public KW_SYSTEM_TIME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SYSTEM_TIME, 0);
    }
    public KW_SYSTEM_VERSION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SYSTEM_VERSION, 0);
    }
    public KW_TABLES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TABLES, 0);
    }
    public KW_TBLPROPERTIES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    public KW_TEMPORARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    public KW_TERMINATED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0);
    }
    public KW_TIMESTAMPTZ(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TIMESTAMPTZ, 0);
    }
    public KW_TINYINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TINYINT, 0);
    }
    public KW_TOUCH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TOUCH, 0);
    }
    public KW_TRANSACTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRANSACTION, 0);
    }
    public KW_TRANSACTIONAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONAL, 0);
    }
    public KW_TRANSACTIONS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0);
    }
    public KW_TRIM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRIM, 0);
    }
    public KW_TYPE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TYPE, 0);
    }
    public KW_UNARCHIVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNARCHIVE, 0);
    }
    public KW_UNDO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNDO, 0);
    }
    public KW_UNIONTYPE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNIONTYPE, 0);
    }
    public KW_UNKNOWN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNKNOWN, 0);
    }
    public KW_UNLOCK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNLOCK, 0);
    }
    public KW_UNMANAGED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNMANAGED, 0);
    }
    public KW_UNSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    public KW_UNSIGNED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNSIGNED, 0);
    }
    public KW_URI(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_URI, 0);
    }
    public KW_URL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_URL, 0);
    }
    public KW_USE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_USE, 0);
    }
    public KW_UTC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UTC, 0);
    }
    public KW_UTCTIMESTAMP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UTCTIMESTAMP, 0);
    }
    public KW_VALIDATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VALIDATE, 0);
    }
    public KW_VALUE_TYPE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VALUE_TYPE, 0);
    }
    public KW_VECTORIZATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VECTORIZATION, 0);
    }
    public KW_VIEW(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    public KW_VIEWS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VIEWS, 0);
    }
    public KW_WAIT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WAIT, 0);
    }
    public KW_WEEK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WEEK, 0);
    }
    public KW_WEEKS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WEEKS, 0);
    }
    public KW_WHILE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WHILE, 0);
    }
    public KW_WITHIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITHIN, 0);
    }
    public KW_WORK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WORK, 0);
    }
    public KW_WORKLOAD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WORKLOAD, 0);
    }
    public KW_WRITE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WRITE, 0);
    }
    public KW_YEAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_YEAR, 0);
    }
    public KW_YEARS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_YEARS, 0);
    }
    public KW_ZONE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ZONE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_nonReserved;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterNonReserved) {
             listener.enterNonReserved(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitNonReserved) {
             listener.exitNonReserved(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitNonReserved) {
            return visitor.visitNonReserved(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class Sql11ReservedKeywordsUsedAsFunctionNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ARRAY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ARRAY, 0);
    }
    public KW_BIGINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BIGINT, 0);
    }
    public KW_BINARY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BINARY, 0);
    }
    public KW_BOOLEAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_BOOLEAN, 0);
    }
    public KW_CURRENT_DATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CURRENT_DATE, 0);
    }
    public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0);
    }
    public KW_DATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DATE, 0);
    }
    public KW_DOUBLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DOUBLE, 0);
    }
    public KW_FLOAT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FLOAT, 0);
    }
    public KW_GROUPING(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_GROUPING, 0);
    }
    public KW_IF(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_IF, 0);
    }
    public KW_INT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INT, 0);
    }
    public KW_INTEGER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_INTEGER, 0);
    }
    public KW_MAP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    public KW_REAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_REAL, 0);
    }
    public KW_SMALLINT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SMALLINT, 0);
    }
    public KW_TIMESTAMP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSql11ReservedKeywordsUsedAsFunctionName) {
             listener.enterSql11ReservedKeywordsUsedAsFunctionName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSql11ReservedKeywordsUsedAsFunctionName) {
             listener.exitSql11ReservedKeywordsUsedAsFunctionName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSql11ReservedKeywordsUsedAsFunctionName) {
            return visitor.visitSql11ReservedKeywordsUsedAsFunctionName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HintContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public hintList(): HintListContext {
        return this.getRuleContext(0, HintListContext)!;
    }
    public EOF(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EOF, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_hint;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHint) {
             listener.enterHint(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHint) {
             listener.exitHint(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHint) {
            return visitor.visitHint(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HintListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public hintItem(): HintItemContext[];
    public hintItem(i: number): HintItemContext | null;
    public hintItem(i?: number): HintItemContext[] | HintItemContext | null {
        if (i === undefined) {
            return this.getRuleContexts(HintItemContext);
        }

        return this.getRuleContext(i, HintItemContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_hintList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHintList) {
             listener.enterHintList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHintList) {
             listener.exitHintList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHintList) {
            return visitor.visitHintList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HintItemContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public hintName(): HintNameContext {
        return this.getRuleContext(0, HintNameContext)!;
    }
    public LPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    public hintArgs(): HintArgsContext | null {
        return this.getRuleContext(0, HintArgsContext);
    }
    public RPAREN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_hintItem;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHintItem) {
             listener.enterHintItem(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHintItem) {
             listener.exitHintItem(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHintItem) {
            return visitor.visitHintItem(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HintNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MAPJOIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MAPJOIN, 0);
    }
    public KW_SEMI(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SEMI, 0);
    }
    public KW_STREAMTABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_STREAMTABLE, 0);
    }
    public KW_PKFK_JOIN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PKFK_JOIN, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_hintName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHintName) {
             listener.enterHintName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHintName) {
             listener.exitHintName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHintName) {
            return visitor.visitHintName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HintArgsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public hintArgName(): HintArgNameContext[];
    public hintArgName(i: number): HintArgNameContext | null;
    public hintArgName(i?: number): HintArgNameContext[] | HintArgNameContext | null {
        if (i === undefined) {
            return this.getRuleContexts(HintArgNameContext);
        }

        return this.getRuleContext(i, HintArgNameContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_hintArgs;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHintArgs) {
             listener.enterHintArgs(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHintArgs) {
             listener.exitHintArgs(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHintArgs) {
            return visitor.visitHintArgs(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HintArgNameContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public Identifier(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Identifier, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public KW_NONE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NONE, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_hintArgName;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHintArgName) {
             listener.enterHintArgName(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHintArgName) {
             listener.exitHintArgName(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHintArgName) {
            return visitor.visitHintArgName(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PrepareStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_PREPARE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PREPARE, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_FROM(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_FROM, 0)!;
    }
    public queryStatementExpression(): QueryStatementExpressionContext {
        return this.getRuleContext(0, QueryStatementExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_prepareStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPrepareStatement) {
             listener.enterPrepareStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPrepareStatement) {
             listener.exitPrepareStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPrepareStatement) {
            return visitor.visitPrepareStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExecuteStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_EXECUTE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_USING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_USING, 0)!;
    }
    public executeParamList(): ExecuteParamListContext {
        return this.getRuleContext(0, ExecuteParamListContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_executeStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExecuteStatement) {
             listener.enterExecuteStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExecuteStatement) {
             listener.exitExecuteStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExecuteStatement) {
            return visitor.visitExecuteStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ExecuteParamListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public constant(): ConstantContext[];
    public constant(i: number): ConstantContext | null;
    public constant(i?: number): ConstantContext[] | ConstantContext | null {
        if (i === undefined) {
            return this.getRuleContexts(ConstantContext);
        }

        return this.getRuleContext(i, ConstantContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_executeParamList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterExecuteParamList) {
             listener.enterExecuteParamList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitExecuteParamList) {
             listener.exitExecuteParamList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitExecuteParamList) {
            return visitor.visitExecuteParamList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ResourcePlanDdlStatementsContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public createResourcePlanStatement(): CreateResourcePlanStatementContext | null {
        return this.getRuleContext(0, CreateResourcePlanStatementContext);
    }
    public alterResourcePlanStatement(): AlterResourcePlanStatementContext | null {
        return this.getRuleContext(0, AlterResourcePlanStatementContext);
    }
    public dropResourcePlanStatement(): DropResourcePlanStatementContext | null {
        return this.getRuleContext(0, DropResourcePlanStatementContext);
    }
    public globalWmStatement(): GlobalWmStatementContext | null {
        return this.getRuleContext(0, GlobalWmStatementContext);
    }
    public replaceResourcePlanStatement(): ReplaceResourcePlanStatementContext | null {
        return this.getRuleContext(0, ReplaceResourcePlanStatementContext);
    }
    public createTriggerStatement(): CreateTriggerStatementContext | null {
        return this.getRuleContext(0, CreateTriggerStatementContext);
    }
    public alterTriggerStatement(): AlterTriggerStatementContext | null {
        return this.getRuleContext(0, AlterTriggerStatementContext);
    }
    public dropTriggerStatement(): DropTriggerStatementContext | null {
        return this.getRuleContext(0, DropTriggerStatementContext);
    }
    public createPoolStatement(): CreatePoolStatementContext | null {
        return this.getRuleContext(0, CreatePoolStatementContext);
    }
    public alterPoolStatement(): AlterPoolStatementContext | null {
        return this.getRuleContext(0, AlterPoolStatementContext);
    }
    public dropPoolStatement(): DropPoolStatementContext | null {
        return this.getRuleContext(0, DropPoolStatementContext);
    }
    public createMappingStatement(): CreateMappingStatementContext | null {
        return this.getRuleContext(0, CreateMappingStatementContext);
    }
    public alterMappingStatement(): AlterMappingStatementContext | null {
        return this.getRuleContext(0, AlterMappingStatementContext);
    }
    public dropMappingStatement(): DropMappingStatementContext | null {
        return this.getRuleContext(0, DropMappingStatementContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_resourcePlanDdlStatements;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterResourcePlanDdlStatements) {
             listener.enterResourcePlanDdlStatements(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitResourcePlanDdlStatements) {
             listener.exitResourcePlanDdlStatements(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitResourcePlanDdlStatements) {
            return visitor.visitResourcePlanDdlStatements(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RpAssignContext extends antlr.ParserRuleContext {
    public _parallelism?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_QUERY_PARALLELISM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    public EQUAL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EQUAL, 0)!;
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public KW_DEFAULT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    public KW_POOL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    public poolPath(): PoolPathContext | null {
        return this.getRuleContext(0, PoolPathContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rpAssign;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRpAssign) {
             listener.enterRpAssign(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRpAssign) {
             listener.exitRpAssign(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRpAssign) {
            return visitor.visitRpAssign(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RpAssignListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public rpAssign(): RpAssignContext[];
    public rpAssign(i: number): RpAssignContext | null;
    public rpAssign(i?: number): RpAssignContext[] | RpAssignContext | null {
        if (i === undefined) {
            return this.getRuleContexts(RpAssignContext);
        }

        return this.getRuleContext(i, RpAssignContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rpAssignList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRpAssignList) {
             listener.enterRpAssignList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRpAssignList) {
             listener.exitRpAssignList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRpAssignList) {
            return visitor.visitRpAssignList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RpUnassignContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_QUERY_PARALLELISM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    public KW_DEFAULT(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    public KW_POOL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rpUnassign;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRpUnassign) {
             listener.enterRpUnassign(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRpUnassign) {
             listener.exitRpUnassign(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRpUnassign) {
            return visitor.visitRpUnassign(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class RpUnassignListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public rpUnassign(): RpUnassignContext[];
    public rpUnassign(i: number): RpUnassignContext | null;
    public rpUnassign(i?: number): RpUnassignContext[] | RpUnassignContext | null {
        if (i === undefined) {
            return this.getRuleContexts(RpUnassignContext);
        }

        return this.getRuleContext(i, RpUnassignContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_rpUnassignList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterRpUnassignList) {
             listener.enterRpUnassignList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitRpUnassignList) {
             listener.exitRpUnassignList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitRpUnassignList) {
            return visitor.visitRpUnassignList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateResourcePlanStatementContext extends antlr.ParserRuleContext {
    public _name?: Id_Context;
    public _likeName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_RESOURCE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0)!;
    }
    public KW_PLAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PLAN, 0)!;
    }
    public KW_LIKE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    public ifNotExists(): IfNotExistsContext | null {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public rpAssignList(): RpAssignListContext | null {
        return this.getRuleContext(0, RpAssignListContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createResourcePlanStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateResourcePlanStatement) {
             listener.enterCreateResourcePlanStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateResourcePlanStatement) {
             listener.exitCreateResourcePlanStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateResourcePlanStatement) {
            return visitor.visitCreateResourcePlanStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WithReplaceContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WITH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WITH, 0)!;
    }
    public KW_REPLACE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_withReplace;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWithReplace) {
             listener.enterWithReplace(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWithReplace) {
             listener.exitWithReplace(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWithReplace) {
            return visitor.visitWithReplace(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ActivateContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ACTIVATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ACTIVATE, 0)!;
    }
    public withReplace(): WithReplaceContext | null {
        return this.getRuleContext(0, WithReplaceContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_activate;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterActivate) {
             listener.enterActivate(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitActivate) {
             listener.exitActivate(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitActivate) {
            return visitor.visitActivate(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class EnableContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ENABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ENABLE, 0);
    }
    public KW_ENABLED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ENABLED, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_enable;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterEnable) {
             listener.enterEnable(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitEnable) {
             listener.exitEnable(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitEnable) {
            return visitor.visitEnable(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DisableContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DISABLE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISABLE, 0);
    }
    public KW_DISABLED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DISABLED, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_disable;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDisable) {
             listener.enterDisable(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDisable) {
             listener.exitDisable(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDisable) {
            return visitor.visitDisable(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class UnmanagedContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_UNMANAGED(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_UNMANAGED, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_unmanaged;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterUnmanaged) {
             listener.enterUnmanaged(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitUnmanaged) {
             listener.exitUnmanaged(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitUnmanaged) {
            return visitor.visitUnmanaged(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class YearContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_YEAR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_YEAR, 0);
    }
    public KW_YEARS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_YEARS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_year;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterYear) {
             listener.enterYear(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitYear) {
             listener.exitYear(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitYear) {
            return visitor.visitYear(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class MonthContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MONTH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MONTH, 0);
    }
    public KW_MONTHS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MONTHS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_month;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterMonth) {
             listener.enterMonth(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitMonth) {
             listener.exitMonth(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitMonth) {
            return visitor.visitMonth(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class WeekContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WEEK(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WEEK, 0);
    }
    public KW_WEEKS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WEEKS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_week;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterWeek) {
             listener.enterWeek(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitWeek) {
             listener.exitWeek(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitWeek) {
            return visitor.visitWeek(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DayContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DAY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DAY, 0);
    }
    public KW_DAYS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DAYS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_day;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDay) {
             listener.enterDay(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDay) {
             listener.exitDay(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDay) {
            return visitor.visitDay(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class HourContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_HOUR(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_HOUR, 0);
    }
    public KW_HOURS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_HOURS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_hour;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterHour) {
             listener.enterHour(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitHour) {
             listener.exitHour(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitHour) {
            return visitor.visitHour(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class MinuteContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_MINUTE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MINUTE, 0);
    }
    public KW_MINUTES(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MINUTES, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_minute;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterMinute) {
             listener.enterMinute(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitMinute) {
             listener.exitMinute(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitMinute) {
            return visitor.visitMinute(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class SecondContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_SECOND(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SECOND, 0);
    }
    public KW_SECONDS(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SECONDS, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_second;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterSecond) {
             listener.enterSecond(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitSecond) {
             listener.exitSecond(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitSecond) {
            return visitor.visitSecond(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DecimalContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DEC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DEC, 0);
    }
    public KW_DECIMAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DECIMAL, 0);
    }
    public KW_NUMERIC(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_NUMERIC, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_decimal;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDecimal) {
             listener.enterDecimal(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDecimal) {
             listener.exitDecimal(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDecimal) {
            return visitor.visitDecimal(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterResourcePlanStatementContext extends antlr.ParserRuleContext {
    public _name?: Id_Context;
    public _newName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALTER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ALTER, 0)!;
    }
    public KW_RESOURCE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0)!;
    }
    public KW_PLAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PLAN, 0)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public KW_VALIDATE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_VALIDATE, 0);
    }
    public disable(): DisableContext | null {
        return this.getRuleContext(0, DisableContext);
    }
    public KW_SET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    public rpAssignList(): RpAssignListContext | null {
        return this.getRuleContext(0, RpAssignListContext);
    }
    public KW_UNSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    public rpUnassignList(): RpUnassignListContext | null {
        return this.getRuleContext(0, RpUnassignListContext);
    }
    public KW_RENAME(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RENAME, 0);
    }
    public KW_TO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    public activate(): ActivateContext | null {
        return this.getRuleContext(0, ActivateContext);
    }
    public enable(): EnableContext | null {
        return this.getRuleContext(0, EnableContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterResourcePlanStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterResourcePlanStatement) {
             listener.enterAlterResourcePlanStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterResourcePlanStatement) {
             listener.exitAlterResourcePlanStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterResourcePlanStatement) {
            return visitor.visitAlterResourcePlanStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class GlobalWmStatementContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_WORKLOAD(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WORKLOAD, 0)!;
    }
    public KW_MANAGEMENT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MANAGEMENT, 0)!;
    }
    public enable(): EnableContext | null {
        return this.getRuleContext(0, EnableContext);
    }
    public disable(): DisableContext | null {
        return this.getRuleContext(0, DisableContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_globalWmStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterGlobalWmStatement) {
             listener.enterGlobalWmStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitGlobalWmStatement) {
             listener.exitGlobalWmStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitGlobalWmStatement) {
            return visitor.visitGlobalWmStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ReplaceResourcePlanStatementContext extends antlr.ParserRuleContext {
    public _src?: Id_Context;
    public _dest?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_REPLACE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0)!;
    }
    public KW_ACTIVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ACTIVE, 0);
    }
    public KW_RESOURCE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0);
    }
    public KW_PLAN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PLAN, 0);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_replaceResourcePlanStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterReplaceResourcePlanStatement) {
             listener.enterReplaceResourcePlanStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitReplaceResourcePlanStatement) {
             listener.exitReplaceResourcePlanStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitReplaceResourcePlanStatement) {
            return visitor.visitReplaceResourcePlanStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropResourcePlanStatementContext extends antlr.ParserRuleContext {
    public _name?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_RESOURCE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0)!;
    }
    public KW_PLAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_PLAN, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public ifExists(): IfExistsContext | null {
        return this.getRuleContext(0, IfExistsContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropResourcePlanStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropResourcePlanStatement) {
             listener.enterDropResourcePlanStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropResourcePlanStatement) {
             listener.exitDropResourcePlanStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropResourcePlanStatement) {
            return visitor.visitDropResourcePlanStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PoolPathContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public DOT(): antlr.TerminalNode[];
    public DOT(i: number): antlr.TerminalNode | null;
    public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.DOT);
    	} else {
    		return this.getToken(HiveSqlParser.DOT, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_poolPath;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPoolPath) {
             listener.enterPoolPath(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPoolPath) {
             listener.exitPoolPath(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPoolPath) {
            return visitor.visitPoolPath(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public triggerAtomExpression(): TriggerAtomExpressionContext {
        return this.getRuleContext(0, TriggerAtomExpressionContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerExpression) {
             listener.enterTriggerExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerExpression) {
             listener.exitTriggerExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerExpression) {
            return visitor.visitTriggerExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerExpressionStandaloneContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public triggerExpression(): TriggerExpressionContext {
        return this.getRuleContext(0, TriggerExpressionContext)!;
    }
    public EOF(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EOF, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerExpressionStandalone;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerExpressionStandalone) {
             listener.enterTriggerExpressionStandalone(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerExpressionStandalone) {
             listener.exitTriggerExpressionStandalone(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerExpressionStandalone) {
            return visitor.visitTriggerExpressionStandalone(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerOrExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public triggerAndExpression(): TriggerAndExpressionContext[];
    public triggerAndExpression(i: number): TriggerAndExpressionContext | null;
    public triggerAndExpression(i?: number): TriggerAndExpressionContext[] | TriggerAndExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(TriggerAndExpressionContext);
        }

        return this.getRuleContext(i, TriggerAndExpressionContext);
    }
    public KW_OR(): antlr.TerminalNode[];
    public KW_OR(i: number): antlr.TerminalNode | null;
    public KW_OR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_OR);
    	} else {
    		return this.getToken(HiveSqlParser.KW_OR, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerOrExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerOrExpression) {
             listener.enterTriggerOrExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerOrExpression) {
             listener.exitTriggerOrExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerOrExpression) {
            return visitor.visitTriggerOrExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerAndExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public triggerAtomExpression(): TriggerAtomExpressionContext[];
    public triggerAtomExpression(i: number): TriggerAtomExpressionContext | null;
    public triggerAtomExpression(i?: number): TriggerAtomExpressionContext[] | TriggerAtomExpressionContext | null {
        if (i === undefined) {
            return this.getRuleContexts(TriggerAtomExpressionContext);
        }

        return this.getRuleContext(i, TriggerAtomExpressionContext);
    }
    public KW_AND(): antlr.TerminalNode[];
    public KW_AND(i: number): antlr.TerminalNode | null;
    public KW_AND(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.KW_AND);
    	} else {
    		return this.getToken(HiveSqlParser.KW_AND, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerAndExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerAndExpression) {
             listener.enterTriggerAndExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerAndExpression) {
             listener.exitTriggerAndExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerAndExpression) {
            return visitor.visitTriggerAndExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerAtomExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public comparisionOperator(): ComparisionOperatorContext {
        return this.getRuleContext(0, ComparisionOperatorContext)!;
    }
    public triggerLiteral(): TriggerLiteralContext {
        return this.getRuleContext(0, TriggerLiteralContext)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerAtomExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerAtomExpression) {
             listener.enterTriggerAtomExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerAtomExpression) {
             listener.exitTriggerAtomExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerAtomExpression) {
            return visitor.visitTriggerAtomExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerLiteralContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerLiteral;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerLiteral) {
             listener.enterTriggerLiteral(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerLiteral) {
             listener.exitTriggerLiteral(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerLiteral) {
            return visitor.visitTriggerLiteral(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class ComparisionOperatorContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public GREATERTHAN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_comparisionOperator;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterComparisionOperator) {
             listener.enterComparisionOperator(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitComparisionOperator) {
             listener.exitComparisionOperator(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitComparisionOperator) {
            return visitor.visitComparisionOperator(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerActionExpressionContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_KILL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_KILL, 0);
    }
    public KW_MOVE(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_MOVE, 0);
    }
    public KW_TO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    public poolPath(): PoolPathContext | null {
        return this.getRuleContext(0, PoolPathContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerActionExpression;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerActionExpression) {
             listener.enterTriggerActionExpression(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerActionExpression) {
             listener.exitTriggerActionExpression(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerActionExpression) {
            return visitor.visitTriggerActionExpression(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class TriggerActionExpressionStandaloneContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public triggerActionExpression(): TriggerActionExpressionContext {
        return this.getRuleContext(0, TriggerActionExpressionContext)!;
    }
    public EOF(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.EOF, 0)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_triggerActionExpressionStandalone;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterTriggerActionExpressionStandalone) {
             listener.enterTriggerActionExpressionStandalone(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitTriggerActionExpressionStandalone) {
             listener.exitTriggerActionExpressionStandalone(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitTriggerActionExpressionStandalone) {
            return visitor.visitTriggerActionExpressionStandalone(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateTriggerStatementContext extends antlr.ParserRuleContext {
    public _rpName?: Id_Context;
    public _triggerName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_TRIGGER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TRIGGER, 0)!;
    }
    public DOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.DOT, 0)!;
    }
    public KW_WHEN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WHEN, 0)!;
    }
    public triggerExpression(): TriggerExpressionContext {
        return this.getRuleContext(0, TriggerExpressionContext)!;
    }
    public KW_DO(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DO, 0)!;
    }
    public triggerActionExpression(): TriggerActionExpressionContext {
        return this.getRuleContext(0, TriggerActionExpressionContext)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createTriggerStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateTriggerStatement) {
             listener.enterCreateTriggerStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateTriggerStatement) {
             listener.exitCreateTriggerStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateTriggerStatement) {
            return visitor.visitCreateTriggerStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterTriggerStatementContext extends antlr.ParserRuleContext {
    public _rpName?: Id_Context;
    public _triggerName?: Id_Context;
    public _poolName?: PoolPathContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALTER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ALTER, 0)!;
    }
    public KW_TRIGGER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TRIGGER, 0)!;
    }
    public DOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.DOT, 0)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public KW_WHEN(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WHEN, 0);
    }
    public triggerExpression(): TriggerExpressionContext | null {
        return this.getRuleContext(0, TriggerExpressionContext);
    }
    public KW_DO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DO, 0);
    }
    public triggerActionExpression(): TriggerActionExpressionContext | null {
        return this.getRuleContext(0, TriggerActionExpressionContext);
    }
    public KW_ADD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    public KW_TO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    public KW_DROP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    public KW_FROM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    public KW_POOL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    public KW_UNMANAGED(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNMANAGED, 0);
    }
    public poolPath(): PoolPathContext | null {
        return this.getRuleContext(0, PoolPathContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterTriggerStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterTriggerStatement) {
             listener.enterAlterTriggerStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterTriggerStatement) {
             listener.exitAlterTriggerStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterTriggerStatement) {
            return visitor.visitAlterTriggerStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropTriggerStatementContext extends antlr.ParserRuleContext {
    public _rpName?: Id_Context;
    public _triggerName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_TRIGGER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_TRIGGER, 0)!;
    }
    public DOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.DOT, 0)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropTriggerStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropTriggerStatement) {
             listener.enterDropTriggerStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropTriggerStatement) {
             listener.exitDropTriggerStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropTriggerStatement) {
            return visitor.visitDropTriggerStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PoolAssignContext extends antlr.ParserRuleContext {
    public _allocFraction?: Token | null;
    public _parallelism?: Token | null;
    public _policy?: Token | null;
    public _path?: PoolPathContext;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALLOC_FRACTION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ALLOC_FRACTION, 0);
    }
    public EQUAL(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    public KW_QUERY_PARALLELISM(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    public KW_SCHEDULING_POLICY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0);
    }
    public KW_PATH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_PATH, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public StringLiteral(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    public poolPath(): PoolPathContext | null {
        return this.getRuleContext(0, PoolPathContext);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_poolAssign;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPoolAssign) {
             listener.enterPoolAssign(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPoolAssign) {
             listener.exitPoolAssign(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPoolAssign) {
            return visitor.visitPoolAssign(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class PoolAssignListContext extends antlr.ParserRuleContext {
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public poolAssign(): PoolAssignContext[];
    public poolAssign(i: number): PoolAssignContext | null;
    public poolAssign(i?: number): PoolAssignContext[] | PoolAssignContext | null {
        if (i === undefined) {
            return this.getRuleContexts(PoolAssignContext);
        }

        return this.getRuleContext(i, PoolAssignContext);
    }
    public COMMA(): antlr.TerminalNode[];
    public COMMA(i: number): antlr.TerminalNode | null;
    public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] {
    	if (i === undefined) {
    		return this.getTokens(HiveSqlParser.COMMA);
    	} else {
    		return this.getToken(HiveSqlParser.COMMA, i);
    	}
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_poolAssignList;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterPoolAssignList) {
             listener.enterPoolAssignList(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitPoolAssignList) {
             listener.exitPoolAssignList(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitPoolAssignList) {
            return visitor.visitPoolAssignList(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreatePoolStatementContext extends antlr.ParserRuleContext {
    public _rpName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_POOL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_POOL, 0)!;
    }
    public DOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.DOT, 0)!;
    }
    public poolPath(): PoolPathContext {
        return this.getRuleContext(0, PoolPathContext)!;
    }
    public KW_WITH(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_WITH, 0)!;
    }
    public poolAssignList(): PoolAssignListContext {
        return this.getRuleContext(0, PoolAssignListContext)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createPoolStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreatePoolStatement) {
             listener.enterCreatePoolStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreatePoolStatement) {
             listener.exitCreatePoolStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreatePoolStatement) {
            return visitor.visitCreatePoolStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterPoolStatementContext extends antlr.ParserRuleContext {
    public _rpName?: Id_Context;
    public _triggerName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALTER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ALTER, 0)!;
    }
    public KW_POOL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_POOL, 0)!;
    }
    public DOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.DOT, 0)!;
    }
    public poolPath(): PoolPathContext {
        return this.getRuleContext(0, PoolPathContext)!;
    }
    public id_(): Id_Context[];
    public id_(i: number): Id_Context | null;
    public id_(i?: number): Id_Context[] | Id_Context | null {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }

        return this.getRuleContext(i, Id_Context);
    }
    public KW_SET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    public poolAssignList(): PoolAssignListContext | null {
        return this.getRuleContext(0, PoolAssignListContext);
    }
    public KW_UNSET(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    public KW_SCHEDULING_POLICY(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0);
    }
    public KW_TRIGGER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TRIGGER, 0);
    }
    public KW_ADD(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    public KW_DROP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterPoolStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterPoolStatement) {
             listener.enterAlterPoolStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterPoolStatement) {
             listener.exitAlterPoolStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterPoolStatement) {
            return visitor.visitAlterPoolStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropPoolStatementContext extends antlr.ParserRuleContext {
    public _rpName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_POOL(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_POOL, 0)!;
    }
    public DOT(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.DOT, 0)!;
    }
    public poolPath(): PoolPathContext {
        return this.getRuleContext(0, PoolPathContext)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropPoolStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropPoolStatement) {
             listener.enterDropPoolStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropPoolStatement) {
             listener.exitDropPoolStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropPoolStatement) {
            return visitor.visitDropPoolStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class CreateMappingStatementContext extends antlr.ParserRuleContext {
    public _mappingType?: Token | null;
    public _name?: Token | null;
    public _rpName?: Id_Context;
    public _path?: PoolPathContext;
    public _order?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_CREATE(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_CREATE, 0)!;
    }
    public KW_MAPPING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MAPPING, 0)!;
    }
    public KW_IN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IN, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_USER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    public KW_GROUP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    public KW_APPLICATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_APPLICATION, 0);
    }
    public KW_TO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    public unmanaged(): UnmanagedContext | null {
        return this.getRuleContext(0, UnmanagedContext);
    }
    public poolPath(): PoolPathContext | null {
        return this.getRuleContext(0, PoolPathContext);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_ORDER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ORDER, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_createMappingStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterCreateMappingStatement) {
             listener.enterCreateMappingStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitCreateMappingStatement) {
             listener.exitCreateMappingStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitCreateMappingStatement) {
            return visitor.visitCreateMappingStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class AlterMappingStatementContext extends antlr.ParserRuleContext {
    public _mappingType?: Token | null;
    public _name?: Token | null;
    public _rpName?: Id_Context;
    public _path?: PoolPathContext;
    public _order?: Token | null;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_ALTER(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_ALTER, 0)!;
    }
    public KW_MAPPING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MAPPING, 0)!;
    }
    public KW_IN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IN, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_USER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    public KW_GROUP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    public KW_APPLICATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_APPLICATION, 0);
    }
    public KW_TO(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    public unmanaged(): UnmanagedContext | null {
        return this.getRuleContext(0, UnmanagedContext);
    }
    public poolPath(): PoolPathContext | null {
        return this.getRuleContext(0, PoolPathContext);
    }
    public KW_WITH(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    public KW_ORDER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_ORDER, 0);
    }
    public Number(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_alterMappingStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterAlterMappingStatement) {
             listener.enterAlterMappingStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitAlterMappingStatement) {
             listener.exitAlterMappingStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitAlterMappingStatement) {
            return visitor.visitAlterMappingStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}


export class DropMappingStatementContext extends antlr.ParserRuleContext {
    public _mappingType?: Token | null;
    public _name?: Token | null;
    public _rpName?: Id_Context;
    public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
        super(parent, invokingState);
    }
    public KW_DROP(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_DROP, 0)!;
    }
    public KW_MAPPING(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_MAPPING, 0)!;
    }
    public KW_IN(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.KW_IN, 0)!;
    }
    public StringLiteral(): antlr.TerminalNode {
        return this.getToken(HiveSqlParser.StringLiteral, 0)!;
    }
    public id_(): Id_Context {
        return this.getRuleContext(0, Id_Context)!;
    }
    public KW_USER(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    public KW_GROUP(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    public KW_APPLICATION(): antlr.TerminalNode | null {
        return this.getToken(HiveSqlParser.KW_APPLICATION, 0);
    }
    public override get ruleIndex(): number {
        return HiveSqlParser.RULE_dropMappingStatement;
    }
    public override enterRule(listener: HiveSqlParserListener): void {
        if(listener.enterDropMappingStatement) {
             listener.enterDropMappingStatement(this);
        }
    }
    public override exitRule(listener: HiveSqlParserListener): void {
        if(listener.exitDropMappingStatement) {
             listener.exitDropMappingStatement(this);
        }
    }
    public override accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result | null {
        if (visitor.visitDropMappingStatement) {
            return visitor.visitDropMappingStatement(this);
        } else {
            return visitor.visitChildren(this);
        }
    }
}
