All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gen.antlr.sql.select.SelectParts Maven / Gradle / Ivy

// Generated from ./SelectParts.g4 by ANTLR 4.13.1
package gen.antlr.sql.select;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
public class SelectParts extends Parser {
	static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		ABSENT=1, ADD=2, AES=3, ALL=4, ALLOW_CONNECTIONS=5, ALLOW_MULTIPLE_EVENT_LOSS=6, 
		ALLOW_SINGLE_EVENT_LOSS=7, ALTER=8, AND=9, ANONYMOUS=10, ANY=11, APPEND=12, 
		APPLICATION=13, AS=14, ASC=15, ASYMMETRIC=16, ASYNCHRONOUS_COMMIT=17, 
		AUTHORIZATION=18, AUTHENTICATION=19, AUTOMATED_BACKUP_PREFERENCE=20, AUTOMATIC=21, 
		AVAILABILITY_MODE=22, BACKSLASH=23, BACKUP=24, BEFORE=25, BEGIN=26, BETWEEN=27, 
		BLOCK=28, BLOCKSIZE=29, BLOCKING_HIERARCHY=30, BREAK=31, BROWSE=32, BUFFER=33, 
		BUFFERCOUNT=34, BULK=35, BY=36, CACHE=37, CALLED=38, CASCADE=39, CASE=40, 
		CERTIFICATE=41, CHANGETABLE=42, CHANGES=43, CHECK=44, CHECKPOINT=45, CHECK_POLICY=46, 
		CHECK_EXPIRATION=47, CLASSIFIER_FUNCTION=48, CLOSE=49, CLUSTER=50, CLUSTERED=51, 
		COALESCE=52, COLLATE=53, COLUMN=54, COMPRESSION=55, COMMIT=56, COMPUTE=57, 
		CONFIGURATION=58, CONSTRAINT=59, CONTAINMENT=60, CONTAINS=61, CONTAINSTABLE=62, 
		CONTEXT=63, CONTINUE=64, CONTINUE_AFTER_ERROR=65, CONTRACT=66, CONTRACT_NAME=67, 
		CONVERSATION=68, CONVERT=69, COPY_ONLY=70, CREATE=71, CROSS=72, CURRENT=73, 
		CURRENT_DATE=74, CURRENT_TIME=75, CURRENT_TIMESTAMP=76, CURRENT_USER=77, 
		CURSOR=78, CYCLE=79, DATA=80, DATA_COMPRESSION=81, DATA_SOURCE=82, DATABASE=83, 
		DATABASE_MIRRORING=84, DBCC=85, DEALLOCATE=86, DECLARE=87, DEFAULT=88, 
		DEFAULT_DATABASE=89, DEFAULT_SCHEMA=90, DELETE=91, DENY=92, DESC=93, DIAGNOSTICS=94, 
		DIFFERENTIAL=95, DISK=96, DISTINCT=97, DISTRIBUTED=98, DOUBLE=99, DOUBLE_BACK_SLASH=100, 
		DOUBLE_FORWARD_SLASH=101, DROP=102, DTC_SUPPORT=103, DUMP=104, ELSE=105, 
		ENABLED=106, END=107, ENDPOINT=108, ERRLVL=109, ESCAPE=110, ERROR=111, 
		EVENT=112, EVENTDATA=113, EVENT_RETENTION_MODE=114, EXCEPT=115, EXECUTABLE_FILE=116, 
		EXECUTE=117, EXISTS=118, EXPIREDATE=119, EXIT=120, EXTENSION=121, EXTERNAL=122, 
		EXTERNAL_ACCESS=123, FAILOVER=124, FAILURECONDITIONLEVEL=125, FAN_IN=126, 
		FETCH=127, FILE=128, FILENAME=129, FILLFACTOR=130, FILE_SNAPSHOT=131, 
		FOR=132, FORCESEEK=133, FORCE_SERVICE_ALLOW_DATA_LOSS=134, FOREIGN=135, 
		FREETEXT=136, FREETEXTTABLE=137, FROM=138, FULL=139, FUNCTION=140, GET=141, 
		GOTO=142, GOVERNOR=143, GRANT=144, GROUP=145, HAVING=146, HASHED=147, 
		HEALTHCHECKTIMEOUT=148, IDENTITY=149, IDENTITYCOL=150, IDENTITY_INSERT=151, 
		IF=152, IN=153, INCLUDE=154, INCREMENT=155, INDEX=156, INFINITE=157, INIT=158, 
		INNER=159, INSERT=160, INSTEAD=161, INTERSECT=162, INTO=163, IPV4_ADDR=164, 
		IPV6_ADDR=165, IS=166, ISNULL=167, JOIN=168, KERBEROS=169, KEY=170, KEY_PATH=171, 
		KEY_STORE_PROVIDER_NAME=172, KILL=173, LANGUAGE=174, LEFT=175, LIBRARY=176, 
		LIFETIME=177, LIKE=178, RLIKE=179, LLIKE=180, LINENO=181, LINUX=182, LISTENER_IP=183, 
		LISTENER_PORT=184, LOAD=185, LOCAL_SERVICE_NAME=186, LOG=187, MATCHED=188, 
		MASTER=189, MAX_MEMORY=190, MAXTRANSFER=191, MAXVALUE=192, MAX_DISPATCH_LATENCY=193, 
		MAX_EVENT_SIZE=194, MAX_SIZE=195, MAX_OUTSTANDING_IO_PER_VOLUME=196, MEDIADESCRIPTION=197, 
		MEDIANAME=198, MEMBER=199, MEMORY_PARTITION_MODE=200, MERGE=201, MESSAGE_FORWARDING=202, 
		MESSAGE_FORWARD_SIZE=203, MINVALUE=204, MIRROR=205, MUST_CHANGE=206, NATIONAL=207, 
		NEGOTIATE=208, NOCHECK=209, NOFORMAT=210, NOINIT=211, NONCLUSTERED=212, 
		NONE=213, NOREWIND=214, NOSKIP=215, NOUNLOAD=216, NO_CHECKSUM=217, NO_COMPRESSION=218, 
		NO_EVENT_LOSS=219, NOT=220, NOTIFICATION=221, NTLM=222, NULL=223, NULLIF=224, 
		OF=225, OFF=226, OFFSETS=227, OLD_PASSWORD=228, ON=229, ON_FAILURE=230, 
		OPEN=231, OPENDATASOURCE=232, OPENQUERY=233, OPENROWSET=234, OPENXML=235, 
		OPTION=236, OR=237, ORDER=238, OUTER=239, OVER=240, PAGE=241, PARAM_NODE=242, 
		PARTIAL=243, PASSWORD=244, PERCENT=245, PERMISSION_SET=246, PER_CPU=247, 
		PER_DB=248, PER_NODE=249, PIVOT=250, PLAN=251, PLATFORM=252, POLICY=253, 
		PRECISION=254, PREDICATE=255, PRIMARY=256, PRINT=257, PROC=258, PROCEDURE=259, 
		PROCESS=260, PUBLIC=261, PYTHON=262, R=263, RAISERROR=264, RAW=265, READ=266, 
		READTEXT=267, READ_WRITE_FILEGROUPS=268, RECONFIGURE=269, REFERENCES=270, 
		REGENERATE=271, RELATED_CONVERSATION=272, RELATED_CONVERSATION_GROUP=273, 
		REPLICATION=274, REQUIRED=275, RESET=276, RESTART=277, RESTORE=278, RESTRICT=279, 
		RESUME=280, RETAINDAYS=281, RETURN=282, RETURNS=283, REVERT=284, REVOKE=285, 
		REWIND=286, RIGHT=287, ROLLBACK=288, ROLE=289, ROWCOUNT=290, ROWGUIDCOL=291, 
		RSA_512=292, RSA_1024=293, RSA_2048=294, RSA_3072=295, RSA_4096=296, SAFETY=297, 
		RULE=298, SAFE=299, SAVE=300, SCHEDULER=301, SCHEMA=302, SCHEME=303, SECURITY=304, 
		SECURITYAUDIT=305, SELECT=306, SEMANTICKEYPHRASETABLE=307, SEMANTICSIMILARITYDETAILSTABLE=308, 
		SEMANTICSIMILARITYTABLE=309, SEQUENCE=310, SERVER=311, SERVICE=312, SERVICE_BROKER=313, 
		SERVICE_NAME=314, SESSION=315, SESSION_USER=316, SET=317, SETUSER=318, 
		SHUTDOWN=319, SID=320, SKIP_KEYWORD=321, SOFTNUMA=322, SOME=323, SOURCE=324, 
		SPECIFICATION=325, SPLIT=326, SQLDUMPERFLAGS=327, SQLDUMPERPATH=328, SQLDUMPERTIMEOUT=329, 
		STATISTICS=330, STATE=331, STATS=332, START=333, STARTED=334, STARTUP_STATE=335, 
		STOP=336, STOPPED=337, STOP_ON_ERROR=338, SUPPORTED=339, SYSTEM=340, SYSTEM_USER=341, 
		TABLE=342, TABLESAMPLE=343, TAPE=344, TARGET=345, TCP=346, TEXTSIZE=347, 
		THEN=348, TO=349, TOP=350, TRACK_CAUSALITY=351, TRAN=352, TRANSACTION=353, 
		TRANSFER=354, TRIGGER=355, TRUNCATE=356, TSEQUAL=357, UNCHECKED=358, UNION=359, 
		UNIQUE=360, UNLOCK=361, UNPIVOT=362, UNSAFE=363, UPDATE=364, UPDATETEXT=365, 
		URL=366, USE=367, USED=368, USER=369, VALUES=370, VARYING=371, VERBOSELOGGING=372, 
		VIEW=373, VISIBILITY=374, WAITFOR=375, WHEN=376, WHERE=377, WHILE=378, 
		WINDOWS=379, WITH=380, WITHIN=381, WITHOUT=382, WITNESS=383, WRITETEXT=384, 
		ABSOLUTE=385, ACCENT_SENSITIVITY=386, ACTION=387, ACTIVATION=388, ACTIVE=389, 
		ADDRESS=390, AES_128=391, AES_192=392, AES_256=393, AFFINITY=394, AFTER=395, 
		AGGREGATE=396, ALGORITHM=397, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS=398, 
		ALLOW_SNAPSHOT_ISOLATION=399, ALLOWED=400, ANSI_NULL_DEFAULT=401, ANSI_NULLS=402, 
		ANSI_PADDING=403, ANSI_WARNINGS=404, APPLICATION_LOG=405, APPLY=406, ARITHABORT=407, 
		ASSEMBLY=408, AUDIT=409, AUDIT_GUID=410, AUTO=411, AUTO_CLEANUP=412, AUTO_CLOSE=413, 
		AUTO_CREATE_STATISTICS=414, AUTO_SHRINK=415, AUTO_UPDATE_STATISTICS=416, 
		AUTO_UPDATE_STATISTICS_ASYNC=417, AVAILABILITY=418, AVG=419, BACKUP_PRIORITY=420, 
		BEGIN_DIALOG=421, BIGINT=422, BINARY_BASE64=423, BINARY_CHECKSUM=424, 
		BINDING=425, BLOB_STORAGE=426, BROKER=427, BROKER_INSTANCE=428, BULK_LOGGED=429, 
		CALLER=430, CAP_CPU_PERCENT=431, CAST=432, CATALOG=433, CATCH=434, CHANGE_RETENTION=435, 
		CHANGE_TRACKING=436, CHECKSUM=437, CHECKSUM_AGG=438, CLEANUP=439, COLLECTION=440, 
		COLUMN_MASTER_KEY=441, COMMITTED=442, COMPATIBILITY_LEVEL=443, CONCAT=444, 
		CONCAT_NULL_YIELDS_NULL=445, CONTENT=446, CONTROL=447, COOKIE=448, COUNT=449, 
		COUNT_BIG=450, COUNTER=451, CPU=452, CREATE_NEW=453, CREATION_DISPOSITION=454, 
		CREDENTIAL=455, CRYPTOGRAPHIC=456, CURSOR_CLOSE_ON_COMMIT=457, CURSOR_DEFAULT=458, 
		DATE_CORRELATION_OPTIMIZATION=459, DATEADD=460, DATEDIFF=461, DATENAME=462, 
		DATEPART=463, DAYS=464, DB_CHAINING=465, DB_FAILOVER=466, DECRYPTION=467, 
		DEFAULT_DOUBLE_QUOTE=468, DEFAULT_FULLTEXT_LANGUAGE=469, DEFAULT_LANGUAGE=470, 
		DELAY=471, DELAYED_DURABILITY=472, DELETED=473, DENSE_RANK=474, DEPENDENTS=475, 
		DES=476, DESCRIPTION=477, DESX=478, DHCP=479, DIALOG=480, DIRECTORY_NAME=481, 
		DISABLE=482, DISABLE_BROKER=483, DISABLED=484, DISK_DRIVE=485, DOCUMENT=486, 
		DYNAMIC=487, ELEMENTS=488, EMERGENCY=489, EMPTY=490, ENABLE=491, ENABLE_BROKER=492, 
		ENCRYPTED_VALUE=493, ENCRYPTION=494, ENDPOINT_URL=495, ERROR_BROKER_CONVERSATIONS=496, 
		EXCLUSIVE=497, EXECUTABLE=498, EXIST=499, EXPAND=500, EXPIRY_DATE=501, 
		EXPLICIT=502, FAIL_OPERATION=503, FAILOVER_MODE=504, FAILURE=505, FAILURE_CONDITION_LEVEL=506, 
		FAST=507, FAST_FORWARD=508, FILEGROUP=509, FILEGROWTH=510, FILEPATH=511, 
		FILESTREAM=512, FILTER=513, FIRST=514, FIRST_VALUE=515, FOLLOWING=516, 
		FORCE=517, FORCE_FAILOVER_ALLOW_DATA_LOSS=518, FORCED=519, FORMAT=520, 
		FORWARD_ONLY=521, FULLSCAN=522, FULLTEXT=523, GB=524, GETDATE=525, GETUTCDATE=526, 
		GLOBAL=527, GO=528, GROUP_MAX_REQUESTS=529, GROUPING=530, GROUPING_ID=531, 
		HADR=532, HASH=533, HEALTH_CHECK_TIMEOUT=534, HIGH=535, HONOR_BROKER_PRIORITY=536, 
		HOURS=537, IDENTITY_VALUE=538, IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX=539, 
		IMMEDIATE=540, IMPERSONATE=541, IMPORTANCE=542, INCLUDE_NULL_VALUES=543, 
		INCREMENTAL=544, INITIATOR=545, INPUT=546, INSENSITIVE=547, INSERTED=548, 
		INT=549, IP=550, ISOLATION=551, JSON=552, KB=553, KEEP=554, KEEPFIXED=555, 
		KEY_SOURCE=556, KEYS=557, KEYSET=558, LAG=559, LAST=560, LAST_VALUE=561, 
		LEAD=562, LEVEL=563, LIST=564, LISTENER=565, LISTENER_URL=566, LOB_COMPACTION=567, 
		LOCAL=568, LOCATION=569, LOCK=570, LOCK_ESCALATION=571, LOGIN=572, LOOP=573, 
		LOW=574, MANUAL=575, MARK=576, MATERIALIZED=577, MAX=578, MAX_CPU_PERCENT=579, 
		MAX_DOP=580, MAX_FILES=581, MAX_IOPS_PER_VOLUME=582, MAX_MEMORY_PERCENT=583, 
		MAX_PROCESSES=584, MAX_QUEUE_READERS=585, MAX_ROLLOVER_FILES=586, MAXDOP=587, 
		MAXRECURSION=588, MAXSIZE=589, MB=590, MEDIUM=591, MEMORY_OPTIMIZED_DATA=592, 
		MESSAGE=593, MIN=594, MIN_ACTIVE_ROWVERSION=595, MIN_CPU_PERCENT=596, 
		MIN_IOPS_PER_VOLUME=597, MIN_MEMORY_PERCENT=598, MINUTES=599, MIRROR_ADDRESS=600, 
		MIXED_PAGE_ALLOCATION=601, MODE=602, MODIFY=603, MOVE=604, MULTI_USER=605, 
		NAME=606, NESTED_TRIGGERS=607, NEW_ACCOUNT=608, NEW_BROKER=609, NEW_PASSWORD=610, 
		NEXT=611, NO=612, NO_TRUNCATE=613, NO_WAIT=614, NOCOUNT=615, NODES=616, 
		NOEXPAND=617, NON_TRANSACTED_ACCESS=618, NORECOMPUTE=619, NORECOVERY=620, 
		NOWAIT=621, NTILE=622, NUMANODE=623, NUMBER=624, NUMERIC_ROUNDABORT=625, 
		OBJECT=626, OFFLINE=627, OFFSET=628, OLD_ACCOUNT=629, ONLINE=630, ONLY=631, 
		OPEN_EXISTING=632, OPTIMISTIC=633, OPTIMIZE=634, OUT=635, OUTPUT=636, 
		OWNER=637, PAGE_VERIFY=638, PARAMETERIZATION=639, PARTITION=640, PARTITIONS=641, 
		PARTNER=642, PATH=643, POISON_MESSAGE_HANDLING=644, POOL=645, PORT=646, 
		PRECEDING=647, PRIMARY_ROLE=648, PRIOR=649, PRIORITY=650, PRIORITY_LEVEL=651, 
		PRIVATE=652, PRIVATE_KEY=653, PRIVILEGES=654, PROCEDURE_NAME=655, PROPERTY=656, 
		PROVIDER=657, PROVIDER_KEY_NAME=658, QUERY=659, QUEUE=660, QUEUE_DELAY=661, 
		QUOTED_IDENTIFIER=662, RANGE=663, RANK=664, RC2=665, RC4=666, RC4_128=667, 
		READ_COMMITTED_SNAPSHOT=668, READ_ONLY=669, READ_ONLY_ROUTING_LIST=670, 
		READ_WRITE=671, READONLY=672, REBUILD=673, RECEIVE=674, RECOMPILE=675, 
		RECOVERY=676, RECURSIVE_TRIGGERS=677, RELATIVE=678, REMOTE=679, REMOTE_SERVICE_NAME=680, 
		REMOVE=681, REORGANIZE=682, REPEATABLE=683, REPLICA=684, REQUEST_MAX_CPU_TIME_SEC=685, 
		REQUEST_MAX_MEMORY_GRANT_PERCENT=686, REQUEST_MEMORY_GRANT_TIMEOUT_SEC=687, 
		REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT=688, RESERVE_DISK_SPACE=689, 
		RESOURCE=690, RESOURCE_MANAGER_LOCATION=691, RESTRICTED_USER=692, RETENTION=693, 
		ROBUST=694, ROOT=695, ROUTE=696, ROW=697, ROW_NUMBER=698, ROWGUID=699, 
		ROWS=700, SAMPLE=701, SCHEMABINDING=702, SCOPED=703, SCROLL=704, SCROLL_LOCKS=705, 
		SEARCH=706, SECONDARY=707, SECONDARY_ONLY=708, SECONDARY_ROLE=709, SECONDS=710, 
		SECRET=711, SECURITY_LOG=712, SEEDING_MODE=713, SELF=714, SEMI_SENSITIVE=715, 
		SEND=716, SENT=717, SERIALIZABLE=718, SESSION_TIMEOUT=719, SETERROR=720, 
		SHARE=721, SHOWPLAN=722, SIGNATURE=723, SIMPLE=724, SINGLE_USER=725, SIZE=726, 
		SMALLINT=727, SNAPSHOT=728, SPATIAL_WINDOW_MAX_CELLS=729, STANDBY=730, 
		START_DATE=731, STATIC=732, STATS_STREAM=733, STATUS=734, STDEV=735, STDEVP=736, 
		STOPLIST=737, STUFF=738, SUBJECT=739, SUM=740, SUSPEND=741, SYMMETRIC=742, 
		SYNCHRONOUS_COMMIT=743, SYNONYM=744, TAKE=745, TARGET_RECOVERY_TIME=746, 
		TB=747, TEXTIMAGE_ON=748, THROW=749, TIES=750, TIME=751, TIMEOUT=752, 
		TIMER=753, TINYINT=754, TORN_PAGE_DETECTION=755, TRANSFORM_NOISE_WORDS=756, 
		TRIPLE_DES=757, TRIPLE_DES_3KEY=758, TRUSTWORTHY=759, TRY=760, TSQL=761, 
		TWO_DIGIT_YEAR_CUTOFF=762, TYPE=763, TYPE_WARNING=764, UNBOUNDED=765, 
		UNCOMMITTED=766, UNKNOWN=767, UNLIMITED=768, USING=769, VALID_XML=770, 
		VALIDATION=771, VALUE=772, VAR=773, VARP=774, VIEW_METADATA=775, VIEWS=776, 
		WAIT=777, WELL_FORMED_XML=778, WITHOUT_ARRAY_WRAPPER=779, WORK=780, WORKLOAD=781, 
		XML=782, XMLDATA=783, XMLNAMESPACES=784, XMLSCHEMA=785, XSINIL=786, DOLLAR_ACTION=787, 
		SPACE=788, COMMENT=789, LINE_COMMENT=790, DOUBLE_QUOTE_ID=791, SINGLE_QUOTE=792, 
		SQUARE_BRACKET_ID=793, LOCAL_ID=794, DECIMAL=795, ID=796, QUOTED_URL=797, 
		QUOTED_HOST_AND_PORT=798, STRING=799, BINARY=800, FLOAT=801, REAL=802, 
		EQUAL=803, GREATER=804, LESS=805, EXCLAMATION=806, PLUS_ASSIGN=807, MINUS_ASSIGN=808, 
		MULT_ASSIGN=809, DIV_ASSIGN=810, MOD_ASSIGN=811, AND_ASSIGN=812, XOR_ASSIGN=813, 
		OR_ASSIGN=814, DOUBLE_BAR=815, DOT=816, UNDERLINE=817, AT=818, SHARP=819, 
		DOLLAR=820, LR_BRACKET=821, RR_BRACKET=822, COMMA=823, SEMI=824, COLON=825, 
		STAR=826, DIVIDE=827, MODULE=828, PLUS=829, MINUS=830, BIT_NOT=831, BIT_OR=832, 
		BIT_AND=833, BIT_XOR=834, IPV4_OCTECT=835;
	public static final int
		RULE_select_list = 0, RULE_select_list_elem = 1, RULE_as_column_alias = 2, 
		RULE_column_alias = 3, RULE_column_elem = 4, RULE_asterisk = 5, RULE_search_condition = 6, 
		RULE_search_condition_and = 7, RULE_search_condition_not = 8, RULE_predicate = 9, 
		RULE_expression_list = 10, RULE_expression = 11, RULE_function_call = 12, 
		RULE_aggregate_windowed_function = 13, RULE_func_proc_name = 14, RULE_full_column_name = 15, 
		RULE_table_name = 16, RULE_unary_operator_expression = 17, RULE_bracket_expression = 18, 
		RULE_constant_expression = 19, RULE_comparison_operator = 20, RULE_assignment_operator = 21, 
		RULE_null_notnull = 22, RULE_constant = 23, RULE_sign = 24, RULE_id = 25;
	private static String[] makeRuleNames() {
		return new String[] {
			"select_list", "select_list_elem", "as_column_alias", "column_alias", 
			"column_elem", "asterisk", "search_condition", "search_condition_and", 
			"search_condition_not", "predicate", "expression_list", "expression", 
			"function_call", "aggregate_windowed_function", "func_proc_name", "full_column_name", 
			"table_name", "unary_operator_expression", "bracket_expression", "constant_expression", 
			"comparison_operator", "assignment_operator", "null_notnull", "constant", 
			"sign", "id"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, "'ABSENT'", "'ADD'", "'AES'", "'ALL'", "'ALLOW_CONNECTIONS'", "'ALLOW_MULTIPLE_EVENT_LOSS'", 
			"'ALLOW_SINGLE_EVENT_LOSS'", "'ALTER'", null, "'ANONYMOUS'", "'ANY'", 
			"'APPEND'", "'APPLICATION'", null, null, "'ASYMMETRIC'", "'ASYNCHRONOUS_COMMIT'", 
			"'AUTHORIZATION'", "'AUTHENTICATION'", "'AUTOMATED_BACKUP_PREFERENCE'", 
			"'AUTOMATIC'", "'AVAILABILITY_MODE'", "'\\'", "'BACKUP'", "'BEFORE'", 
			"'BEGIN'", "'BETWEEN'", "'BLOCK'", "'BLOCKSIZE'", "'BLOCKING_HIERARCHY'", 
			"'BREAK'", "'BROWSE'", "'BUFFER'", "'BUFFERCOUNT'", "'BULK'", null, "'CACHE'", 
			"'CALLED'", "'CASCADE'", "'CASE'", "'CERTIFICATE'", "'CHANGETABLE'", 
			"'CHANGES'", "'CHECK'", "'CHECKPOINT'", "'CHECK_POLICY'", "'CHECK_EXPIRATION'", 
			"'CLASSIFIER_FUNCTION'", "'CLOSE'", "'CLUSTER'", "'CLUSTERED'", "'COALESCE'", 
			"'COLLATE'", "'COLUMN'", "'COMPRESSION'", "'COMMIT'", "'COMPUTE'", "'CONFIGURATION'", 
			"'CONSTRAINT'", "'CONTAINMENT'", "'CONTAINS'", "'CONTAINSTABLE'", "'CONTEXT'", 
			"'CONTINUE'", "'CONTINUE_AFTER_ERROR'", "'CONTRACT'", "'CONTRACT_NAME'", 
			"'CONVERSATION'", null, "'COPY_ONLY'", "'CREATE'", "'CROSS'", "'CURRENT'", 
			"'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", 
			"'CURSOR'", "'CYCLE'", "'DATA'", "'DATA_COMPRESSION'", "'DATA_SOURCE'", 
			"'DATABASE'", "'DATABASE_MIRRORING'", "'DBCC'", "'DEALLOCATE'", "'DECLARE'", 
			"'DEFAULT'", "'DEFAULT_DATABASE'", "'DEFAULT_SCHEMA'", "'DELETE'", "'DENY'", 
			"'DESC'", "'DIAGNOSTICS'", "'DIFFERENTIAL'", "'DISK'", "'DISTINCT'", 
			"'DISTRIBUTED'", "'DOUBLE'", "'\\\\'", "'//'", "'DROP'", "'DTC_SUPPORT'", 
			"'DUMP'", "'ELSE'", "'ENABLED'", "'END'", "'ENDPOINT'", "'ERRLVL'", "'ESCAPE'", 
			"'ERROR'", "'EVENT'", null, "'EVENT_RETENTION_MODE'", "'EXCEPT'", "'EXECUTABLE_FILE'", 
			null, "'EXISTS'", "'EXPIREDATE'", "'EXIT'", "'EXTENSION'", "'EXTERNAL'", 
			"'EXTERNAL_ACCESS'", "'FAILOVER'", "'FAILURECONDITIONLEVEL'", "'FAN_IN'", 
			"'FETCH'", "'FILE'", "'FILENAME'", "'FILLFACTOR'", "'FILE_SNAPSHOT'", 
			"'FOR'", "'FORCESEEK'", "'FORCE_SERVICE_ALLOW_DATA_LOSS'", "'FOREIGN'", 
			"'FREETEXT'", "'FREETEXTTABLE'", "'FROM'", "'FULL'", "'FUNCTION'", "'GET'", 
			"'GOTO'", "'GOVERNOR'", "'GRANT'", "'GROUP'", "'HAVING'", "'HASHED'", 
			"'HEALTHCHECKTIMEOUT'", "'IDENTITY'", "'IDENTITYCOL'", "'IDENTITY_INSERT'", 
			"'IF'", null, "'INCLUDE'", "'INCREMENT'", "'INDEX'", "'INFINITE'", "'INIT'", 
			"'INNER'", "'INSERT'", "'INSTEAD'", "'INTERSECT'", "'INTO'", null, null, 
			null, null, "'JOIN'", "'KERBEROS'", "'KEY'", "'KEY_PATH'", "'KEY_STORE_PROVIDER_NAME'", 
			"'KILL'", "'LANGUAGE'", "'LEFT'", "'LIBRARY'", "'LIFETIME'", null, null, 
			null, "'LINENO'", "'LINUX'", "'LISTENER_IP'", "'LISTENER_PORT'", "'LOAD'", 
			"'LOCAL_SERVICE_NAME'", "'LOG'", "'MATCHED'", "'MASTER'", "'MAX_MEMORY'", 
			"'MAXTRANSFER'", "'MAXVALUE'", "'MAX_DISPATCH_LATENCY'", "'MAX_EVENT_SIZE'", 
			"'MAX_SIZE'", "'MAX_OUTSTANDING_IO_PER_VOLUME'", "'MEDIADESCRIPTION'", 
			"'MEDIANAME'", "'MEMBER'", "'MEMORY_PARTITION_MODE'", "'MERGE'", "'MESSAGE_FORWARDING'", 
			"'MESSAGE_FORWARD_SIZE'", "'MINVALUE'", "'MIRROR'", "'MUST_CHANGE'", 
			"'NATIONAL'", "'NEGOTIATE'", "'NOCHECK'", "'NOFORMAT'", "'NOINIT'", "'NONCLUSTERED'", 
			"'NONE'", "'NOREWIND'", "'NOSKIP'", "'NOUNLOAD'", "'NO_CHECKSUM'", "'NO_COMPRESSION'", 
			"'NO_EVENT_LOSS'", null, "'NOTIFICATION'", "'NTLM'", null, "'NULLIF'", 
			"'OF'", "'OFF'", "'OFFSETS'", "'OLD_PASSWORD'", null, "'ON_FAILURE'", 
			"'OPEN'", "'OPENDATASOURCE'", "'OPENQUERY'", "'OPENROWSET'", "'OPENXML'", 
			"'OPTION'", null, null, null, "'OVER'", "'PAGE'", "'PARAM_NODE'", "'PARTIAL'", 
			"'PASSWORD'", "'PERCENT'", "'PERMISSION_SET'", "'PER_CPU'", "'PER_DB'", 
			"'PER_NODE'", "'PIVOT'", "'PLAN'", "'PLATFORM'", "'POLICY'", "'PRECISION'", 
			"'PREDICATE'", "'PRIMARY'", "'PRINT'", "'PROC'", "'PROCEDURE'", "'PROCESS'", 
			"'PUBLIC'", "'PYTHON'", "'R'", "'RAISERROR'", "'RAW'", "'READ'", "'READTEXT'", 
			"'READ_WRITE_FILEGROUPS'", "'RECONFIGURE'", "'REFERENCES'", "'REGENERATE'", 
			"'RELATED_CONVERSATION'", "'RELATED_CONVERSATION_GROUP'", "'REPLICATION'", 
			"'REQUIRED'", "'RESET'", "'RESTART'", "'RESTORE'", "'RESTRICT'", "'RESUME'", 
			"'RETAINDAYS'", "'RETURN'", "'RETURNS'", "'REVERT'", "'REVOKE'", "'REWIND'", 
			"'RIGHT'", "'ROLLBACK'", "'ROLE'", "'ROWCOUNT'", "'ROWGUIDCOL'", "'RSA_512'", 
			"'RSA_1024'", "'RSA_2048'", "'RSA_3072'", "'RSA_4096'", "'SAFETY'", "'RULE'", 
			"'SAFE'", "'SAVE'", "'SCHEDULER'", "'SCHEMA'", "'SCHEME'", "'SECURITY'", 
			"'SECURITYAUDIT'", "'SELECT'", "'SEMANTICKEYPHRASETABLE'", "'SEMANTICSIMILARITYDETAILSTABLE'", 
			"'SEMANTICSIMILARITYTABLE'", "'SEQUENCE'", "'SERVER'", "'SERVICE'", "'SERVICE_BROKER'", 
			"'SERVICE_NAME'", "'SESSION'", "'SESSION_USER'", "'SET'", "'SETUSER'", 
			"'SHUTDOWN'", "'SID'", "'SKIP'", "'SOFTNUMA'", "'SOME'", "'SOURCE'", 
			"'SPECIFICATION'", "'SPLIT'", "'SQLDUMPERFLAGS'", "'SQLDUMPERPATH'", 
			"'SQLDUMPERTIMEOUTS'", "'STATISTICS'", "'STATE'", "'STATS'", "'START'", 
			"'STARTED'", "'STARTUP_STATE'", "'STOP'", "'STOPPED'", "'STOP_ON_ERROR'", 
			"'SUPPORTED'", "'SYSTEM'", "'SYSTEM_USER'", "'TABLE'", "'TABLESAMPLE'", 
			"'TAPE'", "'TARGET'", "'TCP'", "'TEXTSIZE'", "'THEN'", "'TO'", null, 
			"'TRACK_CAUSALITY'", "'TRAN'", "'TRANSACTION'", "'TRANSFER'", "'TRIGGER'", 
			"'TRUNCATE'", "'TSEQUAL'", "'UNCHECKED'", "'UNION'", "'UNIQUE'", "'UNLOCK'", 
			"'UNPIVOT'", "'UNSAFE'", "'UPDATE'", "'UPDATETEXT'", "'URL'", "'USE'", 
			"'USED'", "'USER'", "'VALUES'", "'VARYING'", "'VERBOSELOGGING'", "'VIEW'", 
			"'VISIBILITY'", "'WAITFOR'", "'WHEN'", "'WHERE'", "'WHILE'", "'WINDOWS'", 
			"'WITH'", "'WITHIN'", "'WITHOUT'", "'WITNESS'", "'WRITETEXT'", "'ABSOLUTE'", 
			"'ACCENT_SENSITIVITY'", "'ACTION'", "'ACTIVATION'", "'ACTIVE'", "'ADDRESS'", 
			"'AES_128'", "'AES_192'", "'AES_256'", "'AFFINITY'", "'AFTER'", "'AGGREGATE'", 
			"'ALGORITHM'", "'ALLOW_ENCRYPTED_VALUE_MODIFICATIONS'", "'ALLOW_SNAPSHOT_ISOLATION'", 
			"'ALLOWED'", "'ANSI_NULL_DEFAULT'", "'ANSI_NULLS'", "'ANSI_PADDING'", 
			"'ANSI_WARNINGS'", "'APPLICATION_LOG'", "'APPLY'", "'ARITHABORT'", "'ASSEMBLY'", 
			"'AUDIT'", "'AUDIT_GUID'", "'AUTO'", "'AUTO_CLEANUP'", "'AUTO_CLOSE'", 
			"'AUTO_CREATE_STATISTICS'", "'AUTO_SHRINK'", "'AUTO_UPDATE_STATISTICS'", 
			"'AUTO_UPDATE_STATISTICS_ASYNC'", "'AVAILABILITY'", "'AVG'", "'BACKUP_PRIORITY'", 
			"'BEGIN_DIALOG'", "'BIGINT'", "'BINARY BASE64'", "'BINARY_CHECKSUM'", 
			"'BINDING'", "'BLOB_STORAGE'", "'BROKER'", "'BROKER_INSTANCE'", "'BULK_LOGGED'", 
			"'CALLER'", "'CAP_CPU_PERCENT'", null, "'CATALOG'", "'CATCH'", "'CHANGE_RETENTION'", 
			"'CHANGE_TRACKING'", "'CHECKSUM'", "'CHECKSUM_AGG'", "'CLEANUP'", "'COLLECTION'", 
			"'COLUMN_MASTER_KEY'", "'COMMITTED'", "'COMPATIBILITY_LEVEL'", "'CONCAT'", 
			"'CONCAT_NULL_YIELDS_NULL'", "'CONTENT'", "'CONTROL'", "'COOKIE'", null, 
			"'COUNT_BIG'", "'COUNTER'", "'CPU'", "'CREATE_NEW'", "'CREATION_DISPOSITION'", 
			"'CREDENTIAL'", "'CRYPTOGRAPHIC'", "'CURSOR_CLOSE_ON_COMMIT'", "'CURSOR_DEFAULT'", 
			"'DATE_CORRELATION_OPTIMIZATION'", "'DATEADD'", "'DATEDIFF'", "'DATENAME'", 
			"'DATEPART'", "'DAYS'", "'DB_CHAINING'", "'DB_FAILOVER'", "'DECRYPTION'", 
			null, "'DEFAULT_FULLTEXT_LANGUAGE'", "'DEFAULT_LANGUAGE'", "'DELAY'", 
			"'DELAYED_DURABILITY'", "'DELETED'", "'DENSE_RANK'", "'DEPENDENTS'", 
			"'DES'", "'DESCRIPTION'", "'DESX'", "'DHCP'", "'DIALOG'", "'DIRECTORY_NAME'", 
			"'DISABLE'", "'DISABLE_BROKER'", "'DISABLED'", null, "'DOCUMENT'", "'DYNAMIC'", 
			"'ELEMENTS'", "'EMERGENCY'", "'EMPTY'", "'ENABLE'", "'ENABLE_BROKER'", 
			"'ENCRYPTED_VALUE'", "'ENCRYPTION'", "'ENDPOINT_URL'", "'ERROR_BROKER_CONVERSATIONS'", 
			"'EXCLUSIVE'", "'EXECUTABLE'", "'EXIST'", "'EXPAND'", "'EXPIRY_DATE'", 
			"'EXPLICIT'", "'FAIL_OPERATION'", "'FAILOVER_MODE'", "'FAILURE'", "'FAILURE_CONDITION_LEVEL'", 
			"'FAST'", "'FAST_FORWARD'", "'FILEGROUP'", "'FILEGROWTH'", "'FILEPATH'", 
			"'FILESTREAM'", "'FILTER'", null, "'FIRST_VALUE'", "'FOLLOWING'", "'FORCE'", 
			"'FORCE_FAILOVER_ALLOW_DATA_LOSS'", "'FORCED'", "'FORMAT'", "'FORWARD_ONLY'", 
			"'FULLSCAN'", "'FULLTEXT'", "'GB'", "'GETDATE'", "'GETUTCDATE'", "'GLOBAL'", 
			"'GO'", "'GROUP_MAX_REQUESTS'", "'GROUPING'", "'GROUPING_ID'", "'HADR'", 
			"'HASH'", "'HEALTH_CHECK_TIMEOUT'", "'HIGH'", "'HONOR_BROKER_PRIORITY'", 
			"'HOURS'", "'IDENTITY_VALUE'", "'IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX'", 
			"'IMMEDIATE'", "'IMPERSONATE'", "'IMPORTANCE'", "'INCLUDE_NULL_VALUES'", 
			"'INCREMENTAL'", "'INITIATOR'", "'INPUT'", "'INSENSITIVE'", "'INSERTED'", 
			"'INT'", "'IP'", "'ISOLATION'", "'JSON'", "'KB'", "'KEEP'", "'KEEPFIXED'", 
			"'KEY_SOURCE'", "'KEYS'", "'KEYSET'", "'LAG'", "'LAST'", "'LAST_VALUE'", 
			"'LEAD'", "'LEVEL'", "'LIST'", "'LISTENER'", "'LISTENER_URL'", "'LOB_COMPACTION'", 
			"'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCK_ESCALATION'", "'LOGIN'", "'LOOP'", 
			"'LOW'", "'MANUAL'", "'MARK'", "'MATERIALIZED'", null, "'MAX_CPU_PERCENT'", 
			"'MAX_DOP'", "'MAX_FILES'", "'MAX_IOPS_PER_VOLUME'", "'MAX_MEMORY_PERCENT'", 
			"'MAX_PROCESSES'", "'MAX_QUEUE_READERS'", "'MAX_ROLLOVER_FILES'", "'MAXDOP'", 
			"'MAXRECURSION'", "'MAXSIZE'", "'MB'", "'MEDIUM'", "'MEMORY_OPTIMIZED_DATA'", 
			"'MESSAGE'", null, "'MIN_ACTIVE_ROWVERSION'", "'MIN_CPU_PERCENT'", "'MIN_IOPS_PER_VOLUME'", 
			"'MIN_MEMORY_PERCENT'", "'MINUTES'", "'MIRROR_ADDRESS'", "'MIXED_PAGE_ALLOCATION'", 
			"'MODE'", "'MODIFY'", "'MOVE'", "'MULTI_USER'", "'NAME'", "'NESTED_TRIGGERS'", 
			"'NEW_ACCOUNT'", "'NEW_BROKER'", "'NEW_PASSWORD'", "'NEXT'", "'NO'", 
			"'NO_TRUNCATE'", "'NO_WAIT'", "'NOCOUNT'", "'NODES'", "'NOEXPAND'", "'NON_TRANSACTED_ACCESS'", 
			"'NORECOMPUTE'", "'NORECOVERY'", "'NOWAIT'", "'NTILE'", "'NUMANODE'", 
			"'NUMBER'", "'NUMERIC_ROUNDABORT'", "'OBJECT'", "'OFFLINE'", "'OFFSET'", 
			"'OLD_ACCOUNT'", "'ONLINE'", "'ONLY'", "'OPEN_EXISTING'", "'OPTIMISTIC'", 
			"'OPTIMIZE'", "'OUT'", "'OUTPUT'", "'OWNER'", "'PAGE_VERIFY'", "'PARAMETERIZATION'", 
			"'PARTITION'", "'PARTITIONS'", "'PARTNER'", "'PATH'", "'POISON_MESSAGE_HANDLING'", 
			"'POOL'", "'PORT'", "'PRECEDING'", "'PRIMARY_ROLE'", "'PRIOR'", "'PRIORITY'", 
			"'PRIORITY_LEVEL'", "'PRIVATE'", "'PRIVATE_KEY'", "'PRIVILEGES'", "'PROCEDURE_NAME'", 
			"'PROPERTY'", "'PROVIDER'", "'PROVIDER_KEY_NAME'", "'QUERY'", "'QUEUE'", 
			"'QUEUE_DELAY'", "'QUOTED_IDENTIFIER'", "'RANGE'", "'RANK'", "'RC2'", 
			"'RC4'", "'RC4_128'", "'READ_COMMITTED_SNAPSHOT'", "'READ_ONLY'", "'READ_ONLY_ROUTING_LIST'", 
			"'READ_WRITE'", "'READONLY'", "'REBUILD'", "'RECEIVE'", "'RECOMPILE'", 
			"'RECOVERY'", "'RECURSIVE_TRIGGERS'", "'RELATIVE'", "'REMOTE'", "'REMOTE_SERVICE_NAME'", 
			"'REMOVE'", "'REORGANIZE'", "'REPEATABLE'", "'REPLICA'", "'REQUEST_MAX_CPU_TIME_SEC'", 
			"'REQUEST_MAX_MEMORY_GRANT_PERCENT'", "'REQUEST_MEMORY_GRANT_TIMEOUT_SEC'", 
			"'REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT'", "'RESERVE_DISK_SPACE'", 
			"'RESOURCE'", "'RESOURCE_MANAGER_LOCATION'", "'RESTRICTED_USER'", "'RETENTION'", 
			"'ROBUST'", "'ROOT'", "'ROUTE'", "'ROW'", "'ROW_NUMBER'", "'ROWGUID'", 
			"'ROWS'", "'SAMPLE'", "'SCHEMABINDING'", "'SCOPED'", "'SCROLL'", "'SCROLL_LOCKS'", 
			"'SEARCH'", "'SECONDARY'", "'SECONDARY_ONLY'", "'SECONDARY_ROLE'", "'SECONDS'", 
			"'SECRET'", "'SECURITY_LOG'", "'SEEDING_MODE'", "'SELF'", "'SEMI_SENSITIVE'", 
			"'SEND'", "'SENT'", "'SERIALIZABLE'", "'SESSION_TIMEOUT'", "'SETERROR'", 
			"'SHARE'", "'SHOWPLAN'", "'SIGNATURE'", "'SIMPLE'", "'SINGLE_USER'", 
			"'SIZE'", "'SMALLINT'", "'SNAPSHOT'", "'SPATIAL_WINDOW_MAX_CELLS'", "'STANDBY'", 
			"'START_DATE'", "'STATIC'", "'STATS_STREAM'", "'STATUS'", "'STDEV'", 
			"'STDEVP'", "'STOPLIST'", "'STUFF'", "'SUBJECT'", "'SUM'", "'SUSPEND'", 
			"'SYMMETRIC'", "'SYNCHRONOUS_COMMIT'", "'SYNONYM'", "'TAKE'", "'TARGET_RECOVERY_TIME'", 
			"'TB'", "'TEXTIMAGE_ON'", "'THROW'", "'TIES'", "'TIME'", "'TIMEOUT'", 
			"'TIMER'", "'TINYINT'", "'TORN_PAGE_DETECTION'", "'TRANSFORM_NOISE_WORDS'", 
			"'TRIPLE_DES'", "'TRIPLE_DES_3KEY'", "'TRUSTWORTHY'", "'TRY'", "'TSQL'", 
			"'TWO_DIGIT_YEAR_CUTOFF'", "'TYPE'", "'TYPE_WARNING'", "'UNBOUNDED'", 
			"'UNCOMMITTED'", "'UNKNOWN'", "'UNLIMITED'", "'USING'", "'VALID_XML'", 
			"'VALIDATION'", "'VALUE'", "'VAR'", "'VARP'", "'VIEW_METADATA'", "'VIEWS'", 
			"'WAIT'", "'WELL_FORMED_XML'", "'WITHOUT_ARRAY_WRAPPER'", "'WORK'", "'WORKLOAD'", 
			"'XML'", "'XMLDATA'", "'XMLNAMESPACES'", "'XMLSCHEMA'", "'XSINIL'", "'$ACTION'", 
			null, null, null, null, "'''", null, null, null, null, null, null, null, 
			null, null, null, "'='", "'>'", "'<'", "'!'", "'+='", "'-='", "'*='", 
			"'/='", "'%='", "'&='", "'^='", "'|='", "'||'", "'.'", "'_'", "'@'", 
			"'#'", "'$'", "'('", "')'", "','", "';'", "':'", "'*'", "'/'", "'%'", 
			"'+'", "'-'", "'~'", "'|'", "'&'", "'^'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, "ABSENT", "ADD", "AES", "ALL", "ALLOW_CONNECTIONS", "ALLOW_MULTIPLE_EVENT_LOSS", 
			"ALLOW_SINGLE_EVENT_LOSS", "ALTER", "AND", "ANONYMOUS", "ANY", "APPEND", 
			"APPLICATION", "AS", "ASC", "ASYMMETRIC", "ASYNCHRONOUS_COMMIT", "AUTHORIZATION", 
			"AUTHENTICATION", "AUTOMATED_BACKUP_PREFERENCE", "AUTOMATIC", "AVAILABILITY_MODE", 
			"BACKSLASH", "BACKUP", "BEFORE", "BEGIN", "BETWEEN", "BLOCK", "BLOCKSIZE", 
			"BLOCKING_HIERARCHY", "BREAK", "BROWSE", "BUFFER", "BUFFERCOUNT", "BULK", 
			"BY", "CACHE", "CALLED", "CASCADE", "CASE", "CERTIFICATE", "CHANGETABLE", 
			"CHANGES", "CHECK", "CHECKPOINT", "CHECK_POLICY", "CHECK_EXPIRATION", 
			"CLASSIFIER_FUNCTION", "CLOSE", "CLUSTER", "CLUSTERED", "COALESCE", "COLLATE", 
			"COLUMN", "COMPRESSION", "COMMIT", "COMPUTE", "CONFIGURATION", "CONSTRAINT", 
			"CONTAINMENT", "CONTAINS", "CONTAINSTABLE", "CONTEXT", "CONTINUE", "CONTINUE_AFTER_ERROR", 
			"CONTRACT", "CONTRACT_NAME", "CONVERSATION", "CONVERT", "COPY_ONLY", 
			"CREATE", "CROSS", "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", 
			"CURRENT_USER", "CURSOR", "CYCLE", "DATA", "DATA_COMPRESSION", "DATA_SOURCE", 
			"DATABASE", "DATABASE_MIRRORING", "DBCC", "DEALLOCATE", "DECLARE", "DEFAULT", 
			"DEFAULT_DATABASE", "DEFAULT_SCHEMA", "DELETE", "DENY", "DESC", "DIAGNOSTICS", 
			"DIFFERENTIAL", "DISK", "DISTINCT", "DISTRIBUTED", "DOUBLE", "DOUBLE_BACK_SLASH", 
			"DOUBLE_FORWARD_SLASH", "DROP", "DTC_SUPPORT", "DUMP", "ELSE", "ENABLED", 
			"END", "ENDPOINT", "ERRLVL", "ESCAPE", "ERROR", "EVENT", "EVENTDATA", 
			"EVENT_RETENTION_MODE", "EXCEPT", "EXECUTABLE_FILE", "EXECUTE", "EXISTS", 
			"EXPIREDATE", "EXIT", "EXTENSION", "EXTERNAL", "EXTERNAL_ACCESS", "FAILOVER", 
			"FAILURECONDITIONLEVEL", "FAN_IN", "FETCH", "FILE", "FILENAME", "FILLFACTOR", 
			"FILE_SNAPSHOT", "FOR", "FORCESEEK", "FORCE_SERVICE_ALLOW_DATA_LOSS", 
			"FOREIGN", "FREETEXT", "FREETEXTTABLE", "FROM", "FULL", "FUNCTION", "GET", 
			"GOTO", "GOVERNOR", "GRANT", "GROUP", "HAVING", "HASHED", "HEALTHCHECKTIMEOUT", 
			"IDENTITY", "IDENTITYCOL", "IDENTITY_INSERT", "IF", "IN", "INCLUDE", 
			"INCREMENT", "INDEX", "INFINITE", "INIT", "INNER", "INSERT", "INSTEAD", 
			"INTERSECT", "INTO", "IPV4_ADDR", "IPV6_ADDR", "IS", "ISNULL", "JOIN", 
			"KERBEROS", "KEY", "KEY_PATH", "KEY_STORE_PROVIDER_NAME", "KILL", "LANGUAGE", 
			"LEFT", "LIBRARY", "LIFETIME", "LIKE", "RLIKE", "LLIKE", "LINENO", "LINUX", 
			"LISTENER_IP", "LISTENER_PORT", "LOAD", "LOCAL_SERVICE_NAME", "LOG", 
			"MATCHED", "MASTER", "MAX_MEMORY", "MAXTRANSFER", "MAXVALUE", "MAX_DISPATCH_LATENCY", 
			"MAX_EVENT_SIZE", "MAX_SIZE", "MAX_OUTSTANDING_IO_PER_VOLUME", "MEDIADESCRIPTION", 
			"MEDIANAME", "MEMBER", "MEMORY_PARTITION_MODE", "MERGE", "MESSAGE_FORWARDING", 
			"MESSAGE_FORWARD_SIZE", "MINVALUE", "MIRROR", "MUST_CHANGE", "NATIONAL", 
			"NEGOTIATE", "NOCHECK", "NOFORMAT", "NOINIT", "NONCLUSTERED", "NONE", 
			"NOREWIND", "NOSKIP", "NOUNLOAD", "NO_CHECKSUM", "NO_COMPRESSION", "NO_EVENT_LOSS", 
			"NOT", "NOTIFICATION", "NTLM", "NULL", "NULLIF", "OF", "OFF", "OFFSETS", 
			"OLD_PASSWORD", "ON", "ON_FAILURE", "OPEN", "OPENDATASOURCE", "OPENQUERY", 
			"OPENROWSET", "OPENXML", "OPTION", "OR", "ORDER", "OUTER", "OVER", "PAGE", 
			"PARAM_NODE", "PARTIAL", "PASSWORD", "PERCENT", "PERMISSION_SET", "PER_CPU", 
			"PER_DB", "PER_NODE", "PIVOT", "PLAN", "PLATFORM", "POLICY", "PRECISION", 
			"PREDICATE", "PRIMARY", "PRINT", "PROC", "PROCEDURE", "PROCESS", "PUBLIC", 
			"PYTHON", "R", "RAISERROR", "RAW", "READ", "READTEXT", "READ_WRITE_FILEGROUPS", 
			"RECONFIGURE", "REFERENCES", "REGENERATE", "RELATED_CONVERSATION", "RELATED_CONVERSATION_GROUP", 
			"REPLICATION", "REQUIRED", "RESET", "RESTART", "RESTORE", "RESTRICT", 
			"RESUME", "RETAINDAYS", "RETURN", "RETURNS", "REVERT", "REVOKE", "REWIND", 
			"RIGHT", "ROLLBACK", "ROLE", "ROWCOUNT", "ROWGUIDCOL", "RSA_512", "RSA_1024", 
			"RSA_2048", "RSA_3072", "RSA_4096", "SAFETY", "RULE", "SAFE", "SAVE", 
			"SCHEDULER", "SCHEMA", "SCHEME", "SECURITY", "SECURITYAUDIT", "SELECT", 
			"SEMANTICKEYPHRASETABLE", "SEMANTICSIMILARITYDETAILSTABLE", "SEMANTICSIMILARITYTABLE", 
			"SEQUENCE", "SERVER", "SERVICE", "SERVICE_BROKER", "SERVICE_NAME", "SESSION", 
			"SESSION_USER", "SET", "SETUSER", "SHUTDOWN", "SID", "SKIP_KEYWORD", 
			"SOFTNUMA", "SOME", "SOURCE", "SPECIFICATION", "SPLIT", "SQLDUMPERFLAGS", 
			"SQLDUMPERPATH", "SQLDUMPERTIMEOUT", "STATISTICS", "STATE", "STATS", 
			"START", "STARTED", "STARTUP_STATE", "STOP", "STOPPED", "STOP_ON_ERROR", 
			"SUPPORTED", "SYSTEM", "SYSTEM_USER", "TABLE", "TABLESAMPLE", "TAPE", 
			"TARGET", "TCP", "TEXTSIZE", "THEN", "TO", "TOP", "TRACK_CAUSALITY", 
			"TRAN", "TRANSACTION", "TRANSFER", "TRIGGER", "TRUNCATE", "TSEQUAL", 
			"UNCHECKED", "UNION", "UNIQUE", "UNLOCK", "UNPIVOT", "UNSAFE", "UPDATE", 
			"UPDATETEXT", "URL", "USE", "USED", "USER", "VALUES", "VARYING", "VERBOSELOGGING", 
			"VIEW", "VISIBILITY", "WAITFOR", "WHEN", "WHERE", "WHILE", "WINDOWS", 
			"WITH", "WITHIN", "WITHOUT", "WITNESS", "WRITETEXT", "ABSOLUTE", "ACCENT_SENSITIVITY", 
			"ACTION", "ACTIVATION", "ACTIVE", "ADDRESS", "AES_128", "AES_192", "AES_256", 
			"AFFINITY", "AFTER", "AGGREGATE", "ALGORITHM", "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS", 
			"ALLOW_SNAPSHOT_ISOLATION", "ALLOWED", "ANSI_NULL_DEFAULT", "ANSI_NULLS", 
			"ANSI_PADDING", "ANSI_WARNINGS", "APPLICATION_LOG", "APPLY", "ARITHABORT", 
			"ASSEMBLY", "AUDIT", "AUDIT_GUID", "AUTO", "AUTO_CLEANUP", "AUTO_CLOSE", 
			"AUTO_CREATE_STATISTICS", "AUTO_SHRINK", "AUTO_UPDATE_STATISTICS", "AUTO_UPDATE_STATISTICS_ASYNC", 
			"AVAILABILITY", "AVG", "BACKUP_PRIORITY", "BEGIN_DIALOG", "BIGINT", "BINARY_BASE64", 
			"BINARY_CHECKSUM", "BINDING", "BLOB_STORAGE", "BROKER", "BROKER_INSTANCE", 
			"BULK_LOGGED", "CALLER", "CAP_CPU_PERCENT", "CAST", "CATALOG", "CATCH", 
			"CHANGE_RETENTION", "CHANGE_TRACKING", "CHECKSUM", "CHECKSUM_AGG", "CLEANUP", 
			"COLLECTION", "COLUMN_MASTER_KEY", "COMMITTED", "COMPATIBILITY_LEVEL", 
			"CONCAT", "CONCAT_NULL_YIELDS_NULL", "CONTENT", "CONTROL", "COOKIE", 
			"COUNT", "COUNT_BIG", "COUNTER", "CPU", "CREATE_NEW", "CREATION_DISPOSITION", 
			"CREDENTIAL", "CRYPTOGRAPHIC", "CURSOR_CLOSE_ON_COMMIT", "CURSOR_DEFAULT", 
			"DATE_CORRELATION_OPTIMIZATION", "DATEADD", "DATEDIFF", "DATENAME", "DATEPART", 
			"DAYS", "DB_CHAINING", "DB_FAILOVER", "DECRYPTION", "DEFAULT_DOUBLE_QUOTE", 
			"DEFAULT_FULLTEXT_LANGUAGE", "DEFAULT_LANGUAGE", "DELAY", "DELAYED_DURABILITY", 
			"DELETED", "DENSE_RANK", "DEPENDENTS", "DES", "DESCRIPTION", "DESX", 
			"DHCP", "DIALOG", "DIRECTORY_NAME", "DISABLE", "DISABLE_BROKER", "DISABLED", 
			"DISK_DRIVE", "DOCUMENT", "DYNAMIC", "ELEMENTS", "EMERGENCY", "EMPTY", 
			"ENABLE", "ENABLE_BROKER", "ENCRYPTED_VALUE", "ENCRYPTION", "ENDPOINT_URL", 
			"ERROR_BROKER_CONVERSATIONS", "EXCLUSIVE", "EXECUTABLE", "EXIST", "EXPAND", 
			"EXPIRY_DATE", "EXPLICIT", "FAIL_OPERATION", "FAILOVER_MODE", "FAILURE", 
			"FAILURE_CONDITION_LEVEL", "FAST", "FAST_FORWARD", "FILEGROUP", "FILEGROWTH", 
			"FILEPATH", "FILESTREAM", "FILTER", "FIRST", "FIRST_VALUE", "FOLLOWING", 
			"FORCE", "FORCE_FAILOVER_ALLOW_DATA_LOSS", "FORCED", "FORMAT", "FORWARD_ONLY", 
			"FULLSCAN", "FULLTEXT", "GB", "GETDATE", "GETUTCDATE", "GLOBAL", "GO", 
			"GROUP_MAX_REQUESTS", "GROUPING", "GROUPING_ID", "HADR", "HASH", "HEALTH_CHECK_TIMEOUT", 
			"HIGH", "HONOR_BROKER_PRIORITY", "HOURS", "IDENTITY_VALUE", "IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX", 
			"IMMEDIATE", "IMPERSONATE", "IMPORTANCE", "INCLUDE_NULL_VALUES", "INCREMENTAL", 
			"INITIATOR", "INPUT", "INSENSITIVE", "INSERTED", "INT", "IP", "ISOLATION", 
			"JSON", "KB", "KEEP", "KEEPFIXED", "KEY_SOURCE", "KEYS", "KEYSET", "LAG", 
			"LAST", "LAST_VALUE", "LEAD", "LEVEL", "LIST", "LISTENER", "LISTENER_URL", 
			"LOB_COMPACTION", "LOCAL", "LOCATION", "LOCK", "LOCK_ESCALATION", "LOGIN", 
			"LOOP", "LOW", "MANUAL", "MARK", "MATERIALIZED", "MAX", "MAX_CPU_PERCENT", 
			"MAX_DOP", "MAX_FILES", "MAX_IOPS_PER_VOLUME", "MAX_MEMORY_PERCENT", 
			"MAX_PROCESSES", "MAX_QUEUE_READERS", "MAX_ROLLOVER_FILES", "MAXDOP", 
			"MAXRECURSION", "MAXSIZE", "MB", "MEDIUM", "MEMORY_OPTIMIZED_DATA", "MESSAGE", 
			"MIN", "MIN_ACTIVE_ROWVERSION", "MIN_CPU_PERCENT", "MIN_IOPS_PER_VOLUME", 
			"MIN_MEMORY_PERCENT", "MINUTES", "MIRROR_ADDRESS", "MIXED_PAGE_ALLOCATION", 
			"MODE", "MODIFY", "MOVE", "MULTI_USER", "NAME", "NESTED_TRIGGERS", "NEW_ACCOUNT", 
			"NEW_BROKER", "NEW_PASSWORD", "NEXT", "NO", "NO_TRUNCATE", "NO_WAIT", 
			"NOCOUNT", "NODES", "NOEXPAND", "NON_TRANSACTED_ACCESS", "NORECOMPUTE", 
			"NORECOVERY", "NOWAIT", "NTILE", "NUMANODE", "NUMBER", "NUMERIC_ROUNDABORT", 
			"OBJECT", "OFFLINE", "OFFSET", "OLD_ACCOUNT", "ONLINE", "ONLY", "OPEN_EXISTING", 
			"OPTIMISTIC", "OPTIMIZE", "OUT", "OUTPUT", "OWNER", "PAGE_VERIFY", "PARAMETERIZATION", 
			"PARTITION", "PARTITIONS", "PARTNER", "PATH", "POISON_MESSAGE_HANDLING", 
			"POOL", "PORT", "PRECEDING", "PRIMARY_ROLE", "PRIOR", "PRIORITY", "PRIORITY_LEVEL", 
			"PRIVATE", "PRIVATE_KEY", "PRIVILEGES", "PROCEDURE_NAME", "PROPERTY", 
			"PROVIDER", "PROVIDER_KEY_NAME", "QUERY", "QUEUE", "QUEUE_DELAY", "QUOTED_IDENTIFIER", 
			"RANGE", "RANK", "RC2", "RC4", "RC4_128", "READ_COMMITTED_SNAPSHOT", 
			"READ_ONLY", "READ_ONLY_ROUTING_LIST", "READ_WRITE", "READONLY", "REBUILD", 
			"RECEIVE", "RECOMPILE", "RECOVERY", "RECURSIVE_TRIGGERS", "RELATIVE", 
			"REMOTE", "REMOTE_SERVICE_NAME", "REMOVE", "REORGANIZE", "REPEATABLE", 
			"REPLICA", "REQUEST_MAX_CPU_TIME_SEC", "REQUEST_MAX_MEMORY_GRANT_PERCENT", 
			"REQUEST_MEMORY_GRANT_TIMEOUT_SEC", "REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT", 
			"RESERVE_DISK_SPACE", "RESOURCE", "RESOURCE_MANAGER_LOCATION", "RESTRICTED_USER", 
			"RETENTION", "ROBUST", "ROOT", "ROUTE", "ROW", "ROW_NUMBER", "ROWGUID", 
			"ROWS", "SAMPLE", "SCHEMABINDING", "SCOPED", "SCROLL", "SCROLL_LOCKS", 
			"SEARCH", "SECONDARY", "SECONDARY_ONLY", "SECONDARY_ROLE", "SECONDS", 
			"SECRET", "SECURITY_LOG", "SEEDING_MODE", "SELF", "SEMI_SENSITIVE", "SEND", 
			"SENT", "SERIALIZABLE", "SESSION_TIMEOUT", "SETERROR", "SHARE", "SHOWPLAN", 
			"SIGNATURE", "SIMPLE", "SINGLE_USER", "SIZE", "SMALLINT", "SNAPSHOT", 
			"SPATIAL_WINDOW_MAX_CELLS", "STANDBY", "START_DATE", "STATIC", "STATS_STREAM", 
			"STATUS", "STDEV", "STDEVP", "STOPLIST", "STUFF", "SUBJECT", "SUM", "SUSPEND", 
			"SYMMETRIC", "SYNCHRONOUS_COMMIT", "SYNONYM", "TAKE", "TARGET_RECOVERY_TIME", 
			"TB", "TEXTIMAGE_ON", "THROW", "TIES", "TIME", "TIMEOUT", "TIMER", "TINYINT", 
			"TORN_PAGE_DETECTION", "TRANSFORM_NOISE_WORDS", "TRIPLE_DES", "TRIPLE_DES_3KEY", 
			"TRUSTWORTHY", "TRY", "TSQL", "TWO_DIGIT_YEAR_CUTOFF", "TYPE", "TYPE_WARNING", 
			"UNBOUNDED", "UNCOMMITTED", "UNKNOWN", "UNLIMITED", "USING", "VALID_XML", 
			"VALIDATION", "VALUE", "VAR", "VARP", "VIEW_METADATA", "VIEWS", "WAIT", 
			"WELL_FORMED_XML", "WITHOUT_ARRAY_WRAPPER", "WORK", "WORKLOAD", "XML", 
			"XMLDATA", "XMLNAMESPACES", "XMLSCHEMA", "XSINIL", "DOLLAR_ACTION", "SPACE", 
			"COMMENT", "LINE_COMMENT", "DOUBLE_QUOTE_ID", "SINGLE_QUOTE", "SQUARE_BRACKET_ID", 
			"LOCAL_ID", "DECIMAL", "ID", "QUOTED_URL", "QUOTED_HOST_AND_PORT", "STRING", 
			"BINARY", "FLOAT", "REAL", "EQUAL", "GREATER", "LESS", "EXCLAMATION", 
			"PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", 
			"AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "DOUBLE_BAR", "DOT", "UNDERLINE", 
			"AT", "SHARP", "DOLLAR", "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", 
			"COLON", "STAR", "DIVIDE", "MODULE", "PLUS", "MINUS", "BIT_NOT", "BIT_OR", 
			"BIT_AND", "BIT_XOR", "IPV4_OCTECT"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "SelectParts.g4"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public SelectParts(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Select_listContext extends ParserRuleContext {
		public List select_list_elem() {
			return getRuleContexts(Select_list_elemContext.class);
		}
		public Select_list_elemContext select_list_elem(int i) {
			return getRuleContext(Select_list_elemContext.class,i);
		}
		public List COMMA() { return getTokens(SelectParts.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(SelectParts.COMMA, i);
		}
		public Select_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_select_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterSelect_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitSelect_list(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitSelect_list(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Select_listContext select_list() throws RecognitionException {
		Select_listContext _localctx = new Select_listContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_select_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(52);
			select_list_elem();
			setState(57);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(53);
				match(COMMA);
				setState(54);
				select_list_elem();
				}
				}
				setState(59);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Select_list_elemContext extends ParserRuleContext {
		public AsteriskContext asterisk() {
			return getRuleContext(AsteriskContext.class,0);
		}
		public Column_elemContext column_elem() {
			return getRuleContext(Column_elemContext.class,0);
		}
		public Function_callContext function_call() {
			return getRuleContext(Function_callContext.class,0);
		}
		public As_column_aliasContext as_column_alias() {
			return getRuleContext(As_column_aliasContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode IS() { return getToken(SelectParts.IS, 0); }
		public Null_notnullContext null_notnull() {
			return getRuleContext(Null_notnullContext.class,0);
		}
		public Select_list_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_select_list_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterSelect_list_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitSelect_list_elem(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitSelect_list_elem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Select_list_elemContext select_list_elem() throws RecognitionException {
		Select_list_elemContext _localctx = new Select_list_elemContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_select_list_elem);
		int _la;
		try {
			setState(73);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(60);
				asterisk();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(61);
				column_elem();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(62);
				function_call();
				setState(63);
				as_column_alias();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(65);
				expression(0);
				setState(67);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS || _la==INIT || _la==ROWCOUNT || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & 63050394992902145L) != 0) || ((((_la - 460)) & ~0x3f) == 0 && ((1L << (_la - 460)) & 126100789566373919L) != 0) || ((((_la - 537)) & ~0x3f) == 0 && ((1L << (_la - 537)) & 4755803542990622723L) != 0) || _la==NUMBER || ((((_la - 697)) & ~0x3f) == 0 && ((1L << (_la - 697)) & 18023194602504195L) != 0) || _la==ID || _la==STRING) {
					{
					setState(66);
					as_column_alias();
					}
				}

				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(69);
				expression(0);
				setState(70);
				match(IS);
				setState(71);
				null_notnull();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class As_column_aliasContext extends ParserRuleContext {
		public Column_aliasContext column_alias() {
			return getRuleContext(Column_aliasContext.class,0);
		}
		public TerminalNode AS() { return getToken(SelectParts.AS, 0); }
		public As_column_aliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_as_column_alias; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterAs_column_alias(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitAs_column_alias(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitAs_column_alias(this);
			else return visitor.visitChildren(this);
		}
	}

	public final As_column_aliasContext as_column_alias() throws RecognitionException {
		As_column_aliasContext _localctx = new As_column_aliasContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_as_column_alias);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(76);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(75);
				match(AS);
				}
			}

			setState(78);
			column_alias();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Column_aliasContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode STRING() { return getToken(SelectParts.STRING, 0); }
		public Column_aliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_alias; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterColumn_alias(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitColumn_alias(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitColumn_alias(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Column_aliasContext column_alias() throws RecognitionException {
		Column_aliasContext _localctx = new Column_aliasContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_column_alias);
		try {
			setState(82);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case INIT:
			case ROWCOUNT:
			case AGGREGATE:
			case AVG:
			case BIGINT:
			case BINARY_BASE64:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case HOURS:
			case IDENTITY_VALUE:
			case INT:
			case LAST:
			case LAST_VALUE:
			case LOW:
			case MAX:
			case MIN:
			case MINUTES:
			case NUMBER:
			case ROW:
			case ROW_NUMBER:
			case SUM:
			case TIME:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(80);
				id();
				}
				break;
			case STRING:
				enterOuterAlt(_localctx, 2);
				{
				setState(81);
				match(STRING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Column_elemContext extends ParserRuleContext {
		public IdContext column_name;
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode DOT() { return getToken(SelectParts.DOT, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public As_column_aliasContext as_column_alias() {
			return getRuleContext(As_column_aliasContext.class,0);
		}
		public Column_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterColumn_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitColumn_elem(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitColumn_elem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Column_elemContext column_elem() throws RecognitionException {
		Column_elemContext _localctx = new Column_elemContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_column_elem);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(87);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
			case 1:
				{
				setState(84);
				table_name();
				setState(85);
				match(DOT);
				}
				break;
			}
			{
			setState(89);
			((Column_elemContext)_localctx).column_name = id();
			}
			setState(91);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS || _la==INIT || _la==ROWCOUNT || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & 63050394992902145L) != 0) || ((((_la - 460)) & ~0x3f) == 0 && ((1L << (_la - 460)) & 126100789566373919L) != 0) || ((((_la - 537)) & ~0x3f) == 0 && ((1L << (_la - 537)) & 4755803542990622723L) != 0) || _la==NUMBER || ((((_la - 697)) & ~0x3f) == 0 && ((1L << (_la - 697)) & 18023194602504195L) != 0) || _la==ID || _la==STRING) {
				{
				setState(90);
				as_column_alias();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class AsteriskContext extends ParserRuleContext {
		public TerminalNode STAR() { return getToken(SelectParts.STAR, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode DOT() { return getToken(SelectParts.DOT, 0); }
		public AsteriskContext asterisk() {
			return getRuleContext(AsteriskContext.class,0);
		}
		public AsteriskContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_asterisk; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterAsterisk(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitAsterisk(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitAsterisk(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AsteriskContext asterisk() throws RecognitionException {
		AsteriskContext _localctx = new AsteriskContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_asterisk);
		try {
			setState(98);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STAR:
				enterOuterAlt(_localctx, 1);
				{
				setState(93);
				match(STAR);
				}
				break;
			case BLOCKING_HIERARCHY:
			case INIT:
			case ROWCOUNT:
			case AGGREGATE:
			case AVG:
			case BIGINT:
			case BINARY_BASE64:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case HOURS:
			case IDENTITY_VALUE:
			case INT:
			case LAST:
			case LAST_VALUE:
			case LOW:
			case MAX:
			case MIN:
			case MINUTES:
			case NUMBER:
			case ROW:
			case ROW_NUMBER:
			case SUM:
			case TIME:
			case ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(94);
				table_name();
				setState(95);
				match(DOT);
				setState(96);
				asterisk();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Search_conditionContext extends ParserRuleContext {
		public List search_condition_and() {
			return getRuleContexts(Search_condition_andContext.class);
		}
		public Search_condition_andContext search_condition_and(int i) {
			return getRuleContext(Search_condition_andContext.class,i);
		}
		public List OR() { return getTokens(SelectParts.OR); }
		public TerminalNode OR(int i) {
			return getToken(SelectParts.OR, i);
		}
		public Search_conditionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_search_condition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterSearch_condition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitSearch_condition(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitSearch_condition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Search_conditionContext search_condition() throws RecognitionException {
		Search_conditionContext _localctx = new Search_conditionContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_search_condition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(100);
			search_condition_and();
			setState(105);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==OR) {
				{
				{
				setState(101);
				match(OR);
				setState(102);
				search_condition_and();
				}
				}
				setState(107);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Search_condition_andContext extends ParserRuleContext {
		public List search_condition_not() {
			return getRuleContexts(Search_condition_notContext.class);
		}
		public Search_condition_notContext search_condition_not(int i) {
			return getRuleContext(Search_condition_notContext.class,i);
		}
		public List AND() { return getTokens(SelectParts.AND); }
		public TerminalNode AND(int i) {
			return getToken(SelectParts.AND, i);
		}
		public Search_condition_andContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_search_condition_and; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterSearch_condition_and(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitSearch_condition_and(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitSearch_condition_and(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Search_condition_andContext search_condition_and() throws RecognitionException {
		Search_condition_andContext _localctx = new Search_condition_andContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_search_condition_and);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(108);
			search_condition_not();
			setState(113);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==AND) {
				{
				{
				setState(109);
				match(AND);
				setState(110);
				search_condition_not();
				}
				}
				setState(115);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Search_condition_notContext extends ParserRuleContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode NOT() { return getToken(SelectParts.NOT, 0); }
		public Search_condition_notContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_search_condition_not; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterSearch_condition_not(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitSearch_condition_not(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitSearch_condition_not(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Search_condition_notContext search_condition_not() throws RecognitionException {
		Search_condition_notContext _localctx = new Search_condition_notContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_search_condition_not);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(117);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(116);
				match(NOT);
				}
			}

			setState(119);
			predicate();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class PredicateContext extends ParserRuleContext {
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public Comparison_operatorContext comparison_operator() {
			return getRuleContext(Comparison_operatorContext.class,0);
		}
		public TerminalNode IN() { return getToken(SelectParts.IN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(SelectParts.LR_BRACKET, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(SelectParts.RR_BRACKET, 0); }
		public TerminalNode NOT() { return getToken(SelectParts.NOT, 0); }
		public TerminalNode LIKE() { return getToken(SelectParts.LIKE, 0); }
		public TerminalNode IS() { return getToken(SelectParts.IS, 0); }
		public Null_notnullContext null_notnull() {
			return getRuleContext(Null_notnullContext.class,0);
		}
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public PredicateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_predicate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitPredicate(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitPredicate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PredicateContext predicate() throws RecognitionException {
		PredicateContext _localctx = new PredicateContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_predicate);
		int _la;
		try {
			setState(149);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(121);
				expression(0);
				setState(122);
				comparison_operator();
				setState(123);
				expression(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(125);
				expression(0);
				setState(127);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(126);
					match(NOT);
					}
				}

				setState(129);
				match(IN);
				setState(130);
				match(LR_BRACKET);
				setState(131);
				expression_list();
				setState(132);
				match(RR_BRACKET);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(134);
				expression(0);
				setState(136);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(135);
					match(NOT);
					}
				}

				setState(138);
				match(LIKE);
				setState(139);
				expression(0);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(141);
				expression(0);
				setState(142);
				match(IS);
				setState(143);
				null_notnull();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(145);
				match(LR_BRACKET);
				setState(146);
				search_condition();
				setState(147);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Expression_listContext extends ParserRuleContext {
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(SelectParts.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(SelectParts.COMMA, i);
		}
		public Expression_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expression_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterExpression_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitExpression_list(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitExpression_list(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Expression_listContext expression_list() throws RecognitionException {
		Expression_listContext _localctx = new Expression_listContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_expression_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(151);
			expression(0);
			setState(156);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(152);
				match(COMMA);
				setState(153);
				expression(0);
				}
				}
				setState(158);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ExpressionContext extends ParserRuleContext {
		public Token op;
		public Function_callContext function_call() {
			return getRuleContext(Function_callContext.class,0);
		}
		public Full_column_nameContext full_column_name() {
			return getRuleContext(Full_column_nameContext.class,0);
		}
		public Bracket_expressionContext bracket_expression() {
			return getRuleContext(Bracket_expressionContext.class,0);
		}
		public Unary_operator_expressionContext unary_operator_expression() {
			return getRuleContext(Unary_operator_expressionContext.class,0);
		}
		public Constant_expressionContext constant_expression() {
			return getRuleContext(Constant_expressionContext.class,0);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode STAR() { return getToken(SelectParts.STAR, 0); }
		public TerminalNode DIVIDE() { return getToken(SelectParts.DIVIDE, 0); }
		public TerminalNode MODULE() { return getToken(SelectParts.MODULE, 0); }
		public TerminalNode PLUS() { return getToken(SelectParts.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(SelectParts.MINUS, 0); }
		public TerminalNode BIT_AND() { return getToken(SelectParts.BIT_AND, 0); }
		public TerminalNode BIT_XOR() { return getToken(SelectParts.BIT_XOR, 0); }
		public TerminalNode BIT_OR() { return getToken(SelectParts.BIT_OR, 0); }
		public TerminalNode DOUBLE_BAR() { return getToken(SelectParts.DOUBLE_BAR, 0); }
		public Comparison_operatorContext comparison_operator() {
			return getRuleContext(Comparison_operatorContext.class,0);
		}
		public Assignment_operatorContext assignment_operator() {
			return getRuleContext(Assignment_operatorContext.class,0);
		}
		public ExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitExpression(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionContext expression() throws RecognitionException {
		return expression(0);
	}

	private ExpressionContext expression(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
		ExpressionContext _prevctx = _localctx;
		int _startState = 22;
		enterRecursionRule(_localctx, 22, RULE_expression, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(165);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
			case 1:
				{
				setState(160);
				function_call();
				}
				break;
			case 2:
				{
				setState(161);
				full_column_name();
				}
				break;
			case 3:
				{
				setState(162);
				bracket_expression();
				}
				break;
			case 4:
				{
				setState(163);
				unary_operator_expression();
				}
				break;
			case 5:
				{
				setState(164);
				constant_expression();
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(183);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,17,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(181);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
					case 1:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(167);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(168);
						((ExpressionContext)_localctx).op = _input.LT(1);
						_la = _input.LA(1);
						if ( !(((((_la - 826)) & ~0x3f) == 0 && ((1L << (_la - 826)) & 7L) != 0)) ) {
							((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(169);
						expression(6);
						}
						break;
					case 2:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(170);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(171);
						((ExpressionContext)_localctx).op = _input.LT(1);
						_la = _input.LA(1);
						if ( !(((((_la - 815)) & ~0x3f) == 0 && ((1L << (_la - 815)) & 966657L) != 0)) ) {
							((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(172);
						expression(5);
						}
						break;
					case 3:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(173);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(174);
						comparison_operator();
						setState(175);
						expression(4);
						}
						break;
					case 4:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(177);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(178);
						assignment_operator();
						setState(179);
						expression(3);
						}
						break;
					}
					} 
				}
				setState(185);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,17,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Function_callContext extends ParserRuleContext {
		public Aggregate_windowed_functionContext aggregate_windowed_function() {
			return getRuleContext(Aggregate_windowed_functionContext.class,0);
		}
		public Func_proc_nameContext func_proc_name() {
			return getRuleContext(Func_proc_nameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(SelectParts.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(SelectParts.RR_BRACKET, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public Function_callContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_function_call; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterFunction_call(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitFunction_call(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitFunction_call(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Function_callContext function_call() throws RecognitionException {
		Function_callContext _localctx = new Function_callContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_function_call);
		int _la;
		try {
			setState(194);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(186);
				aggregate_windowed_function();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(187);
				func_proc_name();
				setState(188);
				match(LR_BRACKET);
				setState(190);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BLOCKING_HIERARCHY || _la==INIT || _la==NULL || _la==ROWCOUNT || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & 63050394992902145L) != 0) || ((((_la - 460)) & ~0x3f) == 0 && ((1L << (_la - 460)) & 126100789566373919L) != 0) || ((((_la - 537)) & ~0x3f) == 0 && ((1L << (_la - 537)) & 4755803542990622723L) != 0) || _la==NUMBER || ((((_la - 697)) & ~0x3f) == 0 && ((1L << (_la - 697)) & 18024019236225027L) != 0) || ((((_la - 773)) & ~0x3f) == 0 && ((1L << (_la - 773)) & 504684634261422083L) != 0)) {
					{
					setState(189);
					expression_list();
					}
				}

				setState(192);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Aggregate_windowed_functionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(SelectParts.LR_BRACKET, 0); }
		public Full_column_nameContext full_column_name() {
			return getRuleContext(Full_column_nameContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(SelectParts.RR_BRACKET, 0); }
		public TerminalNode AVG() { return getToken(SelectParts.AVG, 0); }
		public TerminalNode MAX() { return getToken(SelectParts.MAX, 0); }
		public TerminalNode MIN() { return getToken(SelectParts.MIN, 0); }
		public TerminalNode SUM() { return getToken(SelectParts.SUM, 0); }
		public TerminalNode STDEV() { return getToken(SelectParts.STDEV, 0); }
		public TerminalNode STDEVP() { return getToken(SelectParts.STDEVP, 0); }
		public TerminalNode VAR() { return getToken(SelectParts.VAR, 0); }
		public TerminalNode VARP() { return getToken(SelectParts.VARP, 0); }
		public TerminalNode COUNT() { return getToken(SelectParts.COUNT, 0); }
		public TerminalNode COUNT_BIG() { return getToken(SelectParts.COUNT_BIG, 0); }
		public TerminalNode STAR() { return getToken(SelectParts.STAR, 0); }
		public Aggregate_windowed_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregate_windowed_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterAggregate_windowed_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitAggregate_windowed_function(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitAggregate_windowed_function(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Aggregate_windowed_functionContext aggregate_windowed_function() throws RecognitionException {
		Aggregate_windowed_functionContext _localctx = new Aggregate_windowed_functionContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_aggregate_windowed_function);
		int _la;
		try {
			setState(208);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AVG:
			case MAX:
			case MIN:
			case STDEV:
			case STDEVP:
			case SUM:
			case VAR:
			case VARP:
				enterOuterAlt(_localctx, 1);
				{
				setState(196);
				_la = _input.LA(1);
				if ( !(_la==AVG || _la==MAX || _la==MIN || ((((_la - 735)) & ~0x3f) == 0 && ((1L << (_la - 735)) & 824633720867L) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(197);
				match(LR_BRACKET);
				setState(198);
				full_column_name();
				setState(199);
				match(RR_BRACKET);
				}
				break;
			case COUNT:
			case COUNT_BIG:
				enterOuterAlt(_localctx, 2);
				{
				setState(201);
				_la = _input.LA(1);
				if ( !(_la==COUNT || _la==COUNT_BIG) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(202);
				match(LR_BRACKET);
				setState(205);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STAR:
					{
					setState(203);
					match(STAR);
					}
					break;
				case BLOCKING_HIERARCHY:
				case INIT:
				case ROWCOUNT:
				case AGGREGATE:
				case AVG:
				case BIGINT:
				case BINARY_BASE64:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case HOURS:
				case IDENTITY_VALUE:
				case INT:
				case LAST:
				case LAST_VALUE:
				case LOW:
				case MAX:
				case MIN:
				case MINUTES:
				case NUMBER:
				case ROW:
				case ROW_NUMBER:
				case SUM:
				case TIME:
				case ID:
					{
					setState(204);
					full_column_name();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(207);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Func_proc_nameContext extends ParserRuleContext {
		public IdContext procedure;
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Func_proc_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_func_proc_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterFunc_proc_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitFunc_proc_name(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitFunc_proc_name(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Func_proc_nameContext func_proc_name() throws RecognitionException {
		Func_proc_nameContext _localctx = new Func_proc_nameContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_func_proc_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(210);
			((Func_proc_nameContext)_localctx).procedure = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Full_column_nameContext extends ParserRuleContext {
		public IdContext column_name;
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode DOT() { return getToken(SelectParts.DOT, 0); }
		public Full_column_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_full_column_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterFull_column_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitFull_column_name(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitFull_column_name(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Full_column_nameContext full_column_name() throws RecognitionException {
		Full_column_nameContext _localctx = new Full_column_nameContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_full_column_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(215);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
			case 1:
				{
				setState(212);
				table_name();
				setState(213);
				match(DOT);
				}
				break;
			}
			setState(217);
			((Full_column_nameContext)_localctx).column_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Table_nameContext extends ParserRuleContext {
		public IdContext database;
		public IdContext schema;
		public IdContext table;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(SelectParts.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(SelectParts.DOT, i);
		}
		public TerminalNode BLOCKING_HIERARCHY() { return getToken(SelectParts.BLOCKING_HIERARCHY, 0); }
		public Table_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterTable_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitTable_name(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitTable_name(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Table_nameContext table_name() throws RecognitionException {
		Table_nameContext _localctx = new Table_nameContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_table_name);
		int _la;
		try {
			setState(245);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(229);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
				case 1:
					{
					setState(219);
					((Table_nameContext)_localctx).database = id();
					setState(220);
					match(DOT);
					setState(222);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==INIT || _la==ROWCOUNT || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & 63050394992902145L) != 0) || ((((_la - 460)) & ~0x3f) == 0 && ((1L << (_la - 460)) & 126100789566373919L) != 0) || ((((_la - 537)) & ~0x3f) == 0 && ((1L << (_la - 537)) & 4755803542990622723L) != 0) || _la==NUMBER || ((((_la - 697)) & ~0x3f) == 0 && ((1L << (_la - 697)) & 18023194602504195L) != 0) || _la==ID) {
						{
						setState(221);
						((Table_nameContext)_localctx).schema = id();
						}
					}

					setState(224);
					match(DOT);
					}
					break;
				case 2:
					{
					setState(226);
					((Table_nameContext)_localctx).schema = id();
					setState(227);
					match(DOT);
					}
					break;
				}
				setState(231);
				((Table_nameContext)_localctx).table = id();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(242);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
				case 1:
					{
					setState(232);
					((Table_nameContext)_localctx).database = id();
					setState(233);
					match(DOT);
					setState(235);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==INIT || _la==ROWCOUNT || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & 63050394992902145L) != 0) || ((((_la - 460)) & ~0x3f) == 0 && ((1L << (_la - 460)) & 126100789566373919L) != 0) || ((((_la - 537)) & ~0x3f) == 0 && ((1L << (_la - 537)) & 4755803542990622723L) != 0) || _la==NUMBER || ((((_la - 697)) & ~0x3f) == 0 && ((1L << (_la - 697)) & 18023194602504195L) != 0) || _la==ID) {
						{
						setState(234);
						((Table_nameContext)_localctx).schema = id();
						}
					}

					setState(237);
					match(DOT);
					}
					break;
				case 2:
					{
					setState(239);
					((Table_nameContext)_localctx).schema = id();
					setState(240);
					match(DOT);
					}
					break;
				}
				setState(244);
				match(BLOCKING_HIERARCHY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Unary_operator_expressionContext extends ParserRuleContext {
		public Token op;
		public TerminalNode BIT_NOT() { return getToken(SelectParts.BIT_NOT, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode PLUS() { return getToken(SelectParts.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(SelectParts.MINUS, 0); }
		public Unary_operator_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unary_operator_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterUnary_operator_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitUnary_operator_expression(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitUnary_operator_expression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Unary_operator_expressionContext unary_operator_expression() throws RecognitionException {
		Unary_operator_expressionContext _localctx = new Unary_operator_expressionContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_unary_operator_expression);
		int _la;
		try {
			setState(251);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BIT_NOT:
				enterOuterAlt(_localctx, 1);
				{
				setState(247);
				match(BIT_NOT);
				setState(248);
				expression(0);
				}
				break;
			case PLUS:
			case MINUS:
				enterOuterAlt(_localctx, 2);
				{
				setState(249);
				((Unary_operator_expressionContext)_localctx).op = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==PLUS || _la==MINUS) ) {
					((Unary_operator_expressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(250);
				expression(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Bracket_expressionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(SelectParts.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(SelectParts.RR_BRACKET, 0); }
		public Bracket_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bracket_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterBracket_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitBracket_expression(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitBracket_expression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Bracket_expressionContext bracket_expression() throws RecognitionException {
		Bracket_expressionContext _localctx = new Bracket_expressionContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_bracket_expression);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(253);
			match(LR_BRACKET);
			setState(254);
			expression(0);
			setState(255);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Constant_expressionContext extends ParserRuleContext {
		public TerminalNode NULL() { return getToken(SelectParts.NULL, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public Function_callContext function_call() {
			return getRuleContext(Function_callContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(SelectParts.LR_BRACKET, 0); }
		public Constant_expressionContext constant_expression() {
			return getRuleContext(Constant_expressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(SelectParts.RR_BRACKET, 0); }
		public Constant_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constant_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterConstant_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitConstant_expression(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitConstant_expression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Constant_expressionContext constant_expression() throws RecognitionException {
		Constant_expressionContext _localctx = new Constant_expressionContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_constant_expression);
		try {
			setState(264);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NULL:
				enterOuterAlt(_localctx, 1);
				{
				setState(257);
				match(NULL);
				}
				break;
			case DECIMAL:
			case STRING:
			case BINARY:
			case FLOAT:
			case REAL:
			case PLUS:
			case MINUS:
				enterOuterAlt(_localctx, 2);
				{
				setState(258);
				constant();
				}
				break;
			case INIT:
			case ROWCOUNT:
			case AGGREGATE:
			case AVG:
			case BIGINT:
			case BINARY_BASE64:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case HOURS:
			case IDENTITY_VALUE:
			case INT:
			case LAST:
			case LAST_VALUE:
			case LOW:
			case MAX:
			case MIN:
			case MINUTES:
			case NUMBER:
			case ROW:
			case ROW_NUMBER:
			case STDEV:
			case STDEVP:
			case SUM:
			case TIME:
			case VAR:
			case VARP:
			case ID:
				enterOuterAlt(_localctx, 3);
				{
				setState(259);
				function_call();
				}
				break;
			case LR_BRACKET:
				enterOuterAlt(_localctx, 4);
				{
				setState(260);
				match(LR_BRACKET);
				setState(261);
				constant_expression();
				setState(262);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Comparison_operatorContext extends ParserRuleContext {
		public TerminalNode EQUAL() { return getToken(SelectParts.EQUAL, 0); }
		public TerminalNode GREATER() { return getToken(SelectParts.GREATER, 0); }
		public TerminalNode LESS() { return getToken(SelectParts.LESS, 0); }
		public TerminalNode EXCLAMATION() { return getToken(SelectParts.EXCLAMATION, 0); }
		public TerminalNode MODULE() { return getToken(SelectParts.MODULE, 0); }
		public TerminalNode BIT_NOT() { return getToken(SelectParts.BIT_NOT, 0); }
		public Comparison_operatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comparison_operator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterComparison_operator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitComparison_operator(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitComparison_operator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Comparison_operatorContext comparison_operator() throws RecognitionException {
		Comparison_operatorContext _localctx = new Comparison_operatorContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_comparison_operator);
		try {
			setState(286);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(266);
				match(EQUAL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(267);
				match(GREATER);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(268);
				match(LESS);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(269);
				match(LESS);
				setState(270);
				match(EQUAL);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(271);
				match(GREATER);
				setState(272);
				match(EQUAL);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(273);
				match(LESS);
				setState(274);
				match(GREATER);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(275);
				match(EXCLAMATION);
				setState(276);
				match(EQUAL);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(277);
				match(EXCLAMATION);
				setState(278);
				match(GREATER);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(279);
				match(EXCLAMATION);
				setState(280);
				match(LESS);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(281);
				match(MODULE);
				setState(282);
				match(BIT_NOT);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(283);
				match(MODULE);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(284);
				match(BIT_NOT);
				setState(285);
				match(MODULE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Assignment_operatorContext extends ParserRuleContext {
		public TerminalNode PLUS_ASSIGN() { return getToken(SelectParts.PLUS_ASSIGN, 0); }
		public TerminalNode MINUS_ASSIGN() { return getToken(SelectParts.MINUS_ASSIGN, 0); }
		public TerminalNode MULT_ASSIGN() { return getToken(SelectParts.MULT_ASSIGN, 0); }
		public TerminalNode DIV_ASSIGN() { return getToken(SelectParts.DIV_ASSIGN, 0); }
		public TerminalNode MOD_ASSIGN() { return getToken(SelectParts.MOD_ASSIGN, 0); }
		public TerminalNode AND_ASSIGN() { return getToken(SelectParts.AND_ASSIGN, 0); }
		public TerminalNode XOR_ASSIGN() { return getToken(SelectParts.XOR_ASSIGN, 0); }
		public TerminalNode OR_ASSIGN() { return getToken(SelectParts.OR_ASSIGN, 0); }
		public Assignment_operatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignment_operator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterAssignment_operator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitAssignment_operator(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitAssignment_operator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Assignment_operatorContext assignment_operator() throws RecognitionException {
		Assignment_operatorContext _localctx = new Assignment_operatorContext(_ctx, getState());
		enterRule(_localctx, 42, RULE_assignment_operator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(288);
			_la = _input.LA(1);
			if ( !(((((_la - 807)) & ~0x3f) == 0 && ((1L << (_la - 807)) & 255L) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class Null_notnullContext extends ParserRuleContext {
		public TerminalNode NULL() { return getToken(SelectParts.NULL, 0); }
		public TerminalNode NOT() { return getToken(SelectParts.NOT, 0); }
		public Null_notnullContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_null_notnull; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterNull_notnull(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitNull_notnull(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitNull_notnull(this);
			else return visitor.visitChildren(this);
		}
	}

	public final Null_notnullContext null_notnull() throws RecognitionException {
		Null_notnullContext _localctx = new Null_notnullContext(_ctx, getState());
		enterRule(_localctx, 44, RULE_null_notnull);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(291);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(290);
				match(NOT);
				}
			}

			setState(293);
			match(NULL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ConstantContext extends ParserRuleContext {
		public TerminalNode STRING() { return getToken(SelectParts.STRING, 0); }
		public TerminalNode BINARY() { return getToken(SelectParts.BINARY, 0); }
		public TerminalNode DECIMAL() { return getToken(SelectParts.DECIMAL, 0); }
		public SignContext sign() {
			return getRuleContext(SignContext.class,0);
		}
		public TerminalNode REAL() { return getToken(SelectParts.REAL, 0); }
		public TerminalNode FLOAT() { return getToken(SelectParts.FLOAT, 0); }
		public ConstantContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constant; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterConstant(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitConstant(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitConstant(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstantContext constant() throws RecognitionException {
		ConstantContext _localctx = new ConstantContext(_ctx, getState());
		enterRule(_localctx, 46, RULE_constant);
		int _la;
		try {
			setState(305);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(295);
				match(STRING);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(296);
				match(BINARY);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(298);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PLUS || _la==MINUS) {
					{
					setState(297);
					sign();
					}
				}

				setState(300);
				match(DECIMAL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(302);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PLUS || _la==MINUS) {
					{
					setState(301);
					sign();
					}
				}

				setState(304);
				_la = _input.LA(1);
				if ( !(_la==FLOAT || _la==REAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class SignContext extends ParserRuleContext {
		public TerminalNode PLUS() { return getToken(SelectParts.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(SelectParts.MINUS, 0); }
		public SignContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sign; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterSign(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitSign(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitSign(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SignContext sign() throws RecognitionException {
		SignContext _localctx = new SignContext(_ctx, getState());
		enterRule(_localctx, 48, RULE_sign);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(307);
			_la = _input.LA(1);
			if ( !(_la==PLUS || _la==MINUS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class IdContext extends ParserRuleContext {
		public TerminalNode ID() { return getToken(SelectParts.ID, 0); }
		public TerminalNode AGGREGATE() { return getToken(SelectParts.AGGREGATE, 0); }
		public TerminalNode AVG() { return getToken(SelectParts.AVG, 0); }
		public TerminalNode BIGINT() { return getToken(SelectParts.BIGINT, 0); }
		public TerminalNode BINARY_BASE64() { return getToken(SelectParts.BINARY_BASE64, 0); }
		public TerminalNode COUNT() { return getToken(SelectParts.COUNT, 0); }
		public TerminalNode COUNT_BIG() { return getToken(SelectParts.COUNT_BIG, 0); }
		public TerminalNode COUNTER() { return getToken(SelectParts.COUNTER, 0); }
		public TerminalNode DATEADD() { return getToken(SelectParts.DATEADD, 0); }
		public TerminalNode DATEDIFF() { return getToken(SelectParts.DATEDIFF, 0); }
		public TerminalNode DATENAME() { return getToken(SelectParts.DATENAME, 0); }
		public TerminalNode DATEPART() { return getToken(SelectParts.DATEPART, 0); }
		public TerminalNode DAYS() { return getToken(SelectParts.DAYS, 0); }
		public TerminalNode FIRST() { return getToken(SelectParts.FIRST, 0); }
		public TerminalNode FIRST_VALUE() { return getToken(SelectParts.FIRST_VALUE, 0); }
		public TerminalNode FOLLOWING() { return getToken(SelectParts.FOLLOWING, 0); }
		public TerminalNode HOURS() { return getToken(SelectParts.HOURS, 0); }
		public TerminalNode IDENTITY_VALUE() { return getToken(SelectParts.IDENTITY_VALUE, 0); }
		public TerminalNode INIT() { return getToken(SelectParts.INIT, 0); }
		public TerminalNode INT() { return getToken(SelectParts.INT, 0); }
		public TerminalNode LAST() { return getToken(SelectParts.LAST, 0); }
		public TerminalNode LAST_VALUE() { return getToken(SelectParts.LAST_VALUE, 0); }
		public TerminalNode LOW() { return getToken(SelectParts.LOW, 0); }
		public TerminalNode MAX() { return getToken(SelectParts.MAX, 0); }
		public TerminalNode MIN() { return getToken(SelectParts.MIN, 0); }
		public TerminalNode MINUTES() { return getToken(SelectParts.MINUTES, 0); }
		public TerminalNode NUMBER() { return getToken(SelectParts.NUMBER, 0); }
		public TerminalNode ROW() { return getToken(SelectParts.ROW, 0); }
		public TerminalNode ROW_NUMBER() { return getToken(SelectParts.ROW_NUMBER, 0); }
		public TerminalNode ROWCOUNT() { return getToken(SelectParts.ROWCOUNT, 0); }
		public TerminalNode SUM() { return getToken(SelectParts.SUM, 0); }
		public TerminalNode TIME() { return getToken(SelectParts.TIME, 0); }
		public IdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_id; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).enterId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof SelectPartsListener ) ((SelectPartsListener)listener).exitId(this);
		}
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof SelectPartsVisitor ) return ((SelectPartsVisitor)visitor).visitId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdContext id() throws RecognitionException {
		IdContext _localctx = new IdContext(_ctx, getState());
		enterRule(_localctx, 50, RULE_id);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(309);
			_la = _input.LA(1);
			if ( !(_la==INIT || _la==ROWCOUNT || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & 63050394992902145L) != 0) || ((((_la - 460)) & ~0x3f) == 0 && ((1L << (_la - 460)) & 126100789566373919L) != 0) || ((((_la - 537)) & ~0x3f) == 0 && ((1L << (_la - 537)) & 4755803542990622723L) != 0) || _la==NUMBER || ((((_la - 697)) & ~0x3f) == 0 && ((1L << (_la - 697)) & 18023194602504195L) != 0) || _la==ID) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
		switch (ruleIndex) {
		case 11:
			return expression_sempred((ExpressionContext)_localctx, predIndex);
		}
		return true;
	}
	private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
		switch (predIndex) {
		case 0:
			return precpred(_ctx, 5);
		case 1:
			return precpred(_ctx, 4);
		case 2:
			return precpred(_ctx, 3);
		case 3:
			return precpred(_ctx, 2);
		}
		return true;
	}

	public static final String _serializedATN =
		"\u0004\u0001\u0343\u0138\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
		"\u0018\u0002\u0019\u0007\u0019\u0001\u0000\u0001\u0000\u0001\u0000\u0005"+
		"\u00008\b\u0000\n\u0000\f\u0000;\t\u0000\u0001\u0001\u0001\u0001\u0001"+
		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001D\b"+
		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001J\b"+
		"\u0001\u0001\u0002\u0003\u0002M\b\u0002\u0001\u0002\u0001\u0002\u0001"+
		"\u0003\u0001\u0003\u0003\u0003S\b\u0003\u0001\u0004\u0001\u0004\u0001"+
		"\u0004\u0003\u0004X\b\u0004\u0001\u0004\u0001\u0004\u0003\u0004\\\b\u0004"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+
		"c\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0005\u0006h\b\u0006\n\u0006"+
		"\f\u0006k\t\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0005\u0007p\b\u0007"+
		"\n\u0007\f\u0007s\t\u0007\u0001\b\u0003\bv\b\b\u0001\b\u0001\b\u0001\t"+
		"\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0080\b\t\u0001\t\u0001"+
		"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0089\b\t\u0001\t\u0001"+
		"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+
		"\t\u0003\t\u0096\b\t\u0001\n\u0001\n\u0001\n\u0005\n\u009b\b\n\n\n\f\n"+
		"\u009e\t\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0003\u000b\u00a6\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000b"+
		"\u00b6\b\u000b\n\u000b\f\u000b\u00b9\t\u000b\u0001\f\u0001\f\u0001\f\u0001"+
		"\f\u0003\f\u00bf\b\f\u0001\f\u0001\f\u0003\f\u00c3\b\f\u0001\r\u0001\r"+
		"\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0003\r\u00ce"+
		"\b\r\u0001\r\u0003\r\u00d1\b\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0003\u000f\u00d8\b\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u00df\b\u0010\u0001\u0010\u0001"+
		"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u00e6\b\u0010\u0001"+
		"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u00ec\b\u0010\u0001"+
		"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u00f3"+
		"\b\u0010\u0001\u0010\u0003\u0010\u00f6\b\u0010\u0001\u0011\u0001\u0011"+
		"\u0001\u0011\u0001\u0011\u0003\u0011\u00fc\b\u0011\u0001\u0012\u0001\u0012"+
		"\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
		"\u0001\u0013\u0001\u0013\u0001\u0013\u0003\u0013\u0109\b\u0013\u0001\u0014"+
		"\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
		"\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
		"\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
		"\u0001\u0014\u0003\u0014\u011f\b\u0014\u0001\u0015\u0001\u0015\u0001\u0016"+
		"\u0003\u0016\u0124\b\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017"+
		"\u0001\u0017\u0003\u0017\u012b\b\u0017\u0001\u0017\u0001\u0017\u0003\u0017"+
		"\u012f\b\u0017\u0001\u0017\u0003\u0017\u0132\b\u0017\u0001\u0018\u0001"+
		"\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0000\u0001\u0016\u001a\u0000"+
		"\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c"+
		"\u001e \"$&(*,.02\u0000\b\u0001\u0000\u033a\u033c\u0003\u0000\u032f\u032f"+
		"\u033d\u033e\u0340\u0342\u0006\u0000\u01a3\u01a3\u0242\u0242\u0252\u0252"+
		"\u02df\u02e0\u02e4\u02e4\u0305\u0306\u0001\u0000\u01c1\u01c2\u0001\u0000"+
		"\u033d\u033e\u0001\u0000\u0327\u032e\u0001\u0000\u0321\u0322\u0014\u0000"+
		"\u009e\u009e\u0122\u0122\u018c\u018c\u01a3\u01a3\u01a6\u01a7\u01c1\u01c3"+
		"\u01cc\u01d0\u0202\u0204\u0219\u021a\u0225\u0225\u0230\u0231\u023e\u023e"+
		"\u0242\u0242\u0252\u0252\u0257\u0257\u0270\u0270\u02b9\u02ba\u02e4\u02e4"+
		"\u02ef\u02ef\u031c\u031c\u015b\u00004\u0001\u0000\u0000\u0000\u0002I\u0001"+
		"\u0000\u0000\u0000\u0004L\u0001\u0000\u0000\u0000\u0006R\u0001\u0000\u0000"+
		"\u0000\bW\u0001\u0000\u0000\u0000\nb\u0001\u0000\u0000\u0000\fd\u0001"+
		"\u0000\u0000\u0000\u000el\u0001\u0000\u0000\u0000\u0010u\u0001\u0000\u0000"+
		"\u0000\u0012\u0095\u0001\u0000\u0000\u0000\u0014\u0097\u0001\u0000\u0000"+
		"\u0000\u0016\u00a5\u0001\u0000\u0000\u0000\u0018\u00c2\u0001\u0000\u0000"+
		"\u0000\u001a\u00d0\u0001\u0000\u0000\u0000\u001c\u00d2\u0001\u0000\u0000"+
		"\u0000\u001e\u00d7\u0001\u0000\u0000\u0000 \u00f5\u0001\u0000\u0000\u0000"+
		"\"\u00fb\u0001\u0000\u0000\u0000$\u00fd\u0001\u0000\u0000\u0000&\u0108"+
		"\u0001\u0000\u0000\u0000(\u011e\u0001\u0000\u0000\u0000*\u0120\u0001\u0000"+
		"\u0000\u0000,\u0123\u0001\u0000\u0000\u0000.\u0131\u0001\u0000\u0000\u0000"+
		"0\u0133\u0001\u0000\u0000\u00002\u0135\u0001\u0000\u0000\u000049\u0003"+
		"\u0002\u0001\u000056\u0005\u0337\u0000\u000068\u0003\u0002\u0001\u0000"+
		"75\u0001\u0000\u0000\u00008;\u0001\u0000\u0000\u000097\u0001\u0000\u0000"+
		"\u00009:\u0001\u0000\u0000\u0000:\u0001\u0001\u0000\u0000\u0000;9\u0001"+
		"\u0000\u0000\u0000?\u0003"+
		"\u0018\f\u0000?@\u0003\u0004\u0002\u0000@J\u0001\u0000\u0000\u0000AC\u0003"+
		"\u0016\u000b\u0000BD\u0003\u0004\u0002\u0000CB\u0001\u0000\u0000\u0000"+
		"CD\u0001\u0000\u0000\u0000DJ\u0001\u0000\u0000\u0000EF\u0003\u0016\u000b"+
		"\u0000FG\u0005\u00a6\u0000\u0000GH\u0003,\u0016\u0000HJ\u0001\u0000\u0000"+
		"\u0000I<\u0001\u0000\u0000\u0000I=\u0001\u0000\u0000\u0000I>\u0001\u0000"+
		"\u0000\u0000IA\u0001\u0000\u0000\u0000IE\u0001\u0000\u0000\u0000J\u0003"+
		"\u0001\u0000\u0000\u0000KM\u0005\u000e\u0000\u0000LK\u0001\u0000\u0000"+
		"\u0000LM\u0001\u0000\u0000\u0000MN\u0001\u0000\u0000\u0000NO\u0003\u0006"+
		"\u0003\u0000O\u0005\u0001\u0000\u0000\u0000PS\u00032\u0019\u0000QS\u0005"+
		"\u031f\u0000\u0000RP\u0001\u0000\u0000\u0000RQ\u0001\u0000\u0000\u0000"+
		"S\u0007\u0001\u0000\u0000\u0000TU\u0003 \u0010\u0000UV\u0005\u0330\u0000"+
		"\u0000VX\u0001\u0000\u0000\u0000WT\u0001\u0000\u0000\u0000WX\u0001\u0000"+
		"\u0000\u0000XY\u0001\u0000\u0000\u0000Y[\u00032\u0019\u0000Z\\\u0003\u0004"+
		"\u0002\u0000[Z\u0001\u0000\u0000\u0000[\\\u0001\u0000\u0000\u0000\\\t"+
		"\u0001\u0000\u0000\u0000]c\u0005\u033a\u0000\u0000^_\u0003 \u0010\u0000"+
		"_`\u0005\u0330\u0000\u0000`a\u0003\n\u0005\u0000ac\u0001\u0000\u0000\u0000"+
		"b]\u0001\u0000\u0000\u0000b^\u0001\u0000\u0000\u0000c\u000b\u0001\u0000"+
		"\u0000\u0000di\u0003\u000e\u0007\u0000ef\u0005\u00ed\u0000\u0000fh\u0003"+
		"\u000e\u0007\u0000ge\u0001\u0000\u0000\u0000hk\u0001\u0000\u0000\u0000"+
		"ig\u0001\u0000\u0000\u0000ij\u0001\u0000\u0000\u0000j\r\u0001\u0000\u0000"+
		"\u0000ki\u0001\u0000\u0000\u0000lq\u0003\u0010\b\u0000mn\u0005\t\u0000"+
		"\u0000np\u0003\u0010\b\u0000om\u0001\u0000\u0000\u0000ps\u0001\u0000\u0000"+
		"\u0000qo\u0001\u0000\u0000\u0000qr\u0001\u0000\u0000\u0000r\u000f\u0001"+
		"\u0000\u0000\u0000sq\u0001\u0000\u0000\u0000tv\u0005\u00dc\u0000\u0000"+
		"ut\u0001\u0000\u0000\u0000uv\u0001\u0000\u0000\u0000vw\u0001\u0000\u0000"+
		"\u0000wx\u0003\u0012\t\u0000x\u0011\u0001\u0000\u0000\u0000yz\u0003\u0016"+
		"\u000b\u0000z{\u0003(\u0014\u0000{|\u0003\u0016\u000b\u0000|\u0096\u0001"+
		"\u0000\u0000\u0000}\u007f\u0003\u0016\u000b\u0000~\u0080\u0005\u00dc\u0000"+
		"\u0000\u007f~\u0001\u0000\u0000\u0000\u007f\u0080\u0001\u0000\u0000\u0000"+
		"\u0080\u0081\u0001\u0000\u0000\u0000\u0081\u0082\u0005\u0099\u0000\u0000"+
		"\u0082\u0083\u0005\u0335\u0000\u0000\u0083\u0084\u0003\u0014\n\u0000\u0084"+
		"\u0085\u0005\u0336\u0000\u0000\u0085\u0096\u0001\u0000\u0000\u0000\u0086"+
		"\u0088\u0003\u0016\u000b\u0000\u0087\u0089\u0005\u00dc\u0000\u0000\u0088"+
		"\u0087\u0001\u0000\u0000\u0000\u0088\u0089\u0001\u0000\u0000\u0000\u0089"+
		"\u008a\u0001\u0000\u0000\u0000\u008a\u008b\u0005\u00b2\u0000\u0000\u008b"+
		"\u008c\u0003\u0016\u000b\u0000\u008c\u0096\u0001\u0000\u0000\u0000\u008d"+
		"\u008e\u0003\u0016\u000b\u0000\u008e\u008f\u0005\u00a6\u0000\u0000\u008f"+
		"\u0090\u0003,\u0016\u0000\u0090\u0096\u0001\u0000\u0000\u0000\u0091\u0092"+
		"\u0005\u0335\u0000\u0000\u0092\u0093\u0003\f\u0006\u0000\u0093\u0094\u0005"+
		"\u0336\u0000\u0000\u0094\u0096\u0001\u0000\u0000\u0000\u0095y\u0001\u0000"+
		"\u0000\u0000\u0095}\u0001\u0000\u0000\u0000\u0095\u0086\u0001\u0000\u0000"+
		"\u0000\u0095\u008d\u0001\u0000\u0000\u0000\u0095\u0091\u0001\u0000\u0000"+
		"\u0000\u0096\u0013\u0001\u0000\u0000\u0000\u0097\u009c\u0003\u0016\u000b"+
		"\u0000\u0098\u0099\u0005\u0337\u0000\u0000\u0099\u009b\u0003\u0016\u000b"+
		"\u0000\u009a\u0098\u0001\u0000\u0000\u0000\u009b\u009e\u0001\u0000\u0000"+
		"\u0000\u009c\u009a\u0001\u0000\u0000\u0000\u009c\u009d\u0001\u0000\u0000"+
		"\u0000\u009d\u0015\u0001\u0000\u0000\u0000\u009e\u009c\u0001\u0000\u0000"+
		"\u0000\u009f\u00a0\u0006\u000b\uffff\uffff\u0000\u00a0\u00a6\u0003\u0018"+
		"\f\u0000\u00a1\u00a6\u0003\u001e\u000f\u0000\u00a2\u00a6\u0003$\u0012"+
		"\u0000\u00a3\u00a6\u0003\"\u0011\u0000\u00a4\u00a6\u0003&\u0013\u0000"+
		"\u00a5\u009f\u0001\u0000\u0000\u0000\u00a5\u00a1\u0001\u0000\u0000\u0000"+
		"\u00a5\u00a2\u0001\u0000\u0000\u0000\u00a5\u00a3\u0001\u0000\u0000\u0000"+
		"\u00a5\u00a4\u0001\u0000\u0000\u0000\u00a6\u00b7\u0001\u0000\u0000\u0000"+
		"\u00a7\u00a8\n\u0005\u0000\u0000\u00a8\u00a9\u0007\u0000\u0000\u0000\u00a9"+
		"\u00b6\u0003\u0016\u000b\u0006\u00aa\u00ab\n\u0004\u0000\u0000\u00ab\u00ac"+
		"\u0007\u0001\u0000\u0000\u00ac\u00b6\u0003\u0016\u000b\u0005\u00ad\u00ae"+
		"\n\u0003\u0000\u0000\u00ae\u00af\u0003(\u0014\u0000\u00af\u00b0\u0003"+
		"\u0016\u000b\u0004\u00b0\u00b6\u0001\u0000\u0000\u0000\u00b1\u00b2\n\u0002"+
		"\u0000\u0000\u00b2\u00b3\u0003*\u0015\u0000\u00b3\u00b4\u0003\u0016\u000b"+
		"\u0003\u00b4\u00b6\u0001\u0000\u0000\u0000\u00b5\u00a7\u0001\u0000\u0000"+
		"\u0000\u00b5\u00aa\u0001\u0000\u0000\u0000\u00b5\u00ad\u0001\u0000\u0000"+
		"\u0000\u00b5\u00b1\u0001\u0000\u0000\u0000\u00b6\u00b9\u0001\u0000\u0000"+
		"\u0000\u00b7\u00b5\u0001\u0000\u0000\u0000\u00b7\u00b8\u0001\u0000\u0000"+
		"\u0000\u00b8\u0017\u0001\u0000\u0000\u0000\u00b9\u00b7\u0001\u0000\u0000"+
		"\u0000\u00ba\u00c3\u0003\u001a\r\u0000\u00bb\u00bc\u0003\u001c\u000e\u0000"+
		"\u00bc\u00be\u0005\u0335\u0000\u0000\u00bd\u00bf\u0003\u0014\n\u0000\u00be"+
		"\u00bd\u0001\u0000\u0000\u0000\u00be\u00bf\u0001\u0000\u0000\u0000\u00bf"+
		"\u00c0\u0001\u0000\u0000\u0000\u00c0\u00c1\u0005\u0336\u0000\u0000\u00c1"+
		"\u00c3\u0001\u0000\u0000\u0000\u00c2\u00ba\u0001\u0000\u0000\u0000\u00c2"+
		"\u00bb\u0001\u0000\u0000\u0000\u00c3\u0019\u0001\u0000\u0000\u0000\u00c4"+
		"\u00c5\u0007\u0002\u0000\u0000\u00c5\u00c6\u0005\u0335\u0000\u0000\u00c6"+
		"\u00c7\u0003\u001e\u000f\u0000\u00c7\u00c8\u0005\u0336\u0000\u0000\u00c8"+
		"\u00d1\u0001\u0000\u0000\u0000\u00c9\u00ca\u0007\u0003\u0000\u0000\u00ca"+
		"\u00cd\u0005\u0335\u0000\u0000\u00cb\u00ce\u0005\u033a\u0000\u0000\u00cc"+
		"\u00ce\u0003\u001e\u000f\u0000\u00cd\u00cb\u0001\u0000\u0000\u0000\u00cd"+
		"\u00cc\u0001\u0000\u0000\u0000\u00ce\u00cf\u0001\u0000\u0000\u0000\u00cf"+
		"\u00d1\u0005\u0336\u0000\u0000\u00d0\u00c4\u0001\u0000\u0000\u0000\u00d0"+
		"\u00c9\u0001\u0000\u0000\u0000\u00d1\u001b\u0001\u0000\u0000\u0000\u00d2"+
		"\u00d3\u00032\u0019\u0000\u00d3\u001d\u0001\u0000\u0000\u0000\u00d4\u00d5"+
		"\u0003 \u0010\u0000\u00d5\u00d6\u0005\u0330\u0000\u0000\u00d6\u00d8\u0001"+
		"\u0000\u0000\u0000\u00d7\u00d4\u0001\u0000\u0000\u0000\u00d7\u00d8\u0001"+
		"\u0000\u0000\u0000\u00d8\u00d9\u0001\u0000\u0000\u0000\u00d9\u00da\u0003"+
		"2\u0019\u0000\u00da\u001f\u0001\u0000\u0000\u0000\u00db\u00dc\u00032\u0019"+
		"\u0000\u00dc\u00de\u0005\u0330\u0000\u0000\u00dd\u00df\u00032\u0019\u0000"+
		"\u00de\u00dd\u0001\u0000\u0000\u0000\u00de\u00df\u0001\u0000\u0000\u0000"+
		"\u00df\u00e0\u0001\u0000\u0000\u0000\u00e0\u00e1\u0005\u0330\u0000\u0000"+
		"\u00e1\u00e6\u0001\u0000\u0000\u0000\u00e2\u00e3\u00032\u0019\u0000\u00e3"+
		"\u00e4\u0005\u0330\u0000\u0000\u00e4\u00e6\u0001\u0000\u0000\u0000\u00e5"+
		"\u00db\u0001\u0000\u0000\u0000\u00e5\u00e2\u0001\u0000\u0000\u0000\u00e5"+
		"\u00e6\u0001\u0000\u0000\u0000\u00e6\u00e7\u0001\u0000\u0000\u0000\u00e7"+
		"\u00f6\u00032\u0019\u0000\u00e8\u00e9\u00032\u0019\u0000\u00e9\u00eb\u0005"+
		"\u0330\u0000\u0000\u00ea\u00ec\u00032\u0019\u0000\u00eb\u00ea\u0001\u0000"+
		"\u0000\u0000\u00eb\u00ec\u0001\u0000\u0000\u0000\u00ec\u00ed\u0001\u0000"+
		"\u0000\u0000\u00ed\u00ee\u0005\u0330\u0000\u0000\u00ee\u00f3\u0001\u0000"+
		"\u0000\u0000\u00ef\u00f0\u00032\u0019\u0000\u00f0\u00f1\u0005\u0330\u0000"+
		"\u0000\u00f1\u00f3\u0001\u0000\u0000\u0000\u00f2\u00e8\u0001\u0000\u0000"+
		"\u0000\u00f2\u00ef\u0001\u0000\u0000\u0000\u00f2\u00f3\u0001\u0000\u0000"+
		"\u0000\u00f3\u00f4\u0001\u0000\u0000\u0000\u00f4\u00f6\u0005\u001e\u0000"+
		"\u0000\u00f5\u00e5\u0001\u0000\u0000\u0000\u00f5\u00f2\u0001\u0000\u0000"+
		"\u0000\u00f6!\u0001\u0000\u0000\u0000\u00f7\u00f8\u0005\u033f\u0000\u0000"+
		"\u00f8\u00fc\u0003\u0016\u000b\u0000\u00f9\u00fa\u0007\u0004\u0000\u0000"+
		"\u00fa\u00fc\u0003\u0016\u000b\u0000\u00fb\u00f7\u0001\u0000\u0000\u0000"+
		"\u00fb\u00f9\u0001\u0000\u0000\u0000\u00fc#\u0001\u0000\u0000\u0000\u00fd"+
		"\u00fe\u0005\u0335\u0000\u0000\u00fe\u00ff\u0003\u0016\u000b\u0000\u00ff"+
		"\u0100\u0005\u0336\u0000\u0000\u0100%\u0001\u0000\u0000\u0000\u0101\u0109"+
		"\u0005\u00df\u0000\u0000\u0102\u0109\u0003.\u0017\u0000\u0103\u0109\u0003"+
		"\u0018\f\u0000\u0104\u0105\u0005\u0335\u0000\u0000\u0105\u0106\u0003&"+
		"\u0013\u0000\u0106\u0107\u0005\u0336\u0000\u0000\u0107\u0109\u0001\u0000"+
		"\u0000\u0000\u0108\u0101\u0001\u0000\u0000\u0000\u0108\u0102\u0001\u0000"+
		"\u0000\u0000\u0108\u0103\u0001\u0000\u0000\u0000\u0108\u0104\u0001\u0000"+
		"\u0000\u0000\u0109\'\u0001\u0000\u0000\u0000\u010a\u011f\u0005\u0323\u0000"+
		"\u0000\u010b\u011f\u0005\u0324\u0000\u0000\u010c\u011f\u0005\u0325\u0000"+
		"\u0000\u010d\u010e\u0005\u0325\u0000\u0000\u010e\u011f\u0005\u0323\u0000"+
		"\u0000\u010f\u0110\u0005\u0324\u0000\u0000\u0110\u011f\u0005\u0323\u0000"+
		"\u0000\u0111\u0112\u0005\u0325\u0000\u0000\u0112\u011f\u0005\u0324\u0000"+
		"\u0000\u0113\u0114\u0005\u0326\u0000\u0000\u0114\u011f\u0005\u0323\u0000"+
		"\u0000\u0115\u0116\u0005\u0326\u0000\u0000\u0116\u011f\u0005\u0324\u0000"+
		"\u0000\u0117\u0118\u0005\u0326\u0000\u0000\u0118\u011f\u0005\u0325\u0000"+
		"\u0000\u0119\u011a\u0005\u033c\u0000\u0000\u011a\u011f\u0005\u033f\u0000"+
		"\u0000\u011b\u011f\u0005\u033c\u0000\u0000\u011c\u011d\u0005\u033f\u0000"+
		"\u0000\u011d\u011f\u0005\u033c\u0000\u0000\u011e\u010a\u0001\u0000\u0000"+
		"\u0000\u011e\u010b\u0001\u0000\u0000\u0000\u011e\u010c\u0001\u0000\u0000"+
		"\u0000\u011e\u010d\u0001\u0000\u0000\u0000\u011e\u010f\u0001\u0000\u0000"+
		"\u0000\u011e\u0111\u0001\u0000\u0000\u0000\u011e\u0113\u0001\u0000\u0000"+
		"\u0000\u011e\u0115\u0001\u0000\u0000\u0000\u011e\u0117\u0001\u0000\u0000"+
		"\u0000\u011e\u0119\u0001\u0000\u0000\u0000\u011e\u011b\u0001\u0000\u0000"+
		"\u0000\u011e\u011c\u0001\u0000\u0000\u0000\u011f)\u0001\u0000\u0000\u0000"+
		"\u0120\u0121\u0007\u0005\u0000\u0000\u0121+\u0001\u0000\u0000\u0000\u0122"+
		"\u0124\u0005\u00dc\u0000\u0000\u0123\u0122\u0001\u0000\u0000\u0000\u0123"+
		"\u0124\u0001\u0000\u0000\u0000\u0124\u0125\u0001\u0000\u0000\u0000\u0125"+
		"\u0126\u0005\u00df\u0000\u0000\u0126-\u0001\u0000\u0000\u0000\u0127\u0132"+
		"\u0005\u031f\u0000\u0000\u0128\u0132\u0005\u0320\u0000\u0000\u0129\u012b"+
		"\u00030\u0018\u0000\u012a\u0129\u0001\u0000\u0000\u0000\u012a\u012b\u0001"+
		"\u0000\u0000\u0000\u012b\u012c\u0001\u0000\u0000\u0000\u012c\u0132\u0005"+
		"\u031b\u0000\u0000\u012d\u012f\u00030\u0018\u0000\u012e\u012d\u0001\u0000"+
		"\u0000\u0000\u012e\u012f\u0001\u0000\u0000\u0000\u012f\u0130\u0001\u0000"+
		"\u0000\u0000\u0130\u0132\u0007\u0006\u0000\u0000\u0131\u0127\u0001\u0000"+
		"\u0000\u0000\u0131\u0128\u0001\u0000\u0000\u0000\u0131\u012a\u0001\u0000"+
		"\u0000\u0000\u0131\u012e\u0001\u0000\u0000\u0000\u0132/\u0001\u0000\u0000"+
		"\u0000\u0133\u0134\u0007\u0004\u0000\u0000\u01341\u0001\u0000\u0000\u0000"+
		"\u0135\u0136\u0007\u0007\u0000\u0000\u01363\u0001\u0000\u0000\u0000#9"+
		"CILRW[biqu\u007f\u0088\u0095\u009c\u00a5\u00b5\u00b7\u00be\u00c2\u00cd"+
		"\u00d0\u00d7\u00de\u00e5\u00eb\u00f2\u00f5\u00fb\u0108\u011e\u0123\u012a"+
		"\u012e\u0131";
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy