// Generated from grammar/QL4.g4 by ANTLR 4.2 package QL4; 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 QL4Parser extends Parser { protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int T__18=1, T__17=2, T__16=3, T__15=4, T__14=5, T__13=6, T__12=7, T__11=8, T__10=9, T__9=10, T__8=11, T__7=12, T__6=13, T__5=14, T__4=15, T__3=16, T__2=17, T__1=18, T__0=19, COMMENT=20, TYPE=21, IF=22, ELSEIF=23, ELSE=24, BOOLEAN=25, IDENTIFIER=26, STRING=27, DEC=28, INT=29, WS=30; public static final String[] tokenNames = { "<INVALID>", "')'", "'+'", "'-'", "'*'", "'('", "':'", "'<'", "'!='", "';'", "'<='", "'&&'", "'||'", "'{'", "'>'", "'/'", "'=='", "'}'", "'>='", "'!'", "COMMENT", "TYPE", "'if'", "'elseif'", "'else'", "BOOLEAN", "IDENTIFIER", "STRING", "DEC", "INT", "WS" }; public static final int RULE_form = 0, RULE_structures = 1, RULE_structure = 2, RULE_question = 3, RULE_expression = 4, RULE_ifcondition = 5, RULE_elseifcondition = 6, RULE_elsecondition = 7, RULE_label = 8; public static final String[] ruleNames = { "form", "structures", "structure", "question", "expression", "ifcondition", "elseifcondition", "elsecondition", "label" }; @Override public String getGrammarFileName() { return "QL4.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 QL4Parser(TokenStream input) { super(input); _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); } public static class FormContext extends ParserRuleContext { public StructuresContext structures() { return getRuleContext(StructuresContext.class,0); } public FormContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_form; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterForm(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitForm(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? 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); try { enterOuterAlt(_localctx, 1); { setState(18); structures(); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class StructuresContext extends ParserRuleContext { public StructureContext structure(int i) { return getRuleContext(StructureContext.class,i); } public List<StructureContext> structure() { return getRuleContexts(StructureContext.class); } public StructuresContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_structures; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterStructures(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitStructures(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitStructures(this); else return visitor.visitChildren(this); } } public final StructuresContext structures() throws RecognitionException { StructuresContext _localctx = new StructuresContext(_ctx, getState()); enterRule(_localctx, 2, RULE_structures); int _la; try { enterOuterAlt(_localctx, 1); { setState(21); _errHandler.sync(this); _la = _input.LA(1); do { { { setState(20); structure(); } } setState(23); _errHandler.sync(this); _la = _input.LA(1); } while ( _la==IF || _la==IDENTIFIER ); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class StructureContext extends ParserRuleContext { public StructureContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_structure; } public StructureContext() { } public void copyFrom(StructureContext ctx) { super.copyFrom(ctx); } } public static class WorkflowStructContext extends StructureContext { public ElseconditionContext elsecondition() { return getRuleContext(ElseconditionContext.class,0); } public List<ElseifconditionContext> elseifcondition() { return getRuleContexts(ElseifconditionContext.class); } public IfconditionContext ifcondition() { return getRuleContext(IfconditionContext.class,0); } public ElseifconditionContext elseifcondition(int i) { return getRuleContext(ElseifconditionContext.class,i); } public StructuresContext structures(int i) { return getRuleContext(StructuresContext.class,i); } public List<StructuresContext> structures() { return getRuleContexts(StructuresContext.class); } public WorkflowStructContext(StructureContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterWorkflowStruct(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitWorkflowStruct(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitWorkflowStruct(this); else return visitor.visitChildren(this); } } public static class QuestionStructContext extends StructureContext { public QuestionContext question() { return getRuleContext(QuestionContext.class,0); } public QuestionStructContext(StructureContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterQuestionStruct(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitQuestionStruct(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitQuestionStruct(this); else return visitor.visitChildren(this); } } public final StructureContext structure() throws RecognitionException { StructureContext _localctx = new StructureContext(_ctx, getState()); enterRule(_localctx, 4, RULE_structure); int _la; try { setState(47); switch (_input.LA(1)) { case IDENTIFIER: _localctx = new QuestionStructContext(_localctx); enterOuterAlt(_localctx, 1); { setState(25); question(); } break; case IF: _localctx = new WorkflowStructContext(_localctx); enterOuterAlt(_localctx, 2); { setState(26); ifcondition(); setState(27); match(13); setState(28); structures(); setState(29); match(17); setState(37); _errHandler.sync(this); _la = _input.LA(1); while (_la==ELSEIF) { { { setState(30); elseifcondition(); setState(31); match(13); setState(32); structures(); setState(33); match(17); } } setState(39); _errHandler.sync(this); _la = _input.LA(1); } setState(45); _la = _input.LA(1); if (_la==ELSE) { { setState(40); elsecondition(); setState(41); match(13); setState(42); structures(); setState(43); match(17); } } } 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 QuestionContext extends ParserRuleContext { public QuestionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_question; } public QuestionContext() { } public void copyFrom(QuestionContext ctx) { super.copyFrom(ctx); } } public static class CompQuestionContext extends QuestionContext { public TerminalNode IDENTIFIER() { return getToken(QL4Parser.IDENTIFIER, 0); } public LabelContext label() { return getRuleContext(LabelContext.class,0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode TYPE() { return getToken(QL4Parser.TYPE, 0); } public CompQuestionContext(QuestionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterCompQuestion(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitCompQuestion(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitCompQuestion(this); else return visitor.visitChildren(this); } } public static class RegQuestionContext extends QuestionContext { public TerminalNode IDENTIFIER() { return getToken(QL4Parser.IDENTIFIER, 0); } public LabelContext label() { return getRuleContext(LabelContext.class,0); } public TerminalNode TYPE() { return getToken(QL4Parser.TYPE, 0); } public RegQuestionContext(QuestionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterRegQuestion(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitRegQuestion(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitRegQuestion(this); else return visitor.visitChildren(this); } } public final QuestionContext question() throws RecognitionException { QuestionContext _localctx = new QuestionContext(_ctx, getState()); enterRule(_localctx, 6, RULE_question); try { setState(66); switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { case 1: _localctx = new RegQuestionContext(_localctx); enterOuterAlt(_localctx, 1); { setState(49); match(IDENTIFIER); setState(50); match(6); setState(51); label(); setState(52); match(6); setState(53); match(TYPE); setState(54); match(9); } break; case 2: _localctx = new CompQuestionContext(_localctx); enterOuterAlt(_localctx, 2); { setState(56); match(IDENTIFIER); setState(57); match(6); setState(58); label(); setState(59); match(6); setState(60); match(TYPE); setState(61); match(5); setState(62); expression(0); setState(63); match(1); setState(64); match(9); } break; } } 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 GreExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public GreExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterGreExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitGreExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitGreExpr(this); else return visitor.visitChildren(this); } } public static class MultExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public MultExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterMultExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitMultExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitMultExpr(this); else return visitor.visitChildren(this); } } public static class AndExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public AndExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterAndExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitAndExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitAndExpr(this); else return visitor.visitChildren(this); } } public static class GeqExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public GeqExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterGeqExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitGeqExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitGeqExpr(this); else return visitor.visitChildren(this); } } public static class IntContext extends ExpressionContext { public TerminalNode INT() { return getToken(QL4Parser.INT, 0); } public IntContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterInt(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitInt(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitInt(this); else return visitor.visitChildren(this); } } public static class LesExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public LesExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterLesExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitLesExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitLesExpr(this); else return visitor.visitChildren(this); } } public static class PlusExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public PlusExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterPlusExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitPlusExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitPlusExpr(this); else return visitor.visitChildren(this); } } public static class OrExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public OrExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterOrExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitOrExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitOrExpr(this); else return visitor.visitChildren(this); } } public static class WrapExprContext extends ExpressionContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public WrapExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterWrapExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitWrapExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitWrapExpr(this); else return visitor.visitChildren(this); } } public static class DecContext extends ExpressionContext { public TerminalNode DEC() { return getToken(QL4Parser.DEC, 0); } public DecContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterDec(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitDec(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitDec(this); else return visitor.visitChildren(this); } } public static class MinExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public MinExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterMinExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitMinExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitMinExpr(this); else return visitor.visitChildren(this); } } public static class IdentContext extends ExpressionContext { public TerminalNode IDENTIFIER() { return getToken(QL4Parser.IDENTIFIER, 0); } public IdentContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterIdent(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitIdent(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitIdent(this); else return visitor.visitChildren(this); } } public static class LeqExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public LeqExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterLeqExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitLeqExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitLeqExpr(this); else return visitor.visitChildren(this); } } public static class NegExprContext extends ExpressionContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public NegExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterNegExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitNegExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitNegExpr(this); else return visitor.visitChildren(this); } } public static class NeqExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public NeqExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterNeqExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitNeqExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitNeqExpr(this); else return visitor.visitChildren(this); } } public static class BoolContext extends ExpressionContext { public TerminalNode BOOLEAN() { return getToken(QL4Parser.BOOLEAN, 0); } public BoolContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterBool(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitBool(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitBool(this); else return visitor.visitChildren(this); } } public static class EqExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public EqExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterEqExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitEqExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitEqExpr(this); else return visitor.visitChildren(this); } } public static class DivExprContext extends ExpressionContext { public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public DivExprContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterDivExpr(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitDivExpr(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitDivExpr(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(79); switch (_input.LA(1)) { case 19: { _localctx = new NegExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(69); match(19); setState(70); expression(13); } break; case 5: { _localctx = new WrapExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(71); match(5); setState(72); expression(0); setState(73); match(1); } break; case BOOLEAN: { _localctx = new BoolContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(75); match(BOOLEAN); } break; case DEC: { _localctx = new DecContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(76); match(DEC); } break; case INT: { _localctx = new IntContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(77); match(INT); } break; case IDENTIFIER: { _localctx = new IdentContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(78); match(IDENTIFIER); } break; default: throw new NoViableAltException(this); } _ctx.stop = _input.LT(-1); setState(119); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,7,_ctx); while ( _alt!=2 && _alt!=-1 ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(117); switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { case 1: { _localctx = new MultExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(81); if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)"); setState(82); match(4); setState(83); expression(18); } break; case 2: { _localctx = new DivExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(84); if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)"); setState(85); match(15); setState(86); expression(17); } break; case 3: { _localctx = new PlusExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(87); if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); setState(88); match(2); setState(89); expression(16); } break; case 4: { _localctx = new MinExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(90); if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); setState(91); match(3); setState(92); expression(15); } break; case 5: { _localctx = new AndExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(93); if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); setState(94); match(11); setState(95); expression(13); } break; case 6: { _localctx = new OrExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(96); if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); setState(97); match(12); setState(98); expression(12); } break; case 7: { _localctx = new EqExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(99); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); setState(100); match(16); setState(101); expression(11); } break; case 8: { _localctx = new GeqExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(102); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); setState(103); match(18); setState(104); expression(10); } break; case 9: { _localctx = new LeqExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(105); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); setState(106); match(10); setState(107); expression(9); } break; case 10: { _localctx = new GreExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(108); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); setState(109); match(14); setState(110); expression(8); } break; case 11: { _localctx = new LesExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(111); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); setState(112); match(7); setState(113); expression(7); } break; case 12: { _localctx = new NeqExprContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(114); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); setState(115); match(8); setState(116); expression(6); } break; } } } setState(121); _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 IfconditionContext extends ParserRuleContext { public TerminalNode IF() { return getToken(QL4Parser.IF, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public IfconditionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_ifcondition; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterIfcondition(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitIfcondition(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitIfcondition(this); else return visitor.visitChildren(this); } } public final IfconditionContext ifcondition() throws RecognitionException { IfconditionContext _localctx = new IfconditionContext(_ctx, getState()); enterRule(_localctx, 10, RULE_ifcondition); try { enterOuterAlt(_localctx, 1); { setState(122); match(IF); setState(123); expression(0); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ElseifconditionContext extends ParserRuleContext { public TerminalNode ELSEIF() { return getToken(QL4Parser.ELSEIF, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public ElseifconditionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_elseifcondition; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterElseifcondition(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitElseifcondition(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitElseifcondition(this); else return visitor.visitChildren(this); } } public final ElseifconditionContext elseifcondition() throws RecognitionException { ElseifconditionContext _localctx = new ElseifconditionContext(_ctx, getState()); enterRule(_localctx, 12, RULE_elseifcondition); try { enterOuterAlt(_localctx, 1); { setState(125); match(ELSEIF); setState(126); expression(0); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ElseconditionContext extends ParserRuleContext { public TerminalNode ELSE() { return getToken(QL4Parser.ELSE, 0); } public ElseconditionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_elsecondition; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterElsecondition(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitElsecondition(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitElsecondition(this); else return visitor.visitChildren(this); } } public final ElseconditionContext elsecondition() throws RecognitionException { ElseconditionContext _localctx = new ElseconditionContext(_ctx, getState()); enterRule(_localctx, 14, RULE_elsecondition); try { enterOuterAlt(_localctx, 1); { setState(128); match(ELSE); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class LabelContext extends ParserRuleContext { public TerminalNode STRING() { return getToken(QL4Parser.STRING, 0); } public LabelContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_label; } @Override public void enterRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).enterLabel(this); } @Override public void exitRule(ParseTreeListener listener) { if ( listener instanceof QL4Listener ) ((QL4Listener)listener).exitLabel(this); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof QL4Visitor ) return ((QL4Visitor<? extends T>)visitor).visitLabel(this); else return visitor.visitChildren(this); } } public final LabelContext label() throws RecognitionException { LabelContext _localctx = new LabelContext(_ctx, getState()); enterRule(_localctx, 16, RULE_label); try { enterOuterAlt(_localctx, 1); { setState(130); 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, 17); case 1: return precpred(_ctx, 16); case 2: return precpred(_ctx, 15); case 3: return precpred(_ctx, 14); case 4: return precpred(_ctx, 12); case 5: return precpred(_ctx, 11); case 6: return precpred(_ctx, 10); case 7: return precpred(_ctx, 9); case 8: return precpred(_ctx, 8); case 9: return precpred(_ctx, 7); case 10: return precpred(_ctx, 6); case 11: return precpred(_ctx, 5); } return true; } public static final String _serializedATN = "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3 \u0087\4\2\t\2\4"+ "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\3\2\3\2"+ "\3\3\6\3\30\n\3\r\3\16\3\31\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7"+ "\4&\n\4\f\4\16\4)\13\4\3\4\3\4\3\4\3\4\3\4\5\4\60\n\4\5\4\62\n\4\3\5\3"+ "\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5E\n"+ "\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\5\6R\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\6x\n\6"+ "\f\6\16\6{\13\6\3\7\3\7\3\7\3\b\3\b\3\b\3\t\3\t\3\n\3\n\3\n\2\3\n\13\2"+ "\4\6\b\n\f\16\20\22\2\2\u0093\2\24\3\2\2\2\4\27\3\2\2\2\6\61\3\2\2\2\b"+ "D\3\2\2\2\nQ\3\2\2\2\f|\3\2\2\2\16\177\3\2\2\2\20\u0082\3\2\2\2\22\u0084"+ "\3\2\2\2\24\25\5\4\3\2\25\3\3\2\2\2\26\30\5\6\4\2\27\26\3\2\2\2\30\31"+ "\3\2\2\2\31\27\3\2\2\2\31\32\3\2\2\2\32\5\3\2\2\2\33\62\5\b\5\2\34\35"+ "\5\f\7\2\35\36\7\17\2\2\36\37\5\4\3\2\37\'\7\23\2\2 !\5\16\b\2!\"\7\17"+ "\2\2\"#\5\4\3\2#$\7\23\2\2$&\3\2\2\2% \3\2\2\2&)\3\2\2\2\'%\3\2\2\2\'"+ "(\3\2\2\2(/\3\2\2\2)\'\3\2\2\2*+\5\20\t\2+,\7\17\2\2,-\5\4\3\2-.\7\23"+ "\2\2.\60\3\2\2\2/*\3\2\2\2/\60\3\2\2\2\60\62\3\2\2\2\61\33\3\2\2\2\61"+ "\34\3\2\2\2\62\7\3\2\2\2\63\64\7\34\2\2\64\65\7\b\2\2\65\66\5\22\n\2\66"+ "\67\7\b\2\2\678\7\27\2\289\7\13\2\29E\3\2\2\2:;\7\34\2\2;<\7\b\2\2<=\5"+ "\22\n\2=>\7\b\2\2>?\7\27\2\2?@\7\7\2\2@A\5\n\6\2AB\7\3\2\2BC\7\13\2\2"+ "CE\3\2\2\2D\63\3\2\2\2D:\3\2\2\2E\t\3\2\2\2FG\b\6\1\2GH\7\25\2\2HR\5\n"+ "\6\17IJ\7\7\2\2JK\5\n\6\2KL\7\3\2\2LR\3\2\2\2MR\7\33\2\2NR\7\36\2\2OR"+ "\7\37\2\2PR\7\34\2\2QF\3\2\2\2QI\3\2\2\2QM\3\2\2\2QN\3\2\2\2QO\3\2\2\2"+ "QP\3\2\2\2Ry\3\2\2\2ST\f\23\2\2TU\7\6\2\2Ux\5\n\6\24VW\f\22\2\2WX\7\21"+ "\2\2Xx\5\n\6\23YZ\f\21\2\2Z[\7\4\2\2[x\5\n\6\22\\]\f\20\2\2]^\7\5\2\2"+ "^x\5\n\6\21_`\f\16\2\2`a\7\r\2\2ax\5\n\6\17bc\f\r\2\2cd\7\16\2\2dx\5\n"+ "\6\16ef\f\f\2\2fg\7\22\2\2gx\5\n\6\rhi\f\13\2\2ij\7\24\2\2jx\5\n\6\fk"+ "l\f\n\2\2lm\7\f\2\2mx\5\n\6\13no\f\t\2\2op\7\20\2\2px\5\n\6\nqr\f\b\2"+ "\2rs\7\t\2\2sx\5\n\6\ttu\f\7\2\2uv\7\n\2\2vx\5\n\6\bwS\3\2\2\2wV\3\2\2"+ "\2wY\3\2\2\2w\\\3\2\2\2w_\3\2\2\2wb\3\2\2\2we\3\2\2\2wh\3\2\2\2wk\3\2"+ "\2\2wn\3\2\2\2wq\3\2\2\2wt\3\2\2\2x{\3\2\2\2yw\3\2\2\2yz\3\2\2\2z\13\3"+ "\2\2\2{y\3\2\2\2|}\7\30\2\2}~\5\n\6\2~\r\3\2\2\2\177\u0080\7\31\2\2\u0080"+ "\u0081\5\n\6\2\u0081\17\3\2\2\2\u0082\u0083\7\32\2\2\u0083\21\3\2\2\2"+ "\u0084\u0085\7\35\2\2\u0085\23\3\2\2\2\n\31\'/\61DQwy"; 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); } } }