org.apache.drill.common.expression.parser.ExprParser Maven / Gradle / Ivy
// Generated from org/apache/drill/common/expression/parser/ExprParser.g4 by ANTLR 4.8
package org.apache.drill.common.expression.parser;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//Explicit import...
import java.util.*;
import org.apache.drill.common.expression.*;
import org.apache.drill.common.expression.PathSegment.NameSegment;
import org.apache.drill.common.expression.PathSegment.ArraySegment;
import org.apache.drill.common.types.*;
import org.apache.drill.common.types.TypeProtos.*;
import org.apache.drill.common.types.TypeProtos.DataMode;
import org.apache.drill.common.types.TypeProtos.MajorType;
import org.apache.drill.common.exceptions.ExpressionParsingException;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class ExprParser extends Parser {
static { RuntimeMetaData.checkVersion("4.8", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
If=1, Else=2, Return=3, Then=4, End=5, In=6, Case=7, When=8, Cast=9, Convert=10,
AnyValue=11, Nullable=12, Repeat=13, As=14, BIT=15, INT=16, BIGINT=17,
FLOAT4=18, FLOAT8=19, VARCHAR=20, VARBINARY=21, DATE=22, TIMESTAMP=23,
TIME=24, TIMESTAMPTZ=25, INTERVAL=26, INTERVALYEAR=27, INTERVALDAY=28,
Period=29, DECIMAL9=30, DECIMAL18=31, DECIMAL28DENSE=32, DECIMAL28SPARSE=33,
DECIMAL38DENSE=34, DECIMAL38SPARSE=35, VARDECIMAL=36, Or=37, And=38, Equals=39,
NEquals=40, GTEquals=41, LTEquals=42, Caret=43, Excl=44, GT=45, LT=46,
Plus=47, Minus=48, Asterisk=49, ForwardSlash=50, Percent=51, OBrace=52,
CBrace=53, OBracket=54, CBracket=55, OParen=56, CParen=57, SColon=58,
Comma=59, QMark=60, Colon=61, SingleQuote=62, Bool=63, Number=64, Identifier=65,
QuotedIdentifier=66, String=67, LineComment=68, BlockComment=69, Space=70;
public static final int
RULE_parse = 0, RULE_functionCall = 1, RULE_convertCall = 2, RULE_anyValueCall = 3,
RULE_castCall = 4, RULE_repeat = 5, RULE_dataType = 6, RULE_booleanType = 7,
RULE_numType = 8, RULE_charType = 9, RULE_precision = 10, RULE_scale = 11,
RULE_dateType = 12, RULE_typeLen = 13, RULE_ifStatement = 14, RULE_ifStat = 15,
RULE_elseIfStat = 16, RULE_caseStatement = 17, RULE_caseWhenStat = 18,
RULE_caseElseStat = 19, RULE_exprList = 20, RULE_expression = 21, RULE_condExpr = 22,
RULE_orExpr = 23, RULE_andExpr = 24, RULE_equExpr = 25, RULE_relExpr = 26,
RULE_addExpr = 27, RULE_mulExpr = 28, RULE_xorExpr = 29, RULE_unaryExpr = 30,
RULE_atom = 31, RULE_pathSegment = 32, RULE_nameSegment = 33, RULE_arraySegment = 34,
RULE_lookup = 35;
private static String[] makeRuleNames() {
return new String[] {
"parse", "functionCall", "convertCall", "anyValueCall", "castCall", "repeat",
"dataType", "booleanType", "numType", "charType", "precision", "scale",
"dateType", "typeLen", "ifStatement", "ifStat", "elseIfStat", "caseStatement",
"caseWhenStat", "caseElseStat", "exprList", "expression", "condExpr",
"orExpr", "andExpr", "equExpr", "relExpr", "addExpr", "mulExpr", "xorExpr",
"unaryExpr", "atom", "pathSegment", "nameSegment", "arraySegment", "lookup"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
null, "'if'", "'else'", "'return'", "'then'", "'end'", "'in'", "'case'",
"'when'", "'cast'", null, null, "'nullable'", "'repeat'", "'as'", null,
null, null, null, null, null, null, null, null, null, null, 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, "If", "Else", "Return", "Then", "End", "In", "Case", "When", "Cast",
"Convert", "AnyValue", "Nullable", "Repeat", "As", "BIT", "INT", "BIGINT",
"FLOAT4", "FLOAT8", "VARCHAR", "VARBINARY", "DATE", "TIMESTAMP", "TIME",
"TIMESTAMPTZ", "INTERVAL", "INTERVALYEAR", "INTERVALDAY", "Period", "DECIMAL9",
"DECIMAL18", "DECIMAL28DENSE", "DECIMAL28SPARSE", "DECIMAL38DENSE", "DECIMAL38SPARSE",
"VARDECIMAL", "Or", "And", "Equals", "NEquals", "GTEquals", "LTEquals",
"Caret", "Excl", "GT", "LT", "Plus", "Minus", "Asterisk", "ForwardSlash",
"Percent", "OBrace", "CBrace", "OBracket", "CBracket", "OParen", "CParen",
"SColon", "Comma", "QMark", "Colon", "SingleQuote", "Bool", "Number",
"Identifier", "QuotedIdentifier", "String", "LineComment", "BlockComment",
"Space"
};
}
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 "ExprParser.g4"; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String getSerializedATN() { return _serializedATN; }
@Override
public ATN getATN() { return _ATN; }
private String fullExpression;
private int tokenPos;
public static void p(String s){
System.out.println(s);
}
public ExpressionPosition pos(Token token){
return new ExpressionPosition(fullExpression, token.getTokenIndex());
}
public ExprParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
public static class ParseContext extends ParserRuleContext {
public LogicalExpression e;
public ExpressionContext expression;
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode EOF() { return getToken(ExprParser.EOF, 0); }
public ParseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_parse; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterParse(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitParse(this);
}
}
public final ParseContext parse() throws RecognitionException {
ParseContext _localctx = new ParseContext(_ctx, getState());
enterRule(_localctx, 0, RULE_parse);
try {
enterOuterAlt(_localctx, 1);
{
setState(72);
((ParseContext)_localctx).expression = expression();
setState(73);
match(EOF);
((ParseContext)_localctx).e = ((ParseContext)_localctx).expression.e;
if (fullExpression == null) fullExpression = (((ParseContext)_localctx).expression!=null?_input.getText(((ParseContext)_localctx).expression.start,((ParseContext)_localctx).expression.stop):null);
tokenPos = (((ParseContext)_localctx).expression!=null?(((ParseContext)_localctx).expression.start):null).getTokenIndex();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class FunctionCallContext extends ParserRuleContext {
public LogicalExpression e;
public Token Identifier;
public ExprListContext exprList;
public TerminalNode Identifier() { return getToken(ExprParser.Identifier, 0); }
public TerminalNode OParen() { return getToken(ExprParser.OParen, 0); }
public TerminalNode CParen() { return getToken(ExprParser.CParen, 0); }
public ExprListContext exprList() {
return getRuleContext(ExprListContext.class,0);
}
public FunctionCallContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_functionCall; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterFunctionCall(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitFunctionCall(this);
}
}
public final FunctionCallContext functionCall() throws RecognitionException {
FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
enterRule(_localctx, 2, RULE_functionCall);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(76);
((FunctionCallContext)_localctx).Identifier = match(Identifier);
setState(77);
match(OParen);
setState(79);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << If) | (1L << Case) | (1L << Cast) | (1L << Convert) | (1L << AnyValue) | (1L << Excl) | (1L << Plus) | (1L << Minus) | (1L << OParen) | (1L << SingleQuote) | (1L << Bool))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Number - 64)) | (1L << (Identifier - 64)) | (1L << (QuotedIdentifier - 64)) | (1L << (String - 64)))) != 0)) {
{
setState(78);
((FunctionCallContext)_localctx).exprList = exprList();
}
}
setState(81);
match(CParen);
((FunctionCallContext)_localctx).e =
FunctionCallFactory.createExpression((((FunctionCallContext)_localctx).Identifier!=null?((FunctionCallContext)_localctx).Identifier.getText():null), pos(((FunctionCallContext)_localctx).Identifier),
(((FunctionCallContext)_localctx).exprList == null ? new ArrayList<>() : ((FunctionCallContext)_localctx).exprList.listE));
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ConvertCallContext extends ParserRuleContext {
public LogicalExpression e;
public Token Convert;
public ExpressionContext expression;
public Token String;
public TerminalNode Convert() { return getToken(ExprParser.Convert, 0); }
public TerminalNode OParen() { return getToken(ExprParser.OParen, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode Comma() { return getToken(ExprParser.Comma, 0); }
public TerminalNode String() { return getToken(ExprParser.String, 0); }
public TerminalNode CParen() { return getToken(ExprParser.CParen, 0); }
public ConvertCallContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_convertCall; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterConvertCall(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitConvertCall(this);
}
}
public final ConvertCallContext convertCall() throws RecognitionException {
ConvertCallContext _localctx = new ConvertCallContext(_ctx, getState());
enterRule(_localctx, 4, RULE_convertCall);
try {
enterOuterAlt(_localctx, 1);
{
setState(84);
((ConvertCallContext)_localctx).Convert = match(Convert);
setState(85);
match(OParen);
setState(86);
((ConvertCallContext)_localctx).expression = expression();
setState(87);
match(Comma);
setState(88);
((ConvertCallContext)_localctx).String = match(String);
setState(89);
match(CParen);
((ConvertCallContext)_localctx).e = FunctionCallFactory.createConvert((((ConvertCallContext)_localctx).Convert!=null?((ConvertCallContext)_localctx).Convert.getText():null), (((ConvertCallContext)_localctx).String!=null?((ConvertCallContext)_localctx).String.getText():null), ((ConvertCallContext)_localctx).expression.e, pos(((ConvertCallContext)_localctx).Convert));
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class AnyValueCallContext extends ParserRuleContext {
public LogicalExpression e;
public Token AnyValue;
public ExprListContext exprList;
public TerminalNode AnyValue() { return getToken(ExprParser.AnyValue, 0); }
public TerminalNode OParen() { return getToken(ExprParser.OParen, 0); }
public TerminalNode CParen() { return getToken(ExprParser.CParen, 0); }
public ExprListContext exprList() {
return getRuleContext(ExprListContext.class,0);
}
public AnyValueCallContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_anyValueCall; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterAnyValueCall(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitAnyValueCall(this);
}
}
public final AnyValueCallContext anyValueCall() throws RecognitionException {
AnyValueCallContext _localctx = new AnyValueCallContext(_ctx, getState());
enterRule(_localctx, 6, RULE_anyValueCall);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(92);
((AnyValueCallContext)_localctx).AnyValue = match(AnyValue);
setState(93);
match(OParen);
setState(95);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << If) | (1L << Case) | (1L << Cast) | (1L << Convert) | (1L << AnyValue) | (1L << Excl) | (1L << Plus) | (1L << Minus) | (1L << OParen) | (1L << SingleQuote) | (1L << Bool))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Number - 64)) | (1L << (Identifier - 64)) | (1L << (QuotedIdentifier - 64)) | (1L << (String - 64)))) != 0)) {
{
setState(94);
((AnyValueCallContext)_localctx).exprList = exprList();
}
}
setState(97);
match(CParen);
((AnyValueCallContext)_localctx).e =
FunctionCallFactory.createExpression((((AnyValueCallContext)_localctx).AnyValue!=null?((AnyValueCallContext)_localctx).AnyValue.getText():null), pos(((AnyValueCallContext)_localctx).AnyValue),
(((AnyValueCallContext)_localctx).exprList == null ? new ArrayList<>() : ((AnyValueCallContext)_localctx).exprList.listE));
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class CastCallContext extends ParserRuleContext {
public LogicalExpression e;
public Token Cast;
public ExpressionContext expression;
public DataTypeContext dataType;
public RepeatContext repeat;
public TerminalNode Cast() { return getToken(ExprParser.Cast, 0); }
public TerminalNode OParen() { return getToken(ExprParser.OParen, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode As() { return getToken(ExprParser.As, 0); }
public DataTypeContext dataType() {
return getRuleContext(DataTypeContext.class,0);
}
public TerminalNode CParen() { return getToken(ExprParser.CParen, 0); }
public RepeatContext repeat() {
return getRuleContext(RepeatContext.class,0);
}
public CastCallContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_castCall; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterCastCall(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitCastCall(this);
}
}
public final CastCallContext castCall() throws RecognitionException {
CastCallContext _localctx = new CastCallContext(_ctx, getState());
enterRule(_localctx, 8, RULE_castCall);
List exprs = new ArrayList<>();
ExpressionPosition p = null;
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(100);
((CastCallContext)_localctx).Cast = match(Cast);
setState(101);
match(OParen);
setState(102);
((CastCallContext)_localctx).expression = expression();
setState(103);
match(As);
setState(104);
((CastCallContext)_localctx).dataType = dataType();
setState(106);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Repeat) {
{
setState(105);
((CastCallContext)_localctx).repeat = repeat();
}
}
setState(108);
match(CParen);
if (((CastCallContext)_localctx).repeat != null && ((CastCallContext)_localctx).repeat.isRep.compareTo(Boolean.TRUE)==0)
((CastCallContext)_localctx).e = FunctionCallFactory.createCast(TypeProtos.MajorType.newBuilder().mergeFrom(((CastCallContext)_localctx).dataType.type).setMode(DataMode.REPEATED).build(), pos(((CastCallContext)_localctx).Cast), ((CastCallContext)_localctx).expression.e);
else
((CastCallContext)_localctx).e = FunctionCallFactory.createCast(((CastCallContext)_localctx).dataType.type, pos(((CastCallContext)_localctx).Cast), ((CastCallContext)_localctx).expression.e);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class RepeatContext extends ParserRuleContext {
public Boolean isRep;
public TerminalNode Repeat() { return getToken(ExprParser.Repeat, 0); }
public RepeatContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_repeat; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterRepeat(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitRepeat(this);
}
}
public final RepeatContext repeat() throws RecognitionException {
RepeatContext _localctx = new RepeatContext(_ctx, getState());
enterRule(_localctx, 10, RULE_repeat);
try {
enterOuterAlt(_localctx, 1);
{
setState(111);
match(Repeat);
((RepeatContext)_localctx).isRep = Boolean.TRUE;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class DataTypeContext extends ParserRuleContext {
public MajorType type;
public NumTypeContext numType;
public CharTypeContext charType;
public DateTypeContext dateType;
public BooleanTypeContext booleanType;
public NumTypeContext numType() {
return getRuleContext(NumTypeContext.class,0);
}
public CharTypeContext charType() {
return getRuleContext(CharTypeContext.class,0);
}
public DateTypeContext dateType() {
return getRuleContext(DateTypeContext.class,0);
}
public BooleanTypeContext booleanType() {
return getRuleContext(BooleanTypeContext.class,0);
}
public DataTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_dataType; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterDataType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitDataType(this);
}
}
public final DataTypeContext dataType() throws RecognitionException {
DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
enterRule(_localctx, 12, RULE_dataType);
try {
setState(126);
_errHandler.sync(this);
switch (_input.LA(1)) {
case INT:
case BIGINT:
case FLOAT4:
case FLOAT8:
case DECIMAL9:
case DECIMAL18:
case DECIMAL28DENSE:
case DECIMAL28SPARSE:
case DECIMAL38DENSE:
case DECIMAL38SPARSE:
case VARDECIMAL:
enterOuterAlt(_localctx, 1);
{
setState(114);
((DataTypeContext)_localctx).numType = numType();
((DataTypeContext)_localctx).type = ((DataTypeContext)_localctx).numType.type;
}
break;
case VARCHAR:
case VARBINARY:
enterOuterAlt(_localctx, 2);
{
setState(117);
((DataTypeContext)_localctx).charType = charType();
((DataTypeContext)_localctx).type = ((DataTypeContext)_localctx).charType.type;
}
break;
case DATE:
case TIMESTAMP:
case TIME:
case TIMESTAMPTZ:
case INTERVAL:
case INTERVALYEAR:
case INTERVALDAY:
enterOuterAlt(_localctx, 3);
{
setState(120);
((DataTypeContext)_localctx).dateType = dateType();
((DataTypeContext)_localctx).type = ((DataTypeContext)_localctx).dateType.type;
}
break;
case BIT:
enterOuterAlt(_localctx, 4);
{
setState(123);
((DataTypeContext)_localctx).booleanType = booleanType();
((DataTypeContext)_localctx).type = ((DataTypeContext)_localctx).booleanType.type;
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class BooleanTypeContext extends ParserRuleContext {
public MajorType type;
public TerminalNode BIT() { return getToken(ExprParser.BIT, 0); }
public BooleanTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_booleanType; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterBooleanType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitBooleanType(this);
}
}
public final BooleanTypeContext booleanType() throws RecognitionException {
BooleanTypeContext _localctx = new BooleanTypeContext(_ctx, getState());
enterRule(_localctx, 14, RULE_booleanType);
try {
enterOuterAlt(_localctx, 1);
{
setState(128);
match(BIT);
((BooleanTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.BIT);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class NumTypeContext extends ParserRuleContext {
public MajorType type;
public PrecisionContext precision;
public ScaleContext scale;
public TerminalNode INT() { return getToken(ExprParser.INT, 0); }
public TerminalNode BIGINT() { return getToken(ExprParser.BIGINT, 0); }
public TerminalNode FLOAT4() { return getToken(ExprParser.FLOAT4, 0); }
public TerminalNode FLOAT8() { return getToken(ExprParser.FLOAT8, 0); }
public TerminalNode DECIMAL9() { return getToken(ExprParser.DECIMAL9, 0); }
public TerminalNode OParen() { return getToken(ExprParser.OParen, 0); }
public PrecisionContext precision() {
return getRuleContext(PrecisionContext.class,0);
}
public TerminalNode Comma() { return getToken(ExprParser.Comma, 0); }
public ScaleContext scale() {
return getRuleContext(ScaleContext.class,0);
}
public TerminalNode CParen() { return getToken(ExprParser.CParen, 0); }
public TerminalNode DECIMAL18() { return getToken(ExprParser.DECIMAL18, 0); }
public TerminalNode DECIMAL28DENSE() { return getToken(ExprParser.DECIMAL28DENSE, 0); }
public TerminalNode DECIMAL28SPARSE() { return getToken(ExprParser.DECIMAL28SPARSE, 0); }
public TerminalNode DECIMAL38DENSE() { return getToken(ExprParser.DECIMAL38DENSE, 0); }
public TerminalNode DECIMAL38SPARSE() { return getToken(ExprParser.DECIMAL38SPARSE, 0); }
public TerminalNode VARDECIMAL() { return getToken(ExprParser.VARDECIMAL, 0); }
public NumTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_numType; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterNumType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitNumType(this);
}
}
public final NumTypeContext numType() throws RecognitionException {
NumTypeContext _localctx = new NumTypeContext(_ctx, getState());
enterRule(_localctx, 16, RULE_numType);
try {
setState(195);
_errHandler.sync(this);
switch (_input.LA(1)) {
case INT:
enterOuterAlt(_localctx, 1);
{
setState(131);
match(INT);
((NumTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.INT);
}
break;
case BIGINT:
enterOuterAlt(_localctx, 2);
{
setState(133);
match(BIGINT);
((NumTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.BIGINT);
}
break;
case FLOAT4:
enterOuterAlt(_localctx, 3);
{
setState(135);
match(FLOAT4);
((NumTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.FLOAT4);
}
break;
case FLOAT8:
enterOuterAlt(_localctx, 4);
{
setState(137);
match(FLOAT8);
((NumTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.FLOAT8);
}
break;
case DECIMAL9:
enterOuterAlt(_localctx, 5);
{
setState(139);
match(DECIMAL9);
setState(140);
match(OParen);
setState(141);
((NumTypeContext)_localctx).precision = precision();
setState(142);
match(Comma);
setState(143);
((NumTypeContext)_localctx).scale = scale();
setState(144);
match(CParen);
((NumTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.DECIMAL9).setMode(DataMode.REQUIRED).setPrecision(((NumTypeContext)_localctx).precision.value.intValue()).setScale(((NumTypeContext)_localctx).scale.value.intValue()).build();
}
break;
case DECIMAL18:
enterOuterAlt(_localctx, 6);
{
setState(147);
match(DECIMAL18);
setState(148);
match(OParen);
setState(149);
((NumTypeContext)_localctx).precision = precision();
setState(150);
match(Comma);
setState(151);
((NumTypeContext)_localctx).scale = scale();
setState(152);
match(CParen);
((NumTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.DECIMAL18).setMode(DataMode.REQUIRED).setPrecision(((NumTypeContext)_localctx).precision.value.intValue()).setScale(((NumTypeContext)_localctx).scale.value.intValue()).build();
}
break;
case DECIMAL28DENSE:
enterOuterAlt(_localctx, 7);
{
setState(155);
match(DECIMAL28DENSE);
setState(156);
match(OParen);
setState(157);
((NumTypeContext)_localctx).precision = precision();
setState(158);
match(Comma);
setState(159);
((NumTypeContext)_localctx).scale = scale();
setState(160);
match(CParen);
((NumTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.DECIMAL28DENSE).setMode(DataMode.REQUIRED).setPrecision(((NumTypeContext)_localctx).precision.value.intValue()).setScale(((NumTypeContext)_localctx).scale.value.intValue()).build();
}
break;
case DECIMAL28SPARSE:
enterOuterAlt(_localctx, 8);
{
setState(163);
match(DECIMAL28SPARSE);
setState(164);
match(OParen);
setState(165);
((NumTypeContext)_localctx).precision = precision();
setState(166);
match(Comma);
setState(167);
((NumTypeContext)_localctx).scale = scale();
setState(168);
match(CParen);
((NumTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.DECIMAL28SPARSE).setMode(DataMode.REQUIRED).setPrecision(((NumTypeContext)_localctx).precision.value.intValue()).setScale(((NumTypeContext)_localctx).scale.value.intValue()).build();
}
break;
case DECIMAL38DENSE:
enterOuterAlt(_localctx, 9);
{
setState(171);
match(DECIMAL38DENSE);
setState(172);
match(OParen);
setState(173);
((NumTypeContext)_localctx).precision = precision();
setState(174);
match(Comma);
setState(175);
((NumTypeContext)_localctx).scale = scale();
setState(176);
match(CParen);
((NumTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.DECIMAL38DENSE).setMode(DataMode.REQUIRED).setPrecision(((NumTypeContext)_localctx).precision.value.intValue()).setScale(((NumTypeContext)_localctx).scale.value.intValue()).build();
}
break;
case DECIMAL38SPARSE:
enterOuterAlt(_localctx, 10);
{
setState(179);
match(DECIMAL38SPARSE);
setState(180);
match(OParen);
setState(181);
((NumTypeContext)_localctx).precision = precision();
setState(182);
match(Comma);
setState(183);
((NumTypeContext)_localctx).scale = scale();
setState(184);
match(CParen);
((NumTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.DECIMAL38SPARSE).setMode(DataMode.REQUIRED).setPrecision(((NumTypeContext)_localctx).precision.value.intValue()).setScale(((NumTypeContext)_localctx).scale.value.intValue()).build();
}
break;
case VARDECIMAL:
enterOuterAlt(_localctx, 11);
{
setState(187);
match(VARDECIMAL);
setState(188);
match(OParen);
setState(189);
((NumTypeContext)_localctx).precision = precision();
setState(190);
match(Comma);
setState(191);
((NumTypeContext)_localctx).scale = scale();
setState(192);
match(CParen);
((NumTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.VARDECIMAL).setMode(DataMode.REQUIRED).setPrecision(((NumTypeContext)_localctx).precision.value.intValue()).setScale(((NumTypeContext)_localctx).scale.value.intValue()).build();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class CharTypeContext extends ParserRuleContext {
public MajorType type;
public TypeLenContext typeLen;
public TerminalNode VARCHAR() { return getToken(ExprParser.VARCHAR, 0); }
public TypeLenContext typeLen() {
return getRuleContext(TypeLenContext.class,0);
}
public TerminalNode VARBINARY() { return getToken(ExprParser.VARBINARY, 0); }
public CharTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_charType; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterCharType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitCharType(this);
}
}
public final CharTypeContext charType() throws RecognitionException {
CharTypeContext _localctx = new CharTypeContext(_ctx, getState());
enterRule(_localctx, 18, RULE_charType);
try {
setState(205);
_errHandler.sync(this);
switch (_input.LA(1)) {
case VARCHAR:
enterOuterAlt(_localctx, 1);
{
setState(197);
match(VARCHAR);
setState(198);
((CharTypeContext)_localctx).typeLen = typeLen();
((CharTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.VARCHAR).setMode(DataMode.REQUIRED).setPrecision(((CharTypeContext)_localctx).typeLen.length.intValue()).build();
}
break;
case VARBINARY:
enterOuterAlt(_localctx, 2);
{
setState(201);
match(VARBINARY);
setState(202);
((CharTypeContext)_localctx).typeLen = typeLen();
((CharTypeContext)_localctx).type = TypeProtos.MajorType.newBuilder().setMinorType(TypeProtos.MinorType.VARBINARY).setMode(DataMode.REQUIRED).setPrecision(((CharTypeContext)_localctx).typeLen.length.intValue()).build();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class PrecisionContext extends ParserRuleContext {
public Integer value;
public Token Number;
public TerminalNode Number() { return getToken(ExprParser.Number, 0); }
public PrecisionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_precision; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterPrecision(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitPrecision(this);
}
}
public final PrecisionContext precision() throws RecognitionException {
PrecisionContext _localctx = new PrecisionContext(_ctx, getState());
enterRule(_localctx, 20, RULE_precision);
try {
enterOuterAlt(_localctx, 1);
{
setState(207);
((PrecisionContext)_localctx).Number = match(Number);
((PrecisionContext)_localctx).value = Integer.parseInt((((PrecisionContext)_localctx).Number!=null?((PrecisionContext)_localctx).Number.getText():null));
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ScaleContext extends ParserRuleContext {
public Integer value;
public Token Number;
public TerminalNode Number() { return getToken(ExprParser.Number, 0); }
public ScaleContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_scale; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterScale(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitScale(this);
}
}
public final ScaleContext scale() throws RecognitionException {
ScaleContext _localctx = new ScaleContext(_ctx, getState());
enterRule(_localctx, 22, RULE_scale);
try {
enterOuterAlt(_localctx, 1);
{
setState(210);
((ScaleContext)_localctx).Number = match(Number);
((ScaleContext)_localctx).value = Integer.parseInt((((ScaleContext)_localctx).Number!=null?((ScaleContext)_localctx).Number.getText():null));
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class DateTypeContext extends ParserRuleContext {
public MajorType type;
public TerminalNode DATE() { return getToken(ExprParser.DATE, 0); }
public TerminalNode TIMESTAMP() { return getToken(ExprParser.TIMESTAMP, 0); }
public TerminalNode TIME() { return getToken(ExprParser.TIME, 0); }
public TerminalNode TIMESTAMPTZ() { return getToken(ExprParser.TIMESTAMPTZ, 0); }
public TerminalNode INTERVAL() { return getToken(ExprParser.INTERVAL, 0); }
public TerminalNode INTERVALYEAR() { return getToken(ExprParser.INTERVALYEAR, 0); }
public TerminalNode INTERVALDAY() { return getToken(ExprParser.INTERVALDAY, 0); }
public DateTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_dateType; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterDateType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitDateType(this);
}
}
public final DateTypeContext dateType() throws RecognitionException {
DateTypeContext _localctx = new DateTypeContext(_ctx, getState());
enterRule(_localctx, 24, RULE_dateType);
try {
setState(227);
_errHandler.sync(this);
switch (_input.LA(1)) {
case DATE:
enterOuterAlt(_localctx, 1);
{
setState(213);
match(DATE);
((DateTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.DATE);
}
break;
case TIMESTAMP:
enterOuterAlt(_localctx, 2);
{
setState(215);
match(TIMESTAMP);
((DateTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.TIMESTAMP);
}
break;
case TIME:
enterOuterAlt(_localctx, 3);
{
setState(217);
match(TIME);
((DateTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.TIME);
}
break;
case TIMESTAMPTZ:
enterOuterAlt(_localctx, 4);
{
setState(219);
match(TIMESTAMPTZ);
((DateTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.TIMESTAMPTZ);
}
break;
case INTERVAL:
enterOuterAlt(_localctx, 5);
{
setState(221);
match(INTERVAL);
((DateTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.INTERVAL);
}
break;
case INTERVALYEAR:
enterOuterAlt(_localctx, 6);
{
setState(223);
match(INTERVALYEAR);
((DateTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.INTERVALYEAR);
}
break;
case INTERVALDAY:
enterOuterAlt(_localctx, 7);
{
setState(225);
match(INTERVALDAY);
((DateTypeContext)_localctx).type = Types.required(TypeProtos.MinorType.INTERVALDAY);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class TypeLenContext extends ParserRuleContext {
public Integer length;
public Token Number;
public TerminalNode OParen() { return getToken(ExprParser.OParen, 0); }
public TerminalNode Number() { return getToken(ExprParser.Number, 0); }
public TerminalNode CParen() { return getToken(ExprParser.CParen, 0); }
public TypeLenContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typeLen; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterTypeLen(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitTypeLen(this);
}
}
public final TypeLenContext typeLen() throws RecognitionException {
TypeLenContext _localctx = new TypeLenContext(_ctx, getState());
enterRule(_localctx, 26, RULE_typeLen);
try {
enterOuterAlt(_localctx, 1);
{
setState(229);
match(OParen);
setState(230);
((TypeLenContext)_localctx).Number = match(Number);
setState(231);
match(CParen);
((TypeLenContext)_localctx).length = Integer.parseInt((((TypeLenContext)_localctx).Number!=null?((TypeLenContext)_localctx).Number.getText():null));
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class IfStatementContext extends ParserRuleContext {
public LogicalExpression e;
public IfStatContext i1;
public ElseIfStatContext elseIfStat;
public ExpressionContext expression;
public TerminalNode Else() { return getToken(ExprParser.Else, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode End() { return getToken(ExprParser.End, 0); }
public IfStatContext ifStat() {
return getRuleContext(IfStatContext.class,0);
}
public List elseIfStat() {
return getRuleContexts(ElseIfStatContext.class);
}
public ElseIfStatContext elseIfStat(int i) {
return getRuleContext(ElseIfStatContext.class,i);
}
public IfStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_ifStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterIfStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitIfStatement(this);
}
}
public final IfStatementContext ifStatement() throws RecognitionException {
IfStatementContext _localctx = new IfStatementContext(_ctx, getState());
enterRule(_localctx, 28, RULE_ifStatement);
IfExpression.Builder s = IfExpression.newBuilder();
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(234);
((IfStatementContext)_localctx).i1 = ifStat();
s.setIfCondition(((IfStatementContext)_localctx).i1.i); s.setPosition(pos((((IfStatementContext)_localctx).i1!=null?(((IfStatementContext)_localctx).i1.start):null)));
setState(241);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(236);
((IfStatementContext)_localctx).elseIfStat = elseIfStat();
s.setIfCondition(((IfStatementContext)_localctx).elseIfStat.i);
}
}
}
setState(243);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
}
setState(244);
match(Else);
setState(245);
((IfStatementContext)_localctx).expression = expression();
s.setElse(((IfStatementContext)_localctx).expression.e);
setState(247);
match(End);
}
_ctx.stop = _input.LT(-1);
((IfStatementContext)_localctx).e = s.build();
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class IfStatContext extends ParserRuleContext {
public IfExpression.IfCondition i;
public ExpressionContext e1;
public ExpressionContext e2;
public TerminalNode If() { return getToken(ExprParser.If, 0); }
public TerminalNode Then() { return getToken(ExprParser.Then, 0); }
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public IfStatContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_ifStat; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterIfStat(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitIfStat(this);
}
}
public final IfStatContext ifStat() throws RecognitionException {
IfStatContext _localctx = new IfStatContext(_ctx, getState());
enterRule(_localctx, 30, RULE_ifStat);
try {
enterOuterAlt(_localctx, 1);
{
setState(249);
match(If);
setState(250);
((IfStatContext)_localctx).e1 = expression();
setState(251);
match(Then);
setState(252);
((IfStatContext)_localctx).e2 = expression();
((IfStatContext)_localctx).i = new IfExpression.IfCondition(((IfStatContext)_localctx).e1.e, ((IfStatContext)_localctx).e2.e);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ElseIfStatContext extends ParserRuleContext {
public IfExpression.IfCondition i;
public ExpressionContext e1;
public ExpressionContext e2;
public TerminalNode Else() { return getToken(ExprParser.Else, 0); }
public TerminalNode If() { return getToken(ExprParser.If, 0); }
public TerminalNode Then() { return getToken(ExprParser.Then, 0); }
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public ElseIfStatContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_elseIfStat; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterElseIfStat(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitElseIfStat(this);
}
}
public final ElseIfStatContext elseIfStat() throws RecognitionException {
ElseIfStatContext _localctx = new ElseIfStatContext(_ctx, getState());
enterRule(_localctx, 32, RULE_elseIfStat);
try {
enterOuterAlt(_localctx, 1);
{
setState(255);
match(Else);
setState(256);
match(If);
setState(257);
((ElseIfStatContext)_localctx).e1 = expression();
setState(258);
match(Then);
setState(259);
((ElseIfStatContext)_localctx).e2 = expression();
((ElseIfStatContext)_localctx).i = new IfExpression.IfCondition(((ElseIfStatContext)_localctx).e1.e, ((ElseIfStatContext)_localctx).e2.e);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class CaseStatementContext extends ParserRuleContext {
public LogicalExpression e;
public CaseWhenStatContext caseWhenStat;
public CaseElseStatContext caseElseStat;
public TerminalNode Case() { return getToken(ExprParser.Case, 0); }
public CaseElseStatContext caseElseStat() {
return getRuleContext(CaseElseStatContext.class,0);
}
public TerminalNode End() { return getToken(ExprParser.End, 0); }
public List caseWhenStat() {
return getRuleContexts(CaseWhenStatContext.class);
}
public CaseWhenStatContext caseWhenStat(int i) {
return getRuleContext(CaseWhenStatContext.class,i);
}
public CaseStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_caseStatement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterCaseStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitCaseStatement(this);
}
}
public final CaseStatementContext caseStatement() throws RecognitionException {
CaseStatementContext _localctx = new CaseStatementContext(_ctx, getState());
enterRule(_localctx, 34, RULE_caseStatement);
IfExpression.Builder s = IfExpression.newBuilder();
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(262);
match(Case);
setState(266);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(263);
((CaseStatementContext)_localctx).caseWhenStat = caseWhenStat();
s.setIfCondition(((CaseStatementContext)_localctx).caseWhenStat.e);
}
}
setState(268);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==When );
setState(270);
((CaseStatementContext)_localctx).caseElseStat = caseElseStat();
s.setElse(((CaseStatementContext)_localctx).caseElseStat.e);
setState(272);
match(End);
}
_ctx.stop = _input.LT(-1);
((CaseStatementContext)_localctx).e = s.build();
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class CaseWhenStatContext extends ParserRuleContext {
public IfExpression.IfCondition e;
public ExpressionContext e1;
public ExpressionContext e2;
public TerminalNode When() { return getToken(ExprParser.When, 0); }
public TerminalNode Then() { return getToken(ExprParser.Then, 0); }
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public CaseWhenStatContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_caseWhenStat; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterCaseWhenStat(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitCaseWhenStat(this);
}
}
public final CaseWhenStatContext caseWhenStat() throws RecognitionException {
CaseWhenStatContext _localctx = new CaseWhenStatContext(_ctx, getState());
enterRule(_localctx, 36, RULE_caseWhenStat);
try {
enterOuterAlt(_localctx, 1);
{
setState(274);
match(When);
setState(275);
((CaseWhenStatContext)_localctx).e1 = expression();
setState(276);
match(Then);
setState(277);
((CaseWhenStatContext)_localctx).e2 = expression();
((CaseWhenStatContext)_localctx).e = new IfExpression.IfCondition(((CaseWhenStatContext)_localctx).e1.e, ((CaseWhenStatContext)_localctx).e2.e);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class CaseElseStatContext extends ParserRuleContext {
public LogicalExpression e;
public ExpressionContext expression;
public TerminalNode Else() { return getToken(ExprParser.Else, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public CaseElseStatContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_caseElseStat; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterCaseElseStat(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitCaseElseStat(this);
}
}
public final CaseElseStatContext caseElseStat() throws RecognitionException {
CaseElseStatContext _localctx = new CaseElseStatContext(_ctx, getState());
enterRule(_localctx, 38, RULE_caseElseStat);
try {
enterOuterAlt(_localctx, 1);
{
setState(280);
match(Else);
setState(281);
((CaseElseStatContext)_localctx).expression = expression();
((CaseElseStatContext)_localctx).e = ((CaseElseStatContext)_localctx).expression.e;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ExprListContext extends ParserRuleContext {
public List listE;
public ExpressionContext e1;
public ExpressionContext e2;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public List Comma() { return getTokens(ExprParser.Comma); }
public TerminalNode Comma(int i) {
return getToken(ExprParser.Comma, i);
}
public ExprListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_exprList; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterExprList(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitExprList(this);
}
}
public final ExprListContext exprList() throws RecognitionException {
ExprListContext _localctx = new ExprListContext(_ctx, getState());
enterRule(_localctx, 40, RULE_exprList);
((ExprListContext)_localctx).listE = new ArrayList<>();
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(284);
((ExprListContext)_localctx).e1 = expression();
_localctx.listE.add(((ExprListContext)_localctx).e1.e);
setState(292);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Comma) {
{
{
setState(286);
match(Comma);
setState(287);
((ExprListContext)_localctx).e2 = expression();
_localctx.listE.add(((ExprListContext)_localctx).e2.e);
}
}
setState(294);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ExpressionContext extends ParserRuleContext {
public LogicalExpression e;
public IfStatementContext ifStatement;
public CaseStatementContext caseStatement;
public CondExprContext condExpr;
public IfStatementContext ifStatement() {
return getRuleContext(IfStatementContext.class,0);
}
public CaseStatementContext caseStatement() {
return getRuleContext(CaseStatementContext.class,0);
}
public CondExprContext condExpr() {
return getRuleContext(CondExprContext.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 ExprParserListener ) ((ExprParserListener)listener).enterExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitExpression(this);
}
}
public final ExpressionContext expression() throws RecognitionException {
ExpressionContext _localctx = new ExpressionContext(_ctx, getState());
enterRule(_localctx, 42, RULE_expression);
try {
setState(304);
_errHandler.sync(this);
switch (_input.LA(1)) {
case If:
enterOuterAlt(_localctx, 1);
{
setState(295);
((ExpressionContext)_localctx).ifStatement = ifStatement();
((ExpressionContext)_localctx).e = ((ExpressionContext)_localctx).ifStatement.e;
}
break;
case Case:
enterOuterAlt(_localctx, 2);
{
setState(298);
((ExpressionContext)_localctx).caseStatement = caseStatement();
((ExpressionContext)_localctx).e = ((ExpressionContext)_localctx).caseStatement.e;
}
break;
case Cast:
case Convert:
case AnyValue:
case Excl:
case Plus:
case Minus:
case OParen:
case SingleQuote:
case Bool:
case Number:
case Identifier:
case QuotedIdentifier:
case String:
enterOuterAlt(_localctx, 3);
{
setState(301);
((ExpressionContext)_localctx).condExpr = condExpr();
((ExpressionContext)_localctx).e = ((ExpressionContext)_localctx).condExpr.e;
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class CondExprContext extends ParserRuleContext {
public LogicalExpression e;
public OrExprContext orExpr;
public OrExprContext orExpr() {
return getRuleContext(OrExprContext.class,0);
}
public CondExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_condExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterCondExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitCondExpr(this);
}
}
public final CondExprContext condExpr() throws RecognitionException {
CondExprContext _localctx = new CondExprContext(_ctx, getState());
enterRule(_localctx, 44, RULE_condExpr);
try {
enterOuterAlt(_localctx, 1);
{
setState(306);
((CondExprContext)_localctx).orExpr = orExpr();
((CondExprContext)_localctx).e = ((CondExprContext)_localctx).orExpr.e;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class OrExprContext extends ParserRuleContext {
public LogicalExpression e;
public AndExprContext a1;
public AndExprContext a2;
public List andExpr() {
return getRuleContexts(AndExprContext.class);
}
public AndExprContext andExpr(int i) {
return getRuleContext(AndExprContext.class,i);
}
public List Or() { return getTokens(ExprParser.Or); }
public TerminalNode Or(int i) {
return getToken(ExprParser.Or, i);
}
public OrExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_orExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterOrExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitOrExpr(this);
}
}
public final OrExprContext orExpr() throws RecognitionException {
OrExprContext _localctx = new OrExprContext(_ctx, getState());
enterRule(_localctx, 46, RULE_orExpr);
List exprs = new ArrayList<>();
ExpressionPosition p = null;
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(309);
((OrExprContext)_localctx).a1 = andExpr();
exprs.add(((OrExprContext)_localctx).a1.e); p = pos( (((OrExprContext)_localctx).a1!=null?(((OrExprContext)_localctx).a1.start):null) );
setState(317);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Or) {
{
{
setState(311);
match(Or);
setState(312);
((OrExprContext)_localctx).a2 = andExpr();
exprs.add(((OrExprContext)_localctx).a2.e);
}
}
setState(319);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
_ctx.stop = _input.LT(-1);
if(exprs.size() == 1){
((OrExprContext)_localctx).e = exprs.get(0);
}else{
((OrExprContext)_localctx).e = FunctionCallFactory.createBooleanOperator("or", p, exprs);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class AndExprContext extends ParserRuleContext {
public LogicalExpression e;
public EquExprContext e1;
public EquExprContext e2;
public List equExpr() {
return getRuleContexts(EquExprContext.class);
}
public EquExprContext equExpr(int i) {
return getRuleContext(EquExprContext.class,i);
}
public List And() { return getTokens(ExprParser.And); }
public TerminalNode And(int i) {
return getToken(ExprParser.And, i);
}
public AndExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_andExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterAndExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitAndExpr(this);
}
}
public final AndExprContext andExpr() throws RecognitionException {
AndExprContext _localctx = new AndExprContext(_ctx, getState());
enterRule(_localctx, 48, RULE_andExpr);
List exprs = new ArrayList<>();
ExpressionPosition p = null;
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(320);
((AndExprContext)_localctx).e1 = equExpr();
exprs.add(((AndExprContext)_localctx).e1.e); p = pos( (((AndExprContext)_localctx).e1!=null?(((AndExprContext)_localctx).e1.start):null) );
setState(328);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==And) {
{
{
setState(322);
match(And);
setState(323);
((AndExprContext)_localctx).e2 = equExpr();
exprs.add(((AndExprContext)_localctx).e2.e);
}
}
setState(330);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
_ctx.stop = _input.LT(-1);
if(exprs.size() == 1){
((AndExprContext)_localctx).e = exprs.get(0);
}else{
((AndExprContext)_localctx).e = FunctionCallFactory.createBooleanOperator("and", p, exprs);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class EquExprContext extends ParserRuleContext {
public LogicalExpression e;
public RelExprContext r1;
public Token cmpr;
public RelExprContext r2;
public List relExpr() {
return getRuleContexts(RelExprContext.class);
}
public RelExprContext relExpr(int i) {
return getRuleContext(RelExprContext.class,i);
}
public List Equals() { return getTokens(ExprParser.Equals); }
public TerminalNode Equals(int i) {
return getToken(ExprParser.Equals, i);
}
public List NEquals() { return getTokens(ExprParser.NEquals); }
public TerminalNode NEquals(int i) {
return getToken(ExprParser.NEquals, i);
}
public EquExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_equExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterEquExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitEquExpr(this);
}
}
public final EquExprContext equExpr() throws RecognitionException {
EquExprContext _localctx = new EquExprContext(_ctx, getState());
enterRule(_localctx, 50, RULE_equExpr);
List exprs = new ArrayList<>();
List cmps = new ArrayList<>();
ExpressionPosition p = null;
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(331);
((EquExprContext)_localctx).r1 = relExpr();
exprs.add(((EquExprContext)_localctx).r1.e); p = pos( (((EquExprContext)_localctx).r1!=null?(((EquExprContext)_localctx).r1.start):null) );
setState(339);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Equals || _la==NEquals) {
{
{
setState(333);
((EquExprContext)_localctx).cmpr = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==Equals || _la==NEquals) ) {
((EquExprContext)_localctx).cmpr = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(334);
((EquExprContext)_localctx).r2 = relExpr();
exprs.add(((EquExprContext)_localctx).r2.e); cmps.add((((EquExprContext)_localctx).cmpr!=null?((EquExprContext)_localctx).cmpr.getText():null));
}
}
setState(341);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
_ctx.stop = _input.LT(-1);
((EquExprContext)_localctx).e = FunctionCallFactory.createByOp(exprs, p, cmps);
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class RelExprContext extends ParserRuleContext {
public LogicalExpression e;
public AddExprContext left;
public Token cmpr;
public AddExprContext right;
public List addExpr() {
return getRuleContexts(AddExprContext.class);
}
public AddExprContext addExpr(int i) {
return getRuleContext(AddExprContext.class,i);
}
public TerminalNode GTEquals() { return getToken(ExprParser.GTEquals, 0); }
public TerminalNode LTEquals() { return getToken(ExprParser.LTEquals, 0); }
public TerminalNode GT() { return getToken(ExprParser.GT, 0); }
public TerminalNode LT() { return getToken(ExprParser.LT, 0); }
public RelExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_relExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterRelExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitRelExpr(this);
}
}
public final RelExprContext relExpr() throws RecognitionException {
RelExprContext _localctx = new RelExprContext(_ctx, getState());
enterRule(_localctx, 52, RULE_relExpr);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(342);
((RelExprContext)_localctx).left = addExpr();
((RelExprContext)_localctx).e = ((RelExprContext)_localctx).left.e;
setState(348);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << GTEquals) | (1L << LTEquals) | (1L << GT) | (1L << LT))) != 0)) {
{
setState(344);
((RelExprContext)_localctx).cmpr = _input.LT(1);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << GTEquals) | (1L << LTEquals) | (1L << GT) | (1L << LT))) != 0)) ) {
((RelExprContext)_localctx).cmpr = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(345);
((RelExprContext)_localctx).right = addExpr();
((RelExprContext)_localctx).e = FunctionCallFactory.createExpression((((RelExprContext)_localctx).cmpr!=null?((RelExprContext)_localctx).cmpr.getText():null), pos((((RelExprContext)_localctx).left!=null?(((RelExprContext)_localctx).left.start):null)), ((RelExprContext)_localctx).left.e, ((RelExprContext)_localctx).right.e);
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class AddExprContext extends ParserRuleContext {
public LogicalExpression e;
public MulExprContext m1;
public Token op;
public MulExprContext m2;
public List mulExpr() {
return getRuleContexts(MulExprContext.class);
}
public MulExprContext mulExpr(int i) {
return getRuleContext(MulExprContext.class,i);
}
public List Plus() { return getTokens(ExprParser.Plus); }
public TerminalNode Plus(int i) {
return getToken(ExprParser.Plus, i);
}
public List Minus() { return getTokens(ExprParser.Minus); }
public TerminalNode Minus(int i) {
return getToken(ExprParser.Minus, i);
}
public AddExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_addExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterAddExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitAddExpr(this);
}
}
public final AddExprContext addExpr() throws RecognitionException {
AddExprContext _localctx = new AddExprContext(_ctx, getState());
enterRule(_localctx, 54, RULE_addExpr);
List exprs = new ArrayList<>();
List ops = new ArrayList<>();
ExpressionPosition p = null;
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(350);
((AddExprContext)_localctx).m1 = mulExpr();
exprs.add(((AddExprContext)_localctx).m1.e); p = pos((((AddExprContext)_localctx).m1!=null?(((AddExprContext)_localctx).m1.start):null));
setState(358);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Plus || _la==Minus) {
{
{
setState(352);
((AddExprContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==Plus || _la==Minus) ) {
((AddExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(353);
((AddExprContext)_localctx).m2 = mulExpr();
exprs.add(((AddExprContext)_localctx).m2.e); ops.add((((AddExprContext)_localctx).op!=null?((AddExprContext)_localctx).op.getText():null));
}
}
setState(360);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
_ctx.stop = _input.LT(-1);
((AddExprContext)_localctx).e = FunctionCallFactory.createByOp(exprs, p, ops);
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class MulExprContext extends ParserRuleContext {
public LogicalExpression e;
public XorExprContext p1;
public Token op;
public XorExprContext p2;
public List xorExpr() {
return getRuleContexts(XorExprContext.class);
}
public XorExprContext xorExpr(int i) {
return getRuleContext(XorExprContext.class,i);
}
public List Asterisk() { return getTokens(ExprParser.Asterisk); }
public TerminalNode Asterisk(int i) {
return getToken(ExprParser.Asterisk, i);
}
public List ForwardSlash() { return getTokens(ExprParser.ForwardSlash); }
public TerminalNode ForwardSlash(int i) {
return getToken(ExprParser.ForwardSlash, i);
}
public List Percent() { return getTokens(ExprParser.Percent); }
public TerminalNode Percent(int i) {
return getToken(ExprParser.Percent, i);
}
public MulExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_mulExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterMulExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitMulExpr(this);
}
}
public final MulExprContext mulExpr() throws RecognitionException {
MulExprContext _localctx = new MulExprContext(_ctx, getState());
enterRule(_localctx, 56, RULE_mulExpr);
List exprs = new ArrayList<>();
List ops = new ArrayList<>();
ExpressionPosition p = null;
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(361);
((MulExprContext)_localctx).p1 = xorExpr();
exprs.add(((MulExprContext)_localctx).p1.e); p = pos((((MulExprContext)_localctx).p1!=null?(((MulExprContext)_localctx).p1.start):null));
setState(369);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Asterisk) | (1L << ForwardSlash) | (1L << Percent))) != 0)) {
{
{
setState(363);
((MulExprContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Asterisk) | (1L << ForwardSlash) | (1L << Percent))) != 0)) ) {
((MulExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(364);
((MulExprContext)_localctx).p2 = xorExpr();
exprs.add(((MulExprContext)_localctx).p2.e); ops.add((((MulExprContext)_localctx).op!=null?((MulExprContext)_localctx).op.getText():null));
}
}
setState(371);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
_ctx.stop = _input.LT(-1);
((MulExprContext)_localctx).e = FunctionCallFactory.createByOp(exprs, p, ops);
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class XorExprContext extends ParserRuleContext {
public LogicalExpression e;
public UnaryExprContext u1;
public Token Caret;
public UnaryExprContext u2;
public List unaryExpr() {
return getRuleContexts(UnaryExprContext.class);
}
public UnaryExprContext unaryExpr(int i) {
return getRuleContext(UnaryExprContext.class,i);
}
public List Caret() { return getTokens(ExprParser.Caret); }
public TerminalNode Caret(int i) {
return getToken(ExprParser.Caret, i);
}
public XorExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_xorExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterXorExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitXorExpr(this);
}
}
public final XorExprContext xorExpr() throws RecognitionException {
XorExprContext _localctx = new XorExprContext(_ctx, getState());
enterRule(_localctx, 58, RULE_xorExpr);
List exprs = new ArrayList<>();
List ops = new ArrayList<>();
ExpressionPosition p = null;
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(372);
((XorExprContext)_localctx).u1 = unaryExpr();
exprs.add(((XorExprContext)_localctx).u1.e); p = pos((((XorExprContext)_localctx).u1!=null?(((XorExprContext)_localctx).u1.start):null));
setState(380);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Caret) {
{
{
setState(374);
((XorExprContext)_localctx).Caret = match(Caret);
setState(375);
((XorExprContext)_localctx).u2 = unaryExpr();
exprs.add(((XorExprContext)_localctx).u2.e); ops.add((((XorExprContext)_localctx).Caret!=null?((XorExprContext)_localctx).Caret.getText():null));
}
}
setState(382);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
_ctx.stop = _input.LT(-1);
((XorExprContext)_localctx).e = FunctionCallFactory.createByOp(exprs, p, ops);
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class UnaryExprContext extends ParserRuleContext {
public LogicalExpression e;
public Token sign;
public Token Number;
public Token Minus;
public AtomContext atom;
public Token Excl;
public TerminalNode Number() { return getToken(ExprParser.Number, 0); }
public TerminalNode Plus() { return getToken(ExprParser.Plus, 0); }
public TerminalNode Minus() { return getToken(ExprParser.Minus, 0); }
public AtomContext atom() {
return getRuleContext(AtomContext.class,0);
}
public TerminalNode Excl() { return getToken(ExprParser.Excl, 0); }
public UnaryExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unaryExpr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterUnaryExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitUnaryExpr(this);
}
}
public final UnaryExprContext unaryExpr() throws RecognitionException {
UnaryExprContext _localctx = new UnaryExprContext(_ctx, getState());
enterRule(_localctx, 60, RULE_unaryExpr);
int _la;
try {
setState(399);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(384);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Plus || _la==Minus) {
{
setState(383);
((UnaryExprContext)_localctx).sign = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==Plus || _la==Minus) ) {
((UnaryExprContext)_localctx).sign = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
setState(386);
((UnaryExprContext)_localctx).Number = match(Number);
((UnaryExprContext)_localctx).e = ValueExpressions.getNumericExpression((((UnaryExprContext)_localctx).sign!=null?((UnaryExprContext)_localctx).sign.getText():null), (((UnaryExprContext)_localctx).Number!=null?((UnaryExprContext)_localctx).Number.getText():null), pos((((UnaryExprContext)_localctx).sign != null) ? ((UnaryExprContext)_localctx).sign : ((UnaryExprContext)_localctx).Number));
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(388);
((UnaryExprContext)_localctx).Minus = match(Minus);
setState(389);
((UnaryExprContext)_localctx).atom = atom();
((UnaryExprContext)_localctx).e = FunctionCallFactory.createExpression("u-", pos(((UnaryExprContext)_localctx).Minus), ((UnaryExprContext)_localctx).atom.e);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(392);
((UnaryExprContext)_localctx).Excl = match(Excl);
setState(393);
((UnaryExprContext)_localctx).atom = atom();
((UnaryExprContext)_localctx).e = FunctionCallFactory.createExpression("!", pos(((UnaryExprContext)_localctx).Excl), ((UnaryExprContext)_localctx).atom.e);
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(396);
((UnaryExprContext)_localctx).atom = atom();
((UnaryExprContext)_localctx).e = ((UnaryExprContext)_localctx).atom.e;
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class AtomContext extends ParserRuleContext {
public LogicalExpression e;
public Token Bool;
public LookupContext lookup;
public TerminalNode Bool() { return getToken(ExprParser.Bool, 0); }
public LookupContext lookup() {
return getRuleContext(LookupContext.class,0);
}
public AtomContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_atom; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterAtom(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitAtom(this);
}
}
public final AtomContext atom() throws RecognitionException {
AtomContext _localctx = new AtomContext(_ctx, getState());
enterRule(_localctx, 62, RULE_atom);
try {
setState(406);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Bool:
enterOuterAlt(_localctx, 1);
{
setState(401);
((AtomContext)_localctx).Bool = match(Bool);
((AtomContext)_localctx).e = new ValueExpressions.BooleanExpression((((AtomContext)_localctx).Bool!=null?((AtomContext)_localctx).Bool.getText():null), pos(((AtomContext)_localctx).Bool));
}
break;
case Cast:
case Convert:
case AnyValue:
case OParen:
case SingleQuote:
case Identifier:
case QuotedIdentifier:
case String:
enterOuterAlt(_localctx, 2);
{
setState(403);
((AtomContext)_localctx).lookup = lookup();
((AtomContext)_localctx).e = ((AtomContext)_localctx).lookup.e;
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class PathSegmentContext extends ParserRuleContext {
public NameSegment seg;
public NameSegmentContext s1;
public NameSegmentContext nameSegment() {
return getRuleContext(NameSegmentContext.class,0);
}
public PathSegmentContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_pathSegment; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterPathSegment(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitPathSegment(this);
}
}
public final PathSegmentContext pathSegment() throws RecognitionException {
PathSegmentContext _localctx = new PathSegmentContext(_ctx, getState());
enterRule(_localctx, 64, RULE_pathSegment);
try {
enterOuterAlt(_localctx, 1);
{
setState(408);
((PathSegmentContext)_localctx).s1 = nameSegment();
((PathSegmentContext)_localctx).seg = ((PathSegmentContext)_localctx).s1.seg;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class NameSegmentContext extends ParserRuleContext {
public NameSegment seg;
public Token QuotedIdentifier;
public PathSegmentContext s1;
public ArraySegmentContext s2;
public Token Identifier;
public TerminalNode QuotedIdentifier() { return getToken(ExprParser.QuotedIdentifier, 0); }
public ArraySegmentContext arraySegment() {
return getRuleContext(ArraySegmentContext.class,0);
}
public TerminalNode Period() { return getToken(ExprParser.Period, 0); }
public PathSegmentContext pathSegment() {
return getRuleContext(PathSegmentContext.class,0);
}
public TerminalNode Identifier() { return getToken(ExprParser.Identifier, 0); }
public NameSegmentContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_nameSegment; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterNameSegment(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitNameSegment(this);
}
}
public final NameSegmentContext nameSegment() throws RecognitionException {
NameSegmentContext _localctx = new NameSegmentContext(_ctx, getState());
enterRule(_localctx, 66, RULE_nameSegment);
try {
setState(425);
_errHandler.sync(this);
switch (_input.LA(1)) {
case QuotedIdentifier:
enterOuterAlt(_localctx, 1);
{
setState(411);
((NameSegmentContext)_localctx).QuotedIdentifier = match(QuotedIdentifier);
setState(415);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Period:
{
{
setState(412);
match(Period);
setState(413);
((NameSegmentContext)_localctx).s1 = pathSegment();
}
}
break;
case OBracket:
{
setState(414);
((NameSegmentContext)_localctx).s2 = arraySegment();
}
break;
case EOF:
case Else:
case Then:
case End:
case When:
case As:
case Or:
case And:
case Equals:
case NEquals:
case GTEquals:
case LTEquals:
case Caret:
case GT:
case LT:
case Plus:
case Minus:
case Asterisk:
case ForwardSlash:
case Percent:
case CParen:
case Comma:
break;
default:
break;
}
if (((NameSegmentContext)_localctx).s1 == null && ((NameSegmentContext)_localctx).s2 == null) {
((NameSegmentContext)_localctx).seg = new NameSegment((((NameSegmentContext)_localctx).QuotedIdentifier!=null?((NameSegmentContext)_localctx).QuotedIdentifier.getText():null));
} else {
((NameSegmentContext)_localctx).seg = new NameSegment((((NameSegmentContext)_localctx).QuotedIdentifier!=null?((NameSegmentContext)_localctx).QuotedIdentifier.getText():null), (((NameSegmentContext)_localctx).s1 == null ? ((NameSegmentContext)_localctx).s2.seg : ((NameSegmentContext)_localctx).s1.seg));
}
}
break;
case Identifier:
enterOuterAlt(_localctx, 2);
{
setState(418);
((NameSegmentContext)_localctx).Identifier = match(Identifier);
setState(422);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Period:
{
{
setState(419);
match(Period);
setState(420);
((NameSegmentContext)_localctx).s1 = pathSegment();
}
}
break;
case OBracket:
{
setState(421);
((NameSegmentContext)_localctx).s2 = arraySegment();
}
break;
case EOF:
case Else:
case Then:
case End:
case When:
case As:
case Or:
case And:
case Equals:
case NEquals:
case GTEquals:
case LTEquals:
case Caret:
case GT:
case LT:
case Plus:
case Minus:
case Asterisk:
case ForwardSlash:
case Percent:
case CParen:
case Comma:
break;
default:
break;
}
if (((NameSegmentContext)_localctx).s1 == null && ((NameSegmentContext)_localctx).s2 == null) {
((NameSegmentContext)_localctx).seg = new NameSegment((((NameSegmentContext)_localctx).Identifier!=null?((NameSegmentContext)_localctx).Identifier.getText():null));
} else {
((NameSegmentContext)_localctx).seg = new NameSegment((((NameSegmentContext)_localctx).Identifier!=null?((NameSegmentContext)_localctx).Identifier.getText():null), (((NameSegmentContext)_localctx).s1 == null ? ((NameSegmentContext)_localctx).s2.seg : ((NameSegmentContext)_localctx).s1.seg));
}
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ArraySegmentContext extends ParserRuleContext {
public PathSegment seg;
public Token Number;
public PathSegmentContext s1;
public ArraySegmentContext s2;
public TerminalNode OBracket() { return getToken(ExprParser.OBracket, 0); }
public TerminalNode Number() { return getToken(ExprParser.Number, 0); }
public TerminalNode CBracket() { return getToken(ExprParser.CBracket, 0); }
public ArraySegmentContext arraySegment() {
return getRuleContext(ArraySegmentContext.class,0);
}
public TerminalNode Period() { return getToken(ExprParser.Period, 0); }
public PathSegmentContext pathSegment() {
return getRuleContext(PathSegmentContext.class,0);
}
public ArraySegmentContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_arraySegment; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterArraySegment(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitArraySegment(this);
}
}
public final ArraySegmentContext arraySegment() throws RecognitionException {
ArraySegmentContext _localctx = new ArraySegmentContext(_ctx, getState());
enterRule(_localctx, 68, RULE_arraySegment);
try {
enterOuterAlt(_localctx, 1);
{
setState(427);
match(OBracket);
setState(428);
((ArraySegmentContext)_localctx).Number = match(Number);
setState(429);
match(CBracket);
setState(433);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Period:
{
{
setState(430);
match(Period);
setState(431);
((ArraySegmentContext)_localctx).s1 = pathSegment();
}
}
break;
case OBracket:
{
setState(432);
((ArraySegmentContext)_localctx).s2 = arraySegment();
}
break;
case EOF:
case Else:
case Then:
case End:
case When:
case As:
case Or:
case And:
case Equals:
case NEquals:
case GTEquals:
case LTEquals:
case Caret:
case GT:
case LT:
case Plus:
case Minus:
case Asterisk:
case ForwardSlash:
case Percent:
case CParen:
case Comma:
break;
default:
break;
}
if (((ArraySegmentContext)_localctx).s1 == null && ((ArraySegmentContext)_localctx).s2 == null) {
((ArraySegmentContext)_localctx).seg = new ArraySegment((((ArraySegmentContext)_localctx).Number!=null?((ArraySegmentContext)_localctx).Number.getText():null));
} else {
((ArraySegmentContext)_localctx).seg = new ArraySegment((((ArraySegmentContext)_localctx).Number!=null?((ArraySegmentContext)_localctx).Number.getText():null), (((ArraySegmentContext)_localctx).s1 == null ? ((ArraySegmentContext)_localctx).s2.seg : ((ArraySegmentContext)_localctx).s1.seg));
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class LookupContext extends ParserRuleContext {
public LogicalExpression e;
public FunctionCallContext functionCall;
public ConvertCallContext convertCall;
public AnyValueCallContext anyValueCall;
public CastCallContext castCall;
public PathSegmentContext pathSegment;
public Token String;
public ExpressionContext expression;
public Token Identifier;
public FunctionCallContext functionCall() {
return getRuleContext(FunctionCallContext.class,0);
}
public ConvertCallContext convertCall() {
return getRuleContext(ConvertCallContext.class,0);
}
public AnyValueCallContext anyValueCall() {
return getRuleContext(AnyValueCallContext.class,0);
}
public CastCallContext castCall() {
return getRuleContext(CastCallContext.class,0);
}
public PathSegmentContext pathSegment() {
return getRuleContext(PathSegmentContext.class,0);
}
public TerminalNode String() { return getToken(ExprParser.String, 0); }
public TerminalNode OParen() { return getToken(ExprParser.OParen, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode CParen() { return getToken(ExprParser.CParen, 0); }
public List SingleQuote() { return getTokens(ExprParser.SingleQuote); }
public TerminalNode SingleQuote(int i) {
return getToken(ExprParser.SingleQuote, i);
}
public TerminalNode Identifier() { return getToken(ExprParser.Identifier, 0); }
public LookupContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_lookup; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).enterLookup(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof ExprParserListener ) ((ExprParserListener)listener).exitLookup(this);
}
}
public final LookupContext lookup() throws RecognitionException {
LookupContext _localctx = new LookupContext(_ctx, getState());
enterRule(_localctx, 70, RULE_lookup);
try {
setState(463);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(437);
((LookupContext)_localctx).functionCall = functionCall();
((LookupContext)_localctx).e = ((LookupContext)_localctx).functionCall.e ;
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(440);
((LookupContext)_localctx).convertCall = convertCall();
((LookupContext)_localctx).e = ((LookupContext)_localctx).convertCall.e;
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(443);
((LookupContext)_localctx).anyValueCall = anyValueCall();
((LookupContext)_localctx).e = ((LookupContext)_localctx).anyValueCall.e;
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(446);
((LookupContext)_localctx).castCall = castCall();
((LookupContext)_localctx).e = ((LookupContext)_localctx).castCall.e;
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
setState(449);
((LookupContext)_localctx).pathSegment = pathSegment();
((LookupContext)_localctx).e = new SchemaPath(((LookupContext)_localctx).pathSegment.seg, pos((((LookupContext)_localctx).pathSegment!=null?(((LookupContext)_localctx).pathSegment.start):null)) );
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
setState(452);
((LookupContext)_localctx).String = match(String);
((LookupContext)_localctx).e = new ValueExpressions.QuotedString((((LookupContext)_localctx).String!=null?((LookupContext)_localctx).String.getText():null), (((LookupContext)_localctx).String!=null?((LookupContext)_localctx).String.getText():null).length(), pos(((LookupContext)_localctx).String) );
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
setState(454);
match(OParen);
setState(455);
((LookupContext)_localctx).expression = expression();
setState(456);
match(CParen);
((LookupContext)_localctx).e = ((LookupContext)_localctx).expression.e;
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
setState(459);
match(SingleQuote);
setState(460);
((LookupContext)_localctx).Identifier = match(Identifier);
setState(461);
match(SingleQuote);
((LookupContext)_localctx).e = new SchemaPath((((LookupContext)_localctx).Identifier!=null?((LookupContext)_localctx).Identifier.getText():null), pos(((LookupContext)_localctx).Identifier) );
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static final String _serializedATN =
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3H\u01d4\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\3\2\3\2\3\2\3\2\3\3\3\3\3\3\5\3R\n\3\3\3"+
"\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\5\5b\n\5\3\5\3\5"+
"\3\5\3\6\3\6\3\6\3\6\3\6\3\6\5\6m\n\6\3\6\3\6\3\6\3\7\3\7\3\7\3\b\3\b"+
"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u0081\n\b\3\t\3\t\3\t\3\n"+
"\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+
"\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+
"\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3"+
"\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u00c6\n\n\3\13\3\13\3\13"+
"\3\13\3\13\3\13\3\13\3\13\5\13\u00d0\n\13\3\f\3\f\3\f\3\r\3\r\3\r\3\16"+
"\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16"+
"\u00e6\n\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\7\20\u00f2"+
"\n\20\f\20\16\20\u00f5\13\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3"+
"\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\6"+
"\23\u010d\n\23\r\23\16\23\u010e\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24"+
"\3\24\3\24\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\7\26\u0125"+
"\n\26\f\26\16\26\u0128\13\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3"+
"\27\5\27\u0133\n\27\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\7\31"+
"\u013e\n\31\f\31\16\31\u0141\13\31\3\32\3\32\3\32\3\32\3\32\3\32\7\32"+
"\u0149\n\32\f\32\16\32\u014c\13\32\3\33\3\33\3\33\3\33\3\33\3\33\7\33"+
"\u0154\n\33\f\33\16\33\u0157\13\33\3\34\3\34\3\34\3\34\3\34\3\34\5\34"+
"\u015f\n\34\3\35\3\35\3\35\3\35\3\35\3\35\7\35\u0167\n\35\f\35\16\35\u016a"+
"\13\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u0172\n\36\f\36\16\36\u0175"+
"\13\36\3\37\3\37\3\37\3\37\3\37\3\37\7\37\u017d\n\37\f\37\16\37\u0180"+
"\13\37\3 \5 \u0183\n \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \5 \u0192"+
"\n \3!\3!\3!\3!\3!\5!\u0199\n!\3\"\3\"\3\"\3#\3#\3#\3#\5#\u01a2\n#\3#"+
"\3#\3#\3#\3#\5#\u01a9\n#\3#\5#\u01ac\n#\3$\3$\3$\3$\3$\3$\5$\u01b4\n$"+
"\3$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%"+
"\3%\3%\3%\3%\3%\5%\u01d2\n%\3%\2\2&\2\4\6\b\n\f\16\20\22\24\26\30\32\34"+
"\36 \"$&(*,.\60\62\64\668:<>@BDFH\2\6\3\2)*\4\2+,/\60\3\2\61\62\3\2\63"+
"\65\2\u01e5\2J\3\2\2\2\4N\3\2\2\2\6V\3\2\2\2\b^\3\2\2\2\nf\3\2\2\2\fq"+
"\3\2\2\2\16\u0080\3\2\2\2\20\u0082\3\2\2\2\22\u00c5\3\2\2\2\24\u00cf\3"+
"\2\2\2\26\u00d1\3\2\2\2\30\u00d4\3\2\2\2\32\u00e5\3\2\2\2\34\u00e7\3\2"+
"\2\2\36\u00ec\3\2\2\2 \u00fb\3\2\2\2\"\u0101\3\2\2\2$\u0108\3\2\2\2&\u0114"+
"\3\2\2\2(\u011a\3\2\2\2*\u011e\3\2\2\2,\u0132\3\2\2\2.\u0134\3\2\2\2\60"+
"\u0137\3\2\2\2\62\u0142\3\2\2\2\64\u014d\3\2\2\2\66\u0158\3\2\2\28\u0160"+
"\3\2\2\2:\u016b\3\2\2\2<\u0176\3\2\2\2>\u0191\3\2\2\2@\u0198\3\2\2\2B"+
"\u019a\3\2\2\2D\u01ab\3\2\2\2F\u01ad\3\2\2\2H\u01d1\3\2\2\2JK\5,\27\2"+
"KL\7\2\2\3LM\b\2\1\2M\3\3\2\2\2NO\7C\2\2OQ\7:\2\2PR\5*\26\2QP\3\2\2\2"+
"QR\3\2\2\2RS\3\2\2\2ST\7;\2\2TU\b\3\1\2U\5\3\2\2\2VW\7\f\2\2WX\7:\2\2"+
"XY\5,\27\2YZ\7=\2\2Z[\7E\2\2[\\\7;\2\2\\]\b\4\1\2]\7\3\2\2\2^_\7\r\2\2"+
"_a\7:\2\2`b\5*\26\2a`\3\2\2\2ab\3\2\2\2bc\3\2\2\2cd\7;\2\2de\b\5\1\2e"+
"\t\3\2\2\2fg\7\13\2\2gh\7:\2\2hi\5,\27\2ij\7\20\2\2jl\5\16\b\2km\5\f\7"+
"\2lk\3\2\2\2lm\3\2\2\2mn\3\2\2\2no\7;\2\2op\b\6\1\2p\13\3\2\2\2qr\7\17"+
"\2\2rs\b\7\1\2s\r\3\2\2\2tu\5\22\n\2uv\b\b\1\2v\u0081\3\2\2\2wx\5\24\13"+
"\2xy\b\b\1\2y\u0081\3\2\2\2z{\5\32\16\2{|\b\b\1\2|\u0081\3\2\2\2}~\5\20"+
"\t\2~\177\b\b\1\2\177\u0081\3\2\2\2\u0080t\3\2\2\2\u0080w\3\2\2\2\u0080"+
"z\3\2\2\2\u0080}\3\2\2\2\u0081\17\3\2\2\2\u0082\u0083\7\21\2\2\u0083\u0084"+
"\b\t\1\2\u0084\21\3\2\2\2\u0085\u0086\7\22\2\2\u0086\u00c6\b\n\1\2\u0087"+
"\u0088\7\23\2\2\u0088\u00c6\b\n\1\2\u0089\u008a\7\24\2\2\u008a\u00c6\b"+
"\n\1\2\u008b\u008c\7\25\2\2\u008c\u00c6\b\n\1\2\u008d\u008e\7 \2\2\u008e"+
"\u008f\7:\2\2\u008f\u0090\5\26\f\2\u0090\u0091\7=\2\2\u0091\u0092\5\30"+
"\r\2\u0092\u0093\7;\2\2\u0093\u0094\b\n\1\2\u0094\u00c6\3\2\2\2\u0095"+
"\u0096\7!\2\2\u0096\u0097\7:\2\2\u0097\u0098\5\26\f\2\u0098\u0099\7=\2"+
"\2\u0099\u009a\5\30\r\2\u009a\u009b\7;\2\2\u009b\u009c\b\n\1\2\u009c\u00c6"+
"\3\2\2\2\u009d\u009e\7\"\2\2\u009e\u009f\7:\2\2\u009f\u00a0\5\26\f\2\u00a0"+
"\u00a1\7=\2\2\u00a1\u00a2\5\30\r\2\u00a2\u00a3\7;\2\2\u00a3\u00a4\b\n"+
"\1\2\u00a4\u00c6\3\2\2\2\u00a5\u00a6\7#\2\2\u00a6\u00a7\7:\2\2\u00a7\u00a8"+
"\5\26\f\2\u00a8\u00a9\7=\2\2\u00a9\u00aa\5\30\r\2\u00aa\u00ab\7;\2\2\u00ab"+
"\u00ac\b\n\1\2\u00ac\u00c6\3\2\2\2\u00ad\u00ae\7$\2\2\u00ae\u00af\7:\2"+
"\2\u00af\u00b0\5\26\f\2\u00b0\u00b1\7=\2\2\u00b1\u00b2\5\30\r\2\u00b2"+
"\u00b3\7;\2\2\u00b3\u00b4\b\n\1\2\u00b4\u00c6\3\2\2\2\u00b5\u00b6\7%\2"+
"\2\u00b6\u00b7\7:\2\2\u00b7\u00b8\5\26\f\2\u00b8\u00b9\7=\2\2\u00b9\u00ba"+
"\5\30\r\2\u00ba\u00bb\7;\2\2\u00bb\u00bc\b\n\1\2\u00bc\u00c6\3\2\2\2\u00bd"+
"\u00be\7&\2\2\u00be\u00bf\7:\2\2\u00bf\u00c0\5\26\f\2\u00c0\u00c1\7=\2"+
"\2\u00c1\u00c2\5\30\r\2\u00c2\u00c3\7;\2\2\u00c3\u00c4\b\n\1\2\u00c4\u00c6"+
"\3\2\2\2\u00c5\u0085\3\2\2\2\u00c5\u0087\3\2\2\2\u00c5\u0089\3\2\2\2\u00c5"+
"\u008b\3\2\2\2\u00c5\u008d\3\2\2\2\u00c5\u0095\3\2\2\2\u00c5\u009d\3\2"+
"\2\2\u00c5\u00a5\3\2\2\2\u00c5\u00ad\3\2\2\2\u00c5\u00b5\3\2\2\2\u00c5"+
"\u00bd\3\2\2\2\u00c6\23\3\2\2\2\u00c7\u00c8\7\26\2\2\u00c8\u00c9\5\34"+
"\17\2\u00c9\u00ca\b\13\1\2\u00ca\u00d0\3\2\2\2\u00cb\u00cc\7\27\2\2\u00cc"+
"\u00cd\5\34\17\2\u00cd\u00ce\b\13\1\2\u00ce\u00d0\3\2\2\2\u00cf\u00c7"+
"\3\2\2\2\u00cf\u00cb\3\2\2\2\u00d0\25\3\2\2\2\u00d1\u00d2\7B\2\2\u00d2"+
"\u00d3\b\f\1\2\u00d3\27\3\2\2\2\u00d4\u00d5\7B\2\2\u00d5\u00d6\b\r\1\2"+
"\u00d6\31\3\2\2\2\u00d7\u00d8\7\30\2\2\u00d8\u00e6\b\16\1\2\u00d9\u00da"+
"\7\31\2\2\u00da\u00e6\b\16\1\2\u00db\u00dc\7\32\2\2\u00dc\u00e6\b\16\1"+
"\2\u00dd\u00de\7\33\2\2\u00de\u00e6\b\16\1\2\u00df\u00e0\7\34\2\2\u00e0"+
"\u00e6\b\16\1\2\u00e1\u00e2\7\35\2\2\u00e2\u00e6\b\16\1\2\u00e3\u00e4"+
"\7\36\2\2\u00e4\u00e6\b\16\1\2\u00e5\u00d7\3\2\2\2\u00e5\u00d9\3\2\2\2"+
"\u00e5\u00db\3\2\2\2\u00e5\u00dd\3\2\2\2\u00e5\u00df\3\2\2\2\u00e5\u00e1"+
"\3\2\2\2\u00e5\u00e3\3\2\2\2\u00e6\33\3\2\2\2\u00e7\u00e8\7:\2\2\u00e8"+
"\u00e9\7B\2\2\u00e9\u00ea\7;\2\2\u00ea\u00eb\b\17\1\2\u00eb\35\3\2\2\2"+
"\u00ec\u00ed\5 \21\2\u00ed\u00f3\b\20\1\2\u00ee\u00ef\5\"\22\2\u00ef\u00f0"+
"\b\20\1\2\u00f0\u00f2\3\2\2\2\u00f1\u00ee\3\2\2\2\u00f2\u00f5\3\2\2\2"+
"\u00f3\u00f1\3\2\2\2\u00f3\u00f4\3\2\2\2\u00f4\u00f6\3\2\2\2\u00f5\u00f3"+
"\3\2\2\2\u00f6\u00f7\7\4\2\2\u00f7\u00f8\5,\27\2\u00f8\u00f9\b\20\1\2"+
"\u00f9\u00fa\7\7\2\2\u00fa\37\3\2\2\2\u00fb\u00fc\7\3\2\2\u00fc\u00fd"+
"\5,\27\2\u00fd\u00fe\7\6\2\2\u00fe\u00ff\5,\27\2\u00ff\u0100\b\21\1\2"+
"\u0100!\3\2\2\2\u0101\u0102\7\4\2\2\u0102\u0103\7\3\2\2\u0103\u0104\5"+
",\27\2\u0104\u0105\7\6\2\2\u0105\u0106\5,\27\2\u0106\u0107\b\22\1\2\u0107"+
"#\3\2\2\2\u0108\u010c\7\t\2\2\u0109\u010a\5&\24\2\u010a\u010b\b\23\1\2"+
"\u010b\u010d\3\2\2\2\u010c\u0109\3\2\2\2\u010d\u010e\3\2\2\2\u010e\u010c"+
"\3\2\2\2\u010e\u010f\3\2\2\2\u010f\u0110\3\2\2\2\u0110\u0111\5(\25\2\u0111"+
"\u0112\b\23\1\2\u0112\u0113\7\7\2\2\u0113%\3\2\2\2\u0114\u0115\7\n\2\2"+
"\u0115\u0116\5,\27\2\u0116\u0117\7\6\2\2\u0117\u0118\5,\27\2\u0118\u0119"+
"\b\24\1\2\u0119\'\3\2\2\2\u011a\u011b\7\4\2\2\u011b\u011c\5,\27\2\u011c"+
"\u011d\b\25\1\2\u011d)\3\2\2\2\u011e\u011f\5,\27\2\u011f\u0126\b\26\1"+
"\2\u0120\u0121\7=\2\2\u0121\u0122\5,\27\2\u0122\u0123\b\26\1\2\u0123\u0125"+
"\3\2\2\2\u0124\u0120\3\2\2\2\u0125\u0128\3\2\2\2\u0126\u0124\3\2\2\2\u0126"+
"\u0127\3\2\2\2\u0127+\3\2\2\2\u0128\u0126\3\2\2\2\u0129\u012a\5\36\20"+
"\2\u012a\u012b\b\27\1\2\u012b\u0133\3\2\2\2\u012c\u012d\5$\23\2\u012d"+
"\u012e\b\27\1\2\u012e\u0133\3\2\2\2\u012f\u0130\5.\30\2\u0130\u0131\b"+
"\27\1\2\u0131\u0133\3\2\2\2\u0132\u0129\3\2\2\2\u0132\u012c\3\2\2\2\u0132"+
"\u012f\3\2\2\2\u0133-\3\2\2\2\u0134\u0135\5\60\31\2\u0135\u0136\b\30\1"+
"\2\u0136/\3\2\2\2\u0137\u0138\5\62\32\2\u0138\u013f\b\31\1\2\u0139\u013a"+
"\7\'\2\2\u013a\u013b\5\62\32\2\u013b\u013c\b\31\1\2\u013c\u013e\3\2\2"+
"\2\u013d\u0139\3\2\2\2\u013e\u0141\3\2\2\2\u013f\u013d\3\2\2\2\u013f\u0140"+
"\3\2\2\2\u0140\61\3\2\2\2\u0141\u013f\3\2\2\2\u0142\u0143\5\64\33\2\u0143"+
"\u014a\b\32\1\2\u0144\u0145\7(\2\2\u0145\u0146\5\64\33\2\u0146\u0147\b"+
"\32\1\2\u0147\u0149\3\2\2\2\u0148\u0144\3\2\2\2\u0149\u014c\3\2\2\2\u014a"+
"\u0148\3\2\2\2\u014a\u014b\3\2\2\2\u014b\63\3\2\2\2\u014c\u014a\3\2\2"+
"\2\u014d\u014e\5\66\34\2\u014e\u0155\b\33\1\2\u014f\u0150\t\2\2\2\u0150"+
"\u0151\5\66\34\2\u0151\u0152\b\33\1\2\u0152\u0154\3\2\2\2\u0153\u014f"+
"\3\2\2\2\u0154\u0157\3\2\2\2\u0155\u0153\3\2\2\2\u0155\u0156\3\2\2\2\u0156"+
"\65\3\2\2\2\u0157\u0155\3\2\2\2\u0158\u0159\58\35\2\u0159\u015e\b\34\1"+
"\2\u015a\u015b\t\3\2\2\u015b\u015c\58\35\2\u015c\u015d\b\34\1\2\u015d"+
"\u015f\3\2\2\2\u015e\u015a\3\2\2\2\u015e\u015f\3\2\2\2\u015f\67\3\2\2"+
"\2\u0160\u0161\5:\36\2\u0161\u0168\b\35\1\2\u0162\u0163\t\4\2\2\u0163"+
"\u0164\5:\36\2\u0164\u0165\b\35\1\2\u0165\u0167\3\2\2\2\u0166\u0162\3"+
"\2\2\2\u0167\u016a\3\2\2\2\u0168\u0166\3\2\2\2\u0168\u0169\3\2\2\2\u0169"+
"9\3\2\2\2\u016a\u0168\3\2\2\2\u016b\u016c\5<\37\2\u016c\u0173\b\36\1\2"+
"\u016d\u016e\t\5\2\2\u016e\u016f\5<\37\2\u016f\u0170\b\36\1\2\u0170\u0172"+
"\3\2\2\2\u0171\u016d\3\2\2\2\u0172\u0175\3\2\2\2\u0173\u0171\3\2\2\2\u0173"+
"\u0174\3\2\2\2\u0174;\3\2\2\2\u0175\u0173\3\2\2\2\u0176\u0177\5> \2\u0177"+
"\u017e\b\37\1\2\u0178\u0179\7-\2\2\u0179\u017a\5> \2\u017a\u017b\b\37"+
"\1\2\u017b\u017d\3\2\2\2\u017c\u0178\3\2\2\2\u017d\u0180\3\2\2\2\u017e"+
"\u017c\3\2\2\2\u017e\u017f\3\2\2\2\u017f=\3\2\2\2\u0180\u017e\3\2\2\2"+
"\u0181\u0183\t\4\2\2\u0182\u0181\3\2\2\2\u0182\u0183\3\2\2\2\u0183\u0184"+
"\3\2\2\2\u0184\u0185\7B\2\2\u0185\u0192\b \1\2\u0186\u0187\7\62\2\2\u0187"+
"\u0188\5@!\2\u0188\u0189\b \1\2\u0189\u0192\3\2\2\2\u018a\u018b\7.\2\2"+
"\u018b\u018c\5@!\2\u018c\u018d\b \1\2\u018d\u0192\3\2\2\2\u018e\u018f"+
"\5@!\2\u018f\u0190\b \1\2\u0190\u0192\3\2\2\2\u0191\u0182\3\2\2\2\u0191"+
"\u0186\3\2\2\2\u0191\u018a\3\2\2\2\u0191\u018e\3\2\2\2\u0192?\3\2\2\2"+
"\u0193\u0194\7A\2\2\u0194\u0199\b!\1\2\u0195\u0196\5H%\2\u0196\u0197\b"+
"!\1\2\u0197\u0199\3\2\2\2\u0198\u0193\3\2\2\2\u0198\u0195\3\2\2\2\u0199"+
"A\3\2\2\2\u019a\u019b\5D#\2\u019b\u019c\b\"\1\2\u019cC\3\2\2\2\u019d\u01a1"+
"\7D\2\2\u019e\u019f\7\37\2\2\u019f\u01a2\5B\"\2\u01a0\u01a2\5F$\2\u01a1"+
"\u019e\3\2\2\2\u01a1\u01a0\3\2\2\2\u01a1\u01a2\3\2\2\2\u01a2\u01a3\3\2"+
"\2\2\u01a3\u01ac\b#\1\2\u01a4\u01a8\7C\2\2\u01a5\u01a6\7\37\2\2\u01a6"+
"\u01a9\5B\"\2\u01a7\u01a9\5F$\2\u01a8\u01a5\3\2\2\2\u01a8\u01a7\3\2\2"+
"\2\u01a8\u01a9\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa\u01ac\b#\1\2\u01ab\u019d"+
"\3\2\2\2\u01ab\u01a4\3\2\2\2\u01acE\3\2\2\2\u01ad\u01ae\78\2\2\u01ae\u01af"+
"\7B\2\2\u01af\u01b3\79\2\2\u01b0\u01b1\7\37\2\2\u01b1\u01b4\5B\"\2\u01b2"+
"\u01b4\5F$\2\u01b3\u01b0\3\2\2\2\u01b3\u01b2\3\2\2\2\u01b3\u01b4\3\2\2"+
"\2\u01b4\u01b5\3\2\2\2\u01b5\u01b6\b$\1\2\u01b6G\3\2\2\2\u01b7\u01b8\5"+
"\4\3\2\u01b8\u01b9\b%\1\2\u01b9\u01d2\3\2\2\2\u01ba\u01bb\5\6\4\2\u01bb"+
"\u01bc\b%\1\2\u01bc\u01d2\3\2\2\2\u01bd\u01be\5\b\5\2\u01be\u01bf\b%\1"+
"\2\u01bf\u01d2\3\2\2\2\u01c0\u01c1\5\n\6\2\u01c1\u01c2\b%\1\2\u01c2\u01d2"+
"\3\2\2\2\u01c3\u01c4\5B\"\2\u01c4\u01c5\b%\1\2\u01c5\u01d2\3\2\2\2\u01c6"+
"\u01c7\7E\2\2\u01c7\u01d2\b%\1\2\u01c8\u01c9\7:\2\2\u01c9\u01ca\5,\27"+
"\2\u01ca\u01cb\7;\2\2\u01cb\u01cc\b%\1\2\u01cc\u01d2\3\2\2\2\u01cd\u01ce"+
"\7@\2\2\u01ce\u01cf\7C\2\2\u01cf\u01d0\7@\2\2\u01d0\u01d2\b%\1\2\u01d1"+
"\u01b7\3\2\2\2\u01d1\u01ba\3\2\2\2\u01d1\u01bd\3\2\2\2\u01d1\u01c0\3\2"+
"\2\2\u01d1\u01c3\3\2\2\2\u01d1\u01c6\3\2\2\2\u01d1\u01c8\3\2\2\2\u01d1"+
"\u01cd\3\2\2\2\u01d2I\3\2\2\2\34Qal\u0080\u00c5\u00cf\u00e5\u00f3\u010e"+
"\u0126\u0132\u013f\u014a\u0155\u015e\u0168\u0173\u017e\u0182\u0191\u0198"+
"\u01a1\u01a8\u01ab\u01b3\u01d1";
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 - 2025 Weber Informatics LLC | Privacy Policy