// Generated from E:/development/Steven/src/test/resources/antlr/grammars\QL.g4 by ANTLR 4.5 package edu.parser.QL.antlrGenerated; 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 QLParser extends Parser { static { RuntimeMetaData.checkVersion("4.5", RuntimeMetaData.VERSION); } protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17, T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, UPPERCASE=23, LOWERCASE=24, NUMBERS=25, STRING=26, COMMENT_LINE=27, WS=28; public static final int RULE_form = 0, RULE_statement = 1, RULE_if_statement = 2, RULE_else_clause = 3, RULE_expression = 4, RULE_booleanExpression = 5, RULE_identifier = 6, RULE_question = 7, RULE_question_expression = 8, RULE_question_type = 9, RULE_question_label = 10; public static final String[] ruleNames = { "form", "statement", "if_statement", "else_clause", "expression", "booleanExpression", "identifier", "question", "question_expression", "question_type", "question_label" }; private static final String[] _LITERAL_NAMES = { null, "'form'", "'{'", "'}'", "'if'", "'('", "')'", "'else'", "'!'", "'*'", "'/'", "'+'", "'-'", "'>'", "'<'", "'<='", "'>='", "'=='", "'!='", "'&&'", "'||'", "'true'", "'false'" }; private static final String[] _SYMBOLIC_NAMES = { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "UPPERCASE", "LOWERCASE", "NUMBERS", "STRING", "COMMENT_LINE", "WS" }; public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); /** * @deprecated Use {@link #VOCABULARY} instead. */ @Deprecated public static final String[] tokenNames; static { tokenNames = new String[_SYMBOLIC_NAMES.length]; for (int i = 0; i < tokenNames.length; i++) { tokenNames[i] = VOCABULARY.getLiteralName(i); if (tokenNames[i] == null) { tokenNames[i] = VOCABULARY.getSymbolicName(i); } if (tokenNames[i] == null) { tokenNames[i] = "<INVALID>"; } } } @Override @Deprecated public String[] getTokenNames() { return tokenNames; } @Override @NotNull public Vocabulary getVocabulary() { return VOCABULARY; } @Override public String getGrammarFileName() { return "QL.g4"; } @Override public String[] getRuleNames() { return ruleNames; } @Override public String getSerializedATN() { return _serializedATN; } @Override public ATN getATN() { return _ATN; } public QLParser(TokenStream input) { super(input); _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); } public static class FormContext extends ParserRuleContext { public IdentifierContext identifier() { return getRuleContext(IdentifierContext.class,0); } public List<StatementContext> statement() { return getRuleContexts(StatementContext.class); } public StatementContext statement(int i) { return getRuleContext(StatementContext.class,i); } public FormContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_form; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitForm(this); else return visitor.visitChildren(this); } } public final FormContext form() throws RecognitionException { FormContext _localctx = new FormContext(_ctx, getState()); enterRule(_localctx, 0, RULE_form); int _la; try { enterOuterAlt(_localctx, 1); { setState(22); match(T__0); setState(23); identifier(); setState(24); match(T__1); setState(26); _errHandler.sync(this); _la = _input.LA(1); do { { { setState(25); statement(); } } setState(28); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << UPPERCASE) | (1L << LOWERCASE) | (1L << NUMBERS))) != 0) ); setState(30); match(T__2); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class StatementContext extends ParserRuleContext { public StatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_statement; } public StatementContext() { } public void copyFrom(StatementContext ctx) { super.copyFrom(ctx); } } public static class If_statementLabelContext extends StatementContext { public If_statementContext if_statement() { return getRuleContext(If_statementContext.class,0); } public If_statementLabelContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitIf_statementLabel(this); else return visitor.visitChildren(this); } } public static class QuestionLabelContext extends StatementContext { public QuestionContext question() { return getRuleContext(QuestionContext.class,0); } public QuestionLabelContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitQuestionLabel(this); else return visitor.visitChildren(this); } } public final StatementContext statement() throws RecognitionException { StatementContext _localctx = new StatementContext(_ctx, getState()); enterRule(_localctx, 2, RULE_statement); try { setState(34); switch (_input.LA(1)) { case UPPERCASE: case LOWERCASE: case NUMBERS: _localctx = new QuestionLabelContext(_localctx); enterOuterAlt(_localctx, 1); { setState(32); question(); } break; case T__3: _localctx = new If_statementLabelContext(_localctx); enterOuterAlt(_localctx, 2); { setState(33); if_statement(); } 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 If_statementContext extends ParserRuleContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public List<StatementContext> statement() { return getRuleContexts(StatementContext.class); } public StatementContext statement(int i) { return getRuleContext(StatementContext.class,i); } public Else_clauseContext else_clause() { return getRuleContext(Else_clauseContext.class,0); } public If_statementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_if_statement; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitIf_statement(this); else return visitor.visitChildren(this); } } public final If_statementContext if_statement() throws RecognitionException { If_statementContext _localctx = new If_statementContext(_ctx, getState()); enterRule(_localctx, 4, RULE_if_statement); int _la; try { enterOuterAlt(_localctx, 1); { setState(36); match(T__3); setState(37); match(T__4); setState(38); expression(0); setState(39); match(T__5); setState(40); match(T__1); setState(42); _errHandler.sync(this); _la = _input.LA(1); do { { { setState(41); statement(); } } setState(44); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << UPPERCASE) | (1L << LOWERCASE) | (1L << NUMBERS))) != 0) ); setState(46); match(T__2); setState(48); _la = _input.LA(1); if (_la==T__6) { { setState(47); else_clause(); } } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class Else_clauseContext extends ParserRuleContext { public List<StatementContext> statement() { return getRuleContexts(StatementContext.class); } public StatementContext statement(int i) { return getRuleContext(StatementContext.class,i); } public Else_clauseContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_else_clause; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitElse_clause(this); else return visitor.visitChildren(this); } } public final Else_clauseContext else_clause() throws RecognitionException { Else_clauseContext _localctx = new Else_clauseContext(_ctx, getState()); enterRule(_localctx, 6, RULE_else_clause); int _la; try { enterOuterAlt(_localctx, 1); { setState(50); match(T__6); setState(51); match(T__1); setState(53); _errHandler.sync(this); _la = _input.LA(1); do { { { setState(52); statement(); } } setState(55); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << UPPERCASE) | (1L << LOWERCASE) | (1L << NUMBERS))) != 0) ); setState(57); match(T__2); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ExpressionContext extends ParserRuleContext { public ExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_expression; } public ExpressionContext() { } public void copyFrom(ExpressionContext ctx) { super.copyFrom(ctx); } } public static class GreaterOrEqualContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public GreaterOrEqualContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitGreaterOrEqual(this); else return visitor.visitChildren(this); } } public static class NumbersLabelContext extends ExpressionContext { public Token numbers; public TerminalNode NUMBERS() { return getToken(QLParser.NUMBERS, 0); } public NumbersLabelContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitNumbersLabel(this); else return visitor.visitChildren(this); } } public static class OrContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public OrContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitOr(this); else return visitor.visitChildren(this); } } public static class LessOrEqualContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public LessOrEqualContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitLessOrEqual(this); else return visitor.visitChildren(this); } } public static class IdentifierLabelContext extends ExpressionContext { public IdentifierContext identifier() { return getRuleContext(IdentifierContext.class,0); } public IdentifierLabelContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitIdentifierLabel(this); else return visitor.visitChildren(this); } } public static class SubtractionContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public SubtractionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitSubtraction(this); else return visitor.visitChildren(this); } } public static class NotEqualContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public NotEqualContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitNotEqual(this); else return visitor.visitChildren(this); } } public static class ParenthesisContext extends ExpressionContext { public Token leftParenthesis; public Token rightParenthesis; public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public ParenthesisContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitParenthesis(this); else return visitor.visitChildren(this); } } public static class DivisionContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public DivisionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitDivision(this); else return visitor.visitChildren(this); } } public static class EqualContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public EqualContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitEqual(this); else return visitor.visitChildren(this); } } public static class NegationLabelContext extends ExpressionContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public NegationLabelContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitNegationLabel(this); else return visitor.visitChildren(this); } } public static class AndContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public AndContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitAnd(this); else return visitor.visitChildren(this); } } public static class LessThanContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public LessThanContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitLessThan(this); else return visitor.visitChildren(this); } } public static class MultiplicationContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public MultiplicationContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitMultiplication(this); else return visitor.visitChildren(this); } } public static class BooleanExpressionLabelContext extends ExpressionContext { public BooleanExpressionContext booleanExpression() { return getRuleContext(BooleanExpressionContext.class,0); } public BooleanExpressionLabelContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitBooleanExpressionLabel(this); else return visitor.visitChildren(this); } } public static class AdditionContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public AdditionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitAddition(this); else return visitor.visitChildren(this); } } public static class GreaterThanContext extends ExpressionContext { public ExpressionContext left; public ExpressionContext right; public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public GreaterThanContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitGreaterThan(this); else return visitor.visitChildren(this); } } public final ExpressionContext expression() throws RecognitionException { return expression(0); } private ExpressionContext expression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); ExpressionContext _prevctx = _localctx; int _startState = 8; enterRecursionRule(_localctx, 8, RULE_expression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { setState(69); switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { case 1: { _localctx = new NegationLabelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(60); match(T__7); setState(61); expression(16); } break; case 2: { _localctx = new ParenthesisContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(62); ((ParenthesisContext)_localctx).leftParenthesis = match(T__4); setState(63); expression(0); setState(64); ((ParenthesisContext)_localctx).rightParenthesis = match(T__5); } break; case 3: { _localctx = new NumbersLabelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(66); ((NumbersLabelContext)_localctx).numbers = match(NUMBERS); } break; case 4: { _localctx = new IdentifierLabelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(67); identifier(); } break; case 5: { _localctx = new BooleanExpressionLabelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(68); booleanExpression(); } break; } _ctx.stop = _input.LT(-1); setState(109); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,7,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(107); switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { case 1: { _localctx = new MultiplicationContext(new ExpressionContext(_parentctx, _parentState)); ((MultiplicationContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(71); if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); setState(72); match(T__8); setState(73); ((MultiplicationContext)_localctx).right = expression(16); } break; case 2: { _localctx = new DivisionContext(new ExpressionContext(_parentctx, _parentState)); ((DivisionContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(74); if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); setState(75); match(T__9); setState(76); ((DivisionContext)_localctx).right = expression(15); } break; case 3: { _localctx = new AdditionContext(new ExpressionContext(_parentctx, _parentState)); ((AdditionContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(77); if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); setState(78); match(T__10); setState(79); ((AdditionContext)_localctx).right = expression(14); } break; case 4: { _localctx = new SubtractionContext(new ExpressionContext(_parentctx, _parentState)); ((SubtractionContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(80); if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); setState(81); match(T__11); setState(82); ((SubtractionContext)_localctx).right = expression(13); } break; case 5: { _localctx = new GreaterThanContext(new ExpressionContext(_parentctx, _parentState)); ((GreaterThanContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(83); if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); setState(84); match(T__12); setState(85); ((GreaterThanContext)_localctx).right = expression(12); } break; case 6: { _localctx = new LessThanContext(new ExpressionContext(_parentctx, _parentState)); ((LessThanContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(86); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); setState(87); match(T__13); setState(88); ((LessThanContext)_localctx).right = expression(11); } break; case 7: { _localctx = new LessOrEqualContext(new ExpressionContext(_parentctx, _parentState)); ((LessOrEqualContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(89); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); setState(90); match(T__14); setState(91); ((LessOrEqualContext)_localctx).right = expression(10); } break; case 8: { _localctx = new GreaterOrEqualContext(new ExpressionContext(_parentctx, _parentState)); ((GreaterOrEqualContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(92); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); setState(93); match(T__15); setState(94); ((GreaterOrEqualContext)_localctx).right = expression(9); } break; case 9: { _localctx = new EqualContext(new ExpressionContext(_parentctx, _parentState)); ((EqualContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(95); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); setState(96); match(T__16); setState(97); ((EqualContext)_localctx).right = expression(8); } break; case 10: { _localctx = new NotEqualContext(new ExpressionContext(_parentctx, _parentState)); ((NotEqualContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(98); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); setState(99); match(T__17); setState(100); ((NotEqualContext)_localctx).right = expression(7); } break; case 11: { _localctx = new AndContext(new ExpressionContext(_parentctx, _parentState)); ((AndContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(101); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); setState(102); match(T__18); setState(103); ((AndContext)_localctx).right = expression(6); } break; case 12: { _localctx = new OrContext(new ExpressionContext(_parentctx, _parentState)); ((OrContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(104); if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); setState(105); match(T__19); setState(106); ((OrContext)_localctx).right = expression(5); } break; } } } setState(111); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,7,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class BooleanExpressionContext extends ParserRuleContext { public Token isTrue; public Token isFalse; public BooleanExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_booleanExpression; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitBooleanExpression(this); else return visitor.visitChildren(this); } } public final BooleanExpressionContext booleanExpression() throws RecognitionException { BooleanExpressionContext _localctx = new BooleanExpressionContext(_ctx, getState()); enterRule(_localctx, 10, RULE_booleanExpression); try { setState(114); switch (_input.LA(1)) { case T__20: enterOuterAlt(_localctx, 1); { setState(112); ((BooleanExpressionContext)_localctx).isTrue = match(T__20); } break; case T__21: enterOuterAlt(_localctx, 2); { setState(113); ((BooleanExpressionContext)_localctx).isFalse = match(T__21); } 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 IdentifierContext extends ParserRuleContext { public List<TerminalNode> UPPERCASE() { return getTokens(QLParser.UPPERCASE); } public TerminalNode UPPERCASE(int i) { return getToken(QLParser.UPPERCASE, i); } public List<TerminalNode> LOWERCASE() { return getTokens(QLParser.LOWERCASE); } public TerminalNode LOWERCASE(int i) { return getToken(QLParser.LOWERCASE, i); } public List<TerminalNode> NUMBERS() { return getTokens(QLParser.NUMBERS); } public TerminalNode NUMBERS(int i) { return getToken(QLParser.NUMBERS, i); } public IdentifierContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_identifier; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitIdentifier(this); else return visitor.visitChildren(this); } } public final IdentifierContext identifier() throws RecognitionException { IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); enterRule(_localctx, 12, RULE_identifier); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { setState(117); _errHandler.sync(this); _alt = 1; do { switch (_alt) { case 1: { { setState(116); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << UPPERCASE) | (1L << LOWERCASE) | (1L << NUMBERS))) != 0)) ) { _errHandler.recoverInline(this); } consume(); } } break; default: throw new NoViableAltException(this); } setState(119); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,9,_ctx); } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class QuestionContext extends ParserRuleContext { public IdentifierContext identifier() { return getRuleContext(IdentifierContext.class,0); } public Question_typeContext question_type() { return getRuleContext(Question_typeContext.class,0); } public Question_labelContext question_label() { return getRuleContext(Question_labelContext.class,0); } public Question_expressionContext question_expression() { return getRuleContext(Question_expressionContext.class,0); } public QuestionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_question; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitQuestion(this); else return visitor.visitChildren(this); } } public final QuestionContext question() throws RecognitionException { QuestionContext _localctx = new QuestionContext(_ctx, getState()); enterRule(_localctx, 14, RULE_question); int _la; try { enterOuterAlt(_localctx, 1); { setState(121); identifier(); setState(122); question_type(); setState(123); question_label(); setState(125); _la = _input.LA(1); if (_la==T__4) { { setState(124); question_expression(); } } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class Question_expressionContext extends ParserRuleContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public Question_expressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_question_expression; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitQuestion_expression(this); else return visitor.visitChildren(this); } } public final Question_expressionContext question_expression() throws RecognitionException { Question_expressionContext _localctx = new Question_expressionContext(_ctx, getState()); enterRule(_localctx, 16, RULE_question_expression); try { enterOuterAlt(_localctx, 1); { setState(127); match(T__4); setState(128); expression(0); setState(129); match(T__5); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class Question_typeContext extends ParserRuleContext { public TerminalNode UPPERCASE() { return getToken(QLParser.UPPERCASE, 0); } public Question_typeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_question_type; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitQuestion_type(this); else return visitor.visitChildren(this); } } public final Question_typeContext question_type() throws RecognitionException { Question_typeContext _localctx = new Question_typeContext(_ctx, getState()); enterRule(_localctx, 18, RULE_question_type); try { enterOuterAlt(_localctx, 1); { setState(131); match(UPPERCASE); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class Question_labelContext extends ParserRuleContext { public TerminalNode STRING() { return getToken(QLParser.STRING, 0); } public Question_labelContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_question_label; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QLVisitor ) return ((QLVisitor<? extends T>)visitor).visitQuestion_label(this); else return visitor.visitChildren(this); } } public final Question_labelContext question_label() throws RecognitionException { Question_labelContext _localctx = new Question_labelContext(_ctx, getState()); enterRule(_localctx, 20, RULE_question_label); try { enterOuterAlt(_localctx, 1); { setState(133); match(STRING); } } 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 4: return expression_sempred((ExpressionContext)_localctx, predIndex); } return true; } private boolean expression_sempred(ExpressionContext _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); } return true; } public static final String _serializedATN = "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3\36\u008a\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\3\2\3\2\3\2\3\2\6\2\35\n\2\r\2\16\2\36\3\2\3\2\3\3\3\3\5"+ "\3%\n\3\3\4\3\4\3\4\3\4\3\4\3\4\6\4-\n\4\r\4\16\4.\3\4\3\4\5\4\63\n\4"+ "\3\5\3\5\3\5\6\58\n\5\r\5\16\59\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3"+ "\6\3\6\3\6\5\6H\n\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\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\3\6"+ "\3\6\3\6\3\6\3\6\3\6\3\6\7\6n\n\6\f\6\16\6q\13\6\3\7\3\7\5\7u\n\7\3\b"+ "\6\bx\n\b\r\b\16\by\3\t\3\t\3\t\3\t\5\t\u0080\n\t\3\n\3\n\3\n\3\n\3\13"+ "\3\13\3\f\3\f\3\f\2\3\n\r\2\4\6\b\n\f\16\20\22\24\26\2\3\3\2\31\33\u0096"+ "\2\30\3\2\2\2\4$\3\2\2\2\6&\3\2\2\2\b\64\3\2\2\2\nG\3\2\2\2\ft\3\2\2\2"+ "\16w\3\2\2\2\20{\3\2\2\2\22\u0081\3\2\2\2\24\u0085\3\2\2\2\26\u0087\3"+ "\2\2\2\30\31\7\3\2\2\31\32\5\16\b\2\32\34\7\4\2\2\33\35\5\4\3\2\34\33"+ "\3\2\2\2\35\36\3\2\2\2\36\34\3\2\2\2\36\37\3\2\2\2\37 \3\2\2\2 !\7\5\2"+ "\2!\3\3\2\2\2\"%\5\20\t\2#%\5\6\4\2$\"\3\2\2\2$#\3\2\2\2%\5\3\2\2\2&\'"+ "\7\6\2\2\'(\7\7\2\2()\5\n\6\2)*\7\b\2\2*,\7\4\2\2+-\5\4\3\2,+\3\2\2\2"+ "-.\3\2\2\2.,\3\2\2\2./\3\2\2\2/\60\3\2\2\2\60\62\7\5\2\2\61\63\5\b\5\2"+ "\62\61\3\2\2\2\62\63\3\2\2\2\63\7\3\2\2\2\64\65\7\t\2\2\65\67\7\4\2\2"+ "\668\5\4\3\2\67\66\3\2\2\289\3\2\2\29\67\3\2\2\29:\3\2\2\2:;\3\2\2\2;"+ "<\7\5\2\2<\t\3\2\2\2=>\b\6\1\2>?\7\n\2\2?H\5\n\6\22@A\7\7\2\2AB\5\n\6"+ "\2BC\7\b\2\2CH\3\2\2\2DH\7\33\2\2EH\5\16\b\2FH\5\f\7\2G=\3\2\2\2G@\3\2"+ "\2\2GD\3\2\2\2GE\3\2\2\2GF\3\2\2\2Ho\3\2\2\2IJ\f\21\2\2JK\7\13\2\2Kn\5"+ "\n\6\22LM\f\20\2\2MN\7\f\2\2Nn\5\n\6\21OP\f\17\2\2PQ\7\r\2\2Qn\5\n\6\20"+ "RS\f\16\2\2ST\7\16\2\2Tn\5\n\6\17UV\f\r\2\2VW\7\17\2\2Wn\5\n\6\16XY\f"+ "\f\2\2YZ\7\20\2\2Zn\5\n\6\r[\\\f\13\2\2\\]\7\21\2\2]n\5\n\6\f^_\f\n\2"+ "\2_`\7\22\2\2`n\5\n\6\13ab\f\t\2\2bc\7\23\2\2cn\5\n\6\nde\f\b\2\2ef\7"+ "\24\2\2fn\5\n\6\tgh\f\7\2\2hi\7\25\2\2in\5\n\6\bjk\f\6\2\2kl\7\26\2\2"+ "ln\5\n\6\7mI\3\2\2\2mL\3\2\2\2mO\3\2\2\2mR\3\2\2\2mU\3\2\2\2mX\3\2\2\2"+ "m[\3\2\2\2m^\3\2\2\2ma\3\2\2\2md\3\2\2\2mg\3\2\2\2mj\3\2\2\2nq\3\2\2\2"+ "om\3\2\2\2op\3\2\2\2p\13\3\2\2\2qo\3\2\2\2ru\7\27\2\2su\7\30\2\2tr\3\2"+ "\2\2ts\3\2\2\2u\r\3\2\2\2vx\t\2\2\2wv\3\2\2\2xy\3\2\2\2yw\3\2\2\2yz\3"+ "\2\2\2z\17\3\2\2\2{|\5\16\b\2|}\5\24\13\2}\177\5\26\f\2~\u0080\5\22\n"+ "\2\177~\3\2\2\2\177\u0080\3\2\2\2\u0080\21\3\2\2\2\u0081\u0082\7\7\2\2"+ "\u0082\u0083\5\n\6\2\u0083\u0084\7\b\2\2\u0084\23\3\2\2\2\u0085\u0086"+ "\7\31\2\2\u0086\25\3\2\2\2\u0087\u0088\7\34\2\2\u0088\27\3\2\2\2\r\36"+ "$.\629Gmoty\177"; 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); } } }