io.github.vmzakharov.ecdataframe.grammar.ModelScriptParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dataframe-ec Show documentation
Show all versions of dataframe-ec Show documentation
A tabular data structure based on the Eclipse Collections framework
// Generated from io/github/vmzakharov/ecdataframe/grammar/ModelScript.g4 by ANTLR 4.13.1
package io.github.vmzakharov.ecdataframe.grammar;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
public class ModelScriptParser extends Parser {
static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, MUL=15, DIV=16, ADD=17,
SUB=18, GT=19, GTE=20, LT=21, LTE=22, EQ=23, NE=24, NOT_IN=25, IN=26,
IS_EMPTY=27, IS_NOT_EMPTY=28, IS_NULL=29, IS_NOT_NULL=30, AND=31, OR=32,
XOR=33, NOT=34, IF=35, THEN=36, ELSE=37, ENDIF=38, ID=39, INT=40, DOUBLE=41,
LINE_COMMENT=42, WS=43, NL=44, STRING=45, LETTER=46, DIGIT=47;
public static final int
RULE_script = 0, RULE_functionDeclarationExpr = 1, RULE_statementSequence = 2,
RULE_statement = 3, RULE_projectionStatement = 4, RULE_expr = 5, RULE_vectorExpr = 6,
RULE_exprList = 7, RULE_idList = 8;
private static String[] makeRuleNames() {
return new String[] {
"script", "functionDeclarationExpr", "statementSequence", "statement",
"projectionStatement", "expr", "vectorExpr", "exprList", "idList"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
null, "'function'", "'('", "')'", "'{'", "'}'", "'='", "'project'", "'where'",
"'.'", "':'", "'['", "']'", "'?'", "','", "'*'", "'/'", "'+'", "'-'",
"'>'", "'>='", "'<'", "'<='", "'=='", "'!='"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, "MUL", "DIV", "ADD", "SUB", "GT", "GTE", "LT", "LTE",
"EQ", "NE", "NOT_IN", "IN", "IS_EMPTY", "IS_NOT_EMPTY", "IS_NULL", "IS_NOT_NULL",
"AND", "OR", "XOR", "NOT", "IF", "THEN", "ELSE", "ENDIF", "ID", "INT",
"DOUBLE", "LINE_COMMENT", "WS", "NL", "STRING", "LETTER", "DIGIT"
};
}
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 "ModelScript.g4"; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String getSerializedATN() { return _serializedATN; }
@Override
public ATN getATN() { return _ATN; }
public ModelScriptParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
@SuppressWarnings("CheckReturnValue")
public static class ScriptContext extends ParserRuleContext {
public StatementSequenceContext statementSequence() {
return getRuleContext(StatementSequenceContext.class,0);
}
public List functionDeclarationExpr() {
return getRuleContexts(FunctionDeclarationExprContext.class);
}
public FunctionDeclarationExprContext functionDeclarationExpr(int i) {
return getRuleContext(FunctionDeclarationExprContext.class,i);
}
public ProjectionStatementContext projectionStatement() {
return getRuleContext(ProjectionStatementContext.class,0);
}
public ScriptContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_script; }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitScript(this);
else return visitor.visitChildren(this);
}
}
public final ScriptContext script() throws RecognitionException {
ScriptContext _localctx = new ScriptContext(_ctx, getState());
enterRule(_localctx, 0, RULE_script);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(21);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
setState(18);
functionDeclarationExpr();
}
}
setState(23);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(24);
statementSequence();
setState(26);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__6) {
{
setState(25);
projectionStatement();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class FunctionDeclarationExprContext extends ParserRuleContext {
public TerminalNode ID() { return getToken(ModelScriptParser.ID, 0); }
public StatementSequenceContext statementSequence() {
return getRuleContext(StatementSequenceContext.class,0);
}
public IdListContext idList() {
return getRuleContext(IdListContext.class,0);
}
public FunctionDeclarationExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_functionDeclarationExpr; }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitFunctionDeclarationExpr(this);
else return visitor.visitChildren(this);
}
}
public final FunctionDeclarationExprContext functionDeclarationExpr() throws RecognitionException {
FunctionDeclarationExprContext _localctx = new FunctionDeclarationExprContext(_ctx, getState());
enterRule(_localctx, 2, RULE_functionDeclarationExpr);
try {
enterOuterAlt(_localctx, 1);
{
setState(28);
match(T__0);
setState(29);
match(ID);
setState(36);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
case 1:
{
setState(30);
match(T__1);
setState(31);
idList();
setState(32);
match(T__2);
}
break;
case 2:
{
setState(34);
match(T__1);
setState(35);
match(T__2);
}
break;
}
setState(38);
match(T__3);
setState(39);
statementSequence();
setState(40);
match(T__4);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StatementSequenceContext extends ParserRuleContext {
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public StatementSequenceContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_statementSequence; }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitStatementSequence(this);
else return visitor.visitChildren(this);
}
}
public final StatementSequenceContext statementSequence() throws RecognitionException {
StatementSequenceContext _localctx = new StatementSequenceContext(_ctx, getState());
enterRule(_localctx, 4, RULE_statementSequence);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(45);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 39084202655748L) != 0)) {
{
{
setState(42);
statement();
}
}
setState(47);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class StatementContext extends ParserRuleContext {
public StatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_statement; }
public StatementContext() { }
public void copyFrom(StatementContext ctx) {
super.copyFrom(ctx);
}
}
@SuppressWarnings("CheckReturnValue")
public static class FreeExpContext extends StatementContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public FreeExpContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitFreeExp(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class ConditionExprContext extends StatementContext {
public StatementSequenceContext ifBody;
public StatementSequenceContext elseBody;
public TerminalNode IF() { return getToken(ModelScriptParser.IF, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public TerminalNode THEN() { return getToken(ModelScriptParser.THEN, 0); }
public TerminalNode ENDIF() { return getToken(ModelScriptParser.ENDIF, 0); }
public List statementSequence() {
return getRuleContexts(StatementSequenceContext.class);
}
public StatementSequenceContext statementSequence(int i) {
return getRuleContext(StatementSequenceContext.class,i);
}
public TerminalNode ELSE() { return getToken(ModelScriptParser.ELSE, 0); }
public ConditionExprContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitConditionExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class AssignExprContext extends StatementContext {
public TerminalNode ID() { return getToken(ModelScriptParser.ID, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public AssignExprContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitAssignExpr(this);
else return visitor.visitChildren(this);
}
}
public final StatementContext statement() throws RecognitionException {
StatementContext _localctx = new StatementContext(_ctx, getState());
enterRule(_localctx, 6, RULE_statement);
int _la;
try {
setState(62);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
case 1:
_localctx = new AssignExprContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(48);
match(ID);
setState(49);
match(T__5);
setState(50);
expr(0);
}
break;
case 2:
_localctx = new ConditionExprContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(51);
match(IF);
setState(52);
expr(0);
setState(53);
match(THEN);
setState(54);
((ConditionExprContext)_localctx).ifBody = statementSequence();
setState(57);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ELSE) {
{
setState(55);
match(ELSE);
setState(56);
((ConditionExprContext)_localctx).elseBody = statementSequence();
}
}
setState(59);
match(ENDIF);
}
break;
case 3:
_localctx = new FreeExpContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(61);
expr(0);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ProjectionStatementContext extends ParserRuleContext {
public ExprListContext exprList() {
return getRuleContext(ExprListContext.class,0);
}
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public ProjectionStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_projectionStatement; }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitProjectionStatement(this);
else return visitor.visitChildren(this);
}
}
public final ProjectionStatementContext projectionStatement() throws RecognitionException {
ProjectionStatementContext _localctx = new ProjectionStatementContext(_ctx, getState());
enterRule(_localctx, 8, RULE_projectionStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(64);
match(T__6);
setState(65);
match(T__3);
setState(66);
exprList();
setState(67);
match(T__4);
setState(70);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__7) {
{
setState(68);
match(T__7);
setState(69);
expr(0);
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ExprContext extends ParserRuleContext {
public ExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_expr; }
public ExprContext() { }
public void copyFrom(ExprContext ctx) {
super.copyFrom(ctx);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IsNotNullExprContext extends ExprContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public TerminalNode IS_NOT_NULL() { return getToken(ModelScriptParser.IS_NOT_NULL, 0); }
public IsNotNullExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitIsNotNullExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IndexVectorExprContext extends ExprContext {
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public IndexVectorExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitIndexVectorExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class StandaloneVectorExprContext extends ExprContext {
public VectorExprContext vectorExpr() {
return getRuleContext(VectorExprContext.class,0);
}
public StandaloneVectorExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitStandaloneVectorExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class AddSubExprContext extends ExprContext {
public Token op;
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public TerminalNode ADD() { return getToken(ModelScriptParser.ADD, 0); }
public TerminalNode SUB() { return getToken(ModelScriptParser.SUB, 0); }
public AddSubExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitAddSubExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class StringLiteralExprContext extends ExprContext {
public TerminalNode STRING() { return getToken(ModelScriptParser.STRING, 0); }
public StringLiteralExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitStringLiteralExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class InExprContext extends ExprContext {
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public TerminalNode NOT_IN() { return getToken(ModelScriptParser.NOT_IN, 0); }
public TerminalNode IN() { return getToken(ModelScriptParser.IN, 0); }
public InExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitInExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class OrExprContext extends ExprContext {
public Token op;
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public TerminalNode OR() { return getToken(ModelScriptParser.OR, 0); }
public TerminalNode XOR() { return getToken(ModelScriptParser.XOR, 0); }
public OrExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitOrExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IsEmptyExprContext extends ExprContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public TerminalNode IS_EMPTY() { return getToken(ModelScriptParser.IS_EMPTY, 0); }
public IsEmptyExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitIsEmptyExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class ParenExprContext extends ExprContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public ParenExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitParenExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class DoubleLiteralExprContext extends ExprContext {
public TerminalNode DOUBLE() { return getToken(ModelScriptParser.DOUBLE, 0); }
public DoubleLiteralExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitDoubleLiteralExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class VarExprContext extends ExprContext {
public TerminalNode ID() { return getToken(ModelScriptParser.ID, 0); }
public VarExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitVarExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class AliasExprContext extends ExprContext {
public TerminalNode ID() { return getToken(ModelScriptParser.ID, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public AliasExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitAliasExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class NotExprContext extends ExprContext {
public TerminalNode NOT() { return getToken(ModelScriptParser.NOT, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public NotExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitNotExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class UnaryMinusExprContext extends ExprContext {
public TerminalNode SUB() { return getToken(ModelScriptParser.SUB, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public UnaryMinusExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitUnaryMinusExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class TernaryExprContext extends ExprContext {
public ExprContext condExpr;
public ExprContext ifExpr;
public ExprContext elseExpr;
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public TernaryExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitTernaryExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IsNotEmptyExprContext extends ExprContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public TerminalNode IS_NOT_EMPTY() { return getToken(ModelScriptParser.IS_NOT_EMPTY, 0); }
public IsNotEmptyExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitIsNotEmptyExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IntLiteralExprContext extends ExprContext {
public TerminalNode INT() { return getToken(ModelScriptParser.INT, 0); }
public IntLiteralExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitIntLiteralExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class IsNullExprContext extends ExprContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public TerminalNode IS_NULL() { return getToken(ModelScriptParser.IS_NULL, 0); }
public IsNullExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitIsNullExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class PropertyPathExprContext extends ExprContext {
public List ID() { return getTokens(ModelScriptParser.ID); }
public TerminalNode ID(int i) {
return getToken(ModelScriptParser.ID, i);
}
public PropertyPathExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitPropertyPathExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class FunctionCallExprContext extends ExprContext {
public TerminalNode ID() { return getToken(ModelScriptParser.ID, 0); }
public ExprListContext exprList() {
return getRuleContext(ExprListContext.class,0);
}
public FunctionCallExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitFunctionCallExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class MulDivExprContext extends ExprContext {
public Token op;
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public TerminalNode MUL() { return getToken(ModelScriptParser.MUL, 0); }
public TerminalNode DIV() { return getToken(ModelScriptParser.DIV, 0); }
public MulDivExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitMulDivExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class CompareExprContext extends ExprContext {
public Token op;
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public TerminalNode GT() { return getToken(ModelScriptParser.GT, 0); }
public TerminalNode GTE() { return getToken(ModelScriptParser.GTE, 0); }
public TerminalNode LT() { return getToken(ModelScriptParser.LT, 0); }
public TerminalNode LTE() { return getToken(ModelScriptParser.LTE, 0); }
public TerminalNode EQ() { return getToken(ModelScriptParser.EQ, 0); }
public TerminalNode NE() { return getToken(ModelScriptParser.NE, 0); }
public CompareExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitCompareExpr(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
public static class AndExprContext extends ExprContext {
public Token op;
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public TerminalNode AND() { return getToken(ModelScriptParser.AND, 0); }
public AndExprContext(ExprContext ctx) { copyFrom(ctx); }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitAndExpr(this);
else return visitor.visitChildren(this);
}
}
public final ExprContext expr() throws RecognitionException {
return expr(0);
}
private ExprContext expr(int _p) throws RecognitionException {
ParserRuleContext _parentctx = _ctx;
int _parentState = getState();
ExprContext _localctx = new ExprContext(_ctx, _parentState);
ExprContext _prevctx = _localctx;
int _startState = 10;
enterRecursionRule(_localctx, 10, RULE_expr, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(105);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
case 1:
{
_localctx = new PropertyPathExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(73);
match(ID);
setState(76);
_errHandler.sync(this);
_alt = 1+1;
do {
switch (_alt) {
case 1+1:
{
{
setState(74);
match(T__8);
setState(75);
match(ID);
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(78);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
} while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
}
break;
case 2:
{
_localctx = new AliasExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(80);
match(ID);
setState(81);
match(T__9);
setState(82);
expr(22);
}
break;
case 3:
{
_localctx = new FunctionCallExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(83);
match(ID);
setState(90);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
case 1:
{
setState(84);
match(T__1);
setState(85);
exprList();
setState(86);
match(T__2);
}
break;
case 2:
{
setState(88);
match(T__1);
setState(89);
match(T__2);
}
break;
}
}
break;
case 4:
{
_localctx = new ParenExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(92);
match(T__1);
setState(93);
expr(0);
setState(94);
match(T__2);
}
break;
case 5:
{
_localctx = new UnaryMinusExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(96);
match(SUB);
setState(97);
expr(19);
}
break;
case 6:
{
_localctx = new NotExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(98);
match(NOT);
setState(99);
expr(14);
}
break;
case 7:
{
_localctx = new StandaloneVectorExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(100);
vectorExpr();
}
break;
case 8:
{
_localctx = new IntLiteralExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(101);
match(INT);
}
break;
case 9:
{
_localctx = new DoubleLiteralExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(102);
match(DOUBLE);
}
break;
case 10:
{
_localctx = new StringLiteralExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(103);
match(STRING);
}
break;
case 11:
{
_localctx = new VarExprContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(104);
match(ID);
}
break;
}
_ctx.stop = _input.LT(-1);
setState(146);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
setState(144);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
case 1:
{
_localctx = new MulDivExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(107);
if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
setState(108);
((MulDivExprContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==MUL || _la==DIV) ) {
((MulDivExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(109);
expr(13);
}
break;
case 2:
{
_localctx = new AddSubExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(110);
if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
setState(111);
((AddSubExprContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==ADD || _la==SUB) ) {
((AddSubExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(112);
expr(12);
}
break;
case 3:
{
_localctx = new CompareExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(113);
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
setState(114);
((CompareExprContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 33030144L) != 0)) ) {
((CompareExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(115);
expr(11);
}
break;
case 4:
{
_localctx = new InExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(116);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
setState(117);
_la = _input.LA(1);
if ( !(_la==NOT_IN || _la==IN) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(118);
expr(10);
}
break;
case 5:
{
_localctx = new AndExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(119);
if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
setState(120);
((AndExprContext)_localctx).op = match(AND);
setState(121);
expr(9);
}
break;
case 6:
{
_localctx = new OrExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(122);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
setState(123);
((OrExprContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==OR || _la==XOR) ) {
((OrExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(124);
expr(8);
}
break;
case 7:
{
_localctx = new TernaryExprContext(new ExprContext(_parentctx, _parentState));
((TernaryExprContext)_localctx).condExpr = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(125);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
setState(126);
match(T__12);
setState(127);
((TernaryExprContext)_localctx).ifExpr = expr(0);
setState(128);
match(T__9);
setState(129);
((TernaryExprContext)_localctx).elseExpr = expr(2);
}
break;
case 8:
{
_localctx = new IsNotEmptyExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(131);
if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)");
setState(132);
match(IS_NOT_EMPTY);
}
break;
case 9:
{
_localctx = new IsEmptyExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(133);
if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
setState(134);
match(IS_EMPTY);
}
break;
case 10:
{
_localctx = new IsNotNullExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(135);
if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)");
setState(136);
match(IS_NOT_NULL);
}
break;
case 11:
{
_localctx = new IsNullExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(137);
if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
setState(138);
match(IS_NULL);
}
break;
case 12:
{
_localctx = new IndexVectorExprContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
setState(139);
if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
setState(140);
match(T__10);
setState(141);
expr(0);
setState(142);
match(T__11);
}
break;
}
}
}
setState(148);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
unrollRecursionContexts(_parentctx);
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class VectorExprContext extends ParserRuleContext {
public ExprListContext exprList() {
return getRuleContext(ExprListContext.class,0);
}
public VectorExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_vectorExpr; }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitVectorExpr(this);
else return visitor.visitChildren(this);
}
}
public final VectorExprContext vectorExpr() throws RecognitionException {
VectorExprContext _localctx = new VectorExprContext(_ctx, getState());
enterRule(_localctx, 12, RULE_vectorExpr);
try {
setState(155);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(149);
match(T__1);
setState(150);
exprList();
setState(151);
match(T__2);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(153);
match(T__1);
setState(154);
match(T__2);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class ExprListContext extends ParserRuleContext {
public List expr() {
return getRuleContexts(ExprContext.class);
}
public ExprContext expr(int i) {
return getRuleContext(ExprContext.class,i);
}
public ExprListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_exprList; }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitExprList(this);
else return visitor.visitChildren(this);
}
}
public final ExprListContext exprList() throws RecognitionException {
ExprListContext _localctx = new ExprListContext(_ctx, getState());
enterRule(_localctx, 14, RULE_exprList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(157);
expr(0);
setState(162);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__13) {
{
{
setState(158);
match(T__13);
setState(159);
expr(0);
}
}
setState(164);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
public static class IdListContext extends ParserRuleContext {
public List ID() { return getTokens(ModelScriptParser.ID); }
public TerminalNode ID(int i) {
return getToken(ModelScriptParser.ID, i);
}
public IdListContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_idList; }
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor extends T>)visitor).visitIdList(this);
else return visitor.visitChildren(this);
}
}
public final IdListContext idList() throws RecognitionException {
IdListContext _localctx = new IdListContext(_ctx, getState());
enterRule(_localctx, 16, RULE_idList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(165);
match(ID);
setState(170);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__13) {
{
{
setState(166);
match(T__13);
setState(167);
match(ID);
}
}
setState(172);
_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 boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 5:
return expr_sempred((ExprContext)_localctx, predIndex);
}
return true;
}
private boolean expr_sempred(ExprContext _localctx, int predIndex) {
switch (predIndex) {
case 0:
return precpred(_ctx, 12);
case 1:
return precpred(_ctx, 11);
case 2:
return precpred(_ctx, 10);
case 3:
return precpred(_ctx, 9);
case 4:
return precpred(_ctx, 8);
case 5:
return precpred(_ctx, 7);
case 6:
return precpred(_ctx, 1);
case 7:
return precpred(_ctx, 18);
case 8:
return precpred(_ctx, 17);
case 9:
return precpred(_ctx, 16);
case 10:
return precpred(_ctx, 15);
case 11:
return precpred(_ctx, 13);
}
return true;
}
public static final String _serializedATN =
"\u0004\u0001/\u00ae\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
"\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
"\b\u0007\b\u0001\u0000\u0005\u0000\u0014\b\u0000\n\u0000\f\u0000\u0017"+
"\t\u0000\u0001\u0000\u0001\u0000\u0003\u0000\u001b\b\u0000\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0003\u0001%\b\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0002\u0005\u0002,\b\u0002\n\u0002\f\u0002/\t\u0002"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0003\u0003:\b\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0003\u0003?\b\u0003\u0001\u0004\u0001\u0004"+
"\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0003\u0004G\b\u0004"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0004\u0005M\b\u0005"+
"\u000b\u0005\f\u0005N\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0003\u0005[\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005j\b\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0005\u0005\u0091\b\u0005\n\u0005\f\u0005\u0094\t\u0005\u0001\u0006\u0001"+
"\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u009c"+
"\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0005\u0007\u00a1\b\u0007"+
"\n\u0007\f\u0007\u00a4\t\u0007\u0001\b\u0001\b\u0001\b\u0005\b\u00a9\b"+
"\b\n\b\f\b\u00ac\t\b\u0001\b\u0001N\u0001\n\t\u0000\u0002\u0004\u0006"+
"\b\n\f\u000e\u0010\u0000\u0005\u0001\u0000\u000f\u0010\u0001\u0000\u0011"+
"\u0012\u0001\u0000\u0013\u0018\u0001\u0000\u0019\u001a\u0001\u0000 !\u00c8"+
"\u0000\u0015\u0001\u0000\u0000\u0000\u0002\u001c\u0001\u0000\u0000\u0000"+
"\u0004-\u0001\u0000\u0000\u0000\u0006>\u0001\u0000\u0000\u0000\b@\u0001"+
"\u0000\u0000\u0000\ni\u0001\u0000\u0000\u0000\f\u009b\u0001\u0000\u0000"+
"\u0000\u000e\u009d\u0001\u0000\u0000\u0000\u0010\u00a5\u0001\u0000\u0000"+
"\u0000\u0012\u0014\u0003\u0002\u0001\u0000\u0013\u0012\u0001\u0000\u0000"+
"\u0000\u0014\u0017\u0001\u0000\u0000\u0000\u0015\u0013\u0001\u0000\u0000"+
"\u0000\u0015\u0016\u0001\u0000\u0000\u0000\u0016\u0018\u0001\u0000\u0000"+
"\u0000\u0017\u0015\u0001\u0000\u0000\u0000\u0018\u001a\u0003\u0004\u0002"+
"\u0000\u0019\u001b\u0003\b\u0004\u0000\u001a\u0019\u0001\u0000\u0000\u0000"+
"\u001a\u001b\u0001\u0000\u0000\u0000\u001b\u0001\u0001\u0000\u0000\u0000"+
"\u001c\u001d\u0005\u0001\u0000\u0000\u001d$\u0005\'\u0000\u0000\u001e"+
"\u001f\u0005\u0002\u0000\u0000\u001f \u0003\u0010\b\u0000 !\u0005\u0003"+
"\u0000\u0000!%\u0001\u0000\u0000\u0000\"#\u0005\u0002\u0000\u0000#%\u0005"+
"\u0003\u0000\u0000$\u001e\u0001\u0000\u0000\u0000$\"\u0001\u0000\u0000"+
"\u0000$%\u0001\u0000\u0000\u0000%&\u0001\u0000\u0000\u0000&\'\u0005\u0004"+
"\u0000\u0000\'(\u0003\u0004\u0002\u0000()\u0005\u0005\u0000\u0000)\u0003"+
"\u0001\u0000\u0000\u0000*,\u0003\u0006\u0003\u0000+*\u0001\u0000\u0000"+
"\u0000,/\u0001\u0000\u0000\u0000-+\u0001\u0000\u0000\u0000-.\u0001\u0000"+
"\u0000\u0000.\u0005\u0001\u0000\u0000\u0000/-\u0001\u0000\u0000\u0000"+
"01\u0005\'\u0000\u000012\u0005\u0006\u0000\u00002?\u0003\n\u0005\u0000"+
"34\u0005#\u0000\u000045\u0003\n\u0005\u000056\u0005$\u0000\u000069\u0003"+
"\u0004\u0002\u000078\u0005%\u0000\u00008:\u0003\u0004\u0002\u000097\u0001"+
"\u0000\u0000\u00009:\u0001\u0000\u0000\u0000:;\u0001\u0000\u0000\u0000"+
";<\u0005&\u0000\u0000\u0001\u0000\u0000\u0000=?\u0003\n\u0005\u0000"+
">0\u0001\u0000\u0000\u0000>3\u0001\u0000\u0000\u0000>=\u0001\u0000\u0000"+
"\u0000?\u0007\u0001\u0000\u0000\u0000@A\u0005\u0007\u0000\u0000AB\u0005"+
"\u0004\u0000\u0000BC\u0003\u000e\u0007\u0000CF\u0005\u0005\u0000\u0000"+
"DE\u0005\b\u0000\u0000EG\u0003\n\u0005\u0000FD\u0001\u0000\u0000\u0000"+
"FG\u0001\u0000\u0000\u0000G\t\u0001\u0000\u0000\u0000HI\u0006\u0005\uffff"+
"\uffff\u0000IL\u0005\'\u0000\u0000JK\u0005\t\u0000\u0000KM\u0005\'\u0000"+
"\u0000LJ\u0001\u0000\u0000\u0000MN\u0001\u0000\u0000\u0000NO\u0001\u0000"+
"\u0000\u0000NL\u0001\u0000\u0000\u0000Oj\u0001\u0000\u0000\u0000PQ\u0005"+
"\'\u0000\u0000QR\u0005\n\u0000\u0000Rj\u0003\n\u0005\u0016SZ\u0005\'\u0000"+
"\u0000TU\u0005\u0002\u0000\u0000UV\u0003\u000e\u0007\u0000VW\u0005\u0003"+
"\u0000\u0000W[\u0001\u0000\u0000\u0000XY\u0005\u0002\u0000\u0000Y[\u0005"+
"\u0003\u0000\u0000ZT\u0001\u0000\u0000\u0000ZX\u0001\u0000\u0000\u0000"+
"[j\u0001\u0000\u0000\u0000\\]\u0005\u0002\u0000\u0000]^\u0003\n\u0005"+
"\u0000^_\u0005\u0003\u0000\u0000_j\u0001\u0000\u0000\u0000`a\u0005\u0012"+
"\u0000\u0000aj\u0003\n\u0005\u0013bc\u0005\"\u0000\u0000cj\u0003\n\u0005"+
"\u000edj\u0003\f\u0006\u0000ej\u0005(\u0000\u0000fj\u0005)\u0000\u0000"+
"gj\u0005-\u0000\u0000hj\u0005\'\u0000\u0000iH\u0001\u0000\u0000\u0000"+
"iP\u0001\u0000\u0000\u0000iS\u0001\u0000\u0000\u0000i\\\u0001\u0000\u0000"+
"\u0000i`\u0001\u0000\u0000\u0000ib\u0001\u0000\u0000\u0000id\u0001\u0000"+
"\u0000\u0000ie\u0001\u0000\u0000\u0000if\u0001\u0000\u0000\u0000ig\u0001"+
"\u0000\u0000\u0000ih\u0001\u0000\u0000\u0000j\u0092\u0001\u0000\u0000"+
"\u0000kl\n\f\u0000\u0000lm\u0007\u0000\u0000\u0000m\u0091\u0003\n\u0005"+
"\rno\n\u000b\u0000\u0000op\u0007\u0001\u0000\u0000p\u0091\u0003\n\u0005"+
"\fqr\n\n\u0000\u0000rs\u0007\u0002\u0000\u0000s\u0091\u0003\n\u0005\u000b"+
"tu\n\t\u0000\u0000uv\u0007\u0003\u0000\u0000v\u0091\u0003\n\u0005\nwx"+
"\n\b\u0000\u0000xy\u0005\u001f\u0000\u0000y\u0091\u0003\n\u0005\tz{\n"+
"\u0007\u0000\u0000{|\u0007\u0004\u0000\u0000|\u0091\u0003\n\u0005\b}~"+
"\n\u0001\u0000\u0000~\u007f\u0005\r\u0000\u0000\u007f\u0080\u0003\n\u0005"+
"\u0000\u0080\u0081\u0005\n\u0000\u0000\u0081\u0082\u0003\n\u0005\u0002"+
"\u0082\u0091\u0001\u0000\u0000\u0000\u0083\u0084\n\u0012\u0000\u0000\u0084"+
"\u0091\u0005\u001c\u0000\u0000\u0085\u0086\n\u0011\u0000\u0000\u0086\u0091"+
"\u0005\u001b\u0000\u0000\u0087\u0088\n\u0010\u0000\u0000\u0088\u0091\u0005"+
"\u001e\u0000\u0000\u0089\u008a\n\u000f\u0000\u0000\u008a\u0091\u0005\u001d"+
"\u0000\u0000\u008b\u008c\n\r\u0000\u0000\u008c\u008d\u0005\u000b\u0000"+
"\u0000\u008d\u008e\u0003\n\u0005\u0000\u008e\u008f\u0005\f\u0000\u0000"+
"\u008f\u0091\u0001\u0000\u0000\u0000\u0090k\u0001\u0000\u0000\u0000\u0090"+
"n\u0001\u0000\u0000\u0000\u0090q\u0001\u0000\u0000\u0000\u0090t\u0001"+
"\u0000\u0000\u0000\u0090w\u0001\u0000\u0000\u0000\u0090z\u0001\u0000\u0000"+
"\u0000\u0090}\u0001\u0000\u0000\u0000\u0090\u0083\u0001\u0000\u0000\u0000"+
"\u0090\u0085\u0001\u0000\u0000\u0000\u0090\u0087\u0001\u0000\u0000\u0000"+
"\u0090\u0089\u0001\u0000\u0000\u0000\u0090\u008b\u0001\u0000\u0000\u0000"+
"\u0091\u0094\u0001\u0000\u0000\u0000\u0092\u0090\u0001\u0000\u0000\u0000"+
"\u0092\u0093\u0001\u0000\u0000\u0000\u0093\u000b\u0001\u0000\u0000\u0000"+
"\u0094\u0092\u0001\u0000\u0000\u0000\u0095\u0096\u0005\u0002\u0000\u0000"+
"\u0096\u0097\u0003\u000e\u0007\u0000\u0097\u0098\u0005\u0003\u0000\u0000"+
"\u0098\u009c\u0001\u0000\u0000\u0000\u0099\u009a\u0005\u0002\u0000\u0000"+
"\u009a\u009c\u0005\u0003\u0000\u0000\u009b\u0095\u0001\u0000\u0000\u0000"+
"\u009b\u0099\u0001\u0000\u0000\u0000\u009c\r\u0001\u0000\u0000\u0000\u009d"+
"\u00a2\u0003\n\u0005\u0000\u009e\u009f\u0005\u000e\u0000\u0000\u009f\u00a1"+
"\u0003\n\u0005\u0000\u00a0\u009e\u0001\u0000\u0000\u0000\u00a1\u00a4\u0001"+
"\u0000\u0000\u0000\u00a2\u00a0\u0001\u0000\u0000\u0000\u00a2\u00a3\u0001"+
"\u0000\u0000\u0000\u00a3\u000f\u0001\u0000\u0000\u0000\u00a4\u00a2\u0001"+
"\u0000\u0000\u0000\u00a5\u00aa\u0005\'\u0000\u0000\u00a6\u00a7\u0005\u000e"+
"\u0000\u0000\u00a7\u00a9\u0005\'\u0000\u0000\u00a8\u00a6\u0001\u0000\u0000"+
"\u0000\u00a9\u00ac\u0001\u0000\u0000\u0000\u00aa\u00a8\u0001\u0000\u0000"+
"\u0000\u00aa\u00ab\u0001\u0000\u0000\u0000\u00ab\u0011\u0001\u0000\u0000"+
"\u0000\u00ac\u00aa\u0001\u0000\u0000\u0000\u000f\u0015\u001a$-9>FNZi\u0090"+
"\u0092\u009b\u00a2\u00aa";
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);
}
}
}