Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
// $ANTLR 3.5.2 FromClauseParser.g 2019-08-22 15:02:51
package org.apache.hadoop.hive.ql.parse;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.conf.HiveConf;
import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import org.antlr.runtime.tree.*;
/**
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
@SuppressWarnings("all")
public class HiveParser_FromClauseParser extends Parser {
public static final int EOF=-1;
public static final int AMPERSAND=4;
public static final int BITWISEOR=5;
public static final int BITWISEXOR=6;
public static final int ByteLengthLiteral=7;
public static final int COLON=8;
public static final int COMMA=9;
public static final int CONCATENATE=10;
public static final int CharSetLiteral=11;
public static final int CharSetName=12;
public static final int DIV=13;
public static final int DIVIDE=14;
public static final int DOLLAR=15;
public static final int DOT=16;
public static final int Digit=17;
public static final int EQUAL=18;
public static final int EQUAL_NS=19;
public static final int Exponent=20;
public static final int GREATERTHAN=21;
public static final int GREATERTHANOREQUALTO=22;
public static final int HexDigit=23;
public static final int Identifier=24;
public static final int IntegralLiteral=25;
public static final int KW_ABORT=26;
public static final int KW_ACTIVATE=27;
public static final int KW_ACTIVE=28;
public static final int KW_ADD=29;
public static final int KW_ADMIN=30;
public static final int KW_AFTER=31;
public static final int KW_ALL=32;
public static final int KW_ALLOC_FRACTION=33;
public static final int KW_ALTER=34;
public static final int KW_ANALYZE=35;
public static final int KW_AND=36;
public static final int KW_ANY=37;
public static final int KW_APPLICATION=38;
public static final int KW_ARCHIVE=39;
public static final int KW_ARRAY=40;
public static final int KW_AS=41;
public static final int KW_ASC=42;
public static final int KW_AUTHORIZATION=43;
public static final int KW_AUTOCOMMIT=44;
public static final int KW_BEFORE=45;
public static final int KW_BETWEEN=46;
public static final int KW_BIGINT=47;
public static final int KW_BINARY=48;
public static final int KW_BOOLEAN=49;
public static final int KW_BOTH=50;
public static final int KW_BUCKET=51;
public static final int KW_BUCKETS=52;
public static final int KW_BY=53;
public static final int KW_CACHE=54;
public static final int KW_CASCADE=55;
public static final int KW_CASE=56;
public static final int KW_CAST=57;
public static final int KW_CHANGE=58;
public static final int KW_CHAR=59;
public static final int KW_CHECK=60;
public static final int KW_CLUSTER=61;
public static final int KW_CLUSTERED=62;
public static final int KW_CLUSTERSTATUS=63;
public static final int KW_COLLECTION=64;
public static final int KW_COLUMN=65;
public static final int KW_COLUMNS=66;
public static final int KW_COMMENT=67;
public static final int KW_COMMIT=68;
public static final int KW_COMPACT=69;
public static final int KW_COMPACTIONS=70;
public static final int KW_COMPUTE=71;
public static final int KW_CONCATENATE=72;
public static final int KW_CONF=73;
public static final int KW_CONSTRAINT=74;
public static final int KW_CONTINUE=75;
public static final int KW_CREATE=76;
public static final int KW_CROSS=77;
public static final int KW_CUBE=78;
public static final int KW_CURRENT=79;
public static final int KW_CURRENT_DATE=80;
public static final int KW_CURRENT_TIMESTAMP=81;
public static final int KW_CURSOR=82;
public static final int KW_DATA=83;
public static final int KW_DATABASE=84;
public static final int KW_DATABASES=85;
public static final int KW_DATE=86;
public static final int KW_DATETIME=87;
public static final int KW_DAY=88;
public static final int KW_DBPROPERTIES=89;
public static final int KW_DECIMAL=90;
public static final int KW_DEFAULT=91;
public static final int KW_DEFERRED=92;
public static final int KW_DEFINED=93;
public static final int KW_DELETE=94;
public static final int KW_DELIMITED=95;
public static final int KW_DEPENDENCY=96;
public static final int KW_DESC=97;
public static final int KW_DESCRIBE=98;
public static final int KW_DETAIL=99;
public static final int KW_DIRECTORIES=100;
public static final int KW_DIRECTORY=101;
public static final int KW_DISABLE=102;
public static final int KW_DISTINCT=103;
public static final int KW_DISTRIBUTE=104;
public static final int KW_DO=105;
public static final int KW_DOUBLE=106;
public static final int KW_DOW=107;
public static final int KW_DROP=108;
public static final int KW_DUMP=109;
public static final int KW_ELEM_TYPE=110;
public static final int KW_ELSE=111;
public static final int KW_ENABLE=112;
public static final int KW_END=113;
public static final int KW_ENFORCED=114;
public static final int KW_ESCAPED=115;
public static final int KW_EXCEPT=116;
public static final int KW_EXCHANGE=117;
public static final int KW_EXCLUSIVE=118;
public static final int KW_EXISTS=119;
public static final int KW_EXPLAIN=120;
public static final int KW_EXPORT=121;
public static final int KW_EXPRESSION=122;
public static final int KW_EXTENDED=123;
public static final int KW_EXTERNAL=124;
public static final int KW_EXTRACT=125;
public static final int KW_FALSE=126;
public static final int KW_FETCH=127;
public static final int KW_FIELDS=128;
public static final int KW_FILE=129;
public static final int KW_FILEFORMAT=130;
public static final int KW_FIRST=131;
public static final int KW_FLOAT=132;
public static final int KW_FLOOR=133;
public static final int KW_FOLLOWING=134;
public static final int KW_FOR=135;
public static final int KW_FOREIGN=136;
public static final int KW_FORMAT=137;
public static final int KW_FORMATTED=138;
public static final int KW_FROM=139;
public static final int KW_FULL=140;
public static final int KW_FUNCTION=141;
public static final int KW_FUNCTIONS=142;
public static final int KW_GRANT=143;
public static final int KW_GROUP=144;
public static final int KW_GROUPING=145;
public static final int KW_HAVING=146;
public static final int KW_HOUR=147;
public static final int KW_IDXPROPERTIES=148;
public static final int KW_IF=149;
public static final int KW_IMPORT=150;
public static final int KW_IN=151;
public static final int KW_INDEX=152;
public static final int KW_INDEXES=153;
public static final int KW_INNER=154;
public static final int KW_INPATH=155;
public static final int KW_INPUTDRIVER=156;
public static final int KW_INPUTFORMAT=157;
public static final int KW_INSERT=158;
public static final int KW_INT=159;
public static final int KW_INTERSECT=160;
public static final int KW_INTERVAL=161;
public static final int KW_INTO=162;
public static final int KW_IS=163;
public static final int KW_ISOLATION=164;
public static final int KW_ITEMS=165;
public static final int KW_JAR=166;
public static final int KW_JOIN=167;
public static final int KW_KEY=168;
public static final int KW_KEYS=169;
public static final int KW_KEY_TYPE=170;
public static final int KW_KILL=171;
public static final int KW_LAST=172;
public static final int KW_LATERAL=173;
public static final int KW_LEFT=174;
public static final int KW_LESS=175;
public static final int KW_LEVEL=176;
public static final int KW_LIKE=177;
public static final int KW_LIMIT=178;
public static final int KW_LINES=179;
public static final int KW_LOAD=180;
public static final int KW_LOCAL=181;
public static final int KW_LOCATION=182;
public static final int KW_LOCK=183;
public static final int KW_LOCKS=184;
public static final int KW_LOGICAL=185;
public static final int KW_LONG=186;
public static final int KW_MACRO=187;
public static final int KW_MANAGEMENT=188;
public static final int KW_MAP=189;
public static final int KW_MAPJOIN=190;
public static final int KW_MAPPING=191;
public static final int KW_MATCHED=192;
public static final int KW_MATERIALIZED=193;
public static final int KW_MERGE=194;
public static final int KW_METADATA=195;
public static final int KW_MINUS=196;
public static final int KW_MINUTE=197;
public static final int KW_MONTH=198;
public static final int KW_MORE=199;
public static final int KW_MOVE=200;
public static final int KW_MSCK=201;
public static final int KW_NONE=202;
public static final int KW_NORELY=203;
public static final int KW_NOSCAN=204;
public static final int KW_NOT=205;
public static final int KW_NOVALIDATE=206;
public static final int KW_NULL=207;
public static final int KW_NULLS=208;
public static final int KW_OF=209;
public static final int KW_OFFSET=210;
public static final int KW_ON=211;
public static final int KW_ONLY=212;
public static final int KW_OPERATOR=213;
public static final int KW_OPTION=214;
public static final int KW_OR=215;
public static final int KW_ORDER=216;
public static final int KW_OUT=217;
public static final int KW_OUTER=218;
public static final int KW_OUTPUTDRIVER=219;
public static final int KW_OUTPUTFORMAT=220;
public static final int KW_OVER=221;
public static final int KW_OVERWRITE=222;
public static final int KW_OWNER=223;
public static final int KW_PARTITION=224;
public static final int KW_PARTITIONED=225;
public static final int KW_PARTITIONS=226;
public static final int KW_PATH=227;
public static final int KW_PERCENT=228;
public static final int KW_PLAN=229;
public static final int KW_PLANS=230;
public static final int KW_PLUS=231;
public static final int KW_POOL=232;
public static final int KW_PRECEDING=233;
public static final int KW_PRECISION=234;
public static final int KW_PRESERVE=235;
public static final int KW_PRIMARY=236;
public static final int KW_PRINCIPALS=237;
public static final int KW_PROCEDURE=238;
public static final int KW_PURGE=239;
public static final int KW_QUARTER=240;
public static final int KW_QUERY=241;
public static final int KW_QUERY_PARALLELISM=242;
public static final int KW_RANGE=243;
public static final int KW_READ=244;
public static final int KW_READS=245;
public static final int KW_REBUILD=246;
public static final int KW_RECORDREADER=247;
public static final int KW_RECORDWRITER=248;
public static final int KW_REDUCE=249;
public static final int KW_REFERENCES=250;
public static final int KW_REGEXP=251;
public static final int KW_RELOAD=252;
public static final int KW_RELY=253;
public static final int KW_RENAME=254;
public static final int KW_REOPTIMIZATION=255;
public static final int KW_REPAIR=256;
public static final int KW_REPL=257;
public static final int KW_REPLACE=258;
public static final int KW_REPLICATION=259;
public static final int KW_RESOURCE=260;
public static final int KW_RESTRICT=261;
public static final int KW_REVOKE=262;
public static final int KW_REWRITE=263;
public static final int KW_RIGHT=264;
public static final int KW_RLIKE=265;
public static final int KW_ROLE=266;
public static final int KW_ROLES=267;
public static final int KW_ROLLBACK=268;
public static final int KW_ROLLUP=269;
public static final int KW_ROW=270;
public static final int KW_ROWS=271;
public static final int KW_SCHEDULING_POLICY=272;
public static final int KW_SCHEMA=273;
public static final int KW_SCHEMAS=274;
public static final int KW_SECOND=275;
public static final int KW_SELECT=276;
public static final int KW_SEMI=277;
public static final int KW_SERDE=278;
public static final int KW_SERDEPROPERTIES=279;
public static final int KW_SERVER=280;
public static final int KW_SET=281;
public static final int KW_SETS=282;
public static final int KW_SHARED=283;
public static final int KW_SHOW=284;
public static final int KW_SHOW_DATABASE=285;
public static final int KW_SKEWED=286;
public static final int KW_SMALLINT=287;
public static final int KW_SNAPSHOT=288;
public static final int KW_SORT=289;
public static final int KW_SORTED=290;
public static final int KW_SSL=291;
public static final int KW_START=292;
public static final int KW_STATISTICS=293;
public static final int KW_STATUS=294;
public static final int KW_STORED=295;
public static final int KW_STREAMTABLE=296;
public static final int KW_STRING=297;
public static final int KW_STRUCT=298;
public static final int KW_SUMMARY=299;
public static final int KW_SYNC=300;
public static final int KW_TABLE=301;
public static final int KW_TABLES=302;
public static final int KW_TABLESAMPLE=303;
public static final int KW_TBLPROPERTIES=304;
public static final int KW_TEMPORARY=305;
public static final int KW_TERMINATED=306;
public static final int KW_THEN=307;
public static final int KW_TIME=308;
public static final int KW_TIMESTAMP=309;
public static final int KW_TIMESTAMPLOCALTZ=310;
public static final int KW_TINYINT=311;
public static final int KW_TO=312;
public static final int KW_TOUCH=313;
public static final int KW_TRANSACTION=314;
public static final int KW_TRANSACTIONS=315;
public static final int KW_TRANSFORM=316;
public static final int KW_TRIGGER=317;
public static final int KW_TRUE=318;
public static final int KW_TRUNCATE=319;
public static final int KW_UNARCHIVE=320;
public static final int KW_UNBOUNDED=321;
public static final int KW_UNDO=322;
public static final int KW_UNION=323;
public static final int KW_UNIONTYPE=324;
public static final int KW_UNIQUE=325;
public static final int KW_UNIQUEJOIN=326;
public static final int KW_UNLOCK=327;
public static final int KW_UNMANAGED=328;
public static final int KW_UNSET=329;
public static final int KW_UNSIGNED=330;
public static final int KW_UPDATE=331;
public static final int KW_URI=332;
public static final int KW_USE=333;
public static final int KW_USER=334;
public static final int KW_USING=335;
public static final int KW_UTC=336;
public static final int KW_UTCTIMESTAMP=337;
public static final int KW_VALIDATE=338;
public static final int KW_VALUES=339;
public static final int KW_VALUE_TYPE=340;
public static final int KW_VARCHAR=341;
public static final int KW_VECTORIZATION=342;
public static final int KW_VIEW=343;
public static final int KW_VIEWS=344;
public static final int KW_WAIT=345;
public static final int KW_WEEK=346;
public static final int KW_WHEN=347;
public static final int KW_WHERE=348;
public static final int KW_WHILE=349;
public static final int KW_WINDOW=350;
public static final int KW_WITH=351;
public static final int KW_WORK=352;
public static final int KW_WORKLOAD=353;
public static final int KW_WRITE=354;
public static final int KW_YEAR=355;
public static final int KW_ZONE=356;
public static final int LCURLY=357;
public static final int LESSTHAN=358;
public static final int LESSTHANOREQUALTO=359;
public static final int LINE_COMMENT=360;
public static final int LPAREN=361;
public static final int LSQUARE=362;
public static final int Letter=363;
public static final int MINUS=364;
public static final int MOD=365;
public static final int NOTEQUAL=366;
public static final int Number=367;
public static final int NumberLiteral=368;
public static final int PLUS=369;
public static final int QUERY_HINT=370;
public static final int QUESTION=371;
public static final int QuotedIdentifier=372;
public static final int RCURLY=373;
public static final int RPAREN=374;
public static final int RSQUARE=375;
public static final int RegexComponent=376;
public static final int SEMICOLON=377;
public static final int STAR=378;
public static final int StringLiteral=379;
public static final int TILDE=380;
public static final int WS=381;
public static final int KW_BATCH=417;
public static final int KW_DAYOFWEEK=454;
public static final int KW_HOLD_DDLTIME=501;
public static final int KW_IGNORE=505;
public static final int KW_NO_DROP=552;
public static final int KW_OFFLINE=556;
public static final int KW_PROTECTION=582;
public static final int KW_READONLY=589;
public static final int KW_TIMESTAMPTZ=649;
public static final int TOK_ABORT_TRANSACTIONS=708;
public static final int TOK_ACTIVATE=709;
public static final int TOK_ADD_TRIGGER=710;
public static final int TOK_ADMIN_OPTION_FOR=711;
public static final int TOK_ALIASLIST=712;
public static final int TOK_ALLCOLREF=713;
public static final int TOK_ALLOC_FRACTION=714;
public static final int TOK_ALTERDATABASE_LOCATION=715;
public static final int TOK_ALTERDATABASE_OWNER=716;
public static final int TOK_ALTERDATABASE_PROPERTIES=717;
public static final int TOK_ALTERTABLE=718;
public static final int TOK_ALTERTABLE_ADDCOLS=719;
public static final int TOK_ALTERTABLE_ADDCONSTRAINT=720;
public static final int TOK_ALTERTABLE_ADDPARTS=721;
public static final int TOK_ALTERTABLE_ARCHIVE=722;
public static final int TOK_ALTERTABLE_BUCKETS=723;
public static final int TOK_ALTERTABLE_CHANGECOL_AFTER_POSITION=724;
public static final int TOK_ALTERTABLE_CLUSTER_SORT=725;
public static final int TOK_ALTERTABLE_COMPACT=726;
public static final int TOK_ALTERTABLE_DROPCONSTRAINT=727;
public static final int TOK_ALTERTABLE_DROPPARTS=728;
public static final int TOK_ALTERTABLE_DROPPROPERTIES=729;
public static final int TOK_ALTERTABLE_EXCHANGEPARTITION=730;
public static final int TOK_ALTERTABLE_FILEFORMAT=731;
public static final int TOK_ALTERTABLE_LOCATION=732;
public static final int TOK_ALTERTABLE_MERGEFILES=733;
public static final int TOK_ALTERTABLE_OWNER=734;
public static final int TOK_ALTERTABLE_PARTCOLTYPE=735;
public static final int TOK_ALTERTABLE_PROPERTIES=736;
public static final int TOK_ALTERTABLE_RENAME=737;
public static final int TOK_ALTERTABLE_RENAMECOL=738;
public static final int TOK_ALTERTABLE_RENAMEPART=739;
public static final int TOK_ALTERTABLE_REPLACECOLS=740;
public static final int TOK_ALTERTABLE_SERDEPROPERTIES=741;
public static final int TOK_ALTERTABLE_SERIALIZER=742;
public static final int TOK_ALTERTABLE_SKEWED=743;
public static final int TOK_ALTERTABLE_SKEWED_LOCATION=744;
public static final int TOK_ALTERTABLE_TOUCH=745;
public static final int TOK_ALTERTABLE_UNARCHIVE=746;
public static final int TOK_ALTERTABLE_UPDATECOLSTATS=747;
public static final int TOK_ALTERTABLE_UPDATECOLUMNS=748;
public static final int TOK_ALTERTABLE_UPDATESTATS=749;
public static final int TOK_ALTERVIEW=750;
public static final int TOK_ALTERVIEW_ADDPARTS=751;
public static final int TOK_ALTERVIEW_DROPPARTS=752;
public static final int TOK_ALTERVIEW_DROPPROPERTIES=753;
public static final int TOK_ALTERVIEW_PROPERTIES=754;
public static final int TOK_ALTERVIEW_RENAME=755;
public static final int TOK_ALTER_MAPPING=756;
public static final int TOK_ALTER_MATERIALIZED_VIEW=757;
public static final int TOK_ALTER_MATERIALIZED_VIEW_REBUILD=758;
public static final int TOK_ALTER_MATERIALIZED_VIEW_REWRITE=759;
public static final int TOK_ALTER_POOL=760;
public static final int TOK_ALTER_RP=761;
public static final int TOK_ALTER_TRIGGER=762;
public static final int TOK_ANALYZE=763;
public static final int TOK_ARCHIVE=764;
public static final int TOK_BIGINT=765;
public static final int TOK_BINARY=766;
public static final int TOK_BLOCKING=767;
public static final int TOK_BOOLEAN=768;
public static final int TOK_CACHE_METADATA=769;
public static final int TOK_CASCADE=770;
public static final int TOK_CHAR=771;
public static final int TOK_CHARSETLITERAL=772;
public static final int TOK_CHECK_CONSTRAINT=773;
public static final int TOK_CLUSTERBY=774;
public static final int TOK_COLTYPELIST=775;
public static final int TOK_COL_NAME=776;
public static final int TOK_COMMIT=777;
public static final int TOK_CONSTRAINT_NAME=778;
public static final int TOK_CREATEDATABASE=779;
public static final int TOK_CREATEFUNCTION=780;
public static final int TOK_CREATEMACRO=781;
public static final int TOK_CREATEROLE=782;
public static final int TOK_CREATETABLE=783;
public static final int TOK_CREATEVIEW=784;
public static final int TOK_CREATE_MAPPING=785;
public static final int TOK_CREATE_MATERIALIZED_VIEW=786;
public static final int TOK_CREATE_POOL=787;
public static final int TOK_CREATE_RP=788;
public static final int TOK_CREATE_TRIGGER=789;
public static final int TOK_CROSSJOIN=790;
public static final int TOK_CTE=791;
public static final int TOK_CUBE_GROUPBY=792;
public static final int TOK_DATABASECOMMENT=793;
public static final int TOK_DATABASELOCATION=794;
public static final int TOK_DATABASEPROPERTIES=795;
public static final int TOK_DATE=796;
public static final int TOK_DATELITERAL=797;
public static final int TOK_DATETIME=798;
public static final int TOK_DBNAME=799;
public static final int TOK_DBPROPLIST=800;
public static final int TOK_DB_TYPE=801;
public static final int TOK_DECIMAL=802;
public static final int TOK_DEFAULT_POOL=803;
public static final int TOK_DEFAULT_VALUE=804;
public static final int TOK_DELETE=805;
public static final int TOK_DELETE_FROM=806;
public static final int TOK_DESCDATABASE=807;
public static final int TOK_DESCFUNCTION=808;
public static final int TOK_DESCTABLE=809;
public static final int TOK_DESTINATION=810;
public static final int TOK_DETAIL=811;
public static final int TOK_DIR=812;
public static final int TOK_DISABLE=813;
public static final int TOK_DISTRIBUTEBY=814;
public static final int TOK_DOUBLE=815;
public static final int TOK_DROPDATABASE=816;
public static final int TOK_DROPFUNCTION=817;
public static final int TOK_DROPMACRO=818;
public static final int TOK_DROPROLE=819;
public static final int TOK_DROPTABLE=820;
public static final int TOK_DROPVIEW=821;
public static final int TOK_DROP_MAPPING=822;
public static final int TOK_DROP_MATERIALIZED_VIEW=823;
public static final int TOK_DROP_POOL=824;
public static final int TOK_DROP_RP=825;
public static final int TOK_DROP_TRIGGER=826;
public static final int TOK_ENABLE=827;
public static final int TOK_EXCEPTALL=828;
public static final int TOK_EXCEPTDISTINCT=829;
public static final int TOK_EXPLAIN=830;
public static final int TOK_EXPLAIN_SQ_REWRITE=831;
public static final int TOK_EXPLIST=832;
public static final int TOK_EXPORT=833;
public static final int TOK_EXPRESSION=834;
public static final int TOK_FALSE=835;
public static final int TOK_FILE=836;
public static final int TOK_FILEFORMAT_GENERIC=837;
public static final int TOK_FLOAT=838;
public static final int TOK_FOREIGN_KEY=839;
public static final int TOK_FROM=840;
public static final int TOK_FULLOUTERJOIN=841;
public static final int TOK_FUNCTION=842;
public static final int TOK_FUNCTIONDI=843;
public static final int TOK_FUNCTIONSTAR=844;
public static final int TOK_GRANT=845;
public static final int TOK_GRANT_OPTION_FOR=846;
public static final int TOK_GRANT_ROLE=847;
public static final int TOK_GRANT_WITH_ADMIN_OPTION=848;
public static final int TOK_GRANT_WITH_OPTION=849;
public static final int TOK_GROUP=850;
public static final int TOK_GROUPBY=851;
public static final int TOK_GROUPING_SETS=852;
public static final int TOK_GROUPING_SETS_EXPRESSION=853;
public static final int TOK_HAVING=854;
public static final int TOK_IFEXISTS=855;
public static final int TOK_IFNOTEXISTS=856;
public static final int TOK_IMPORT=857;
public static final int TOK_INPUTFORMAT=858;
public static final int TOK_INSERT=859;
public static final int TOK_INSERT_INTO=860;
public static final int TOK_INT=861;
public static final int TOK_INTERSECTALL=862;
public static final int TOK_INTERSECTDISTINCT=863;
public static final int TOK_INTERVAL_DAY_LITERAL=864;
public static final int TOK_INTERVAL_DAY_TIME=865;
public static final int TOK_INTERVAL_DAY_TIME_LITERAL=866;
public static final int TOK_INTERVAL_HOUR_LITERAL=867;
public static final int TOK_INTERVAL_MINUTE_LITERAL=868;
public static final int TOK_INTERVAL_MONTH_LITERAL=869;
public static final int TOK_INTERVAL_SECOND_LITERAL=870;
public static final int TOK_INTERVAL_YEAR_LITERAL=871;
public static final int TOK_INTERVAL_YEAR_MONTH=872;
public static final int TOK_INTERVAL_YEAR_MONTH_LITERAL=873;
public static final int TOK_ISOLATION_LEVEL=874;
public static final int TOK_ISOLATION_SNAPSHOT=875;
public static final int TOK_JAR=876;
public static final int TOK_JOIN=877;
public static final int TOK_KILL_QUERY=878;
public static final int TOK_LATERAL_VIEW=879;
public static final int TOK_LATERAL_VIEW_OUTER=880;
public static final int TOK_LEFTOUTERJOIN=881;
public static final int TOK_LEFTSEMIJOIN=882;
public static final int TOK_LENGTH=883;
public static final int TOK_LIKERP=884;
public static final int TOK_LIKETABLE=885;
public static final int TOK_LIMIT=886;
public static final int TOK_LIST=887;
public static final int TOK_LOAD=888;
public static final int TOK_LOCKDB=889;
public static final int TOK_LOCKTABLE=890;
public static final int TOK_MAP=891;
public static final int TOK_MATCHED=892;
public static final int TOK_MERGE=893;
public static final int TOK_METADATA=894;
public static final int TOK_MSCK=895;
public static final int TOK_NORELY=896;
public static final int TOK_NOT_CLUSTERED=897;
public static final int TOK_NOT_MATCHED=898;
public static final int TOK_NOT_NULL=899;
public static final int TOK_NOT_SORTED=900;
public static final int TOK_NOVALIDATE=901;
public static final int TOK_NO_DROP=902;
public static final int TOK_NULL=903;
public static final int TOK_NULLS_FIRST=904;
public static final int TOK_NULLS_LAST=905;
public static final int TOK_OFFLINE=906;
public static final int TOK_OFFSET=907;
public static final int TOK_ONLY=908;
public static final int TOK_OPERATOR=909;
public static final int TOK_OP_ADD=910;
public static final int TOK_OP_AND=911;
public static final int TOK_OP_BITAND=912;
public static final int TOK_OP_BITNOT=913;
public static final int TOK_OP_BITOR=914;
public static final int TOK_OP_BITXOR=915;
public static final int TOK_OP_DIV=916;
public static final int TOK_OP_EQ=917;
public static final int TOK_OP_GE=918;
public static final int TOK_OP_GT=919;
public static final int TOK_OP_LE=920;
public static final int TOK_OP_LIKE=921;
public static final int TOK_OP_LT=922;
public static final int TOK_OP_MOD=923;
public static final int TOK_OP_MUL=924;
public static final int TOK_OP_NE=925;
public static final int TOK_OP_NOT=926;
public static final int TOK_OP_OR=927;
public static final int TOK_OP_SUB=928;
public static final int TOK_ORDERBY=929;
public static final int TOK_ORREPLACE=930;
public static final int TOK_PARTITIONINGSPEC=931;
public static final int TOK_PARTITIONLOCATION=932;
public static final int TOK_PARTSPEC=933;
public static final int TOK_PARTVAL=934;
public static final int TOK_PATH=935;
public static final int TOK_PERCENT=936;
public static final int TOK_PRIMARY_KEY=937;
public static final int TOK_PRINCIPAL_NAME=938;
public static final int TOK_PRIVILEGE=939;
public static final int TOK_PRIVILEGE_LIST=940;
public static final int TOK_PRIV_ALL=941;
public static final int TOK_PRIV_ALTER_DATA=942;
public static final int TOK_PRIV_ALTER_METADATA=943;
public static final int TOK_PRIV_CREATE=944;
public static final int TOK_PRIV_DELETE=945;
public static final int TOK_PRIV_DROP=946;
public static final int TOK_PRIV_INSERT=947;
public static final int TOK_PRIV_LOCK=948;
public static final int TOK_PRIV_OBJECT=949;
public static final int TOK_PRIV_OBJECT_COL=950;
public static final int TOK_PRIV_SELECT=951;
public static final int TOK_PRIV_SHOW_DATABASE=952;
public static final int TOK_PTBLFUNCTION=953;
public static final int TOK_QUERY=954;
public static final int TOK_QUERY_PARALLELISM=955;
public static final int TOK_READONLY=956;
public static final int TOK_RECORDREADER=957;
public static final int TOK_RECORDWRITER=958;
public static final int TOK_RELOADFUNCTION=959;
public static final int TOK_RELY=960;
public static final int TOK_RENAME=961;
public static final int TOK_REPLACE=962;
public static final int TOK_REPLICATION=963;
public static final int TOK_REPL_CONFIG=964;
public static final int TOK_REPL_CONFIG_LIST=965;
public static final int TOK_REPL_DUMP=966;
public static final int TOK_REPL_LOAD=967;
public static final int TOK_REPL_STATUS=968;
public static final int TOK_RESOURCE_ALL=969;
public static final int TOK_RESOURCE_LIST=970;
public static final int TOK_RESOURCE_URI=971;
public static final int TOK_RESTRICT=972;
public static final int TOK_REVOKE=973;
public static final int TOK_REVOKE_ROLE=974;
public static final int TOK_REWRITE_DISABLED=975;
public static final int TOK_REWRITE_ENABLED=976;
public static final int TOK_RIGHTOUTERJOIN=977;
public static final int TOK_ROLE=978;
public static final int TOK_ROLLBACK=979;
public static final int TOK_ROLLUP_GROUPBY=980;
public static final int TOK_ROWCOUNT=981;
public static final int TOK_SCHEDULING_POLICY=982;
public static final int TOK_SELECT=983;
public static final int TOK_SELECTDI=984;
public static final int TOK_SELEXPR=985;
public static final int TOK_SERDE=986;
public static final int TOK_SERDENAME=987;
public static final int TOK_SERDEPROPS=988;
public static final int TOK_SERVER_TYPE=989;
public static final int TOK_SETCOLREF=990;
public static final int TOK_SET_AUTOCOMMIT=991;
public static final int TOK_SET_COLUMNS_CLAUSE=992;
public static final int TOK_SHOWCOLUMNS=993;
public static final int TOK_SHOWCONF=994;
public static final int TOK_SHOWDATABASES=995;
public static final int TOK_SHOWDBLOCKS=996;
public static final int TOK_SHOWFUNCTIONS=997;
public static final int TOK_SHOWLOCKS=998;
public static final int TOK_SHOWMATERIALIZEDVIEWS=999;
public static final int TOK_SHOWPARTITIONS=1000;
public static final int TOK_SHOWTABLES=1001;
public static final int TOK_SHOWVIEWS=1002;
public static final int TOK_SHOW_COMPACTIONS=1003;
public static final int TOK_SHOW_CREATEDATABASE=1004;
public static final int TOK_SHOW_CREATETABLE=1005;
public static final int TOK_SHOW_GRANT=1006;
public static final int TOK_SHOW_ROLES=1007;
public static final int TOK_SHOW_ROLE_GRANT=1008;
public static final int TOK_SHOW_ROLE_PRINCIPALS=1009;
public static final int TOK_SHOW_RP=1010;
public static final int TOK_SHOW_SET_ROLE=1011;
public static final int TOK_SHOW_TABLESTATUS=1012;
public static final int TOK_SHOW_TBLPROPERTIES=1013;
public static final int TOK_SHOW_TRANSACTIONS=1014;
public static final int TOK_SKEWED_LOCATIONS=1015;
public static final int TOK_SKEWED_LOCATION_LIST=1016;
public static final int TOK_SKEWED_LOCATION_MAP=1017;
public static final int TOK_SMALLINT=1018;
public static final int TOK_SORTBY=1019;
public static final int TOK_START_TRANSACTION=1020;
public static final int TOK_STORAGEHANDLER=1021;
public static final int TOK_STOREDASDIRS=1022;
public static final int TOK_STRING=1023;
public static final int TOK_STRINGLITERALSEQUENCE=1024;
public static final int TOK_STRUCT=1025;
public static final int TOK_SUBQUERY=1026;
public static final int TOK_SUBQUERY_EXPR=1027;
public static final int TOK_SUBQUERY_OP=1028;
public static final int TOK_SUBQUERY_OP_NOTEXISTS=1029;
public static final int TOK_SUBQUERY_OP_NOTIN=1030;
public static final int TOK_SUMMARY=1031;
public static final int TOK_SWITCHDATABASE=1032;
public static final int TOK_TAB=1033;
public static final int TOK_TABALIAS=1034;
public static final int TOK_TABCOL=1035;
public static final int TOK_TABCOLLIST=1036;
public static final int TOK_TABCOLNAME=1037;
public static final int TOK_TABCOLVALUE=1038;
public static final int TOK_TABCOLVALUES=1039;
public static final int TOK_TABCOLVALUE_PAIR=1040;
public static final int TOK_TABLEBUCKETSAMPLE=1041;
public static final int TOK_TABLECOMMENT=1042;
public static final int TOK_TABLEFILEFORMAT=1043;
public static final int TOK_TABLELOCATION=1044;
public static final int TOK_TABLEPARTCOLS=1045;
public static final int TOK_TABLEPROPERTIES=1046;
public static final int TOK_TABLEPROPERTY=1047;
public static final int TOK_TABLEPROPLIST=1048;
public static final int TOK_TABLEROWFORMAT=1049;
public static final int TOK_TABLEROWFORMATCOLLITEMS=1050;
public static final int TOK_TABLEROWFORMATFIELD=1051;
public static final int TOK_TABLEROWFORMATLINES=1052;
public static final int TOK_TABLEROWFORMATMAPKEYS=1053;
public static final int TOK_TABLEROWFORMATNULL=1054;
public static final int TOK_TABLESERIALIZER=1055;
public static final int TOK_TABLESKEWED=1056;
public static final int TOK_TABLESPLITSAMPLE=1057;
public static final int TOK_TABLE_OR_COL=1058;
public static final int TOK_TABLE_PARTITION=1059;
public static final int TOK_TABLE_TYPE=1060;
public static final int TOK_TABNAME=1061;
public static final int TOK_TABREF=1062;
public static final int TOK_TABSORTCOLNAMEASC=1063;
public static final int TOK_TABSORTCOLNAMEDESC=1064;
public static final int TOK_TABSRC=1065;
public static final int TOK_TABTYPE=1066;
public static final int TOK_TEMPORARY=1067;
public static final int TOK_TIMESTAMP=1068;
public static final int TOK_TIMESTAMPLITERAL=1069;
public static final int TOK_TIMESTAMPLOCALTZ=1070;
public static final int TOK_TIMESTAMPLOCALTZLITERAL=1071;
public static final int TOK_TINYINT=1072;
public static final int TOK_TMP_FILE=1073;
public static final int TOK_TO=1074;
public static final int TOK_TRANSFORM=1075;
public static final int TOK_TRIGGER_EXPRESSION=1076;
public static final int TOK_TRUE=1077;
public static final int TOK_TRUNCATETABLE=1078;
public static final int TOK_TXN_ACCESS_MODE=1079;
public static final int TOK_TXN_READ_ONLY=1080;
public static final int TOK_TXN_READ_WRITE=1081;
public static final int TOK_UNIONALL=1082;
public static final int TOK_UNIONDISTINCT=1083;
public static final int TOK_UNIONTYPE=1084;
public static final int TOK_UNIQUE=1085;
public static final int TOK_UNIQUEJOIN=1086;
public static final int TOK_UNLOCKDB=1087;
public static final int TOK_UNLOCKTABLE=1088;
public static final int TOK_UNMANAGED=1089;
public static final int TOK_UPDATE=1090;
public static final int TOK_UPDATE_TABLE=1091;
public static final int TOK_URI_TYPE=1092;
public static final int TOK_USER=1093;
public static final int TOK_USERSCRIPTCOLNAMES=1094;
public static final int TOK_USERSCRIPTCOLSCHEMA=1095;
public static final int TOK_VALIDATE=1096;
public static final int TOK_VARCHAR=1097;
public static final int TOK_VIEWPARTCOLS=1098;
public static final int TOK_WHERE=1099;
public static final int TOK_WINDOWDEF=1100;
public static final int TOK_WINDOWRANGE=1101;
public static final int TOK_WINDOWSPEC=1102;
public static final int TOK_WINDOWVALUES=1103;
// delegates
public Parser[] getDelegates() {
return new Parser[] {};
}
// delegators
public HiveParser gHiveParser;
public HiveParser gParent;
public HiveParser_FromClauseParser(TokenStream input, HiveParser gHiveParser) {
this(input, new RecognizerSharedState(), gHiveParser);
}
public HiveParser_FromClauseParser(TokenStream input, RecognizerSharedState state, HiveParser gHiveParser) {
super(input, state);
this.gHiveParser = gHiveParser;
gParent = gHiveParser;
}
protected TreeAdaptor adaptor = new CommonTreeAdaptor();
public void setTreeAdaptor(TreeAdaptor adaptor) {
this.adaptor = adaptor;
}
public TreeAdaptor getTreeAdaptor() {
return adaptor;
}
@Override public String[] getTokenNames() { return HiveParser.tokenNames; }
@Override public String getGrammarFileName() { return "FromClauseParser.g"; }
@Override
public Object recoverFromMismatchedSet(IntStream input,
RecognitionException re, BitSet follow) throws RecognitionException {
throw re;
}
@Override
public void displayRecognitionError(String[] tokenNames,
RecognitionException e) {
gParent.errors.add(new ParseError(gParent, e, tokenNames));
}
public static class tableAllColumns_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "tableAllColumns"
// FromClauseParser.g:48:1: tableAllColumns : ( STAR -> ^( TOK_ALLCOLREF ) | tableName DOT STAR -> ^( TOK_ALLCOLREF tableName ) );
public final HiveParser_FromClauseParser.tableAllColumns_return tableAllColumns() throws RecognitionException {
HiveParser_FromClauseParser.tableAllColumns_return retval = new HiveParser_FromClauseParser.tableAllColumns_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token STAR1=null;
Token DOT3=null;
Token STAR4=null;
ParserRuleReturnScope tableName2 =null;
ASTNode STAR1_tree=null;
ASTNode DOT3_tree=null;
ASTNode STAR4_tree=null;
RewriteRuleTokenStream stream_STAR=new RewriteRuleTokenStream(adaptor,"token STAR");
RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
RewriteRuleSubtreeStream stream_tableName=new RewriteRuleSubtreeStream(adaptor,"rule tableName");
try {
// FromClauseParser.g:49:5: ( STAR -> ^( TOK_ALLCOLREF ) | tableName DOT STAR -> ^( TOK_ALLCOLREF tableName ) )
int alt1=2;
int LA1_0 = input.LA(1);
if ( (LA1_0==STAR) ) {
alt1=1;
}
else if ( (LA1_0==Identifier||(LA1_0 >= KW_ABORT && LA1_0 <= KW_AFTER)||LA1_0==KW_ALLOC_FRACTION||LA1_0==KW_ANALYZE||LA1_0==KW_ARCHIVE||LA1_0==KW_ASC||(LA1_0 >= KW_AUTOCOMMIT && LA1_0 <= KW_BEFORE)||(LA1_0 >= KW_BUCKET && LA1_0 <= KW_BUCKETS)||(LA1_0 >= KW_CACHE && LA1_0 <= KW_CASCADE)||LA1_0==KW_CHANGE||(LA1_0 >= KW_CHECK && LA1_0 <= KW_COLLECTION)||(LA1_0 >= KW_COLUMNS && LA1_0 <= KW_COMMENT)||(LA1_0 >= KW_COMPACT && LA1_0 <= KW_CONCATENATE)||LA1_0==KW_CONTINUE||LA1_0==KW_DATA||LA1_0==KW_DATABASES||(LA1_0 >= KW_DATETIME && LA1_0 <= KW_DBPROPERTIES)||(LA1_0 >= KW_DEFAULT && LA1_0 <= KW_DEFINED)||(LA1_0 >= KW_DELIMITED && LA1_0 <= KW_DESC)||(LA1_0 >= KW_DETAIL && LA1_0 <= KW_DISABLE)||(LA1_0 >= KW_DISTRIBUTE && LA1_0 <= KW_DO)||LA1_0==KW_DOW||(LA1_0 >= KW_DUMP && LA1_0 <= KW_ELEM_TYPE)||LA1_0==KW_ENABLE||(LA1_0 >= KW_ENFORCED && LA1_0 <= KW_ESCAPED)||LA1_0==KW_EXCLUSIVE||(LA1_0 >= KW_EXPLAIN && LA1_0 <= KW_EXPRESSION)||(LA1_0 >= KW_FIELDS && LA1_0 <= KW_FIRST)||(LA1_0 >= KW_FORMAT && LA1_0 <= KW_FORMATTED)||LA1_0==KW_FUNCTIONS||(LA1_0 >= KW_HOUR && LA1_0 <= KW_IDXPROPERTIES)||(LA1_0 >= KW_INDEX && LA1_0 <= KW_INDEXES)||(LA1_0 >= KW_INPATH && LA1_0 <= KW_INPUTFORMAT)||(LA1_0 >= KW_ISOLATION && LA1_0 <= KW_JAR)||(LA1_0 >= KW_KEY && LA1_0 <= KW_LAST)||LA1_0==KW_LEVEL||(LA1_0 >= KW_LIMIT && LA1_0 <= KW_LOAD)||(LA1_0 >= KW_LOCATION && LA1_0 <= KW_LONG)||LA1_0==KW_MANAGEMENT||(LA1_0 >= KW_MAPJOIN && LA1_0 <= KW_MATERIALIZED)||LA1_0==KW_METADATA||(LA1_0 >= KW_MINUTE && LA1_0 <= KW_MONTH)||(LA1_0 >= KW_MOVE && LA1_0 <= KW_MSCK)||(LA1_0 >= KW_NORELY && LA1_0 <= KW_NOSCAN)||LA1_0==KW_NOVALIDATE||LA1_0==KW_NULLS||LA1_0==KW_OFFSET||(LA1_0 >= KW_OPERATOR && LA1_0 <= KW_OPTION)||(LA1_0 >= KW_OUTPUTDRIVER && LA1_0 <= KW_OUTPUTFORMAT)||(LA1_0 >= KW_OVERWRITE && LA1_0 <= KW_OWNER)||(LA1_0 >= KW_PARTITIONED && LA1_0 <= KW_PATH)||(LA1_0 >= KW_PLAN && LA1_0 <= KW_POOL)||LA1_0==KW_PRINCIPALS||(LA1_0 >= KW_PURGE && LA1_0 <= KW_QUERY_PARALLELISM)||LA1_0==KW_READ||(LA1_0 >= KW_REBUILD && LA1_0 <= KW_RECORDWRITER)||(LA1_0 >= KW_RELOAD && LA1_0 <= KW_RESTRICT)||LA1_0==KW_REWRITE||(LA1_0 >= KW_ROLE && LA1_0 <= KW_ROLES)||(LA1_0 >= KW_SCHEDULING_POLICY && LA1_0 <= KW_SECOND)||(LA1_0 >= KW_SEMI && LA1_0 <= KW_SERVER)||(LA1_0 >= KW_SETS && LA1_0 <= KW_SKEWED)||(LA1_0 >= KW_SNAPSHOT && LA1_0 <= KW_SSL)||(LA1_0 >= KW_STATISTICS && LA1_0 <= KW_SUMMARY)||LA1_0==KW_TABLES||(LA1_0 >= KW_TBLPROPERTIES && LA1_0 <= KW_TERMINATED)||LA1_0==KW_TINYINT||(LA1_0 >= KW_TOUCH && LA1_0 <= KW_TRANSACTIONS)||LA1_0==KW_UNARCHIVE||LA1_0==KW_UNDO||LA1_0==KW_UNIONTYPE||(LA1_0 >= KW_UNLOCK && LA1_0 <= KW_UNSIGNED)||(LA1_0 >= KW_URI && LA1_0 <= KW_USE)||(LA1_0 >= KW_UTC && LA1_0 <= KW_VALIDATE)||LA1_0==KW_VALUE_TYPE||(LA1_0 >= KW_VECTORIZATION && LA1_0 <= KW_WEEK)||LA1_0==KW_WHILE||(LA1_0 >= KW_WORK && LA1_0 <= KW_ZONE)||LA1_0==KW_BATCH||LA1_0==KW_DAYOFWEEK||LA1_0==KW_HOLD_DDLTIME||LA1_0==KW_IGNORE||LA1_0==KW_NO_DROP||LA1_0==KW_OFFLINE||LA1_0==KW_PROTECTION||LA1_0==KW_READONLY||LA1_0==KW_TIMESTAMPTZ) ) {
alt1=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 1, 0, input);
throw nvae;
}
switch (alt1) {
case 1 :
// FromClauseParser.g:49:7: STAR
{
STAR1=(Token)match(input,STAR,FOLLOW_STAR_in_tableAllColumns57); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_STAR.add(STAR1);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 50:9: -> ^( TOK_ALLCOLREF )
{
// FromClauseParser.g:50:12: ^( TOK_ALLCOLREF )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_ALLCOLREF, "TOK_ALLCOLREF"), root_1);
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
case 2 :
// FromClauseParser.g:51:7: tableName DOT STAR
{
pushFollow(FOLLOW_tableName_in_tableAllColumns79);
tableName2=tableName();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_tableName.add(tableName2.getTree());
DOT3=(Token)match(input,DOT,FOLLOW_DOT_in_tableAllColumns81); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DOT.add(DOT3);
STAR4=(Token)match(input,STAR,FOLLOW_STAR_in_tableAllColumns83); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_STAR.add(STAR4);
// AST REWRITE
// elements: tableName
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 52:9: -> ^( TOK_ALLCOLREF tableName )
{
// FromClauseParser.g:52:12: ^( TOK_ALLCOLREF tableName )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_ALLCOLREF, "TOK_ALLCOLREF"), root_1);
adaptor.addChild(root_1, stream_tableName.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "tableAllColumns"
public static class tableOrColumn_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "tableOrColumn"
// FromClauseParser.g:56:1: tableOrColumn : identifier -> ^( TOK_TABLE_OR_COL identifier ) ;
public final HiveParser_FromClauseParser.tableOrColumn_return tableOrColumn() throws RecognitionException {
HiveParser_FromClauseParser.tableOrColumn_return retval = new HiveParser_FromClauseParser.tableOrColumn_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
ParserRuleReturnScope identifier5 =null;
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
gParent.pushMsg("table or column identifier", state);
try {
// FromClauseParser.g:59:5: ( identifier -> ^( TOK_TABLE_OR_COL identifier ) )
// FromClauseParser.g:60:5: identifier
{
pushFollow(FOLLOW_identifier_in_tableOrColumn131);
identifier5=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier5.getTree());
// AST REWRITE
// elements: identifier
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 60:16: -> ^( TOK_TABLE_OR_COL identifier )
{
// FromClauseParser.g:60:19: ^( TOK_TABLE_OR_COL identifier )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_TABLE_OR_COL, "TOK_TABLE_OR_COL"), root_1);
adaptor.addChild(root_1, stream_identifier.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "tableOrColumn"
public static class expressionList_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "expressionList"
// FromClauseParser.g:63:1: expressionList : expression ( COMMA expression )* -> ^( TOK_EXPLIST ( expression )+ ) ;
public final HiveParser_FromClauseParser.expressionList_return expressionList() throws RecognitionException {
HiveParser_FromClauseParser.expressionList_return retval = new HiveParser_FromClauseParser.expressionList_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token COMMA7=null;
ParserRuleReturnScope expression6 =null;
ParserRuleReturnScope expression8 =null;
ASTNode COMMA7_tree=null;
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
gParent.pushMsg("expression list", state);
try {
// FromClauseParser.g:66:5: ( expression ( COMMA expression )* -> ^( TOK_EXPLIST ( expression )+ ) )
// FromClauseParser.g:67:5: expression ( COMMA expression )*
{
pushFollow(FOLLOW_expression_in_expressionList170);
expression6=gHiveParser.expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression6.getTree());
// FromClauseParser.g:67:16: ( COMMA expression )*
loop2:
while (true) {
int alt2=2;
int LA2_0 = input.LA(1);
if ( (LA2_0==COMMA) ) {
alt2=1;
}
switch (alt2) {
case 1 :
// FromClauseParser.g:67:17: COMMA expression
{
COMMA7=(Token)match(input,COMMA,FOLLOW_COMMA_in_expressionList173); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA7);
pushFollow(FOLLOW_expression_in_expressionList175);
expression8=gHiveParser.expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression8.getTree());
}
break;
default :
break loop2;
}
}
// AST REWRITE
// elements: expression
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 67:36: -> ^( TOK_EXPLIST ( expression )+ )
{
// FromClauseParser.g:67:39: ^( TOK_EXPLIST ( expression )+ )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_EXPLIST, "TOK_EXPLIST"), root_1);
if ( !(stream_expression.hasNext()) ) {
throw new RewriteEarlyExitException();
}
while ( stream_expression.hasNext() ) {
adaptor.addChild(root_1, stream_expression.nextTree());
}
stream_expression.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "expressionList"
public static class aliasList_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "aliasList"
// FromClauseParser.g:70:1: aliasList : identifier ( COMMA identifier )* -> ^( TOK_ALIASLIST ( identifier )+ ) ;
public final HiveParser_FromClauseParser.aliasList_return aliasList() throws RecognitionException {
HiveParser_FromClauseParser.aliasList_return retval = new HiveParser_FromClauseParser.aliasList_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token COMMA10=null;
ParserRuleReturnScope identifier9 =null;
ParserRuleReturnScope identifier11 =null;
ASTNode COMMA10_tree=null;
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
gParent.pushMsg("alias list", state);
try {
// FromClauseParser.g:73:5: ( identifier ( COMMA identifier )* -> ^( TOK_ALIASLIST ( identifier )+ ) )
// FromClauseParser.g:74:5: identifier ( COMMA identifier )*
{
pushFollow(FOLLOW_identifier_in_aliasList217);
identifier9=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier9.getTree());
// FromClauseParser.g:74:16: ( COMMA identifier )*
loop3:
while (true) {
int alt3=2;
int LA3_0 = input.LA(1);
if ( (LA3_0==COMMA) ) {
int LA3_20 = input.LA(2);
if ( (LA3_20==Identifier||(LA3_20 >= KW_ABORT && LA3_20 <= KW_AFTER)||LA3_20==KW_ALLOC_FRACTION||LA3_20==KW_ANALYZE||LA3_20==KW_ARCHIVE||LA3_20==KW_ASC||(LA3_20 >= KW_AUTOCOMMIT && LA3_20 <= KW_BEFORE)||(LA3_20 >= KW_BUCKET && LA3_20 <= KW_BUCKETS)||(LA3_20 >= KW_CACHE && LA3_20 <= KW_CASCADE)||LA3_20==KW_CHANGE||(LA3_20 >= KW_CHECK && LA3_20 <= KW_COLLECTION)||(LA3_20 >= KW_COLUMNS && LA3_20 <= KW_COMMENT)||(LA3_20 >= KW_COMPACT && LA3_20 <= KW_CONCATENATE)||LA3_20==KW_CONTINUE||LA3_20==KW_DATA||LA3_20==KW_DATABASES||(LA3_20 >= KW_DATETIME && LA3_20 <= KW_DBPROPERTIES)||(LA3_20 >= KW_DEFAULT && LA3_20 <= KW_DEFINED)||(LA3_20 >= KW_DELIMITED && LA3_20 <= KW_DESC)||(LA3_20 >= KW_DETAIL && LA3_20 <= KW_DISABLE)||(LA3_20 >= KW_DISTRIBUTE && LA3_20 <= KW_DO)||LA3_20==KW_DOW||(LA3_20 >= KW_DUMP && LA3_20 <= KW_ELEM_TYPE)||LA3_20==KW_ENABLE||(LA3_20 >= KW_ENFORCED && LA3_20 <= KW_ESCAPED)||LA3_20==KW_EXCLUSIVE||(LA3_20 >= KW_EXPLAIN && LA3_20 <= KW_EXPRESSION)||(LA3_20 >= KW_FIELDS && LA3_20 <= KW_FIRST)||(LA3_20 >= KW_FORMAT && LA3_20 <= KW_FORMATTED)||LA3_20==KW_FUNCTIONS||(LA3_20 >= KW_HOUR && LA3_20 <= KW_IDXPROPERTIES)||(LA3_20 >= KW_INDEX && LA3_20 <= KW_INDEXES)||(LA3_20 >= KW_INPATH && LA3_20 <= KW_INPUTFORMAT)||(LA3_20 >= KW_ISOLATION && LA3_20 <= KW_JAR)||(LA3_20 >= KW_KEY && LA3_20 <= KW_LAST)||LA3_20==KW_LEVEL||(LA3_20 >= KW_LIMIT && LA3_20 <= KW_LOAD)||(LA3_20 >= KW_LOCATION && LA3_20 <= KW_LONG)||LA3_20==KW_MANAGEMENT||(LA3_20 >= KW_MAPJOIN && LA3_20 <= KW_MATERIALIZED)||LA3_20==KW_METADATA||(LA3_20 >= KW_MINUTE && LA3_20 <= KW_MONTH)||(LA3_20 >= KW_MOVE && LA3_20 <= KW_MSCK)||(LA3_20 >= KW_NORELY && LA3_20 <= KW_NOSCAN)||LA3_20==KW_NOVALIDATE||LA3_20==KW_NULLS||LA3_20==KW_OFFSET||(LA3_20 >= KW_OPERATOR && LA3_20 <= KW_OPTION)||(LA3_20 >= KW_OUTPUTDRIVER && LA3_20 <= KW_OUTPUTFORMAT)||(LA3_20 >= KW_OVERWRITE && LA3_20 <= KW_OWNER)||(LA3_20 >= KW_PARTITIONED && LA3_20 <= KW_PATH)||(LA3_20 >= KW_PLAN && LA3_20 <= KW_POOL)||LA3_20==KW_PRINCIPALS||(LA3_20 >= KW_PURGE && LA3_20 <= KW_QUERY_PARALLELISM)||LA3_20==KW_READ||(LA3_20 >= KW_REBUILD && LA3_20 <= KW_RECORDWRITER)||(LA3_20 >= KW_RELOAD && LA3_20 <= KW_RESTRICT)||LA3_20==KW_REWRITE||(LA3_20 >= KW_ROLE && LA3_20 <= KW_ROLES)||(LA3_20 >= KW_SCHEDULING_POLICY && LA3_20 <= KW_SECOND)||(LA3_20 >= KW_SEMI && LA3_20 <= KW_SERVER)||(LA3_20 >= KW_SETS && LA3_20 <= KW_SKEWED)||(LA3_20 >= KW_SNAPSHOT && LA3_20 <= KW_SSL)||(LA3_20 >= KW_STATISTICS && LA3_20 <= KW_SUMMARY)||LA3_20==KW_TABLES||(LA3_20 >= KW_TBLPROPERTIES && LA3_20 <= KW_TERMINATED)||LA3_20==KW_TINYINT||(LA3_20 >= KW_TOUCH && LA3_20 <= KW_TRANSACTIONS)||LA3_20==KW_UNARCHIVE||LA3_20==KW_UNDO||LA3_20==KW_UNIONTYPE||(LA3_20 >= KW_UNLOCK && LA3_20 <= KW_UNSIGNED)||(LA3_20 >= KW_URI && LA3_20 <= KW_USE)||(LA3_20 >= KW_UTC && LA3_20 <= KW_VALIDATE)||LA3_20==KW_VALUE_TYPE||(LA3_20 >= KW_VECTORIZATION && LA3_20 <= KW_WEEK)||LA3_20==KW_WHILE||(LA3_20 >= KW_WORK && LA3_20 <= KW_ZONE)||LA3_20==KW_BATCH||LA3_20==KW_DAYOFWEEK||LA3_20==KW_HOLD_DDLTIME||LA3_20==KW_IGNORE||LA3_20==KW_NO_DROP||LA3_20==KW_OFFLINE||LA3_20==KW_PROTECTION||LA3_20==KW_READONLY||LA3_20==KW_TIMESTAMPTZ) ) {
alt3=1;
}
}
switch (alt3) {
case 1 :
// FromClauseParser.g:74:17: COMMA identifier
{
COMMA10=(Token)match(input,COMMA,FOLLOW_COMMA_in_aliasList220); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA10);
pushFollow(FOLLOW_identifier_in_aliasList222);
identifier11=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier11.getTree());
}
break;
default :
break loop3;
}
}
// AST REWRITE
// elements: identifier
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 74:36: -> ^( TOK_ALIASLIST ( identifier )+ )
{
// FromClauseParser.g:74:39: ^( TOK_ALIASLIST ( identifier )+ )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_ALIASLIST, "TOK_ALIASLIST"), root_1);
if ( !(stream_identifier.hasNext()) ) {
throw new RewriteEarlyExitException();
}
while ( stream_identifier.hasNext() ) {
adaptor.addChild(root_1, stream_identifier.nextTree());
}
stream_identifier.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "aliasList"
public static class fromClause_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "fromClause"
// FromClauseParser.g:79:1: fromClause : KW_FROM fromSource -> ^( TOK_FROM fromSource ) ;
public final HiveParser_FromClauseParser.fromClause_return fromClause() throws RecognitionException {
HiveParser_FromClauseParser.fromClause_return retval = new HiveParser_FromClauseParser.fromClause_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token KW_FROM12=null;
ParserRuleReturnScope fromSource13 =null;
ASTNode KW_FROM12_tree=null;
RewriteRuleTokenStream stream_KW_FROM=new RewriteRuleTokenStream(adaptor,"token KW_FROM");
RewriteRuleSubtreeStream stream_fromSource=new RewriteRuleSubtreeStream(adaptor,"rule fromSource");
gParent.pushMsg("from clause", state);
try {
// FromClauseParser.g:82:5: ( KW_FROM fromSource -> ^( TOK_FROM fromSource ) )
// FromClauseParser.g:83:5: KW_FROM fromSource
{
KW_FROM12=(Token)match(input,KW_FROM,FOLLOW_KW_FROM_in_fromClause266); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_FROM.add(KW_FROM12);
pushFollow(FOLLOW_fromSource_in_fromClause268);
fromSource13=fromSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_fromSource.add(fromSource13.getTree());
// AST REWRITE
// elements: fromSource
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 83:24: -> ^( TOK_FROM fromSource )
{
// FromClauseParser.g:83:27: ^( TOK_FROM fromSource )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_FROM, "TOK_FROM"), root_1);
adaptor.addChild(root_1, stream_fromSource.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "fromClause"
public static class fromSource_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "fromSource"
// FromClauseParser.g:86:1: fromSource : ( uniqueJoinToken ^ uniqueJoinSource ( COMMA ! uniqueJoinSource )+ | joinSource );
public final HiveParser_FromClauseParser.fromSource_return fromSource() throws RecognitionException {
HiveParser_FromClauseParser.fromSource_return retval = new HiveParser_FromClauseParser.fromSource_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token COMMA16=null;
ParserRuleReturnScope uniqueJoinToken14 =null;
ParserRuleReturnScope uniqueJoinSource15 =null;
ParserRuleReturnScope uniqueJoinSource17 =null;
ParserRuleReturnScope joinSource18 =null;
ASTNode COMMA16_tree=null;
gParent.pushMsg("join source", state);
try {
// FromClauseParser.g:89:5: ( uniqueJoinToken ^ uniqueJoinSource ( COMMA ! uniqueJoinSource )+ | joinSource )
int alt5=2;
int LA5_0 = input.LA(1);
if ( (LA5_0==KW_UNIQUEJOIN) ) {
alt5=1;
}
else if ( (LA5_0==Identifier||(LA5_0 >= KW_ABORT && LA5_0 <= KW_AFTER)||LA5_0==KW_ALLOC_FRACTION||LA5_0==KW_ANALYZE||LA5_0==KW_ARCHIVE||LA5_0==KW_ASC||(LA5_0 >= KW_AUTOCOMMIT && LA5_0 <= KW_BEFORE)||(LA5_0 >= KW_BUCKET && LA5_0 <= KW_BUCKETS)||(LA5_0 >= KW_CACHE && LA5_0 <= KW_CASCADE)||LA5_0==KW_CHANGE||(LA5_0 >= KW_CHECK && LA5_0 <= KW_COLLECTION)||(LA5_0 >= KW_COLUMNS && LA5_0 <= KW_COMMENT)||(LA5_0 >= KW_COMPACT && LA5_0 <= KW_CONCATENATE)||LA5_0==KW_CONTINUE||LA5_0==KW_DATA||LA5_0==KW_DATABASES||(LA5_0 >= KW_DATETIME && LA5_0 <= KW_DBPROPERTIES)||(LA5_0 >= KW_DEFAULT && LA5_0 <= KW_DEFINED)||(LA5_0 >= KW_DELIMITED && LA5_0 <= KW_DESC)||(LA5_0 >= KW_DETAIL && LA5_0 <= KW_DISABLE)||(LA5_0 >= KW_DISTRIBUTE && LA5_0 <= KW_DO)||LA5_0==KW_DOW||(LA5_0 >= KW_DUMP && LA5_0 <= KW_ELEM_TYPE)||LA5_0==KW_ENABLE||(LA5_0 >= KW_ENFORCED && LA5_0 <= KW_ESCAPED)||LA5_0==KW_EXCLUSIVE||(LA5_0 >= KW_EXPLAIN && LA5_0 <= KW_EXPRESSION)||(LA5_0 >= KW_FIELDS && LA5_0 <= KW_FIRST)||(LA5_0 >= KW_FORMAT && LA5_0 <= KW_FORMATTED)||LA5_0==KW_FUNCTIONS||(LA5_0 >= KW_HOUR && LA5_0 <= KW_IDXPROPERTIES)||(LA5_0 >= KW_INDEX && LA5_0 <= KW_INDEXES)||(LA5_0 >= KW_INPATH && LA5_0 <= KW_INPUTFORMAT)||(LA5_0 >= KW_ISOLATION && LA5_0 <= KW_JAR)||(LA5_0 >= KW_KEY && LA5_0 <= KW_LAST)||LA5_0==KW_LEVEL||(LA5_0 >= KW_LIMIT && LA5_0 <= KW_LOAD)||(LA5_0 >= KW_LOCATION && LA5_0 <= KW_LONG)||LA5_0==KW_MANAGEMENT||(LA5_0 >= KW_MAPJOIN && LA5_0 <= KW_MATERIALIZED)||LA5_0==KW_METADATA||(LA5_0 >= KW_MINUTE && LA5_0 <= KW_MONTH)||(LA5_0 >= KW_MOVE && LA5_0 <= KW_MSCK)||(LA5_0 >= KW_NORELY && LA5_0 <= KW_NOSCAN)||LA5_0==KW_NOVALIDATE||LA5_0==KW_NULLS||LA5_0==KW_OFFSET||(LA5_0 >= KW_OPERATOR && LA5_0 <= KW_OPTION)||(LA5_0 >= KW_OUTPUTDRIVER && LA5_0 <= KW_OUTPUTFORMAT)||(LA5_0 >= KW_OVERWRITE && LA5_0 <= KW_OWNER)||(LA5_0 >= KW_PARTITIONED && LA5_0 <= KW_PATH)||(LA5_0 >= KW_PLAN && LA5_0 <= KW_POOL)||LA5_0==KW_PRINCIPALS||(LA5_0 >= KW_PURGE && LA5_0 <= KW_QUERY_PARALLELISM)||LA5_0==KW_READ||(LA5_0 >= KW_REBUILD && LA5_0 <= KW_RECORDWRITER)||(LA5_0 >= KW_RELOAD && LA5_0 <= KW_RESTRICT)||LA5_0==KW_REWRITE||(LA5_0 >= KW_ROLE && LA5_0 <= KW_ROLES)||(LA5_0 >= KW_SCHEDULING_POLICY && LA5_0 <= KW_SECOND)||(LA5_0 >= KW_SEMI && LA5_0 <= KW_SERVER)||(LA5_0 >= KW_SETS && LA5_0 <= KW_SKEWED)||(LA5_0 >= KW_SNAPSHOT && LA5_0 <= KW_SSL)||(LA5_0 >= KW_STATISTICS && LA5_0 <= KW_SUMMARY)||(LA5_0 >= KW_TABLE && LA5_0 <= KW_TABLES)||(LA5_0 >= KW_TBLPROPERTIES && LA5_0 <= KW_TERMINATED)||LA5_0==KW_TINYINT||(LA5_0 >= KW_TOUCH && LA5_0 <= KW_TRANSACTIONS)||LA5_0==KW_UNARCHIVE||LA5_0==KW_UNDO||LA5_0==KW_UNIONTYPE||(LA5_0 >= KW_UNLOCK && LA5_0 <= KW_UNSIGNED)||(LA5_0 >= KW_URI && LA5_0 <= KW_USE)||(LA5_0 >= KW_UTC && LA5_0 <= KW_VALIDATE)||LA5_0==KW_VALUE_TYPE||(LA5_0 >= KW_VECTORIZATION && LA5_0 <= KW_WEEK)||LA5_0==KW_WHILE||(LA5_0 >= KW_WORK && LA5_0 <= KW_ZONE)||LA5_0==LPAREN||LA5_0==KW_BATCH||LA5_0==KW_DAYOFWEEK||LA5_0==KW_HOLD_DDLTIME||LA5_0==KW_IGNORE||LA5_0==KW_NO_DROP||LA5_0==KW_OFFLINE||LA5_0==KW_PROTECTION||LA5_0==KW_READONLY||LA5_0==KW_TIMESTAMPTZ) ) {
alt5=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 5, 0, input);
throw nvae;
}
switch (alt5) {
case 1 :
// FromClauseParser.g:90:5: uniqueJoinToken ^ uniqueJoinSource ( COMMA ! uniqueJoinSource )+
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_uniqueJoinToken_in_fromSource307);
uniqueJoinToken14=uniqueJoinToken();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(uniqueJoinToken14.getTree(), root_0);
pushFollow(FOLLOW_uniqueJoinSource_in_fromSource310);
uniqueJoinSource15=uniqueJoinSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, uniqueJoinSource15.getTree());
// FromClauseParser.g:90:39: ( COMMA ! uniqueJoinSource )+
int cnt4=0;
loop4:
while (true) {
int alt4=2;
int LA4_0 = input.LA(1);
if ( (LA4_0==COMMA) ) {
alt4=1;
}
switch (alt4) {
case 1 :
// FromClauseParser.g:90:40: COMMA ! uniqueJoinSource
{
COMMA16=(Token)match(input,COMMA,FOLLOW_COMMA_in_fromSource313); if (state.failed) return retval;
pushFollow(FOLLOW_uniqueJoinSource_in_fromSource316);
uniqueJoinSource17=uniqueJoinSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, uniqueJoinSource17.getTree());
}
break;
default :
if ( cnt4 >= 1 ) break loop4;
if (state.backtracking>0) {state.failed=true; return retval;}
EarlyExitException eee = new EarlyExitException(4, input);
throw eee;
}
cnt4++;
}
}
break;
case 2 :
// FromClauseParser.g:92:5: joinSource
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_joinSource_in_fromSource330);
joinSource18=joinSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, joinSource18.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "fromSource"
public static class atomjoinSource_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "atomjoinSource"
// FromClauseParser.g:96:1: atomjoinSource : ( tableSource ( lateralView ^)* | virtualTableSource ( lateralView ^)* | ( LPAREN ( KW_WITH | KW_SELECT | KW_MAP | KW_REDUCE | KW_FROM ) )=> subQuerySource ( lateralView ^)* | ( LPAREN LPAREN atomSelectStatement RPAREN setOperator )=> subQuerySource ( lateralView ^)* | partitionedTableFunction ( lateralView ^)* | LPAREN ! joinSource RPAREN !);
public final HiveParser_FromClauseParser.atomjoinSource_return atomjoinSource() throws RecognitionException {
HiveParser_FromClauseParser.atomjoinSource_return retval = new HiveParser_FromClauseParser.atomjoinSource_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token LPAREN29=null;
Token RPAREN31=null;
ParserRuleReturnScope tableSource19 =null;
ParserRuleReturnScope lateralView20 =null;
ParserRuleReturnScope virtualTableSource21 =null;
ParserRuleReturnScope lateralView22 =null;
ParserRuleReturnScope subQuerySource23 =null;
ParserRuleReturnScope lateralView24 =null;
ParserRuleReturnScope subQuerySource25 =null;
ParserRuleReturnScope lateralView26 =null;
ParserRuleReturnScope partitionedTableFunction27 =null;
ParserRuleReturnScope lateralView28 =null;
ParserRuleReturnScope joinSource30 =null;
ASTNode LPAREN29_tree=null;
ASTNode RPAREN31_tree=null;
gParent.pushMsg("joinSource", state);
try {
// FromClauseParser.g:99:5: ( tableSource ( lateralView ^)* | virtualTableSource ( lateralView ^)* | ( LPAREN ( KW_WITH | KW_SELECT | KW_MAP | KW_REDUCE | KW_FROM ) )=> subQuerySource ( lateralView ^)* | ( LPAREN LPAREN atomSelectStatement RPAREN setOperator )=> subQuerySource ( lateralView ^)* | partitionedTableFunction ( lateralView ^)* | LPAREN ! joinSource RPAREN !)
int alt11=6;
alt11 = dfa11.predict(input);
switch (alt11) {
case 1 :
// FromClauseParser.g:99:8: tableSource ( lateralView ^)*
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_tableSource_in_atomjoinSource359);
tableSource19=tableSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, tableSource19.getTree());
// FromClauseParser.g:99:20: ( lateralView ^)*
loop6:
while (true) {
int alt6=2;
int LA6_0 = input.LA(1);
if ( (LA6_0==COMMA) ) {
int LA6_3 = input.LA(2);
if ( (LA6_3==KW_LATERAL) ) {
alt6=1;
}
}
else if ( (LA6_0==KW_LATERAL) ) {
alt6=1;
}
switch (alt6) {
case 1 :
// FromClauseParser.g:99:21: lateralView ^
{
pushFollow(FOLLOW_lateralView_in_atomjoinSource362);
lateralView20=lateralView();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(lateralView20.getTree(), root_0);
}
break;
default :
break loop6;
}
}
}
break;
case 2 :
// FromClauseParser.g:100:8: virtualTableSource ( lateralView ^)*
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_virtualTableSource_in_atomjoinSource374);
virtualTableSource21=virtualTableSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, virtualTableSource21.getTree());
// FromClauseParser.g:100:27: ( lateralView ^)*
loop7:
while (true) {
int alt7=2;
int LA7_0 = input.LA(1);
if ( (LA7_0==COMMA) ) {
int LA7_3 = input.LA(2);
if ( (LA7_3==KW_LATERAL) ) {
alt7=1;
}
}
else if ( (LA7_0==KW_LATERAL) ) {
alt7=1;
}
switch (alt7) {
case 1 :
// FromClauseParser.g:100:28: lateralView ^
{
pushFollow(FOLLOW_lateralView_in_atomjoinSource377);
lateralView22=lateralView();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(lateralView22.getTree(), root_0);
}
break;
default :
break loop7;
}
}
}
break;
case 3 :
// FromClauseParser.g:101:8: ( LPAREN ( KW_WITH | KW_SELECT | KW_MAP | KW_REDUCE | KW_FROM ) )=> subQuerySource ( lateralView ^)*
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_subQuerySource_in_atomjoinSource407);
subQuerySource23=subQuerySource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, subQuerySource23.getTree());
// FromClauseParser.g:101:80: ( lateralView ^)*
loop8:
while (true) {
int alt8=2;
int LA8_0 = input.LA(1);
if ( (LA8_0==COMMA) ) {
int LA8_3 = input.LA(2);
if ( (LA8_3==KW_LATERAL) ) {
alt8=1;
}
}
else if ( (LA8_0==KW_LATERAL) ) {
alt8=1;
}
switch (alt8) {
case 1 :
// FromClauseParser.g:101:81: lateralView ^
{
pushFollow(FOLLOW_lateralView_in_atomjoinSource410);
lateralView24=lateralView();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(lateralView24.getTree(), root_0);
}
break;
default :
break loop8;
}
}
}
break;
case 4 :
// FromClauseParser.g:102:8: ( LPAREN LPAREN atomSelectStatement RPAREN setOperator )=> subQuerySource ( lateralView ^)*
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_subQuerySource_in_atomjoinSource437);
subQuerySource25=subQuerySource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, subQuerySource25.getTree());
// FromClauseParser.g:102:82: ( lateralView ^)*
loop9:
while (true) {
int alt9=2;
int LA9_0 = input.LA(1);
if ( (LA9_0==COMMA) ) {
int LA9_3 = input.LA(2);
if ( (LA9_3==KW_LATERAL) ) {
alt9=1;
}
}
else if ( (LA9_0==KW_LATERAL) ) {
alt9=1;
}
switch (alt9) {
case 1 :
// FromClauseParser.g:102:83: lateralView ^
{
pushFollow(FOLLOW_lateralView_in_atomjoinSource440);
lateralView26=lateralView();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(lateralView26.getTree(), root_0);
}
break;
default :
break loop9;
}
}
}
break;
case 5 :
// FromClauseParser.g:103:8: partitionedTableFunction ( lateralView ^)*
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_partitionedTableFunction_in_atomjoinSource452);
partitionedTableFunction27=partitionedTableFunction();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, partitionedTableFunction27.getTree());
// FromClauseParser.g:103:33: ( lateralView ^)*
loop10:
while (true) {
int alt10=2;
int LA10_0 = input.LA(1);
if ( (LA10_0==COMMA) ) {
int LA10_3 = input.LA(2);
if ( (LA10_3==KW_LATERAL) ) {
alt10=1;
}
}
else if ( (LA10_0==KW_LATERAL) ) {
alt10=1;
}
switch (alt10) {
case 1 :
// FromClauseParser.g:103:34: lateralView ^
{
pushFollow(FOLLOW_lateralView_in_atomjoinSource455);
lateralView28=lateralView();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(lateralView28.getTree(), root_0);
}
break;
default :
break loop10;
}
}
}
break;
case 6 :
// FromClauseParser.g:104:8: LPAREN ! joinSource RPAREN !
{
root_0 = (ASTNode)adaptor.nil();
LPAREN29=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_atomjoinSource467); if (state.failed) return retval;
pushFollow(FOLLOW_joinSource_in_atomjoinSource470);
joinSource30=joinSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, joinSource30.getTree());
RPAREN31=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_atomjoinSource472); if (state.failed) return retval;
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "atomjoinSource"
public static class joinSource_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "joinSource"
// FromClauseParser.g:107:1: joinSource : atomjoinSource ( joinToken ^ joinSourcePart ( KW_ON ! expression {...}?| KW_USING ! columnParenthesesList {...}?)? )* ;
public final HiveParser_FromClauseParser.joinSource_return joinSource() throws RecognitionException {
HiveParser_FromClauseParser.joinSource_return retval = new HiveParser_FromClauseParser.joinSource_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token KW_ON35=null;
Token KW_USING37=null;
ParserRuleReturnScope atomjoinSource32 =null;
ParserRuleReturnScope joinToken33 =null;
ParserRuleReturnScope joinSourcePart34 =null;
ParserRuleReturnScope expression36 =null;
ParserRuleReturnScope columnParenthesesList38 =null;
ASTNode KW_ON35_tree=null;
ASTNode KW_USING37_tree=null;
try {
// FromClauseParser.g:108:5: ( atomjoinSource ( joinToken ^ joinSourcePart ( KW_ON ! expression {...}?| KW_USING ! columnParenthesesList {...}?)? )* )
// FromClauseParser.g:109:5: atomjoinSource ( joinToken ^ joinSourcePart ( KW_ON ! expression {...}?| KW_USING ! columnParenthesesList {...}?)? )*
{
root_0 = (ASTNode)adaptor.nil();
pushFollow(FOLLOW_atomjoinSource_in_joinSource494);
atomjoinSource32=atomjoinSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, atomjoinSource32.getTree());
// FromClauseParser.g:109:20: ( joinToken ^ joinSourcePart ( KW_ON ! expression {...}?| KW_USING ! columnParenthesesList {...}?)? )*
loop13:
while (true) {
int alt13=2;
int LA13_0 = input.LA(1);
if ( (LA13_0==COMMA||LA13_0==KW_CROSS||LA13_0==KW_FULL||LA13_0==KW_INNER||LA13_0==KW_JOIN||LA13_0==KW_LEFT||LA13_0==KW_RIGHT) ) {
alt13=1;
}
switch (alt13) {
case 1 :
// FromClauseParser.g:109:21: joinToken ^ joinSourcePart ( KW_ON ! expression {...}?| KW_USING ! columnParenthesesList {...}?)?
{
pushFollow(FOLLOW_joinToken_in_joinSource497);
joinToken33=joinToken();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(joinToken33.getTree(), root_0);
pushFollow(FOLLOW_joinSourcePart_in_joinSource500);
joinSourcePart34=joinSourcePart();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, joinSourcePart34.getTree());
// FromClauseParser.g:109:47: ( KW_ON ! expression {...}?| KW_USING ! columnParenthesesList {...}?)?
int alt12=3;
int LA12_0 = input.LA(1);
if ( (LA12_0==KW_ON) ) {
alt12=1;
}
else if ( (LA12_0==KW_USING) ) {
alt12=2;
}
switch (alt12) {
case 1 :
// FromClauseParser.g:109:48: KW_ON ! expression {...}?
{
KW_ON35=(Token)match(input,KW_ON,FOLLOW_KW_ON_in_joinSource503); if (state.failed) return retval;
pushFollow(FOLLOW_expression_in_joinSource506);
expression36=gHiveParser.expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expression36.getTree());
if ( !(((joinToken33!=null?(joinToken33.start):null).getType() != COMMA)) ) {
if (state.backtracking>0) {state.failed=true; return retval;}
throw new FailedPredicateException(input, "joinSource", "$joinToken.start.getType() != COMMA");
}
}
break;
case 2 :
// FromClauseParser.g:109:107: KW_USING ! columnParenthesesList {...}?
{
KW_USING37=(Token)match(input,KW_USING,FOLLOW_KW_USING_in_joinSource512); if (state.failed) return retval;
pushFollow(FOLLOW_columnParenthesesList_in_joinSource515);
columnParenthesesList38=gHiveParser.columnParenthesesList();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, columnParenthesesList38.getTree());
if ( !(((joinToken33!=null?(joinToken33.start):null).getType() != COMMA)) ) {
if (state.backtracking>0) {state.failed=true; return retval;}
throw new FailedPredicateException(input, "joinSource", "$joinToken.start.getType() != COMMA");
}
}
break;
}
}
break;
default :
break loop13;
}
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "joinSource"
public static class joinSourcePart_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "joinSourcePart"
// FromClauseParser.g:112:1: joinSourcePart : ( tableSource | virtualTableSource | subQuerySource | partitionedTableFunction ) ( lateralView ^)* ;
public final HiveParser_FromClauseParser.joinSourcePart_return joinSourcePart() throws RecognitionException {
HiveParser_FromClauseParser.joinSourcePart_return retval = new HiveParser_FromClauseParser.joinSourcePart_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
ParserRuleReturnScope tableSource39 =null;
ParserRuleReturnScope virtualTableSource40 =null;
ParserRuleReturnScope subQuerySource41 =null;
ParserRuleReturnScope partitionedTableFunction42 =null;
ParserRuleReturnScope lateralView43 =null;
gParent.pushMsg("joinSourcePart", state);
try {
// FromClauseParser.g:115:5: ( ( tableSource | virtualTableSource | subQuerySource | partitionedTableFunction ) ( lateralView ^)* )
// FromClauseParser.g:116:5: ( tableSource | virtualTableSource | subQuerySource | partitionedTableFunction ) ( lateralView ^)*
{
root_0 = (ASTNode)adaptor.nil();
// FromClauseParser.g:116:5: ( tableSource | virtualTableSource | subQuerySource | partitionedTableFunction )
int alt14=4;
alt14 = dfa14.predict(input);
switch (alt14) {
case 1 :
// FromClauseParser.g:116:6: tableSource
{
pushFollow(FOLLOW_tableSource_in_joinSourcePart553);
tableSource39=tableSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, tableSource39.getTree());
}
break;
case 2 :
// FromClauseParser.g:116:20: virtualTableSource
{
pushFollow(FOLLOW_virtualTableSource_in_joinSourcePart557);
virtualTableSource40=virtualTableSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, virtualTableSource40.getTree());
}
break;
case 3 :
// FromClauseParser.g:116:41: subQuerySource
{
pushFollow(FOLLOW_subQuerySource_in_joinSourcePart561);
subQuerySource41=subQuerySource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, subQuerySource41.getTree());
}
break;
case 4 :
// FromClauseParser.g:116:58: partitionedTableFunction
{
pushFollow(FOLLOW_partitionedTableFunction_in_joinSourcePart565);
partitionedTableFunction42=partitionedTableFunction();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, partitionedTableFunction42.getTree());
}
break;
}
// FromClauseParser.g:116:84: ( lateralView ^)*
loop15:
while (true) {
int alt15=2;
int LA15_0 = input.LA(1);
if ( (LA15_0==COMMA) ) {
int LA15_24 = input.LA(2);
if ( (LA15_24==KW_LATERAL) ) {
alt15=1;
}
}
else if ( (LA15_0==KW_LATERAL) ) {
alt15=1;
}
switch (alt15) {
case 1 :
// FromClauseParser.g:116:85: lateralView ^
{
pushFollow(FOLLOW_lateralView_in_joinSourcePart569);
lateralView43=lateralView();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (ASTNode)adaptor.becomeRoot(lateralView43.getTree(), root_0);
}
break;
default :
break loop15;
}
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "joinSourcePart"
public static class uniqueJoinSource_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "uniqueJoinSource"
// FromClauseParser.g:119:1: uniqueJoinSource : ( KW_PRESERVE )? uniqueJoinTableSource uniqueJoinExpr ;
public final HiveParser_FromClauseParser.uniqueJoinSource_return uniqueJoinSource() throws RecognitionException {
HiveParser_FromClauseParser.uniqueJoinSource_return retval = new HiveParser_FromClauseParser.uniqueJoinSource_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token KW_PRESERVE44=null;
ParserRuleReturnScope uniqueJoinTableSource45 =null;
ParserRuleReturnScope uniqueJoinExpr46 =null;
ASTNode KW_PRESERVE44_tree=null;
gParent.pushMsg("unique join source", state);
try {
// FromClauseParser.g:122:5: ( ( KW_PRESERVE )? uniqueJoinTableSource uniqueJoinExpr )
// FromClauseParser.g:122:7: ( KW_PRESERVE )? uniqueJoinTableSource uniqueJoinExpr
{
root_0 = (ASTNode)adaptor.nil();
// FromClauseParser.g:122:7: ( KW_PRESERVE )?
int alt16=2;
int LA16_0 = input.LA(1);
if ( (LA16_0==KW_PRESERVE) ) {
alt16=1;
}
switch (alt16) {
case 1 :
// FromClauseParser.g:122:7: KW_PRESERVE
{
KW_PRESERVE44=(Token)match(input,KW_PRESERVE,FOLLOW_KW_PRESERVE_in_uniqueJoinSource599); if (state.failed) return retval;
if ( state.backtracking==0 ) {
KW_PRESERVE44_tree = (ASTNode)adaptor.create(KW_PRESERVE44);
adaptor.addChild(root_0, KW_PRESERVE44_tree);
}
}
break;
}
pushFollow(FOLLOW_uniqueJoinTableSource_in_uniqueJoinSource602);
uniqueJoinTableSource45=uniqueJoinTableSource();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, uniqueJoinTableSource45.getTree());
pushFollow(FOLLOW_uniqueJoinExpr_in_uniqueJoinSource604);
uniqueJoinExpr46=uniqueJoinExpr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, uniqueJoinExpr46.getTree());
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "uniqueJoinSource"
public static class uniqueJoinExpr_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "uniqueJoinExpr"
// FromClauseParser.g:125:1: uniqueJoinExpr : LPAREN ! expressionList RPAREN !;
public final HiveParser_FromClauseParser.uniqueJoinExpr_return uniqueJoinExpr() throws RecognitionException {
HiveParser_FromClauseParser.uniqueJoinExpr_return retval = new HiveParser_FromClauseParser.uniqueJoinExpr_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token LPAREN47=null;
Token RPAREN49=null;
ParserRuleReturnScope expressionList48 =null;
ASTNode LPAREN47_tree=null;
ASTNode RPAREN49_tree=null;
gParent.pushMsg("unique join expression list", state);
try {
// FromClauseParser.g:128:5: ( LPAREN ! expressionList RPAREN !)
// FromClauseParser.g:128:7: LPAREN ! expressionList RPAREN !
{
root_0 = (ASTNode)adaptor.nil();
LPAREN47=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_uniqueJoinExpr631); if (state.failed) return retval;
pushFollow(FOLLOW_expressionList_in_uniqueJoinExpr634);
expressionList48=expressionList();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expressionList48.getTree());
RPAREN49=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_uniqueJoinExpr636); if (state.failed) return retval;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "uniqueJoinExpr"
public static class uniqueJoinToken_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "uniqueJoinToken"
// FromClauseParser.g:131:1: uniqueJoinToken : KW_UNIQUEJOIN -> TOK_UNIQUEJOIN ;
public final HiveParser_FromClauseParser.uniqueJoinToken_return uniqueJoinToken() throws RecognitionException {
HiveParser_FromClauseParser.uniqueJoinToken_return retval = new HiveParser_FromClauseParser.uniqueJoinToken_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token KW_UNIQUEJOIN50=null;
ASTNode KW_UNIQUEJOIN50_tree=null;
RewriteRuleTokenStream stream_KW_UNIQUEJOIN=new RewriteRuleTokenStream(adaptor,"token KW_UNIQUEJOIN");
gParent.pushMsg("unique join", state);
try {
// FromClauseParser.g:134:5: ( KW_UNIQUEJOIN -> TOK_UNIQUEJOIN )
// FromClauseParser.g:134:7: KW_UNIQUEJOIN
{
KW_UNIQUEJOIN50=(Token)match(input,KW_UNIQUEJOIN,FOLLOW_KW_UNIQUEJOIN_in_uniqueJoinToken664); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_UNIQUEJOIN.add(KW_UNIQUEJOIN50);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 134:21: -> TOK_UNIQUEJOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_UNIQUEJOIN, "TOK_UNIQUEJOIN"));
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "uniqueJoinToken"
public static class joinToken_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "joinToken"
// FromClauseParser.g:136:1: joinToken : ( KW_JOIN -> TOK_JOIN | KW_INNER KW_JOIN -> TOK_JOIN | COMMA -> TOK_JOIN | KW_CROSS KW_JOIN -> TOK_CROSSJOIN | KW_LEFT ( KW_OUTER )? KW_JOIN -> TOK_LEFTOUTERJOIN | KW_RIGHT ( KW_OUTER )? KW_JOIN -> TOK_RIGHTOUTERJOIN | KW_FULL ( KW_OUTER )? KW_JOIN -> TOK_FULLOUTERJOIN | KW_LEFT KW_SEMI KW_JOIN -> TOK_LEFTSEMIJOIN );
public final HiveParser_FromClauseParser.joinToken_return joinToken() throws RecognitionException {
HiveParser_FromClauseParser.joinToken_return retval = new HiveParser_FromClauseParser.joinToken_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token KW_JOIN51=null;
Token KW_INNER52=null;
Token KW_JOIN53=null;
Token COMMA54=null;
Token KW_CROSS55=null;
Token KW_JOIN56=null;
Token KW_LEFT57=null;
Token KW_OUTER58=null;
Token KW_JOIN59=null;
Token KW_RIGHT60=null;
Token KW_OUTER61=null;
Token KW_JOIN62=null;
Token KW_FULL63=null;
Token KW_OUTER64=null;
Token KW_JOIN65=null;
Token KW_LEFT66=null;
Token KW_SEMI67=null;
Token KW_JOIN68=null;
ASTNode KW_JOIN51_tree=null;
ASTNode KW_INNER52_tree=null;
ASTNode KW_JOIN53_tree=null;
ASTNode COMMA54_tree=null;
ASTNode KW_CROSS55_tree=null;
ASTNode KW_JOIN56_tree=null;
ASTNode KW_LEFT57_tree=null;
ASTNode KW_OUTER58_tree=null;
ASTNode KW_JOIN59_tree=null;
ASTNode KW_RIGHT60_tree=null;
ASTNode KW_OUTER61_tree=null;
ASTNode KW_JOIN62_tree=null;
ASTNode KW_FULL63_tree=null;
ASTNode KW_OUTER64_tree=null;
ASTNode KW_JOIN65_tree=null;
ASTNode KW_LEFT66_tree=null;
ASTNode KW_SEMI67_tree=null;
ASTNode KW_JOIN68_tree=null;
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleTokenStream stream_KW_RIGHT=new RewriteRuleTokenStream(adaptor,"token KW_RIGHT");
RewriteRuleTokenStream stream_KW_CROSS=new RewriteRuleTokenStream(adaptor,"token KW_CROSS");
RewriteRuleTokenStream stream_KW_FULL=new RewriteRuleTokenStream(adaptor,"token KW_FULL");
RewriteRuleTokenStream stream_KW_JOIN=new RewriteRuleTokenStream(adaptor,"token KW_JOIN");
RewriteRuleTokenStream stream_KW_OUTER=new RewriteRuleTokenStream(adaptor,"token KW_OUTER");
RewriteRuleTokenStream stream_KW_SEMI=new RewriteRuleTokenStream(adaptor,"token KW_SEMI");
RewriteRuleTokenStream stream_KW_LEFT=new RewriteRuleTokenStream(adaptor,"token KW_LEFT");
RewriteRuleTokenStream stream_KW_INNER=new RewriteRuleTokenStream(adaptor,"token KW_INNER");
gParent.pushMsg("join type specifier", state);
try {
// FromClauseParser.g:139:5: ( KW_JOIN -> TOK_JOIN | KW_INNER KW_JOIN -> TOK_JOIN | COMMA -> TOK_JOIN | KW_CROSS KW_JOIN -> TOK_CROSSJOIN | KW_LEFT ( KW_OUTER )? KW_JOIN -> TOK_LEFTOUTERJOIN | KW_RIGHT ( KW_OUTER )? KW_JOIN -> TOK_RIGHTOUTERJOIN | KW_FULL ( KW_OUTER )? KW_JOIN -> TOK_FULLOUTERJOIN | KW_LEFT KW_SEMI KW_JOIN -> TOK_LEFTSEMIJOIN )
int alt20=8;
switch ( input.LA(1) ) {
case KW_JOIN:
{
alt20=1;
}
break;
case KW_INNER:
{
alt20=2;
}
break;
case COMMA:
{
alt20=3;
}
break;
case KW_CROSS:
{
alt20=4;
}
break;
case KW_LEFT:
{
int LA20_5 = input.LA(2);
if ( (LA20_5==KW_SEMI) ) {
alt20=8;
}
else if ( (LA20_5==KW_JOIN||LA20_5==KW_OUTER) ) {
alt20=5;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
input.consume();
NoViableAltException nvae =
new NoViableAltException("", 20, 5, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
break;
case KW_RIGHT:
{
alt20=6;
}
break;
case KW_FULL:
{
alt20=7;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 20, 0, input);
throw nvae;
}
switch (alt20) {
case 1 :
// FromClauseParser.g:140:7: KW_JOIN
{
KW_JOIN51=(Token)match(input,KW_JOIN,FOLLOW_KW_JOIN_in_joinToken696); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_JOIN.add(KW_JOIN51);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 140:36: -> TOK_JOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_JOIN, "TOK_JOIN"));
}
retval.tree = root_0;
}
}
break;
case 2 :
// FromClauseParser.g:141:7: KW_INNER KW_JOIN
{
KW_INNER52=(Token)match(input,KW_INNER,FOLLOW_KW_INNER_in_joinToken729); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_INNER.add(KW_INNER52);
KW_JOIN53=(Token)match(input,KW_JOIN,FOLLOW_KW_JOIN_in_joinToken731); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_JOIN.add(KW_JOIN53);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 141:36: -> TOK_JOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_JOIN, "TOK_JOIN"));
}
retval.tree = root_0;
}
}
break;
case 3 :
// FromClauseParser.g:142:7: COMMA
{
COMMA54=(Token)match(input,COMMA,FOLLOW_COMMA_in_joinToken755); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA54);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 142:36: -> TOK_JOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_JOIN, "TOK_JOIN"));
}
retval.tree = root_0;
}
}
break;
case 4 :
// FromClauseParser.g:143:7: KW_CROSS KW_JOIN
{
KW_CROSS55=(Token)match(input,KW_CROSS,FOLLOW_KW_CROSS_in_joinToken790); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_CROSS.add(KW_CROSS55);
KW_JOIN56=(Token)match(input,KW_JOIN,FOLLOW_KW_JOIN_in_joinToken792); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_JOIN.add(KW_JOIN56);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 143:36: -> TOK_CROSSJOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_CROSSJOIN, "TOK_CROSSJOIN"));
}
retval.tree = root_0;
}
}
break;
case 5 :
// FromClauseParser.g:144:7: KW_LEFT ( KW_OUTER )? KW_JOIN
{
KW_LEFT57=(Token)match(input,KW_LEFT,FOLLOW_KW_LEFT_in_joinToken816); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_LEFT.add(KW_LEFT57);
// FromClauseParser.g:144:16: ( KW_OUTER )?
int alt17=2;
int LA17_0 = input.LA(1);
if ( (LA17_0==KW_OUTER) ) {
alt17=1;
}
switch (alt17) {
case 1 :
// FromClauseParser.g:144:17: KW_OUTER
{
KW_OUTER58=(Token)match(input,KW_OUTER,FOLLOW_KW_OUTER_in_joinToken820); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_OUTER.add(KW_OUTER58);
}
break;
}
KW_JOIN59=(Token)match(input,KW_JOIN,FOLLOW_KW_JOIN_in_joinToken824); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_JOIN.add(KW_JOIN59);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 144:36: -> TOK_LEFTOUTERJOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_LEFTOUTERJOIN, "TOK_LEFTOUTERJOIN"));
}
retval.tree = root_0;
}
}
break;
case 6 :
// FromClauseParser.g:145:7: KW_RIGHT ( KW_OUTER )? KW_JOIN
{
KW_RIGHT60=(Token)match(input,KW_RIGHT,FOLLOW_KW_RIGHT_in_joinToken836); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_RIGHT.add(KW_RIGHT60);
// FromClauseParser.g:145:16: ( KW_OUTER )?
int alt18=2;
int LA18_0 = input.LA(1);
if ( (LA18_0==KW_OUTER) ) {
alt18=1;
}
switch (alt18) {
case 1 :
// FromClauseParser.g:145:17: KW_OUTER
{
KW_OUTER61=(Token)match(input,KW_OUTER,FOLLOW_KW_OUTER_in_joinToken839); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_OUTER.add(KW_OUTER61);
}
break;
}
KW_JOIN62=(Token)match(input,KW_JOIN,FOLLOW_KW_JOIN_in_joinToken843); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_JOIN.add(KW_JOIN62);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 145:36: -> TOK_RIGHTOUTERJOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_RIGHTOUTERJOIN, "TOK_RIGHTOUTERJOIN"));
}
retval.tree = root_0;
}
}
break;
case 7 :
// FromClauseParser.g:146:7: KW_FULL ( KW_OUTER )? KW_JOIN
{
KW_FULL63=(Token)match(input,KW_FULL,FOLLOW_KW_FULL_in_joinToken855); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_FULL.add(KW_FULL63);
// FromClauseParser.g:146:16: ( KW_OUTER )?
int alt19=2;
int LA19_0 = input.LA(1);
if ( (LA19_0==KW_OUTER) ) {
alt19=1;
}
switch (alt19) {
case 1 :
// FromClauseParser.g:146:17: KW_OUTER
{
KW_OUTER64=(Token)match(input,KW_OUTER,FOLLOW_KW_OUTER_in_joinToken859); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_OUTER.add(KW_OUTER64);
}
break;
}
KW_JOIN65=(Token)match(input,KW_JOIN,FOLLOW_KW_JOIN_in_joinToken863); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_JOIN.add(KW_JOIN65);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 146:36: -> TOK_FULLOUTERJOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_FULLOUTERJOIN, "TOK_FULLOUTERJOIN"));
}
retval.tree = root_0;
}
}
break;
case 8 :
// FromClauseParser.g:147:7: KW_LEFT KW_SEMI KW_JOIN
{
KW_LEFT66=(Token)match(input,KW_LEFT,FOLLOW_KW_LEFT_in_joinToken875); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_LEFT.add(KW_LEFT66);
KW_SEMI67=(Token)match(input,KW_SEMI,FOLLOW_KW_SEMI_in_joinToken877); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_SEMI.add(KW_SEMI67);
KW_JOIN68=(Token)match(input,KW_JOIN,FOLLOW_KW_JOIN_in_joinToken879); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_JOIN.add(KW_JOIN68);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 147:36: -> TOK_LEFTSEMIJOIN
{
adaptor.addChild(root_0, (ASTNode)adaptor.create(TOK_LEFTSEMIJOIN, "TOK_LEFTSEMIJOIN"));
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) { gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "joinToken"
public static class lateralView_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "lateralView"
// FromClauseParser.g:150:1: lateralView : ( ( ( COMMA )? KW_LATERAL KW_VIEW KW_OUTER )=> KW_LATERAL KW_VIEW KW_OUTER function tableAlias ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )? -> ^( TOK_LATERAL_VIEW_OUTER ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) ) | ( COMMA )? KW_LATERAL KW_VIEW function tableAlias ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )? -> ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) ) | ( COMMA )? KW_LATERAL KW_TABLE LPAREN valuesClause RPAREN ( KW_AS )? tableAlias ( LPAREN identifier ( COMMA identifier )* RPAREN )? -> ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR ^( TOK_FUNCTION Identifier[\"inline\"] valuesClause ) ( identifier )* tableAlias ) ) ) );
public final HiveParser_FromClauseParser.lateralView_return lateralView() throws RecognitionException {
HiveParser_FromClauseParser.lateralView_return retval = new HiveParser_FromClauseParser.lateralView_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token KW_LATERAL69=null;
Token KW_VIEW70=null;
Token KW_OUTER71=null;
Token KW_AS74=null;
Token COMMA76=null;
Token COMMA78=null;
Token KW_LATERAL79=null;
Token KW_VIEW80=null;
Token KW_AS83=null;
Token COMMA85=null;
Token COMMA87=null;
Token KW_LATERAL88=null;
Token KW_TABLE89=null;
Token LPAREN90=null;
Token RPAREN92=null;
Token KW_AS93=null;
Token LPAREN95=null;
Token COMMA97=null;
Token RPAREN99=null;
ParserRuleReturnScope function72 =null;
ParserRuleReturnScope tableAlias73 =null;
ParserRuleReturnScope identifier75 =null;
ParserRuleReturnScope identifier77 =null;
ParserRuleReturnScope function81 =null;
ParserRuleReturnScope tableAlias82 =null;
ParserRuleReturnScope identifier84 =null;
ParserRuleReturnScope identifier86 =null;
ParserRuleReturnScope valuesClause91 =null;
ParserRuleReturnScope tableAlias94 =null;
ParserRuleReturnScope identifier96 =null;
ParserRuleReturnScope identifier98 =null;
ASTNode KW_LATERAL69_tree=null;
ASTNode KW_VIEW70_tree=null;
ASTNode KW_OUTER71_tree=null;
ASTNode KW_AS74_tree=null;
ASTNode COMMA76_tree=null;
ASTNode COMMA78_tree=null;
ASTNode KW_LATERAL79_tree=null;
ASTNode KW_VIEW80_tree=null;
ASTNode KW_AS83_tree=null;
ASTNode COMMA85_tree=null;
ASTNode COMMA87_tree=null;
ASTNode KW_LATERAL88_tree=null;
ASTNode KW_TABLE89_tree=null;
ASTNode LPAREN90_tree=null;
ASTNode RPAREN92_tree=null;
ASTNode KW_AS93_tree=null;
ASTNode LPAREN95_tree=null;
ASTNode COMMA97_tree=null;
ASTNode RPAREN99_tree=null;
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleTokenStream stream_KW_VIEW=new RewriteRuleTokenStream(adaptor,"token KW_VIEW");
RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
RewriteRuleTokenStream stream_KW_OUTER=new RewriteRuleTokenStream(adaptor,"token KW_OUTER");
RewriteRuleTokenStream stream_KW_TABLE=new RewriteRuleTokenStream(adaptor,"token KW_TABLE");
RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
RewriteRuleTokenStream stream_KW_AS=new RewriteRuleTokenStream(adaptor,"token KW_AS");
RewriteRuleTokenStream stream_KW_LATERAL=new RewriteRuleTokenStream(adaptor,"token KW_LATERAL");
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
RewriteRuleSubtreeStream stream_valuesClause=new RewriteRuleSubtreeStream(adaptor,"rule valuesClause");
RewriteRuleSubtreeStream stream_function=new RewriteRuleSubtreeStream(adaptor,"rule function");
RewriteRuleSubtreeStream stream_tableAlias=new RewriteRuleSubtreeStream(adaptor,"rule tableAlias");
gParent.pushMsg("lateral view", state);
try {
// FromClauseParser.g:153:2: ( ( ( COMMA )? KW_LATERAL KW_VIEW KW_OUTER )=> KW_LATERAL KW_VIEW KW_OUTER function tableAlias ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )? -> ^( TOK_LATERAL_VIEW_OUTER ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) ) | ( COMMA )? KW_LATERAL KW_VIEW function tableAlias ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )? -> ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) ) | ( COMMA )? KW_LATERAL KW_TABLE LPAREN valuesClause RPAREN ( KW_AS )? tableAlias ( LPAREN identifier ( COMMA identifier )* RPAREN )? -> ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR ^( TOK_FUNCTION Identifier[\"inline\"] valuesClause ) ( identifier )* tableAlias ) ) ) )
int alt30=3;
int LA30_0 = input.LA(1);
if ( (LA30_0==KW_LATERAL) ) {
int LA30_1 = input.LA(2);
if ( (LA30_1==KW_VIEW) ) {
int LA30_3 = input.LA(3);
if ( (LA30_3==KW_OUTER) && (synpred3_FromClauseParser())) {
alt30=1;
}
else if ( (LA30_3==Identifier||(LA30_3 >= KW_ABORT && LA30_3 <= KW_AFTER)||LA30_3==KW_ALLOC_FRACTION||LA30_3==KW_ANALYZE||(LA30_3 >= KW_ARCHIVE && LA30_3 <= KW_ARRAY)||LA30_3==KW_ASC||(LA30_3 >= KW_AUTOCOMMIT && LA30_3 <= KW_BEFORE)||(LA30_3 >= KW_BIGINT && LA30_3 <= KW_BOOLEAN)||(LA30_3 >= KW_BUCKET && LA30_3 <= KW_BUCKETS)||(LA30_3 >= KW_CACHE && LA30_3 <= KW_CASCADE)||LA30_3==KW_CHANGE||(LA30_3 >= KW_CHECK && LA30_3 <= KW_COLLECTION)||(LA30_3 >= KW_COLUMNS && LA30_3 <= KW_COMMENT)||(LA30_3 >= KW_COMPACT && LA30_3 <= KW_CONCATENATE)||LA30_3==KW_CONTINUE||(LA30_3 >= KW_CURRENT_DATE && LA30_3 <= KW_CURRENT_TIMESTAMP)||LA30_3==KW_DATA||(LA30_3 >= KW_DATABASES && LA30_3 <= KW_DBPROPERTIES)||(LA30_3 >= KW_DEFAULT && LA30_3 <= KW_DEFINED)||(LA30_3 >= KW_DELIMITED && LA30_3 <= KW_DESC)||(LA30_3 >= KW_DETAIL && LA30_3 <= KW_DISABLE)||(LA30_3 >= KW_DISTRIBUTE && LA30_3 <= KW_DOW)||(LA30_3 >= KW_DUMP && LA30_3 <= KW_ELEM_TYPE)||LA30_3==KW_ENABLE||(LA30_3 >= KW_ENFORCED && LA30_3 <= KW_ESCAPED)||LA30_3==KW_EXCLUSIVE||(LA30_3 >= KW_EXPLAIN && LA30_3 <= KW_EXPRESSION)||(LA30_3 >= KW_FIELDS && LA30_3 <= KW_FLOAT)||(LA30_3 >= KW_FORMAT && LA30_3 <= KW_FORMATTED)||LA30_3==KW_FUNCTIONS||LA30_3==KW_GROUPING||(LA30_3 >= KW_HOUR && LA30_3 <= KW_IF)||(LA30_3 >= KW_INDEX && LA30_3 <= KW_INDEXES)||(LA30_3 >= KW_INPATH && LA30_3 <= KW_INPUTFORMAT)||LA30_3==KW_INT||(LA30_3 >= KW_ISOLATION && LA30_3 <= KW_JAR)||(LA30_3 >= KW_KEY && LA30_3 <= KW_LAST)||LA30_3==KW_LEVEL||(LA30_3 >= KW_LIMIT && LA30_3 <= KW_LOAD)||(LA30_3 >= KW_LOCATION && LA30_3 <= KW_LONG)||(LA30_3 >= KW_MANAGEMENT && LA30_3 <= KW_MATERIALIZED)||LA30_3==KW_METADATA||(LA30_3 >= KW_MINUTE && LA30_3 <= KW_MONTH)||(LA30_3 >= KW_MOVE && LA30_3 <= KW_MSCK)||(LA30_3 >= KW_NORELY && LA30_3 <= KW_NOSCAN)||LA30_3==KW_NOVALIDATE||LA30_3==KW_NULLS||LA30_3==KW_OFFSET||(LA30_3 >= KW_OPERATOR && LA30_3 <= KW_OPTION)||(LA30_3 >= KW_OUTPUTDRIVER && LA30_3 <= KW_OUTPUTFORMAT)||(LA30_3 >= KW_OVERWRITE && LA30_3 <= KW_OWNER)||(LA30_3 >= KW_PARTITIONED && LA30_3 <= KW_PATH)||(LA30_3 >= KW_PLAN && LA30_3 <= KW_POOL)||LA30_3==KW_PRINCIPALS||(LA30_3 >= KW_PURGE && LA30_3 <= KW_QUERY_PARALLELISM)||LA30_3==KW_READ||(LA30_3 >= KW_REBUILD && LA30_3 <= KW_RECORDWRITER)||(LA30_3 >= KW_RELOAD && LA30_3 <= KW_RESTRICT)||LA30_3==KW_REWRITE||(LA30_3 >= KW_ROLE && LA30_3 <= KW_ROLES)||(LA30_3 >= KW_SCHEDULING_POLICY && LA30_3 <= KW_SECOND)||(LA30_3 >= KW_SEMI && LA30_3 <= KW_SERVER)||(LA30_3 >= KW_SETS && LA30_3 <= KW_SSL)||(LA30_3 >= KW_STATISTICS && LA30_3 <= KW_SUMMARY)||LA30_3==KW_TABLES||(LA30_3 >= KW_TBLPROPERTIES && LA30_3 <= KW_TERMINATED)||LA30_3==KW_TIMESTAMP||LA30_3==KW_TINYINT||(LA30_3 >= KW_TOUCH && LA30_3 <= KW_TRANSACTIONS)||LA30_3==KW_UNARCHIVE||LA30_3==KW_UNDO||LA30_3==KW_UNIONTYPE||(LA30_3 >= KW_UNLOCK && LA30_3 <= KW_UNSIGNED)||(LA30_3 >= KW_URI && LA30_3 <= KW_USE)||(LA30_3 >= KW_UTC && LA30_3 <= KW_VALIDATE)||LA30_3==KW_VALUE_TYPE||(LA30_3 >= KW_VECTORIZATION && LA30_3 <= KW_WEEK)||LA30_3==KW_WHILE||(LA30_3 >= KW_WORK && LA30_3 <= KW_ZONE)||LA30_3==KW_BATCH||LA30_3==KW_DAYOFWEEK||LA30_3==KW_HOLD_DDLTIME||LA30_3==KW_IGNORE||LA30_3==KW_NO_DROP||LA30_3==KW_OFFLINE||LA30_3==KW_PROTECTION||LA30_3==KW_READONLY||LA30_3==KW_TIMESTAMPTZ) ) {
alt30=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
input.consume();
}
NoViableAltException nvae =
new NoViableAltException("", 30, 3, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else if ( (LA30_1==KW_TABLE) ) {
alt30=3;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
input.consume();
NoViableAltException nvae =
new NoViableAltException("", 30, 1, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else if ( (LA30_0==COMMA) ) {
int LA30_2 = input.LA(2);
if ( (LA30_2==KW_LATERAL) ) {
int LA30_5 = input.LA(3);
if ( (LA30_5==KW_VIEW) ) {
alt30=2;
}
else if ( (LA30_5==KW_TABLE) ) {
alt30=3;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
input.consume();
}
NoViableAltException nvae =
new NoViableAltException("", 30, 5, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
input.consume();
NoViableAltException nvae =
new NoViableAltException("", 30, 2, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 30, 0, input);
throw nvae;
}
switch (alt30) {
case 1 :
// FromClauseParser.g:154:2: ( ( COMMA )? KW_LATERAL KW_VIEW KW_OUTER )=> KW_LATERAL KW_VIEW KW_OUTER function tableAlias ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )?
{
KW_LATERAL69=(Token)match(input,KW_LATERAL,FOLLOW_KW_LATERAL_in_lateralView926); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_LATERAL.add(KW_LATERAL69);
KW_VIEW70=(Token)match(input,KW_VIEW,FOLLOW_KW_VIEW_in_lateralView928); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_VIEW.add(KW_VIEW70);
KW_OUTER71=(Token)match(input,KW_OUTER,FOLLOW_KW_OUTER_in_lateralView930); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_OUTER.add(KW_OUTER71);
pushFollow(FOLLOW_function_in_lateralView932);
function72=gHiveParser.function();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_function.add(function72.getTree());
pushFollow(FOLLOW_tableAlias_in_lateralView934);
tableAlias73=tableAlias();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_tableAlias.add(tableAlias73.getTree());
// FromClauseParser.g:154:90: ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )?
int alt22=2;
int LA22_0 = input.LA(1);
if ( (LA22_0==KW_AS) ) {
alt22=1;
}
switch (alt22) {
case 1 :
// FromClauseParser.g:154:91: KW_AS identifier ( ( COMMA )=> COMMA identifier )*
{
KW_AS74=(Token)match(input,KW_AS,FOLLOW_KW_AS_in_lateralView937); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_AS.add(KW_AS74);
pushFollow(FOLLOW_identifier_in_lateralView939);
identifier75=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier75.getTree());
// FromClauseParser.g:154:108: ( ( COMMA )=> COMMA identifier )*
loop21:
while (true) {
int alt21=2;
alt21 = dfa21.predict(input);
switch (alt21) {
case 1 :
// FromClauseParser.g:154:109: ( COMMA )=> COMMA identifier
{
COMMA76=(Token)match(input,COMMA,FOLLOW_COMMA_in_lateralView947); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA76);
pushFollow(FOLLOW_identifier_in_lateralView949);
identifier77=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier77.getTree());
}
break;
default :
break loop21;
}
}
}
break;
}
// AST REWRITE
// elements: identifier, tableAlias, function
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 155:2: -> ^( TOK_LATERAL_VIEW_OUTER ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) )
{
// FromClauseParser.g:155:5: ^( TOK_LATERAL_VIEW_OUTER ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_LATERAL_VIEW_OUTER, "TOK_LATERAL_VIEW_OUTER"), root_1);
// FromClauseParser.g:155:30: ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) )
{
ASTNode root_2 = (ASTNode)adaptor.nil();
root_2 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_SELECT, "TOK_SELECT"), root_2);
// FromClauseParser.g:155:43: ^( TOK_SELEXPR function ( identifier )* tableAlias )
{
ASTNode root_3 = (ASTNode)adaptor.nil();
root_3 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_SELEXPR, "TOK_SELEXPR"), root_3);
adaptor.addChild(root_3, stream_function.nextTree());
// FromClauseParser.g:155:66: ( identifier )*
while ( stream_identifier.hasNext() ) {
adaptor.addChild(root_3, stream_identifier.nextTree());
}
stream_identifier.reset();
adaptor.addChild(root_3, stream_tableAlias.nextTree());
adaptor.addChild(root_2, root_3);
}
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
case 2 :
// FromClauseParser.g:157:2: ( COMMA )? KW_LATERAL KW_VIEW function tableAlias ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )?
{
// FromClauseParser.g:157:2: ( COMMA )?
int alt23=2;
int LA23_0 = input.LA(1);
if ( (LA23_0==COMMA) ) {
alt23=1;
}
switch (alt23) {
case 1 :
// FromClauseParser.g:157:2: COMMA
{
COMMA78=(Token)match(input,COMMA,FOLLOW_COMMA_in_lateralView981); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA78);
}
break;
}
KW_LATERAL79=(Token)match(input,KW_LATERAL,FOLLOW_KW_LATERAL_in_lateralView984); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_LATERAL.add(KW_LATERAL79);
KW_VIEW80=(Token)match(input,KW_VIEW,FOLLOW_KW_VIEW_in_lateralView986); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_VIEW.add(KW_VIEW80);
pushFollow(FOLLOW_function_in_lateralView988);
function81=gHiveParser.function();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_function.add(function81.getTree());
pushFollow(FOLLOW_tableAlias_in_lateralView990);
tableAlias82=tableAlias();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_tableAlias.add(tableAlias82.getTree());
// FromClauseParser.g:157:48: ( KW_AS identifier ( ( COMMA )=> COMMA identifier )* )?
int alt25=2;
int LA25_0 = input.LA(1);
if ( (LA25_0==KW_AS) ) {
alt25=1;
}
switch (alt25) {
case 1 :
// FromClauseParser.g:157:49: KW_AS identifier ( ( COMMA )=> COMMA identifier )*
{
KW_AS83=(Token)match(input,KW_AS,FOLLOW_KW_AS_in_lateralView993); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_AS.add(KW_AS83);
pushFollow(FOLLOW_identifier_in_lateralView995);
identifier84=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier84.getTree());
// FromClauseParser.g:157:66: ( ( COMMA )=> COMMA identifier )*
loop24:
while (true) {
int alt24=2;
alt24 = dfa24.predict(input);
switch (alt24) {
case 1 :
// FromClauseParser.g:157:67: ( COMMA )=> COMMA identifier
{
COMMA85=(Token)match(input,COMMA,FOLLOW_COMMA_in_lateralView1003); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA85);
pushFollow(FOLLOW_identifier_in_lateralView1005);
identifier86=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier86.getTree());
}
break;
default :
break loop24;
}
}
}
break;
}
// AST REWRITE
// elements: identifier, tableAlias, function
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 158:2: -> ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) )
{
// FromClauseParser.g:158:5: ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) ) )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_LATERAL_VIEW, "TOK_LATERAL_VIEW"), root_1);
// FromClauseParser.g:158:24: ^( TOK_SELECT ^( TOK_SELEXPR function ( identifier )* tableAlias ) )
{
ASTNode root_2 = (ASTNode)adaptor.nil();
root_2 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_SELECT, "TOK_SELECT"), root_2);
// FromClauseParser.g:158:37: ^( TOK_SELEXPR function ( identifier )* tableAlias )
{
ASTNode root_3 = (ASTNode)adaptor.nil();
root_3 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_SELEXPR, "TOK_SELEXPR"), root_3);
adaptor.addChild(root_3, stream_function.nextTree());
// FromClauseParser.g:158:60: ( identifier )*
while ( stream_identifier.hasNext() ) {
adaptor.addChild(root_3, stream_identifier.nextTree());
}
stream_identifier.reset();
adaptor.addChild(root_3, stream_tableAlias.nextTree());
adaptor.addChild(root_2, root_3);
}
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
case 3 :
// FromClauseParser.g:160:5: ( COMMA )? KW_LATERAL KW_TABLE LPAREN valuesClause RPAREN ( KW_AS )? tableAlias ( LPAREN identifier ( COMMA identifier )* RPAREN )?
{
// FromClauseParser.g:160:5: ( COMMA )?
int alt26=2;
int LA26_0 = input.LA(1);
if ( (LA26_0==COMMA) ) {
alt26=1;
}
switch (alt26) {
case 1 :
// FromClauseParser.g:160:5: COMMA
{
COMMA87=(Token)match(input,COMMA,FOLLOW_COMMA_in_lateralView1043); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA87);
}
break;
}
KW_LATERAL88=(Token)match(input,KW_LATERAL,FOLLOW_KW_LATERAL_in_lateralView1046); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_LATERAL.add(KW_LATERAL88);
KW_TABLE89=(Token)match(input,KW_TABLE,FOLLOW_KW_TABLE_in_lateralView1048); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_TABLE.add(KW_TABLE89);
LPAREN90=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_lateralView1050); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN90);
pushFollow(FOLLOW_valuesClause_in_lateralView1052);
valuesClause91=valuesClause();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_valuesClause.add(valuesClause91.getTree());
RPAREN92=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_lateralView1054); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN92);
// FromClauseParser.g:160:59: ( KW_AS )?
int alt27=2;
int LA27_0 = input.LA(1);
if ( (LA27_0==KW_AS) ) {
alt27=1;
}
switch (alt27) {
case 1 :
// FromClauseParser.g:160:59: KW_AS
{
KW_AS93=(Token)match(input,KW_AS,FOLLOW_KW_AS_in_lateralView1056); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_KW_AS.add(KW_AS93);
}
break;
}
pushFollow(FOLLOW_tableAlias_in_lateralView1059);
tableAlias94=tableAlias();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_tableAlias.add(tableAlias94.getTree());
// FromClauseParser.g:160:77: ( LPAREN identifier ( COMMA identifier )* RPAREN )?
int alt29=2;
int LA29_0 = input.LA(1);
if ( (LA29_0==LPAREN) ) {
alt29=1;
}
switch (alt29) {
case 1 :
// FromClauseParser.g:160:78: LPAREN identifier ( COMMA identifier )* RPAREN
{
LPAREN95=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_lateralView1062); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN95);
pushFollow(FOLLOW_identifier_in_lateralView1064);
identifier96=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier96.getTree());
// FromClauseParser.g:160:96: ( COMMA identifier )*
loop28:
while (true) {
int alt28=2;
int LA28_0 = input.LA(1);
if ( (LA28_0==COMMA) ) {
alt28=1;
}
switch (alt28) {
case 1 :
// FromClauseParser.g:160:97: COMMA identifier
{
COMMA97=(Token)match(input,COMMA,FOLLOW_COMMA_in_lateralView1067); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA97);
pushFollow(FOLLOW_identifier_in_lateralView1069);
identifier98=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier98.getTree());
}
break;
default :
break loop28;
}
}
RPAREN99=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_lateralView1073); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN99);
}
break;
}
// AST REWRITE
// elements: identifier, valuesClause, tableAlias
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 161:5: -> ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR ^( TOK_FUNCTION Identifier[\"inline\"] valuesClause ) ( identifier )* tableAlias ) ) )
{
// FromClauseParser.g:161:8: ^( TOK_LATERAL_VIEW ^( TOK_SELECT ^( TOK_SELEXPR ^( TOK_FUNCTION Identifier[\"inline\"] valuesClause ) ( identifier )* tableAlias ) ) )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_LATERAL_VIEW, "TOK_LATERAL_VIEW"), root_1);
// FromClauseParser.g:161:27: ^( TOK_SELECT ^( TOK_SELEXPR ^( TOK_FUNCTION Identifier[\"inline\"] valuesClause ) ( identifier )* tableAlias ) )
{
ASTNode root_2 = (ASTNode)adaptor.nil();
root_2 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_SELECT, "TOK_SELECT"), root_2);
// FromClauseParser.g:161:40: ^( TOK_SELEXPR ^( TOK_FUNCTION Identifier[\"inline\"] valuesClause ) ( identifier )* tableAlias )
{
ASTNode root_3 = (ASTNode)adaptor.nil();
root_3 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_SELEXPR, "TOK_SELEXPR"), root_3);
// FromClauseParser.g:161:54: ^( TOK_FUNCTION Identifier[\"inline\"] valuesClause )
{
ASTNode root_4 = (ASTNode)adaptor.nil();
root_4 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_FUNCTION, "TOK_FUNCTION"), root_4);
adaptor.addChild(root_4, (ASTNode)adaptor.create(Identifier, "inline"));
adaptor.addChild(root_4, stream_valuesClause.nextTree());
adaptor.addChild(root_3, root_4);
}
// FromClauseParser.g:161:104: ( identifier )*
while ( stream_identifier.hasNext() ) {
adaptor.addChild(root_3, stream_identifier.nextTree());
}
stream_identifier.reset();
adaptor.addChild(root_3, stream_tableAlias.nextTree());
adaptor.addChild(root_2, root_3);
}
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) {gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "lateralView"
public static class tableAlias_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "tableAlias"
// FromClauseParser.g:164:1: tableAlias : identifier -> ^( TOK_TABALIAS identifier ) ;
public final HiveParser_FromClauseParser.tableAlias_return tableAlias() throws RecognitionException {
HiveParser_FromClauseParser.tableAlias_return retval = new HiveParser_FromClauseParser.tableAlias_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
ParserRuleReturnScope identifier100 =null;
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
gParent.pushMsg("table alias", state);
try {
// FromClauseParser.g:167:5: ( identifier -> ^( TOK_TABALIAS identifier ) )
// FromClauseParser.g:168:5: identifier
{
pushFollow(FOLLOW_identifier_in_tableAlias1135);
identifier100=gHiveParser.identifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_identifier.add(identifier100.getTree());
// AST REWRITE
// elements: identifier
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (ASTNode)adaptor.nil();
// 168:16: -> ^( TOK_TABALIAS identifier )
{
// FromClauseParser.g:168:19: ^( TOK_TABALIAS identifier )
{
ASTNode root_1 = (ASTNode)adaptor.nil();
root_1 = (ASTNode)adaptor.becomeRoot((ASTNode)adaptor.create(TOK_TABALIAS, "TOK_TABALIAS"), root_1);
adaptor.addChild(root_1, stream_identifier.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (ASTNode)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
if ( state.backtracking==0 ) {gParent.popMsg(state); }
}
catch (RecognitionException e) {
throw e;
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "tableAlias"
public static class tableBucketSample_return extends ParserRuleReturnScope {
ASTNode tree;
@Override
public ASTNode getTree() { return tree; }
};
// $ANTLR start "tableBucketSample"
// FromClauseParser.g:171:1: tableBucketSample : KW_TABLESAMPLE LPAREN KW_BUCKET (numerator= Number ) KW_OUT KW_OF (denominator= Number ) ( KW_ON expr+= expression ( COMMA expr+= expression )* )? RPAREN -> ^( TOK_TABLEBUCKETSAMPLE $numerator $denominator ( $expr)* ) ;
public final HiveParser_FromClauseParser.tableBucketSample_return tableBucketSample() throws RecognitionException {
HiveParser_FromClauseParser.tableBucketSample_return retval = new HiveParser_FromClauseParser.tableBucketSample_return();
retval.start = input.LT(1);
ASTNode root_0 = null;
Token numerator=null;
Token denominator=null;
Token KW_TABLESAMPLE101=null;
Token LPAREN102=null;
Token KW_BUCKET103=null;
Token KW_OUT104=null;
Token KW_OF105=null;
Token KW_ON106=null;
Token COMMA107=null;
Token RPAREN108=null;
List