// Generated from C:\Users\svene_000\Documents\NetBeansProjects\Construction\src\construction\test.g by ANTLR 4.2 package construction; import java.util.Map; import java.util.HashMap; import java.util.ArrayList; import construction.Operators.*; import construction.Types.*; import construction.QuestionElements.*; 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 testParser extends Parser { protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int T__25=1, T__24=2, T__23=3, T__22=4, T__21=5, T__20=6, T__19=7, T__18=8, T__17=9, T__16=10, T__15=11, T__14=12, T__13=13, T__12=14, T__11=15, T__10=16, T__9=17, T__8=18, T__7=19, T__6=20, T__5=21, T__4=22, T__3=23, T__2=24, T__1=25, T__0=26, BOOL=27, INT=28, IDENTIFIER=29, STRING=30, WS=31; public static final String[] tokenNames = { "<INVALID>", "'form'", "'*'", "'-'", "'or'", "'not'", "':'", "'('", "'if'", "'<'", "'<='", "'~='", "'{'", "'and'", "'else'", "'}'", "'boolean'", "'%'", "'^'", "')'", "'+'", "'money'", "'>'", "'string'", "'=='", "'/'", "'>='", "BOOL", "INT", "IDENTIFIER", "STRING", "WS" }; public static final int RULE_questionaire = 0, RULE_item = 1, RULE_questionentry = 2, RULE_conditional = 3, RULE_computed = 4, RULE_type = 5, RULE_exp = 6; public static final String[] ruleNames = { "questionaire", "item", "questionentry", "conditional", "computed", "type", "exp" }; @Override public String getGrammarFileName() { return "test.g"; } @Override public String[] getTokenNames() { return tokenNames; } @Override public String[] getRuleNames() { return ruleNames; } @Override public String getSerializedATN() { return _serializedATN; } @Override public ATN getATN() { return _ATN; } /** Map variable name to Integer object holding value */ Map<String,IType> memory = new HashMap<String,IType>(); public testParser(TokenStream input) { super(input); _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); } public static class QuestionaireContext extends ParserRuleContext { public QuestionForm form; public Token IDENTIFIER; public ItemContext item; public ItemContext item(int i) { return getRuleContext(ItemContext.class,i); } public List<ItemContext> item() { return getRuleContexts(ItemContext.class); } public TerminalNode IDENTIFIER() { return getToken(testParser.IDENTIFIER, 0); } public QuestionaireContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_questionaire; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).enterQuestionaire(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).exitQuestionaire(this); } } public final QuestionaireContext questionaire() throws RecognitionException { QuestionaireContext _localctx = new QuestionaireContext(_ctx, getState()); enterRule(_localctx, 0, RULE_questionaire); ((QuestionaireContext)_localctx).form = new QuestionForm(); int _la; try { enterOuterAlt(_localctx, 1); { setState(14); match(1); setState(15); ((QuestionaireContext)_localctx).IDENTIFIER = match(IDENTIFIER); _localctx.form.setName(((((QuestionaireContext)_localctx).IDENTIFIER!=null?((QuestionaireContext)_localctx).IDENTIFIER.getText():null))); setState(17); match(12); setState(21); _errHandler.sync(this); _la = _input.LA(1); do { { { setState(18); ((QuestionaireContext)_localctx).item = item(); _localctx.form.add(((QuestionaireContext)_localctx).item.question); } } setState(23); _errHandler.sync(this); _la = _input.LA(1); } while ( _la==8 || _la==IDENTIFIER ); setState(25); match(15); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ItemContext extends ParserRuleContext { public GeneralQuestion question; public ConditionalContext conditional; public ComputedContext computed; public QuestionentryContext questionentry; public QuestionentryContext questionentry() { return getRuleContext(QuestionentryContext.class,0); } public ComputedContext computed() { return getRuleContext(ComputedContext.class,0); } public ConditionalContext conditional() { return getRuleContext(ConditionalContext.class,0); } public ItemContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_item; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).enterItem(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).exitItem(this); } } public final ItemContext item() throws RecognitionException { ItemContext _localctx = new ItemContext(_ctx, getState()); enterRule(_localctx, 2, RULE_item); try { setState(36); switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(27); ((ItemContext)_localctx).conditional = conditional(); ((ItemContext)_localctx).question = ((ItemContext)_localctx).conditional.cq; } break; case 2: enterOuterAlt(_localctx, 2); { setState(30); ((ItemContext)_localctx).computed = computed(); ((ItemContext)_localctx).question = ((ItemContext)_localctx).computed.question; } break; case 3: enterOuterAlt(_localctx, 3); { setState(33); ((ItemContext)_localctx).questionentry = questionentry(); ((ItemContext)_localctx).question = ((ItemContext)_localctx).questionentry.question; } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class QuestionentryContext extends ParserRuleContext { public Question question; public Token IDENTIFIER; public Token STRING; public TypeContext type; public TerminalNode IDENTIFIER() { return getToken(testParser.IDENTIFIER, 0); } public TypeContext type() { return getRuleContext(TypeContext.class,0); } public TerminalNode STRING() { return getToken(testParser.STRING, 0); } public QuestionentryContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_questionentry; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).enterQuestionentry(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).exitQuestionentry(this); } } public final QuestionentryContext questionentry() throws RecognitionException { QuestionentryContext _localctx = new QuestionentryContext(_ctx, getState()); enterRule(_localctx, 4, RULE_questionentry); try { enterOuterAlt(_localctx, 1); { setState(38); ((QuestionentryContext)_localctx).IDENTIFIER = match(IDENTIFIER); setState(39); match(6); setState(40); ((QuestionentryContext)_localctx).STRING = match(STRING); setState(41); ((QuestionentryContext)_localctx).type = type(); ((QuestionentryContext)_localctx).question = new Question((((QuestionentryContext)_localctx).IDENTIFIER!=null?((QuestionentryContext)_localctx).IDENTIFIER.getText():null),(((QuestionentryContext)_localctx).STRING!=null?((QuestionentryContext)_localctx).STRING.getText():null).substring(1, (((QuestionentryContext)_localctx).STRING!=null?((QuestionentryContext)_localctx).STRING.getText():null).length() - 1),((QuestionentryContext)_localctx).type.t,(((QuestionentryContext)_localctx).IDENTIFIER!=null?((QuestionentryContext)_localctx).IDENTIFIER.getLine():0)); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ConditionalContext extends ParserRuleContext { public ConditionalQuestion cq; public ExpContext exp; public ItemContext item; public ItemContext item(int i) { return getRuleContext(ItemContext.class,i); } public List<ItemContext> item() { return getRuleContexts(ItemContext.class); } public ExpContext exp() { return getRuleContext(ExpContext.class,0); } public ConditionalContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_conditional; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).enterConditional(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).exitConditional(this); } } public final ConditionalContext conditional() throws RecognitionException { ConditionalContext _localctx = new ConditionalContext(_ctx, getState()); enterRule(_localctx, 6, RULE_conditional); List<GeneralQuestion> gql = new ArrayList(); int _la; try { enterOuterAlt(_localctx, 1); { setState(44); match(8); setState(45); match(7); setState(46); ((ConditionalContext)_localctx).exp = exp(0); ((ConditionalContext)_localctx).cq = new ConditionalQuestion(((ConditionalContext)_localctx).exp.ex,((((ConditionalContext)_localctx).exp!=null?(((ConditionalContext)_localctx).exp.start):null)).getLine()); setState(48); match(19); setState(49); match(12); setState(55); _errHandler.sync(this); _la = _input.LA(1); while (_la==8 || _la==IDENTIFIER) { { { setState(50); ((ConditionalContext)_localctx).item = item(); _localctx.cq.addTrueConditionQuestion(((ConditionalContext)_localctx).item.question); } } setState(57); _errHandler.sync(this); _la = _input.LA(1); } setState(58); match(15); setState(72); _errHandler.sync(this); _la = _input.LA(1); while (_la==14) { { { setState(59); match(14); setState(60); match(12); setState(66); _errHandler.sync(this); _la = _input.LA(1); while (_la==8 || _la==IDENTIFIER) { { { setState(61); ((ConditionalContext)_localctx).item = item(); _localctx.cq.addFalseConditionQuestion(((ConditionalContext)_localctx).item.question); } } setState(68); _errHandler.sync(this); _la = _input.LA(1); } setState(69); match(15); } } setState(74); _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 ComputedContext extends ParserRuleContext { public ComputedQuestion question; public Token IDENTIFIER; public Token STRING; public TypeContext type; public ExpContext exp; public TerminalNode IDENTIFIER() { return getToken(testParser.IDENTIFIER, 0); } public ExpContext exp() { return getRuleContext(ExpContext.class,0); } public TypeContext type() { return getRuleContext(TypeContext.class,0); } public TerminalNode STRING() { return getToken(testParser.STRING, 0); } public ComputedContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_computed; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).enterComputed(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).exitComputed(this); } } public final ComputedContext computed() throws RecognitionException { ComputedContext _localctx = new ComputedContext(_ctx, getState()); enterRule(_localctx, 8, RULE_computed); try { enterOuterAlt(_localctx, 1); { setState(75); ((ComputedContext)_localctx).IDENTIFIER = match(IDENTIFIER); setState(76); match(6); setState(77); ((ComputedContext)_localctx).STRING = match(STRING); setState(78); ((ComputedContext)_localctx).type = type(); setState(79); match(7); setState(80); ((ComputedContext)_localctx).exp = exp(0); setState(81); match(19); ((ComputedContext)_localctx).question = new ComputedQuestion((((ComputedContext)_localctx).IDENTIFIER!=null?((ComputedContext)_localctx).IDENTIFIER.getText():null),(((ComputedContext)_localctx).STRING!=null?((ComputedContext)_localctx).STRING.getText():null).substring(1, (((ComputedContext)_localctx).STRING!=null?((ComputedContext)_localctx).STRING.getText():null).length() - 1),((ComputedContext)_localctx).type.t,((ComputedContext)_localctx).exp.ex,(((ComputedContext)_localctx).IDENTIFIER!=null?((ComputedContext)_localctx).IDENTIFIER.getLine():0)); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class TypeContext extends ParserRuleContext { public IType t; public Token IDENTIFIER; public TerminalNode IDENTIFIER() { return getToken(testParser.IDENTIFIER, 0); } public TypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_type; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).enterType(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).exitType(this); } } public final TypeContext type() throws RecognitionException { TypeContext _localctx = new TypeContext(_ctx, getState()); enterRule(_localctx, 10, RULE_type); try { setState(92); switch (_input.LA(1)) { case 16: enterOuterAlt(_localctx, 1); { setState(84); match(16); ((TypeContext)_localctx).t = new BoolType(); } break; case 23: enterOuterAlt(_localctx, 2); { setState(86); match(23); ((TypeContext)_localctx).t = new StringType(); } break; case 21: enterOuterAlt(_localctx, 3); { setState(88); match(21); ((TypeContext)_localctx).t = new IntType(); } break; case IDENTIFIER: enterOuterAlt(_localctx, 4); { setState(90); ((TypeContext)_localctx).IDENTIFIER = match(IDENTIFIER); ((TypeContext)_localctx).t = new ErrorType((((TypeContext)_localctx).IDENTIFIER!=null?((TypeContext)_localctx).IDENTIFIER.getLine():0)); } break; default: throw new NoViableAltException(this); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ExpContext extends ParserRuleContext { public Expression ex; public ExpContext l; public Token INT; public Token BOOL; public Token STRING; public Token IDENTIFIER; public ExpContext e; public ExpContext r; public TerminalNode BOOL() { return getToken(testParser.BOOL, 0); } public TerminalNode INT() { return getToken(testParser.INT, 0); } public TerminalNode IDENTIFIER() { return getToken(testParser.IDENTIFIER, 0); } public List<ExpContext> exp() { return getRuleContexts(ExpContext.class); } public ExpContext exp(int i) { return getRuleContext(ExpContext.class,i); } public TerminalNode STRING() { return getToken(testParser.STRING, 0); } public ExpContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_exp; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).enterExp(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof testListener ) ((testListener)listener).exitExp(this); } } public final ExpContext exp() throws RecognitionException { return exp(0); } private ExpContext exp(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); ExpContext _localctx = new ExpContext(_ctx, _parentState); ExpContext _prevctx = _localctx; int _startState = 12; enterRecursionRule(_localctx, 12, RULE_exp, _p); try { int _alt; enterOuterAlt(_localctx, 1); { setState(112); switch (_input.LA(1)) { case 3: { setState(95); match(3); setState(96); exp(17); } break; case 5: { setState(97); match(5); setState(98); exp(16); } break; case INT: { setState(99); ((ExpContext)_localctx).INT = match(INT); ((ExpContext)_localctx).ex = new IntLiteral(Integer.parseInt((((ExpContext)_localctx).INT!=null?((ExpContext)_localctx).INT.getText():null)),(((ExpContext)_localctx).INT!=null?((ExpContext)_localctx).INT.getLine():0)); } break; case BOOL: { setState(101); ((ExpContext)_localctx).BOOL = match(BOOL); ((ExpContext)_localctx).ex = new BoolLiteral(Boolean.parseBoolean((((ExpContext)_localctx).BOOL!=null?((ExpContext)_localctx).BOOL.getText():null)),(((ExpContext)_localctx).BOOL!=null?((ExpContext)_localctx).BOOL.getLine():0)); } break; case STRING: { setState(103); ((ExpContext)_localctx).STRING = match(STRING); ((ExpContext)_localctx).ex = new StringLiteral((((ExpContext)_localctx).STRING!=null?((ExpContext)_localctx).STRING.getText():null),(((ExpContext)_localctx).STRING!=null?((ExpContext)_localctx).STRING.getLine():0)); } break; case IDENTIFIER: { setState(105); ((ExpContext)_localctx).IDENTIFIER = match(IDENTIFIER); ((ExpContext)_localctx).ex = new Variable((((ExpContext)_localctx).IDENTIFIER!=null?((ExpContext)_localctx).IDENTIFIER.getText():null),(((ExpContext)_localctx).IDENTIFIER!=null?((ExpContext)_localctx).IDENTIFIER.getLine():0)); } break; case 7: { setState(107); match(7); setState(108); ((ExpContext)_localctx).e = exp(0); setState(109); match(19); ((ExpContext)_localctx).ex = ((ExpContext)_localctx).e.ex; } break; default: throw new NoViableAltException(this); } _ctx.stop = _input.LT(-1); setState(180); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,8,_ctx); while ( _alt!=2 && _alt!=-1 ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(178); switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { case 1: { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(114); if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); setState(115); match(18); setState(116); exp(16); } break; case 2: { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(117); if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); setState(118); match(17); setState(119); exp(15); } break; case 3: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(120); if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); setState(121); match(2); setState(122); ((ExpContext)_localctx).r = exp(14); ((ExpContext)_localctx).ex = new Multiplication(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 4: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(125); if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); setState(126); match(25); setState(127); ((ExpContext)_localctx).r = exp(13); ((ExpContext)_localctx).ex = new Division(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 5: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(130); if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); setState(131); match(3); setState(132); ((ExpContext)_localctx).r = exp(12); ((ExpContext)_localctx).ex = new Minus(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 6: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(135); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); setState(136); match(20); setState(137); ((ExpContext)_localctx).r = exp(11); ((ExpContext)_localctx).ex = new Plus(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 7: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(140); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); setState(141); match(9); setState(142); ((ExpContext)_localctx).r = exp(10); ((ExpContext)_localctx).ex = new SmallerThan(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 8: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(145); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); setState(146); match(10); setState(147); ((ExpContext)_localctx).r = exp(9); ((ExpContext)_localctx).ex = new SmallerThanEquals(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 9: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(150); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); setState(151); match(22); setState(152); ((ExpContext)_localctx).r = exp(8); ((ExpContext)_localctx).ex = new GreaterThan(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 10: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(155); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); setState(156); match(26); setState(157); ((ExpContext)_localctx).r = exp(7); ((ExpContext)_localctx).ex = new GreaterThanEquals(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 11: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(160); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); setState(161); match(24); setState(162); ((ExpContext)_localctx).r = exp(6); ((ExpContext)_localctx).ex = new Equals(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 12: { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(165); if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); setState(166); match(11); setState(167); exp(5); } break; case 13: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(168); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); setState(169); match(13); setState(170); ((ExpContext)_localctx).r = exp(4); ((ExpContext)_localctx).ex = new And(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; case 14: { _localctx = new ExpContext(_parentctx, _parentState); _localctx.l = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_exp); setState(173); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(174); match(4); setState(175); ((ExpContext)_localctx).r = exp(3); ((ExpContext)_localctx).ex = new Or(((ExpContext)_localctx).l.ex,((ExpContext)_localctx).r.ex,((((ExpContext)_localctx).l!=null?(((ExpContext)_localctx).l.start):null)).getLine()); } break; } } } setState(182); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,8,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { case 6: return exp_sempred((ExpContext)_localctx, predIndex); } return true; } private boolean exp_sempred(ExpContext _localctx, int predIndex) { switch (predIndex) { case 0: return precpred(_ctx, 15); case 1: return precpred(_ctx, 14); case 2: return precpred(_ctx, 13); case 3: return precpred(_ctx, 12); case 4: return precpred(_ctx, 11); case 5: return precpred(_ctx, 10); case 6: return precpred(_ctx, 9); case 7: return precpred(_ctx, 8); case 8: return precpred(_ctx, 7); case 9: return precpred(_ctx, 6); case 10: return precpred(_ctx, 5); case 11: return precpred(_ctx, 4); case 12: return precpred(_ctx, 3); case 13: return precpred(_ctx, 2); } return true; } public static final String _serializedATN = "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3!\u00ba\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\3\2\3\2\3\2\3\2\3\2\3\2"+ "\3\2\6\2\30\n\2\r\2\16\2\31\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+ "\3\5\3\'\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3"+ "\5\7\58\n\5\f\5\16\5;\13\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5C\n\5\f\5\16\5F"+ "\13\5\3\5\7\5I\n\5\f\5\16\5L\13\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6"+ "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7_\n\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+ "\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\bs\n\b\3\b\3\b\3\b\3\b"+ "\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+ "\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+ "\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+ "\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\7\b\u00b5\n\b\f\b\16\b\u00b8\13\b\3\b\2"+ "\3\16\t\2\4\6\b\n\f\16\2\2\u00cf\2\20\3\2\2\2\4&\3\2\2\2\6(\3\2\2\2\b"+ ".\3\2\2\2\nM\3\2\2\2\f^\3\2\2\2\16r\3\2\2\2\20\21\7\3\2\2\21\22\7\37\2"+ "\2\22\23\b\2\1\2\23\27\7\16\2\2\24\25\5\4\3\2\25\26\b\2\1\2\26\30\3\2"+ "\2\2\27\24\3\2\2\2\30\31\3\2\2\2\31\27\3\2\2\2\31\32\3\2\2\2\32\33\3\2"+ "\2\2\33\34\7\21\2\2\34\3\3\2\2\2\35\36\5\b\5\2\36\37\b\3\1\2\37\'\3\2"+ "\2\2 !\5\n\6\2!\"\b\3\1\2\"\'\3\2\2\2#$\5\6\4\2$%\b\3\1\2%\'\3\2\2\2&"+ "\35\3\2\2\2& \3\2\2\2&#\3\2\2\2\'\5\3\2\2\2()\7\37\2\2)*\7\b\2\2*+\7 "+ "\2\2+,\5\f\7\2,-\b\4\1\2-\7\3\2\2\2./\7\n\2\2/\60\7\t\2\2\60\61\5\16\b"+ "\2\61\62\b\5\1\2\62\63\7\25\2\2\639\7\16\2\2\64\65\5\4\3\2\65\66\b\5\1"+ "\2\668\3\2\2\2\67\64\3\2\2\28;\3\2\2\29\67\3\2\2\29:\3\2\2\2:<\3\2\2\2"+ ";9\3\2\2\2<J\7\21\2\2=>\7\20\2\2>D\7\16\2\2?@\5\4\3\2@A\b\5\1\2AC\3\2"+ "\2\2B?\3\2\2\2CF\3\2\2\2DB\3\2\2\2DE\3\2\2\2EG\3\2\2\2FD\3\2\2\2GI\7\21"+ "\2\2H=\3\2\2\2IL\3\2\2\2JH\3\2\2\2JK\3\2\2\2K\t\3\2\2\2LJ\3\2\2\2MN\7"+ "\37\2\2NO\7\b\2\2OP\7 \2\2PQ\5\f\7\2QR\7\t\2\2RS\5\16\b\2ST\7\25\2\2T"+ "U\b\6\1\2U\13\3\2\2\2VW\7\22\2\2W_\b\7\1\2XY\7\31\2\2Y_\b\7\1\2Z[\7\27"+ "\2\2[_\b\7\1\2\\]\7\37\2\2]_\b\7\1\2^V\3\2\2\2^X\3\2\2\2^Z\3\2\2\2^\\"+ "\3\2\2\2_\r\3\2\2\2`a\b\b\1\2ab\7\5\2\2bs\5\16\b\23cd\7\7\2\2ds\5\16\b"+ "\22ef\7\36\2\2fs\b\b\1\2gh\7\35\2\2hs\b\b\1\2ij\7 \2\2js\b\b\1\2kl\7\37"+ "\2\2ls\b\b\1\2mn\7\t\2\2no\5\16\b\2op\7\25\2\2pq\b\b\1\2qs\3\2\2\2r`\3"+ "\2\2\2rc\3\2\2\2re\3\2\2\2rg\3\2\2\2ri\3\2\2\2rk\3\2\2\2rm\3\2\2\2s\u00b6"+ "\3\2\2\2tu\f\21\2\2uv\7\24\2\2v\u00b5\5\16\b\22wx\f\20\2\2xy\7\23\2\2"+ "y\u00b5\5\16\b\21z{\f\17\2\2{|\7\4\2\2|}\5\16\b\20}~\b\b\1\2~\u00b5\3"+ "\2\2\2\177\u0080\f\16\2\2\u0080\u0081\7\33\2\2\u0081\u0082\5\16\b\17\u0082"+ "\u0083\b\b\1\2\u0083\u00b5\3\2\2\2\u0084\u0085\f\r\2\2\u0085\u0086\7\5"+ "\2\2\u0086\u0087\5\16\b\16\u0087\u0088\b\b\1\2\u0088\u00b5\3\2\2\2\u0089"+ "\u008a\f\f\2\2\u008a\u008b\7\26\2\2\u008b\u008c\5\16\b\r\u008c\u008d\b"+ "\b\1\2\u008d\u00b5\3\2\2\2\u008e\u008f\f\13\2\2\u008f\u0090\7\13\2\2\u0090"+ "\u0091\5\16\b\f\u0091\u0092\b\b\1\2\u0092\u00b5\3\2\2\2\u0093\u0094\f"+ "\n\2\2\u0094\u0095\7\f\2\2\u0095\u0096\5\16\b\13\u0096\u0097\b\b\1\2\u0097"+ "\u00b5\3\2\2\2\u0098\u0099\f\t\2\2\u0099\u009a\7\30\2\2\u009a\u009b\5"+ "\16\b\n\u009b\u009c\b\b\1\2\u009c\u00b5\3\2\2\2\u009d\u009e\f\b\2\2\u009e"+ "\u009f\7\34\2\2\u009f\u00a0\5\16\b\t\u00a0\u00a1\b\b\1\2\u00a1\u00b5\3"+ "\2\2\2\u00a2\u00a3\f\7\2\2\u00a3\u00a4\7\32\2\2\u00a4\u00a5\5\16\b\b\u00a5"+ "\u00a6\b\b\1\2\u00a6\u00b5\3\2\2\2\u00a7\u00a8\f\6\2\2\u00a8\u00a9\7\r"+ "\2\2\u00a9\u00b5\5\16\b\7\u00aa\u00ab\f\5\2\2\u00ab\u00ac\7\17\2\2\u00ac"+ "\u00ad\5\16\b\6\u00ad\u00ae\b\b\1\2\u00ae\u00b5\3\2\2\2\u00af\u00b0\f"+ "\4\2\2\u00b0\u00b1\7\6\2\2\u00b1\u00b2\5\16\b\5\u00b2\u00b3\b\b\1\2\u00b3"+ "\u00b5\3\2\2\2\u00b4t\3\2\2\2\u00b4w\3\2\2\2\u00b4z\3\2\2\2\u00b4\177"+ "\3\2\2\2\u00b4\u0084\3\2\2\2\u00b4\u0089\3\2\2\2\u00b4\u008e\3\2\2\2\u00b4"+ "\u0093\3\2\2\2\u00b4\u0098\3\2\2\2\u00b4\u009d\3\2\2\2\u00b4\u00a2\3\2"+ "\2\2\u00b4\u00a7\3\2\2\2\u00b4\u00aa\3\2\2\2\u00b4\u00af\3\2\2\2\u00b5"+ "\u00b8\3\2\2\2\u00b6\u00b4\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\17\3\2\2"+ "\2\u00b8\u00b6\3\2\2\2\13\31&9DJ^r\u00b4\u00b6"; 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); } } }