// Generated from io\github\vmzakharov\ecdataframe\grammar\ModelScript.g4 by ANTLR 4.8
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"})
public class ModelScriptParser 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
		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, AND=29, OR=30, XOR=31, NOT=32, IF=33, THEN=34, 
		ELSE=35, ENDIF=36, ID=37, INT=38, DOUBLE=39, LINE_COMMENT=40, WS=41, NL=42, 
		STRING=43, LETTER=44, DIGIT=45;
	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", "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 VOCABULARY instead.
/** * @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] = "<INVALID>"; } } } @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); } public static class ScriptContext extends ParserRuleContext { public StatementSequenceContext statementSequence() { return getRuleContext(StatementSequenceContext.class,0); } public List<FunctionDeclarationExprContext> 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> 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__3 || _la==T__6) { { setState(25); projectionStatement(); } } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } 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> 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; } public static class StatementSequenceContext extends ParserRuleContext { public List<StatementContext> 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> 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) & ((1L << T__1) | (1L << SUB) | (1L << NOT) | (1L << IF) | (1L << ID) | (1L << INT) | (1L << DOUBLE) | (1L << STRING))) != 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; } 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); } } public static class FreeExpContext extends StatementContext { public ExprContext expr() { return getRuleContext(ExprContext.class,0); } public FreeExpContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitFreeExp(this); else return visitor.visitChildren(this); } } 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<StatementSequenceContext> 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitConditionExpr(this); else return visitor.visitChildren(this); } } 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> 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; } 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> 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(65); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__6) { { setState(64); match(T__6); } } setState(67); match(T__3); setState(68); exprList(); setState(69); match(T__4); setState(72); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__7) { { setState(70); match(T__7); setState(71); expr(0); } } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } 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); } } public static class IndexVectorExprContext extends ExprContext { public List<ExprContext> expr() { return getRuleContexts(ExprContext.class); } public ExprContext expr(int i) { return getRuleContext(ExprContext.class,i); } public IndexVectorExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitIndexVectorExpr(this); else return visitor.visitChildren(this); } } public static class StandaloneVectorExprContext extends ExprContext { public VectorExprContext vectorExpr() { return getRuleContext(VectorExprContext.class,0); } public StandaloneVectorExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitStandaloneVectorExpr(this); else return visitor.visitChildren(this); } } public static class AddSubExprContext extends ExprContext { public Token op; public List<ExprContext> 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitAddSubExpr(this); else return visitor.visitChildren(this); } } public static class StringLiteralExprContext extends ExprContext { public TerminalNode STRING() { return getToken(ModelScriptParser.STRING, 0); } public StringLiteralExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitStringLiteralExpr(this); else return visitor.visitChildren(this); } } public static class InExprContext extends ExprContext { public List<ExprContext> 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitInExpr(this); else return visitor.visitChildren(this); } } public static class OrExprContext extends ExprContext { public Token op; public List<ExprContext> 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitOrExpr(this); else return visitor.visitChildren(this); } } 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitIsEmptyExpr(this); else return visitor.visitChildren(this); } } public static class ParenExprContext extends ExprContext { public ExprContext expr() { return getRuleContext(ExprContext.class,0); } public ParenExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitParenExpr(this); else return visitor.visitChildren(this); } } public static class DoubleLiteralExprContext extends ExprContext { public TerminalNode DOUBLE() { return getToken(ModelScriptParser.DOUBLE, 0); } public DoubleLiteralExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitDoubleLiteralExpr(this); else return visitor.visitChildren(this); } } public static class VarExprContext extends ExprContext { public TerminalNode ID() { return getToken(ModelScriptParser.ID, 0); } public VarExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitVarExpr(this); else return visitor.visitChildren(this); } } 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitAliasExpr(this); else return visitor.visitChildren(this); } } 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitNotExpr(this); else return visitor.visitChildren(this); } } 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitUnaryMinusExpr(this); else return visitor.visitChildren(this); } } public static class TernaryExprContext extends ExprContext { public ExprContext condExpr; public ExprContext ifExpr; public ExprContext elseExpr; public List<ExprContext> expr() { return getRuleContexts(ExprContext.class); } public ExprContext expr(int i) { return getRuleContext(ExprContext.class,i); } public TernaryExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitTernaryExpr(this); else return visitor.visitChildren(this); } } 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitIsNotEmptyExpr(this); else return visitor.visitChildren(this); } } public static class IntLiteralExprContext extends ExprContext { public TerminalNode INT() { return getToken(ModelScriptParser.INT, 0); } public IntLiteralExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitIntLiteralExpr(this); else return visitor.visitChildren(this); } } public static class PropertyPathExprContext extends ExprContext { public List<TerminalNode> ID() { return getTokens(ModelScriptParser.ID); } public TerminalNode ID(int i) { return getToken(ModelScriptParser.ID, i); } public PropertyPathExprContext(ExprContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitPropertyPathExpr(this); else return visitor.visitChildren(this); } } 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitFunctionCallExpr(this); else return visitor.visitChildren(this); } } public static class MulDivExprContext extends ExprContext { public Token op; public List<ExprContext> 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitMulDivExpr(this); else return visitor.visitChildren(this); } } public static class CompareExprContext extends ExprContext { public Token op; public List<ExprContext> 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> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof ModelScriptVisitor ) return ((ModelScriptVisitor<? extends T>)visitor).visitCompareExpr(this); else return visitor.visitChildren(this); } } public static class AndExprContext extends ExprContext { public Token op; public List<ExprContext> 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> 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(107); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { case 1: { _localctx = new PropertyPathExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(75); match(ID); setState(78); _errHandler.sync(this); _alt = 1+1; do { switch (_alt) { case 1+1: { { setState(76); match(T__8); setState(77); match(ID); } } break; default: throw new NoViableAltException(this); } setState(80); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,8,_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(82); match(ID); setState(83); match(T__9); setState(84); expr(20); } break; case 3: { _localctx = new FunctionCallExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(85); match(ID); setState(92); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { case 1: { setState(86); match(T__1); setState(87); exprList(); setState(88); match(T__2); } break; case 2: { setState(90); match(T__1); setState(91); match(T__2); } break; } } break; case 4: { _localctx = new ParenExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(94); match(T__1); setState(95); expr(0); setState(96); match(T__2); } break; case 5: { _localctx = new UnaryMinusExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(98); match(SUB); setState(99); expr(17); } break; case 6: { _localctx = new NotExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(100); match(NOT); setState(101); expr(14); } break; case 7: { _localctx = new StandaloneVectorExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(102); vectorExpr(); } break; case 8: { _localctx = new IntLiteralExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(103); match(INT); } break; case 9: { _localctx = new DoubleLiteralExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(104); match(DOUBLE); } break; case 10: { _localctx = new StringLiteralExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(105); match(STRING); } break; case 11: { _localctx = new VarExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(106); match(ID); } break; } _ctx.stop = _input.LT(-1); setState(144); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,12,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(142); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { case 1: { _localctx = new MulDivExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(109); if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); setState(110); ((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(111); expr(13); } break; case 2: { _localctx = new AddSubExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(112); if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); setState(113); ((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(114); expr(12); } break; case 3: { _localctx = new CompareExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(115); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); setState(116); ((CompareExprContext)_localctx).op = _input.LT(1); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << GT) | (1L << GTE) | (1L << LT) | (1L << LTE) | (1L << EQ) | (1L << NE))) != 0)) ) { ((CompareExprContext)_localctx).op = (Token)_errHandler.recoverInline(this); } else { if ( _input.LA(1)==Token.EOF ) matchedEOF = true; _errHandler.reportMatch(this); consume(); } setState(117); expr(11); } break; case 4: { _localctx = new InExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(118); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); setState(119); _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(120); expr(10); } break; case 5: { _localctx = new AndExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(121); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); setState(122); ((AndExprContext)_localctx).op = match(AND); setState(123); expr(9); } break; case 6: { _localctx = new OrExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(124); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); setState(125); ((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(126); expr(8); } break; case 7: { _localctx = new TernaryExprContext(new ExprContext(_parentctx, _parentState)); ((TernaryExprContext)_localctx).condExpr = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(127); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); setState(128); match(T__12); setState(129); ((TernaryExprContext)_localctx).ifExpr = expr(0); setState(130); match(T__9); setState(131); ((TernaryExprContext)_localctx).elseExpr = expr(2); } break; case 8: { _localctx = new IsNotEmptyExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(133); if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)"); setState(134); match(IS_NOT_EMPTY); } break; case 9: { _localctx = new IsEmptyExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(135); if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); setState(136); match(IS_EMPTY); } break; case 10: { _localctx = new IndexVectorExprContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); setState(137); if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); setState(138); match(T__10); setState(139); expr(0); setState(140); match(T__11); } break; } } } setState(146); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,12,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } 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> 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(153); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(147); match(T__1); setState(148); exprList(); setState(149); match(T__2); } break; case 2: enterOuterAlt(_localctx, 2); { setState(151); match(T__1); setState(152); match(T__2); } break; } } 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<ExprContext> 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> 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(155); expr(0); setState(160); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__13) { { { setState(156); match(T__13); setState(157); expr(0); } } setState(162); _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 IdListContext extends ParserRuleContext { public List<TerminalNode> 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> 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(163); match(ID); setState(168); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__13) { { { setState(164); match(T__13); setState(165); match(ID); } } setState(170); _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, 16); case 8: return precpred(_ctx, 15); case 9: return precpred(_ctx, 13); } return true; } public static final String _serializedATN = "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3/\u00ae\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\3\2\7\2"+ "\26\n\2\f\2\16\2\31\13\2\3\2\3\2\5\2\35\n\2\3\3\3\3\3\3\3\3\3\3\3\3\3"+ "\3\3\3\5\3\'\n\3\3\3\3\3\3\3\3\3\3\4\7\4.\n\4\f\4\16\4\61\13\4\3\5\3\5"+ "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5<\n\5\3\5\3\5\3\5\5\5A\n\5\3\6\5\6D\n"+ "\6\3\6\3\6\3\6\3\6\3\6\5\6K\n\6\3\7\3\7\3\7\3\7\6\7Q\n\7\r\7\16\7R\3\7"+ "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7_\n\7\3\7\3\7\3\7\3\7\3\7\3\7"+ "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7n\n\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+ "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+ "\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\7\7\u0091\n\7\f\7\16\7\u0094\13\7\3\b\3"+ "\b\3\b\3\b\3\b\3\b\5\b\u009c\n\b\3\t\3\t\3\t\7\t\u00a1\n\t\f\t\16\t\u00a4"+ "\13\t\3\n\3\n\3\n\7\n\u00a9\n\n\f\n\16\n\u00ac\13\n\3\n\3R\3\f\13\2\4"+ "\6\b\n\f\16\20\22\2\7\3\2\21\22\3\2\23\24\3\2\25\32\3\2\33\34\3\2 !\2"+ "\u00c7\2\27\3\2\2\2\4\36\3\2\2\2\6/\3\2\2\2\b@\3\2\2\2\nC\3\2\2\2\fm\3"+ "\2\2\2\16\u009b\3\2\2\2\20\u009d\3\2\2\2\22\u00a5\3\2\2\2\24\26\5\4\3"+ "\2\25\24\3\2\2\2\26\31\3\2\2\2\27\25\3\2\2\2\27\30\3\2\2\2\30\32\3\2\2"+ "\2\31\27\3\2\2\2\32\34\5\6\4\2\33\35\5\n\6\2\34\33\3\2\2\2\34\35\3\2\2"+ "\2\35\3\3\2\2\2\36\37\7\3\2\2\37&\7\'\2\2 !\7\4\2\2!\"\5\22\n\2\"#\7\5"+ "\2\2#\'\3\2\2\2$%\7\4\2\2%\'\7\5\2\2& \3\2\2\2&$\3\2\2\2&\'\3\2\2\2\'"+ "(\3\2\2\2()\7\6\2\2)*\5\6\4\2*+\7\7\2\2+\5\3\2\2\2,.\5\b\5\2-,\3\2\2\2"+ ".\61\3\2\2\2/-\3\2\2\2/\60\3\2\2\2\60\7\3\2\2\2\61/\3\2\2\2\62\63\7\'"+ "\2\2\63\64\7\b\2\2\64A\5\f\7\2\65\66\7#\2\2\66\67\5\f\7\2\678\7$\2\28"+ ";\5\6\4\29:\7%\2\2:<\5\6\4\2;9\3\2\2\2;<\3\2\2\2<=\3\2\2\2=>\7&\2\2>A"+ "\3\2\2\2?A\5\f\7\2@\62\3\2\2\2@\65\3\2\2\2@?\3\2\2\2A\t\3\2\2\2BD\7\t"+ "\2\2CB\3\2\2\2CD\3\2\2\2DE\3\2\2\2EF\7\6\2\2FG\5\20\t\2GJ\7\7\2\2HI\7"+ "\n\2\2IK\5\f\7\2JH\3\2\2\2JK\3\2\2\2K\13\3\2\2\2LM\b\7\1\2MP\7\'\2\2N"+ "O\7\13\2\2OQ\7\'\2\2PN\3\2\2\2QR\3\2\2\2RS\3\2\2\2RP\3\2\2\2Sn\3\2\2\2"+ "TU\7\'\2\2UV\7\f\2\2Vn\5\f\7\26W^\7\'\2\2XY\7\4\2\2YZ\5\20\t\2Z[\7\5\2"+ "\2[_\3\2\2\2\\]\7\4\2\2]_\7\5\2\2^X\3\2\2\2^\\\3\2\2\2_n\3\2\2\2`a\7\4"+ "\2\2ab\5\f\7\2bc\7\5\2\2cn\3\2\2\2de\7\24\2\2en\5\f\7\23fg\7\"\2\2gn\5"+ "\f\7\20hn\5\16\b\2in\7(\2\2jn\7)\2\2kn\7-\2\2ln\7\'\2\2mL\3\2\2\2mT\3"+ "\2\2\2mW\3\2\2\2m`\3\2\2\2md\3\2\2\2mf\3\2\2\2mh\3\2\2\2mi\3\2\2\2mj\3"+ "\2\2\2mk\3\2\2\2ml\3\2\2\2n\u0092\3\2\2\2op\f\16\2\2pq\t\2\2\2q\u0091"+ "\5\f\7\17rs\f\r\2\2st\t\3\2\2t\u0091\5\f\7\16uv\f\f\2\2vw\t\4\2\2w\u0091"+ "\5\f\7\rxy\f\13\2\2yz\t\5\2\2z\u0091\5\f\7\f{|\f\n\2\2|}\7\37\2\2}\u0091"+ "\5\f\7\13~\177\f\t\2\2\177\u0080\t\6\2\2\u0080\u0091\5\f\7\n\u0081\u0082"+ "\f\3\2\2\u0082\u0083\7\17\2\2\u0083\u0084\5\f\7\2\u0084\u0085\7\f\2\2"+ "\u0085\u0086\5\f\7\4\u0086\u0091\3\2\2\2\u0087\u0088\f\22\2\2\u0088\u0091"+ "\7\36\2\2\u0089\u008a\f\21\2\2\u008a\u0091\7\35\2\2\u008b\u008c\f\17\2"+ "\2\u008c\u008d\7\r\2\2\u008d\u008e\5\f\7\2\u008e\u008f\7\16\2\2\u008f"+ "\u0091\3\2\2\2\u0090o\3\2\2\2\u0090r\3\2\2\2\u0090u\3\2\2\2\u0090x\3\2"+ "\2\2\u0090{\3\2\2\2\u0090~\3\2\2\2\u0090\u0081\3\2\2\2\u0090\u0087\3\2"+ "\2\2\u0090\u0089\3\2\2\2\u0090\u008b\3\2\2\2\u0091\u0094\3\2\2\2\u0092"+ "\u0090\3\2\2\2\u0092\u0093\3\2\2\2\u0093\r\3\2\2\2\u0094\u0092\3\2\2\2"+ "\u0095\u0096\7\4\2\2\u0096\u0097\5\20\t\2\u0097\u0098\7\5\2\2\u0098\u009c"+ "\3\2\2\2\u0099\u009a\7\4\2\2\u009a\u009c\7\5\2\2\u009b\u0095\3\2\2\2\u009b"+ "\u0099\3\2\2\2\u009c\17\3\2\2\2\u009d\u00a2\5\f\7\2\u009e\u009f\7\20\2"+ "\2\u009f\u00a1\5\f\7\2\u00a0\u009e\3\2\2\2\u00a1\u00a4\3\2\2\2\u00a2\u00a0"+ "\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\21\3\2\2\2\u00a4\u00a2\3\2\2\2\u00a5"+ "\u00aa\7\'\2\2\u00a6\u00a7\7\20\2\2\u00a7\u00a9\7\'\2\2\u00a8\u00a6\3"+ "\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab"+ "\23\3\2\2\2\u00ac\u00aa\3\2\2\2\22\27\34&/;@CJR^m\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); } } }