// Generated from DDMExpression.g4 by ANTLR 4.3 /** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.dynamic.data.mapping.expression.internal.parser; 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; /** * @author Brian Wing Shun Chan */ @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) public class DDMExpressionParser extends Parser { static { RuntimeMetaData.checkVersion("4.3", RuntimeMetaData.VERSION); } protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int IntegerLiteral=1, FloatingPointLiteral=2, DecimalFloatingPointLiteral=3, AND=4, COMMA=5, DIV=6, EQ=7, FALSE=8, GE=9, GT=10, LE=11, LPAREN=12, LT=13, MINUS=14, MULT=15, NEQ=16, NOT=17, OR=18, PLUS=19, RPAREN=20, STRING=21, TRUE=22, IDENTIFIER=23, WS=24; public static final String[] tokenNames = { "<INVALID>", "IntegerLiteral", "FloatingPointLiteral", "DecimalFloatingPointLiteral", "AND", "','", "'/'", "EQ", "FALSE", "'>='", "'>'", "'<='", "'('", "'<'", "'-'", "'*'", "NEQ", "NOT", "OR", "'+'", "')'", "STRING", "TRUE", "IDENTIFIER", "WS" }; public static final int RULE_expression = 0, RULE_logicalOrExpression = 1, RULE_logicalAndExpression = 2, RULE_equalityExpression = 3, RULE_comparisonExpression = 4, RULE_booleanUnaryExpression = 5, RULE_booleanOperandExpression = 6, RULE_logicalTerm = 7, RULE_additionOrSubtractionExpression = 8, RULE_multiplicationOrDivisionExpression = 9, RULE_numericUnaryEpression = 10, RULE_numericOperandExpression = 11, RULE_numericTerm = 12, RULE_functionCallExpression = 13, RULE_functionParameters = 14, RULE_literal = 15; public static final String[] ruleNames = { "expression", "logicalOrExpression", "logicalAndExpression", "equalityExpression", "comparisonExpression", "booleanUnaryExpression", "booleanOperandExpression", "logicalTerm", "additionOrSubtractionExpression", "multiplicationOrDivisionExpression", "numericUnaryEpression", "numericOperandExpression", "numericTerm", "functionCallExpression", "functionParameters", "literal" }; @Override public String getGrammarFileName() { return "DDMExpression.g4"; } @Override public String[] getTokenNames() { return tokenNames; } @Override public String[] getRuleNames() { return ruleNames; } @Override public String getSerializedATN() { return _serializedATN; } @Override public ATN getATN() { return _ATN; } public DDMExpressionParser(TokenStream input) { super(input); _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); } public static class ExpressionContext extends ParserRuleContext { public TerminalNode EOF() { return getToken(DDMExpressionParser.EOF, 0); } public LogicalOrExpressionContext logicalOrExpression() { return getRuleContext(LogicalOrExpressionContext.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 DDMExpressionListener ) ((DDMExpressionListener)listener).enterExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitExpression(this); else return visitor.visitChildren(this); } } public final ExpressionContext expression() throws RecognitionException { ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); enterRule(_localctx, 0, RULE_expression); try { enterOuterAlt(_localctx, 1); { setState(32); logicalOrExpression(0); setState(33); match(EOF); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class LogicalOrExpressionContext extends ParserRuleContext { public LogicalOrExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_logicalOrExpression; } public LogicalOrExpressionContext() { } public void copyFrom(LogicalOrExpressionContext ctx) { super.copyFrom(ctx); } } public static class ToLogicalAndExpressionContext extends LogicalOrExpressionContext { public LogicalAndExpressionContext logicalAndExpression() { return getRuleContext(LogicalAndExpressionContext.class,0); } public ToLogicalAndExpressionContext(LogicalOrExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToLogicalAndExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToLogicalAndExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToLogicalAndExpression(this); else return visitor.visitChildren(this); } } public static class OrExpressionContext extends LogicalOrExpressionContext { public LogicalOrExpressionContext logicalOrExpression() { return getRuleContext(LogicalOrExpressionContext.class,0); } public TerminalNode OR() { return getToken(DDMExpressionParser.OR, 0); } public LogicalAndExpressionContext logicalAndExpression() { return getRuleContext(LogicalAndExpressionContext.class,0); } public OrExpressionContext(LogicalOrExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterOrExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitOrExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitOrExpression(this); else return visitor.visitChildren(this); } } public final LogicalOrExpressionContext logicalOrExpression() throws RecognitionException { return logicalOrExpression(0); } private LogicalOrExpressionContext logicalOrExpression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); LogicalOrExpressionContext _localctx = new LogicalOrExpressionContext(_ctx, _parentState); LogicalOrExpressionContext _prevctx = _localctx; int _startState = 2; enterRecursionRule(_localctx, 2, RULE_logicalOrExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { _localctx = new ToLogicalAndExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(36); logicalAndExpression(0); } _ctx.stop = _input.LT(-1); setState(43); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,0,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { { _localctx = new OrExpressionContext(new LogicalOrExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_logicalOrExpression); setState(38); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(39); match(OR); setState(40); logicalAndExpression(0); } } } setState(45); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,0,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class LogicalAndExpressionContext extends ParserRuleContext { public LogicalAndExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_logicalAndExpression; } public LogicalAndExpressionContext() { } public void copyFrom(LogicalAndExpressionContext ctx) { super.copyFrom(ctx); } } public static class AndExpressionContext extends LogicalAndExpressionContext { public TerminalNode AND() { return getToken(DDMExpressionParser.AND, 0); } public LogicalAndExpressionContext logicalAndExpression() { return getRuleContext(LogicalAndExpressionContext.class,0); } public EqualityExpressionContext equalityExpression() { return getRuleContext(EqualityExpressionContext.class,0); } public AndExpressionContext(LogicalAndExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterAndExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitAndExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitAndExpression(this); else return visitor.visitChildren(this); } } public static class ToEqualityExpressionContext extends LogicalAndExpressionContext { public EqualityExpressionContext equalityExpression() { return getRuleContext(EqualityExpressionContext.class,0); } public ToEqualityExpressionContext(LogicalAndExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToEqualityExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToEqualityExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToEqualityExpression(this); else return visitor.visitChildren(this); } } public final LogicalAndExpressionContext logicalAndExpression() throws RecognitionException { return logicalAndExpression(0); } private LogicalAndExpressionContext logicalAndExpression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); LogicalAndExpressionContext _localctx = new LogicalAndExpressionContext(_ctx, _parentState); LogicalAndExpressionContext _prevctx = _localctx; int _startState = 4; enterRecursionRule(_localctx, 4, RULE_logicalAndExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { _localctx = new ToEqualityExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(47); equalityExpression(0); } _ctx.stop = _input.LT(-1); setState(54); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,1,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { { _localctx = new AndExpressionContext(new LogicalAndExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_logicalAndExpression); setState(49); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(50); match(AND); setState(51); equalityExpression(0); } } } setState(56); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,1,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class EqualityExpressionContext extends ParserRuleContext { public EqualityExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_equalityExpression; } public EqualityExpressionContext() { } public void copyFrom(EqualityExpressionContext ctx) { super.copyFrom(ctx); } } public static class NotEqualsExpressionContext extends EqualityExpressionContext { public ComparisonExpressionContext comparisonExpression() { return getRuleContext(ComparisonExpressionContext.class,0); } public TerminalNode NEQ() { return getToken(DDMExpressionParser.NEQ, 0); } public EqualityExpressionContext equalityExpression() { return getRuleContext(EqualityExpressionContext.class,0); } public NotEqualsExpressionContext(EqualityExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterNotEqualsExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitNotEqualsExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitNotEqualsExpression(this); else return visitor.visitChildren(this); } } public static class ToComparisonExpressionContext extends EqualityExpressionContext { public ComparisonExpressionContext comparisonExpression() { return getRuleContext(ComparisonExpressionContext.class,0); } public ToComparisonExpressionContext(EqualityExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToComparisonExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToComparisonExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToComparisonExpression(this); else return visitor.visitChildren(this); } } public static class EqualsExpressionContext extends EqualityExpressionContext { public ComparisonExpressionContext comparisonExpression() { return getRuleContext(ComparisonExpressionContext.class,0); } public TerminalNode EQ() { return getToken(DDMExpressionParser.EQ, 0); } public EqualityExpressionContext equalityExpression() { return getRuleContext(EqualityExpressionContext.class,0); } public EqualsExpressionContext(EqualityExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterEqualsExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitEqualsExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitEqualsExpression(this); else return visitor.visitChildren(this); } } public final EqualityExpressionContext equalityExpression() throws RecognitionException { return equalityExpression(0); } private EqualityExpressionContext equalityExpression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); EqualityExpressionContext _localctx = new EqualityExpressionContext(_ctx, _parentState); EqualityExpressionContext _prevctx = _localctx; int _startState = 6; enterRecursionRule(_localctx, 6, RULE_equalityExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { _localctx = new ToComparisonExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(58); comparisonExpression(0); } _ctx.stop = _input.LT(-1); setState(68); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,3,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(66); switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { case 1: { _localctx = new EqualsExpressionContext(new EqualityExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); setState(60); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); setState(61); match(EQ); setState(62); comparisonExpression(0); } break; case 2: { _localctx = new NotEqualsExpressionContext(new EqualityExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); setState(63); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(64); match(NEQ); setState(65); comparisonExpression(0); } break; } } } setState(70); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,3,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class ComparisonExpressionContext extends ParserRuleContext { public ComparisonExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_comparisonExpression; } public ComparisonExpressionContext() { } public void copyFrom(ComparisonExpressionContext ctx) { super.copyFrom(ctx); } } public static class GreaterThanOrEqualsExpressionContext extends ComparisonExpressionContext { public ComparisonExpressionContext comparisonExpression() { return getRuleContext(ComparisonExpressionContext.class,0); } public TerminalNode GE() { return getToken(DDMExpressionParser.GE, 0); } public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public GreaterThanOrEqualsExpressionContext(ComparisonExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterGreaterThanOrEqualsExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitGreaterThanOrEqualsExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitGreaterThanOrEqualsExpression(this); else return visitor.visitChildren(this); } } public static class LessThanOrEqualsExpressionContext extends ComparisonExpressionContext { public ComparisonExpressionContext comparisonExpression() { return getRuleContext(ComparisonExpressionContext.class,0); } public TerminalNode LE() { return getToken(DDMExpressionParser.LE, 0); } public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public LessThanOrEqualsExpressionContext(ComparisonExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterLessThanOrEqualsExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitLessThanOrEqualsExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitLessThanOrEqualsExpression(this); else return visitor.visitChildren(this); } } public static class GreaterThanExpressionContext extends ComparisonExpressionContext { public ComparisonExpressionContext comparisonExpression() { return getRuleContext(ComparisonExpressionContext.class,0); } public TerminalNode GT() { return getToken(DDMExpressionParser.GT, 0); } public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public GreaterThanExpressionContext(ComparisonExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterGreaterThanExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitGreaterThanExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitGreaterThanExpression(this); else return visitor.visitChildren(this); } } public static class ToBooleanUnaryExpressionContext extends ComparisonExpressionContext { public BooleanUnaryExpressionContext booleanUnaryExpression() { return getRuleContext(BooleanUnaryExpressionContext.class,0); } public ToBooleanUnaryExpressionContext(ComparisonExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToBooleanUnaryExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToBooleanUnaryExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToBooleanUnaryExpression(this); else return visitor.visitChildren(this); } } public static class LessThanExpressionContext extends ComparisonExpressionContext { public ComparisonExpressionContext comparisonExpression() { return getRuleContext(ComparisonExpressionContext.class,0); } public TerminalNode LT() { return getToken(DDMExpressionParser.LT, 0); } public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public LessThanExpressionContext(ComparisonExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterLessThanExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitLessThanExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitLessThanExpression(this); else return visitor.visitChildren(this); } } public final ComparisonExpressionContext comparisonExpression() throws RecognitionException { return comparisonExpression(0); } private ComparisonExpressionContext comparisonExpression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); ComparisonExpressionContext _localctx = new ComparisonExpressionContext(_ctx, _parentState); ComparisonExpressionContext _prevctx = _localctx; int _startState = 8; enterRecursionRule(_localctx, 8, RULE_comparisonExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { _localctx = new ToBooleanUnaryExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(72); booleanUnaryExpression(); } _ctx.stop = _input.LT(-1); setState(88); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,5,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(86); switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { case 1: { _localctx = new GreaterThanExpressionContext(new ComparisonExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_comparisonExpression); setState(74); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); setState(75); match(GT); setState(76); additionOrSubtractionExpression(0); } break; case 2: { _localctx = new GreaterThanOrEqualsExpressionContext(new ComparisonExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_comparisonExpression); setState(77); if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); setState(78); match(GE); setState(79); additionOrSubtractionExpression(0); } break; case 3: { _localctx = new LessThanExpressionContext(new ComparisonExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_comparisonExpression); setState(80); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); setState(81); match(LT); setState(82); additionOrSubtractionExpression(0); } break; case 4: { _localctx = new LessThanOrEqualsExpressionContext(new ComparisonExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_comparisonExpression); setState(83); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(84); match(LE); setState(85); additionOrSubtractionExpression(0); } break; } } } setState(90); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,5,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class BooleanUnaryExpressionContext extends ParserRuleContext { public BooleanUnaryExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_booleanUnaryExpression; } public BooleanUnaryExpressionContext() { } public void copyFrom(BooleanUnaryExpressionContext ctx) { super.copyFrom(ctx); } } public static class ToBooleanOperandExpressionContext extends BooleanUnaryExpressionContext { public BooleanOperandExpressionContext booleanOperandExpression() { return getRuleContext(BooleanOperandExpressionContext.class,0); } public ToBooleanOperandExpressionContext(BooleanUnaryExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToBooleanOperandExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToBooleanOperandExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToBooleanOperandExpression(this); else return visitor.visitChildren(this); } } public static class NotExpressionContext extends BooleanUnaryExpressionContext { public TerminalNode NOT() { return getToken(DDMExpressionParser.NOT, 0); } public BooleanUnaryExpressionContext booleanUnaryExpression() { return getRuleContext(BooleanUnaryExpressionContext.class,0); } public NotExpressionContext(BooleanUnaryExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterNotExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitNotExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitNotExpression(this); else return visitor.visitChildren(this); } } public final BooleanUnaryExpressionContext booleanUnaryExpression() throws RecognitionException { BooleanUnaryExpressionContext _localctx = new BooleanUnaryExpressionContext(_ctx, getState()); enterRule(_localctx, 10, RULE_booleanUnaryExpression); try { setState(94); switch (_input.LA(1)) { case NOT: _localctx = new NotExpressionContext(_localctx); enterOuterAlt(_localctx, 1); { setState(91); match(NOT); setState(92); booleanUnaryExpression(); } break; case IntegerLiteral: case FloatingPointLiteral: case FALSE: case LPAREN: case MINUS: case STRING: case TRUE: case IDENTIFIER: _localctx = new ToBooleanOperandExpressionContext(_localctx); enterOuterAlt(_localctx, 2); { setState(93); booleanOperandExpression(); } 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 BooleanOperandExpressionContext extends ParserRuleContext { public BooleanOperandExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_booleanOperandExpression; } public BooleanOperandExpressionContext() { } public void copyFrom(BooleanOperandExpressionContext ctx) { super.copyFrom(ctx); } } public static class ToLogicalTermContext extends BooleanOperandExpressionContext { public LogicalTermContext logicalTerm() { return getRuleContext(LogicalTermContext.class,0); } public ToLogicalTermContext(BooleanOperandExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToLogicalTerm(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToLogicalTerm(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToLogicalTerm(this); else return visitor.visitChildren(this); } } public static class ToAdditionOrSubtractionEpressionContext extends BooleanOperandExpressionContext { public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public ToAdditionOrSubtractionEpressionContext(BooleanOperandExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToAdditionOrSubtractionEpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToAdditionOrSubtractionEpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToAdditionOrSubtractionEpression(this); else return visitor.visitChildren(this); } } public static class BooleanParenthesisContext extends BooleanOperandExpressionContext { public TerminalNode LPAREN() { return getToken(DDMExpressionParser.LPAREN, 0); } public LogicalOrExpressionContext logicalOrExpression() { return getRuleContext(LogicalOrExpressionContext.class,0); } public TerminalNode RPAREN() { return getToken(DDMExpressionParser.RPAREN, 0); } public BooleanParenthesisContext(BooleanOperandExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterBooleanParenthesis(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitBooleanParenthesis(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitBooleanParenthesis(this); else return visitor.visitChildren(this); } } public final BooleanOperandExpressionContext booleanOperandExpression() throws RecognitionException { BooleanOperandExpressionContext _localctx = new BooleanOperandExpressionContext(_ctx, getState()); enterRule(_localctx, 12, RULE_booleanOperandExpression); try { setState(102); switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { case 1: _localctx = new ToLogicalTermContext(_localctx); enterOuterAlt(_localctx, 1); { setState(96); logicalTerm(); } break; case 2: _localctx = new ToAdditionOrSubtractionEpressionContext(_localctx); enterOuterAlt(_localctx, 2); { setState(97); additionOrSubtractionExpression(0); } break; case 3: _localctx = new BooleanParenthesisContext(_localctx); enterOuterAlt(_localctx, 3); { setState(98); match(LPAREN); setState(99); logicalOrExpression(0); setState(100); match(RPAREN); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class LogicalTermContext extends ParserRuleContext { public LogicalTermContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_logicalTerm; } public LogicalTermContext() { } public void copyFrom(LogicalTermContext ctx) { super.copyFrom(ctx); } } public static class LogicalVariableContext extends LogicalTermContext { public TerminalNode IDENTIFIER() { return getToken(DDMExpressionParser.IDENTIFIER, 0); } public LogicalVariableContext(LogicalTermContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterLogicalVariable(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitLogicalVariable(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitLogicalVariable(this); else return visitor.visitChildren(this); } } public static class LogicalConstantContext extends LogicalTermContext { public TerminalNode FALSE() { return getToken(DDMExpressionParser.FALSE, 0); } public TerminalNode TRUE() { return getToken(DDMExpressionParser.TRUE, 0); } public LogicalConstantContext(LogicalTermContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterLogicalConstant(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitLogicalConstant(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitLogicalConstant(this); else return visitor.visitChildren(this); } } public final LogicalTermContext logicalTerm() throws RecognitionException { LogicalTermContext _localctx = new LogicalTermContext(_ctx, getState()); enterRule(_localctx, 14, RULE_logicalTerm); int _la; try { setState(106); switch (_input.LA(1)) { case FALSE: case TRUE: _localctx = new LogicalConstantContext(_localctx); enterOuterAlt(_localctx, 1); { setState(104); _la = _input.LA(1); if ( !(_la==FALSE || _la==TRUE) ) { _errHandler.recoverInline(this); } consume(); } break; case IDENTIFIER: _localctx = new LogicalVariableContext(_localctx); enterOuterAlt(_localctx, 2); { setState(105); match(IDENTIFIER); } 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 AdditionOrSubtractionExpressionContext extends ParserRuleContext { public AdditionOrSubtractionExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_additionOrSubtractionExpression; } public AdditionOrSubtractionExpressionContext() { } public void copyFrom(AdditionOrSubtractionExpressionContext ctx) { super.copyFrom(ctx); } } public static class AdditionExpressionContext extends AdditionOrSubtractionExpressionContext { public MultiplicationOrDivisionExpressionContext multiplicationOrDivisionExpression() { return getRuleContext(MultiplicationOrDivisionExpressionContext.class,0); } public TerminalNode PLUS() { return getToken(DDMExpressionParser.PLUS, 0); } public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public AdditionExpressionContext(AdditionOrSubtractionExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterAdditionExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitAdditionExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitAdditionExpression(this); else return visitor.visitChildren(this); } } public static class SubtractionExpressionContext extends AdditionOrSubtractionExpressionContext { public MultiplicationOrDivisionExpressionContext multiplicationOrDivisionExpression() { return getRuleContext(MultiplicationOrDivisionExpressionContext.class,0); } public TerminalNode MINUS() { return getToken(DDMExpressionParser.MINUS, 0); } public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public SubtractionExpressionContext(AdditionOrSubtractionExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterSubtractionExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitSubtractionExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitSubtractionExpression(this); else return visitor.visitChildren(this); } } public static class ToMultOrDivContext extends AdditionOrSubtractionExpressionContext { public MultiplicationOrDivisionExpressionContext multiplicationOrDivisionExpression() { return getRuleContext(MultiplicationOrDivisionExpressionContext.class,0); } public ToMultOrDivContext(AdditionOrSubtractionExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToMultOrDiv(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToMultOrDiv(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToMultOrDiv(this); else return visitor.visitChildren(this); } } public final AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() throws RecognitionException { return additionOrSubtractionExpression(0); } private AdditionOrSubtractionExpressionContext additionOrSubtractionExpression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); AdditionOrSubtractionExpressionContext _localctx = new AdditionOrSubtractionExpressionContext(_ctx, _parentState); AdditionOrSubtractionExpressionContext _prevctx = _localctx; int _startState = 16; enterRecursionRule(_localctx, 16, RULE_additionOrSubtractionExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { _localctx = new ToMultOrDivContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(109); multiplicationOrDivisionExpression(0); } _ctx.stop = _input.LT(-1); setState(119); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,10,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(117); switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { case 1: { _localctx = new AdditionExpressionContext(new AdditionOrSubtractionExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_additionOrSubtractionExpression); setState(111); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); setState(112); match(PLUS); setState(113); multiplicationOrDivisionExpression(0); } break; case 2: { _localctx = new SubtractionExpressionContext(new AdditionOrSubtractionExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_additionOrSubtractionExpression); setState(114); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(115); match(MINUS); setState(116); multiplicationOrDivisionExpression(0); } break; } } } setState(121); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,10,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class MultiplicationOrDivisionExpressionContext extends ParserRuleContext { public MultiplicationOrDivisionExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_multiplicationOrDivisionExpression; } public MultiplicationOrDivisionExpressionContext() { } public void copyFrom(MultiplicationOrDivisionExpressionContext ctx) { super.copyFrom(ctx); } } public static class ToNumericUnaryExpressionContext extends MultiplicationOrDivisionExpressionContext { public NumericUnaryEpressionContext numericUnaryEpression() { return getRuleContext(NumericUnaryEpressionContext.class,0); } public ToNumericUnaryExpressionContext(MultiplicationOrDivisionExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToNumericUnaryExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToNumericUnaryExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToNumericUnaryExpression(this); else return visitor.visitChildren(this); } } public static class DivisionExpressionContext extends MultiplicationOrDivisionExpressionContext { public MultiplicationOrDivisionExpressionContext multiplicationOrDivisionExpression() { return getRuleContext(MultiplicationOrDivisionExpressionContext.class,0); } public TerminalNode DIV() { return getToken(DDMExpressionParser.DIV, 0); } public NumericUnaryEpressionContext numericUnaryEpression() { return getRuleContext(NumericUnaryEpressionContext.class,0); } public DivisionExpressionContext(MultiplicationOrDivisionExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterDivisionExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitDivisionExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitDivisionExpression(this); else return visitor.visitChildren(this); } } public static class MultiplicationExpressionContext extends MultiplicationOrDivisionExpressionContext { public MultiplicationOrDivisionExpressionContext multiplicationOrDivisionExpression() { return getRuleContext(MultiplicationOrDivisionExpressionContext.class,0); } public TerminalNode MULT() { return getToken(DDMExpressionParser.MULT, 0); } public NumericUnaryEpressionContext numericUnaryEpression() { return getRuleContext(NumericUnaryEpressionContext.class,0); } public MultiplicationExpressionContext(MultiplicationOrDivisionExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterMultiplicationExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitMultiplicationExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitMultiplicationExpression(this); else return visitor.visitChildren(this); } } public final MultiplicationOrDivisionExpressionContext multiplicationOrDivisionExpression() throws RecognitionException { return multiplicationOrDivisionExpression(0); } private MultiplicationOrDivisionExpressionContext multiplicationOrDivisionExpression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); MultiplicationOrDivisionExpressionContext _localctx = new MultiplicationOrDivisionExpressionContext(_ctx, _parentState); MultiplicationOrDivisionExpressionContext _prevctx = _localctx; int _startState = 18; enterRecursionRule(_localctx, 18, RULE_multiplicationOrDivisionExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { _localctx = new ToNumericUnaryExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(123); numericUnaryEpression(); } _ctx.stop = _input.LT(-1); setState(133); _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(131); switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { case 1: { _localctx = new MultiplicationExpressionContext(new MultiplicationOrDivisionExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_multiplicationOrDivisionExpression); setState(125); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); setState(126); match(MULT); setState(127); numericUnaryEpression(); } break; case 2: { _localctx = new DivisionExpressionContext(new MultiplicationOrDivisionExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_multiplicationOrDivisionExpression); setState(128); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(129); match(DIV); setState(130); numericUnaryEpression(); } break; } } } setState(135); _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 NumericUnaryEpressionContext extends ParserRuleContext { public NumericUnaryEpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_numericUnaryEpression; } public NumericUnaryEpressionContext() { } public void copyFrom(NumericUnaryEpressionContext ctx) { super.copyFrom(ctx); } } public static class MinusExpressionContext extends NumericUnaryEpressionContext { public TerminalNode MINUS() { return getToken(DDMExpressionParser.MINUS, 0); } public NumericUnaryEpressionContext numericUnaryEpression() { return getRuleContext(NumericUnaryEpressionContext.class,0); } public MinusExpressionContext(NumericUnaryEpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterMinusExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitMinusExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitMinusExpression(this); else return visitor.visitChildren(this); } } public static class PrimaryContext extends NumericUnaryEpressionContext { public NumericOperandExpressionContext numericOperandExpression() { return getRuleContext(NumericOperandExpressionContext.class,0); } public PrimaryContext(NumericUnaryEpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterPrimary(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitPrimary(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitPrimary(this); else return visitor.visitChildren(this); } } public final NumericUnaryEpressionContext numericUnaryEpression() throws RecognitionException { NumericUnaryEpressionContext _localctx = new NumericUnaryEpressionContext(_ctx, getState()); enterRule(_localctx, 20, RULE_numericUnaryEpression); try { setState(139); switch (_input.LA(1)) { case MINUS: _localctx = new MinusExpressionContext(_localctx); enterOuterAlt(_localctx, 1); { setState(136); match(MINUS); setState(137); numericUnaryEpression(); } break; case IntegerLiteral: case FloatingPointLiteral: case LPAREN: case STRING: case IDENTIFIER: _localctx = new PrimaryContext(_localctx); enterOuterAlt(_localctx, 2); { setState(138); numericOperandExpression(); } 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 NumericOperandExpressionContext extends ParserRuleContext { public NumericOperandExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_numericOperandExpression; } public NumericOperandExpressionContext() { } public void copyFrom(NumericOperandExpressionContext ctx) { super.copyFrom(ctx); } } public static class ToNumericTermContext extends NumericOperandExpressionContext { public NumericTermContext numericTerm() { return getRuleContext(NumericTermContext.class,0); } public ToNumericTermContext(NumericOperandExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToNumericTerm(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToNumericTerm(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToNumericTerm(this); else return visitor.visitChildren(this); } } public static class NumericParenthesisContext extends NumericOperandExpressionContext { public TerminalNode LPAREN() { return getToken(DDMExpressionParser.LPAREN, 0); } public TerminalNode RPAREN() { return getToken(DDMExpressionParser.RPAREN, 0); } public AdditionOrSubtractionExpressionContext additionOrSubtractionExpression() { return getRuleContext(AdditionOrSubtractionExpressionContext.class,0); } public NumericParenthesisContext(NumericOperandExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterNumericParenthesis(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitNumericParenthesis(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitNumericParenthesis(this); else return visitor.visitChildren(this); } } public static class ToFunctionCallExpressionContext extends NumericOperandExpressionContext { public FunctionCallExpressionContext functionCallExpression() { return getRuleContext(FunctionCallExpressionContext.class,0); } public ToFunctionCallExpressionContext(NumericOperandExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterToFunctionCallExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitToFunctionCallExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitToFunctionCallExpression(this); else return visitor.visitChildren(this); } } public final NumericOperandExpressionContext numericOperandExpression() throws RecognitionException { NumericOperandExpressionContext _localctx = new NumericOperandExpressionContext(_ctx, getState()); enterRule(_localctx, 22, RULE_numericOperandExpression); try { setState(147); switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { case 1: _localctx = new ToNumericTermContext(_localctx); enterOuterAlt(_localctx, 1); { setState(141); numericTerm(); } break; case 2: _localctx = new ToFunctionCallExpressionContext(_localctx); enterOuterAlt(_localctx, 2); { setState(142); functionCallExpression(); } break; case 3: _localctx = new NumericParenthesisContext(_localctx); enterOuterAlt(_localctx, 3); { setState(143); match(LPAREN); setState(144); additionOrSubtractionExpression(0); setState(145); match(RPAREN); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class NumericTermContext extends ParserRuleContext { public NumericTermContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_numericTerm; } public NumericTermContext() { } public void copyFrom(NumericTermContext ctx) { super.copyFrom(ctx); } } public static class NumericLiteralContext extends NumericTermContext { public LiteralContext literal() { return getRuleContext(LiteralContext.class,0); } public NumericLiteralContext(NumericTermContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterNumericLiteral(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitNumericLiteral(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitNumericLiteral(this); else return visitor.visitChildren(this); } } public static class NumericVariableContext extends NumericTermContext { public TerminalNode IDENTIFIER() { return getToken(DDMExpressionParser.IDENTIFIER, 0); } public NumericVariableContext(NumericTermContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterNumericVariable(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitNumericVariable(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitNumericVariable(this); else return visitor.visitChildren(this); } } public final NumericTermContext numericTerm() throws RecognitionException { NumericTermContext _localctx = new NumericTermContext(_ctx, getState()); enterRule(_localctx, 24, RULE_numericTerm); try { setState(151); switch (_input.LA(1)) { case IntegerLiteral: case FloatingPointLiteral: case STRING: _localctx = new NumericLiteralContext(_localctx); enterOuterAlt(_localctx, 1); { setState(149); literal(); } break; case IDENTIFIER: _localctx = new NumericVariableContext(_localctx); enterOuterAlt(_localctx, 2); { setState(150); match(IDENTIFIER); } 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 FunctionCallExpressionContext extends ParserRuleContext { public Token functionName; public TerminalNode LPAREN() { return getToken(DDMExpressionParser.LPAREN, 0); } public TerminalNode RPAREN() { return getToken(DDMExpressionParser.RPAREN, 0); } public TerminalNode IDENTIFIER() { return getToken(DDMExpressionParser.IDENTIFIER, 0); } public FunctionParametersContext functionParameters() { return getRuleContext(FunctionParametersContext.class,0); } public FunctionCallExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_functionCallExpression; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterFunctionCallExpression(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitFunctionCallExpression(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitFunctionCallExpression(this); else return visitor.visitChildren(this); } } public final FunctionCallExpressionContext functionCallExpression() throws RecognitionException { FunctionCallExpressionContext _localctx = new FunctionCallExpressionContext(_ctx, getState()); enterRule(_localctx, 26, RULE_functionCallExpression); int _la; try { enterOuterAlt(_localctx, 1); { setState(153); ((FunctionCallExpressionContext)_localctx).functionName = match(IDENTIFIER); setState(154); match(LPAREN); setState(156); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << FALSE) | (1L << LPAREN) | (1L << MINUS) | (1L << NOT) | (1L << STRING) | (1L << TRUE) | (1L << IDENTIFIER))) != 0)) { { setState(155); functionParameters(); } } setState(158); match(RPAREN); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class FunctionParametersContext extends ParserRuleContext { public LogicalOrExpressionContext logicalOrExpression(int i) { return getRuleContext(LogicalOrExpressionContext.class,i); } public List<TerminalNode> COMMA() { return getTokens(DDMExpressionParser.COMMA); } public List<LogicalOrExpressionContext> logicalOrExpression() { return getRuleContexts(LogicalOrExpressionContext.class); } public TerminalNode COMMA(int i) { return getToken(DDMExpressionParser.COMMA, i); } public FunctionParametersContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_functionParameters; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterFunctionParameters(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitFunctionParameters(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitFunctionParameters(this); else return visitor.visitChildren(this); } } public final FunctionParametersContext functionParameters() throws RecognitionException { FunctionParametersContext _localctx = new FunctionParametersContext(_ctx, getState()); enterRule(_localctx, 28, RULE_functionParameters); int _la; try { enterOuterAlt(_localctx, 1); { setState(160); logicalOrExpression(0); setState(165); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(161); match(COMMA); setState(162); logicalOrExpression(0); } } setState(167); _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 LiteralContext extends ParserRuleContext { public LiteralContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_literal; } public LiteralContext() { } public void copyFrom(LiteralContext ctx) { super.copyFrom(ctx); } } public static class StringLiteralContext extends LiteralContext { public TerminalNode STRING() { return getToken(DDMExpressionParser.STRING, 0); } public StringLiteralContext(LiteralContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterStringLiteral(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitStringLiteral(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitStringLiteral(this); else return visitor.visitChildren(this); } } public static class FloatingPointLiteralContext extends LiteralContext { public TerminalNode FloatingPointLiteral() { return getToken(DDMExpressionParser.FloatingPointLiteral, 0); } public FloatingPointLiteralContext(LiteralContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterFloatingPointLiteral(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitFloatingPointLiteral(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitFloatingPointLiteral(this); else return visitor.visitChildren(this); } } public static class IntegerLiteralContext extends LiteralContext { public TerminalNode IntegerLiteral() { return getToken(DDMExpressionParser.IntegerLiteral, 0); } public IntegerLiteralContext(LiteralContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).enterIntegerLiteral(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof DDMExpressionListener ) ((DDMExpressionListener)listener).exitIntegerLiteral(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof DDMExpressionVisitor ) return ((DDMExpressionVisitor<? extends T>)visitor).visitIntegerLiteral(this); else return visitor.visitChildren(this); } } public final LiteralContext literal() throws RecognitionException { LiteralContext _localctx = new LiteralContext(_ctx, getState()); enterRule(_localctx, 30, RULE_literal); try { setState(171); switch (_input.LA(1)) { case FloatingPointLiteral: _localctx = new FloatingPointLiteralContext(_localctx); enterOuterAlt(_localctx, 1); { setState(168); match(FloatingPointLiteral); } break; case IntegerLiteral: _localctx = new IntegerLiteralContext(_localctx); enterOuterAlt(_localctx, 2); { setState(169); match(IntegerLiteral); } break; case STRING: _localctx = new StringLiteralContext(_localctx); enterOuterAlt(_localctx, 3); { setState(170); match(STRING); } break; default: throw new NoViableAltException(this); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { case 1: return logicalOrExpression_sempred((LogicalOrExpressionContext)_localctx, predIndex); case 2: return logicalAndExpression_sempred((LogicalAndExpressionContext)_localctx, predIndex); case 3: return equalityExpression_sempred((EqualityExpressionContext)_localctx, predIndex); case 4: return comparisonExpression_sempred((ComparisonExpressionContext)_localctx, predIndex); case 8: return additionOrSubtractionExpression_sempred((AdditionOrSubtractionExpressionContext)_localctx, predIndex); case 9: return multiplicationOrDivisionExpression_sempred((MultiplicationOrDivisionExpressionContext)_localctx, predIndex); } return true; } private boolean additionOrSubtractionExpression_sempred(AdditionOrSubtractionExpressionContext _localctx, int predIndex) { switch (predIndex) { case 8: return precpred(_ctx, 3); case 9: return precpred(_ctx, 2); } return true; } private boolean logicalAndExpression_sempred(LogicalAndExpressionContext _localctx, int predIndex) { switch (predIndex) { case 1: return precpred(_ctx, 2); } return true; } private boolean equalityExpression_sempred(EqualityExpressionContext _localctx, int predIndex) { switch (predIndex) { case 2: return precpred(_ctx, 3); case 3: return precpred(_ctx, 2); } return true; } private boolean comparisonExpression_sempred(ComparisonExpressionContext _localctx, int predIndex) { switch (predIndex) { case 4: return precpred(_ctx, 5); case 5: return precpred(_ctx, 4); case 6: return precpred(_ctx, 3); case 7: return precpred(_ctx, 2); } return true; } private boolean multiplicationOrDivisionExpression_sempred(MultiplicationOrDivisionExpressionContext _localctx, int predIndex) { switch (predIndex) { case 10: return precpred(_ctx, 3); case 11: return precpred(_ctx, 2); } return true; } private boolean logicalOrExpression_sempred(LogicalOrExpressionContext _localctx, int predIndex) { switch (predIndex) { case 0: return precpred(_ctx, 2); } return true; } public static final String _serializedATN = "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3\32\u00b0\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\3\2\3\2"+ "\3\2\3\3\3\3\3\3\3\3\3\3\3\3\7\3,\n\3\f\3\16\3/\13\3\3\4\3\4\3\4\3\4\3"+ "\4\3\4\7\4\67\n\4\f\4\16\4:\13\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\7"+ "\5E\n\5\f\5\16\5H\13\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6"+ "\3\6\3\6\3\6\7\6Y\n\6\f\6\16\6\\\13\6\3\7\3\7\3\7\5\7a\n\7\3\b\3\b\3\b"+ "\3\b\3\b\3\b\5\bi\n\b\3\t\3\t\5\tm\n\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+ "\3\n\7\nx\n\n\f\n\16\n{\13\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3"+ "\13\7\13\u0086\n\13\f\13\16\13\u0089\13\13\3\f\3\f\3\f\5\f\u008e\n\f\3"+ "\r\3\r\3\r\3\r\3\r\3\r\5\r\u0096\n\r\3\16\3\16\5\16\u009a\n\16\3\17\3"+ "\17\3\17\5\17\u009f\n\17\3\17\3\17\3\20\3\20\3\20\7\20\u00a6\n\20\f\20"+ "\16\20\u00a9\13\20\3\21\3\21\3\21\5\21\u00ae\n\21\3\21\2\b\4\6\b\n\22"+ "\24\22\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \2\3\4\2\n\n\30\30\u00b7"+ "\2\"\3\2\2\2\4%\3\2\2\2\6\60\3\2\2\2\b;\3\2\2\2\nI\3\2\2\2\f`\3\2\2\2"+ "\16h\3\2\2\2\20l\3\2\2\2\22n\3\2\2\2\24|\3\2\2\2\26\u008d\3\2\2\2\30\u0095"+ "\3\2\2\2\32\u0099\3\2\2\2\34\u009b\3\2\2\2\36\u00a2\3\2\2\2 \u00ad\3\2"+ "\2\2\"#\5\4\3\2#$\7\2\2\3$\3\3\2\2\2%&\b\3\1\2&\'\5\6\4\2\'-\3\2\2\2("+ ")\f\4\2\2)*\7\24\2\2*,\5\6\4\2+(\3\2\2\2,/\3\2\2\2-+\3\2\2\2-.\3\2\2\2"+ ".\5\3\2\2\2/-\3\2\2\2\60\61\b\4\1\2\61\62\5\b\5\2\628\3\2\2\2\63\64\f"+ "\4\2\2\64\65\7\6\2\2\65\67\5\b\5\2\66\63\3\2\2\2\67:\3\2\2\28\66\3\2\2"+ "\289\3\2\2\29\7\3\2\2\2:8\3\2\2\2;<\b\5\1\2<=\5\n\6\2=F\3\2\2\2>?\f\5"+ "\2\2?@\7\t\2\2@E\5\n\6\2AB\f\4\2\2BC\7\22\2\2CE\5\n\6\2D>\3\2\2\2DA\3"+ "\2\2\2EH\3\2\2\2FD\3\2\2\2FG\3\2\2\2G\t\3\2\2\2HF\3\2\2\2IJ\b\6\1\2JK"+ "\5\f\7\2KZ\3\2\2\2LM\f\7\2\2MN\7\f\2\2NY\5\22\n\2OP\f\6\2\2PQ\7\13\2\2"+ "QY\5\22\n\2RS\f\5\2\2ST\7\17\2\2TY\5\22\n\2UV\f\4\2\2VW\7\r\2\2WY\5\22"+ "\n\2XL\3\2\2\2XO\3\2\2\2XR\3\2\2\2XU\3\2\2\2Y\\\3\2\2\2ZX\3\2\2\2Z[\3"+ "\2\2\2[\13\3\2\2\2\\Z\3\2\2\2]^\7\23\2\2^a\5\f\7\2_a\5\16\b\2`]\3\2\2"+ "\2`_\3\2\2\2a\r\3\2\2\2bi\5\20\t\2ci\5\22\n\2de\7\16\2\2ef\5\4\3\2fg\7"+ "\26\2\2gi\3\2\2\2hb\3\2\2\2hc\3\2\2\2hd\3\2\2\2i\17\3\2\2\2jm\t\2\2\2"+ "km\7\31\2\2lj\3\2\2\2lk\3\2\2\2m\21\3\2\2\2no\b\n\1\2op\5\24\13\2py\3"+ "\2\2\2qr\f\5\2\2rs\7\25\2\2sx\5\24\13\2tu\f\4\2\2uv\7\20\2\2vx\5\24\13"+ "\2wq\3\2\2\2wt\3\2\2\2x{\3\2\2\2yw\3\2\2\2yz\3\2\2\2z\23\3\2\2\2{y\3\2"+ "\2\2|}\b\13\1\2}~\5\26\f\2~\u0087\3\2\2\2\177\u0080\f\5\2\2\u0080\u0081"+ "\7\21\2\2\u0081\u0086\5\26\f\2\u0082\u0083\f\4\2\2\u0083\u0084\7\b\2\2"+ "\u0084\u0086\5\26\f\2\u0085\177\3\2\2\2\u0085\u0082\3\2\2\2\u0086\u0089"+ "\3\2\2\2\u0087\u0085\3\2\2\2\u0087\u0088\3\2\2\2\u0088\25\3\2\2\2\u0089"+ "\u0087\3\2\2\2\u008a\u008b\7\20\2\2\u008b\u008e\5\26\f\2\u008c\u008e\5"+ "\30\r\2\u008d\u008a\3\2\2\2\u008d\u008c\3\2\2\2\u008e\27\3\2\2\2\u008f"+ "\u0096\5\32\16\2\u0090\u0096\5\34\17\2\u0091\u0092\7\16\2\2\u0092\u0093"+ "\5\22\n\2\u0093\u0094\7\26\2\2\u0094\u0096\3\2\2\2\u0095\u008f\3\2\2\2"+ "\u0095\u0090\3\2\2\2\u0095\u0091\3\2\2\2\u0096\31\3\2\2\2\u0097\u009a"+ "\5 \21\2\u0098\u009a\7\31\2\2\u0099\u0097\3\2\2\2\u0099\u0098\3\2\2\2"+ "\u009a\33\3\2\2\2\u009b\u009c\7\31\2\2\u009c\u009e\7\16\2\2\u009d\u009f"+ "\5\36\20\2\u009e\u009d\3\2\2\2\u009e\u009f\3\2\2\2\u009f\u00a0\3\2\2\2"+ "\u00a0\u00a1\7\26\2\2\u00a1\35\3\2\2\2\u00a2\u00a7\5\4\3\2\u00a3\u00a4"+ "\7\7\2\2\u00a4\u00a6\5\4\3\2\u00a5\u00a3\3\2\2\2\u00a6\u00a9\3\2\2\2\u00a7"+ "\u00a5\3\2\2\2\u00a7\u00a8\3\2\2\2\u00a8\37\3\2\2\2\u00a9\u00a7\3\2\2"+ "\2\u00aa\u00ae\7\4\2\2\u00ab\u00ae\7\3\2\2\u00ac\u00ae\7\27\2\2\u00ad"+ "\u00aa\3\2\2\2\u00ad\u00ab\3\2\2\2\u00ad\u00ac\3\2\2\2\u00ae!\3\2\2\2"+ "\25-8DFXZ`hlwy\u0085\u0087\u008d\u0095\u0099\u009e\u00a7\u00ad"; 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); } } }