// Generated from SimpleBoolean.g4 by ANTLR 4.9.2 package org.idempiere.expression.logic; 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 SimpleBooleanParser extends Parser { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int AND=1, OR=2, NOT=3, TRUE=4, FALSE=5, GT=6, GE=7, LT=8, LE=9, EQ=10, NE=11, RE=12, LPAREN=13, RPAREN=14, DECIMAL=15, VARIABLE=16, COMMA=17, QCOMMA=18, QTEXT=19, QCSVTEXT=20, DQCOMMA=21, DQTEXT=22, DQCSVTEXT=23, TEXT=24, WS=25; public static final int RULE_parse = 0, RULE_expression = 1, RULE_comparator = 2, RULE_binary = 3, RULE_bool = 4; private static String[] makeRuleNames() { return new String[] { "parse", "expression", "comparator", "binary", "bool" }; } public static final String[] ruleNames = makeRuleNames(); private static String[] makeLiteralNames() { return new String[] { null, "'&'", "'|'", "'$!'", "'true'", "'false'", "'>'", "'>='", "'<'", "'<='", "'='", null, "'~'", "'('", "')'", null, null, "','", "'','", null, null, "'\",'" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); private static String[] makeSymbolicNames() { return new String[] { null, "AND", "OR", "NOT", "TRUE", "FALSE", "GT", "GE", "LT", "LE", "EQ", "NE", "RE", "LPAREN", "RPAREN", "DECIMAL", "VARIABLE", "COMMA", "QCOMMA", "QTEXT", "QCSVTEXT", "DQCOMMA", "DQTEXT", "DQCSVTEXT", "TEXT", "WS" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); 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] = ""; } } } @Override @Deprecated public String[] getTokenNames() { return tokenNames; } @Override public Vocabulary getVocabulary() { return VOCABULARY; } @Override public String getGrammarFileName() { return "SimpleBoolean.g4"; } @Override public String[] getRuleNames() { return ruleNames; } @Override public String getSerializedATN() { return _serializedATN; } @Override public ATN getATN() { return _ATN; } public SimpleBooleanParser(TokenStream input) { super(input); _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); } public static class ParseContext extends ParserRuleContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode EOF() { return getToken(SimpleBooleanParser.EOF, 0); } public ParseContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_parse; } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitParse(this); else return visitor.visitChildren(this); } } public final ParseContext parse() throws RecognitionException { ParseContext _localctx = new ParseContext(_ctx, getState()); enterRule(_localctx, 0, RULE_parse); try { enterOuterAlt(_localctx, 1); { setState(10); expression(0); setState(11); match(EOF); } } 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 BinaryExpressionContext extends ExpressionContext { public ExpressionContext left; public BinaryContext op; public ExpressionContext right; public List expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public BinaryContext binary() { return getRuleContext(BinaryContext.class,0); } public BinaryExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitBinaryExpression(this); else return visitor.visitChildren(this); } } public static class DecimalExpressionContext extends ExpressionContext { public TerminalNode DECIMAL() { return getToken(SimpleBooleanParser.DECIMAL, 0); } public DecimalExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitDecimalExpression(this); else return visitor.visitChildren(this); } } public static class BoolExpressionContext extends ExpressionContext { public BoolContext bool() { return getRuleContext(BoolContext.class,0); } public BoolExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitBoolExpression(this); else return visitor.visitChildren(this); } } public static class DoubleQuotedCSVTextContext extends ExpressionContext { public TerminalNode DQCSVTEXT() { return getToken(SimpleBooleanParser.DQCSVTEXT, 0); } public DoubleQuotedCSVTextContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitDoubleQuotedCSVText(this); else return visitor.visitChildren(this); } } public static class ContextVariablesContext extends ExpressionContext { public TerminalNode VARIABLE() { return getToken(SimpleBooleanParser.VARIABLE, 0); } public ContextVariablesContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitContextVariables(this); else return visitor.visitChildren(this); } } public static class QuotedCSVTextContext extends ExpressionContext { public TerminalNode QCSVTEXT() { return getToken(SimpleBooleanParser.QCSVTEXT, 0); } public QuotedCSVTextContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitQuotedCSVText(this); else return visitor.visitChildren(this); } } public static class NotExpressionContext extends ExpressionContext { public TerminalNode NOT() { return getToken(SimpleBooleanParser.NOT, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public NotExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitNotExpression(this); else return visitor.visitChildren(this); } } public static class ParenExpressionContext extends ExpressionContext { public TerminalNode LPAREN() { return getToken(SimpleBooleanParser.LPAREN, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RPAREN() { return getToken(SimpleBooleanParser.RPAREN, 0); } public ParenExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitParenExpression(this); else return visitor.visitChildren(this); } } public static class TextContext extends ExpressionContext { public TerminalNode TEXT() { return getToken(SimpleBooleanParser.TEXT, 0); } public TextContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitText(this); else return visitor.visitChildren(this); } } public static class QuotedTextContext extends ExpressionContext { public TerminalNode QTEXT() { return getToken(SimpleBooleanParser.QTEXT, 0); } public QuotedTextContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitQuotedText(this); else return visitor.visitChildren(this); } } public static class DoubleQuotedTextContext extends ExpressionContext { public TerminalNode DQTEXT() { return getToken(SimpleBooleanParser.DQTEXT, 0); } public DoubleQuotedTextContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitDoubleQuotedText(this); else return visitor.visitChildren(this); } } public static class ComparatorExpressionContext extends ExpressionContext { public ExpressionContext left; public ComparatorContext op; public ExpressionContext right; public List expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public ComparatorContext comparator() { return getRuleContext(ComparatorContext.class,0); } public ComparatorExpressionContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitComparatorExpression(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 = 2; enterRecursionRule(_localctx, 2, RULE_expression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { setState(28); _errHandler.sync(this); switch (_input.LA(1)) { case LPAREN: { _localctx = new ParenExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(14); match(LPAREN); setState(15); expression(0); setState(16); match(RPAREN); } break; case NOT: { _localctx = new NotExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(18); match(NOT); setState(19); expression(11); } break; case TRUE: case FALSE: { _localctx = new BoolExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(20); bool(); } break; case VARIABLE: { _localctx = new ContextVariablesContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(21); match(VARIABLE); } break; case QCSVTEXT: { _localctx = new QuotedCSVTextContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(22); match(QCSVTEXT); } break; case QTEXT: { _localctx = new QuotedTextContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(23); match(QTEXT); } break; case DQCSVTEXT: { _localctx = new DoubleQuotedCSVTextContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(24); match(DQCSVTEXT); } break; case DQTEXT: { _localctx = new DoubleQuotedTextContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(25); match(DQTEXT); } break; case TEXT: { _localctx = new TextContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(26); match(TEXT); } break; case DECIMAL: { _localctx = new DecimalExpressionContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(27); match(DECIMAL); } break; default: throw new NoViableAltException(this); } _ctx.stop = _input.LT(-1); setState(40); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,2,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(38); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { case 1: { _localctx = new ComparatorExpressionContext(new ExpressionContext(_parentctx, _parentState)); ((ComparatorExpressionContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(30); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); setState(31); ((ComparatorExpressionContext)_localctx).op = comparator(); setState(32); ((ComparatorExpressionContext)_localctx).right = expression(11); } break; case 2: { _localctx = new BinaryExpressionContext(new ExpressionContext(_parentctx, _parentState)); ((BinaryExpressionContext)_localctx).left = _prevctx; pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(34); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); setState(35); ((BinaryExpressionContext)_localctx).op = binary(); setState(36); ((BinaryExpressionContext)_localctx).right = expression(10); } break; } } } setState(42); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,2,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class ComparatorContext extends ParserRuleContext { public TerminalNode GT() { return getToken(SimpleBooleanParser.GT, 0); } public TerminalNode GE() { return getToken(SimpleBooleanParser.GE, 0); } public TerminalNode LT() { return getToken(SimpleBooleanParser.LT, 0); } public TerminalNode LE() { return getToken(SimpleBooleanParser.LE, 0); } public TerminalNode EQ() { return getToken(SimpleBooleanParser.EQ, 0); } public TerminalNode NE() { return getToken(SimpleBooleanParser.NE, 0); } public TerminalNode RE() { return getToken(SimpleBooleanParser.RE, 0); } public ComparatorContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_comparator; } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitComparator(this); else return visitor.visitChildren(this); } } public final ComparatorContext comparator() throws RecognitionException { ComparatorContext _localctx = new ComparatorContext(_ctx, getState()); enterRule(_localctx, 4, RULE_comparator); int _la; try { enterOuterAlt(_localctx, 1); { setState(43); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << GT) | (1L << GE) | (1L << LT) | (1L << LE) | (1L << EQ) | (1L << NE) | (1L << RE))) != 0)) ) { _errHandler.recoverInline(this); } else { if ( _input.LA(1)==Token.EOF ) matchedEOF = true; _errHandler.reportMatch(this); consume(); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class BinaryContext extends ParserRuleContext { public TerminalNode AND() { return getToken(SimpleBooleanParser.AND, 0); } public TerminalNode OR() { return getToken(SimpleBooleanParser.OR, 0); } public BinaryContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_binary; } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitBinary(this); else return visitor.visitChildren(this); } } public final BinaryContext binary() throws RecognitionException { BinaryContext _localctx = new BinaryContext(_ctx, getState()); enterRule(_localctx, 6, RULE_binary); int _la; try { enterOuterAlt(_localctx, 1); { setState(45); _la = _input.LA(1); if ( !(_la==AND || _la==OR) ) { _errHandler.recoverInline(this); } else { if ( _input.LA(1)==Token.EOF ) matchedEOF = true; _errHandler.reportMatch(this); consume(); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class BoolContext extends ParserRuleContext { public TerminalNode TRUE() { return getToken(SimpleBooleanParser.TRUE, 0); } public TerminalNode FALSE() { return getToken(SimpleBooleanParser.FALSE, 0); } public BoolContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_bool; } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof SimpleBooleanVisitor ) return ((SimpleBooleanVisitor)visitor).visitBool(this); else return visitor.visitChildren(this); } } public final BoolContext bool() throws RecognitionException { BoolContext _localctx = new BoolContext(_ctx, getState()); enterRule(_localctx, 8, RULE_bool); int _la; try { enterOuterAlt(_localctx, 1); { setState(47); _la = _input.LA(1); if ( !(_la==TRUE || _la==FALSE) ) { _errHandler.recoverInline(this); } else { if ( _input.LA(1)==Token.EOF ) matchedEOF = true; _errHandler.reportMatch(this); consume(); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { case 1: return expression_sempred((ExpressionContext)_localctx, predIndex); } return true; } private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { switch (predIndex) { case 0: return precpred(_ctx, 10); case 1: return precpred(_ctx, 9); } return true; } public static final String _serializedATN = "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\33\64\4\2\t\2\4\3"+ "\t\3\4\4\t\4\4\5\t\5\4\6\t\6\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+ "\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3\37\n\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+ "\3\3\7\3)\n\3\f\3\16\3,\13\3\3\4\3\4\3\5\3\5\3\6\3\6\3\6\2\3\4\7\2\4\6"+ "\b\n\2\5\3\2\b\16\3\2\3\4\3\2\6\7\29\2\f\3\2\2\2\4\36\3\2\2\2\6-\3\2\2"+ "\2\b/\3\2\2\2\n\61\3\2\2\2\f\r\5\4\3\2\r\16\7\2\2\3\16\3\3\2\2\2\17\20"+ "\b\3\1\2\20\21\7\17\2\2\21\22\5\4\3\2\22\23\7\20\2\2\23\37\3\2\2\2\24"+ "\25\7\5\2\2\25\37\5\4\3\r\26\37\5\n\6\2\27\37\7\22\2\2\30\37\7\26\2\2"+ "\31\37\7\25\2\2\32\37\7\31\2\2\33\37\7\30\2\2\34\37\7\32\2\2\35\37\7\21"+ "\2\2\36\17\3\2\2\2\36\24\3\2\2\2\36\26\3\2\2\2\36\27\3\2\2\2\36\30\3\2"+ "\2\2\36\31\3\2\2\2\36\32\3\2\2\2\36\33\3\2\2\2\36\34\3\2\2\2\36\35\3\2"+ "\2\2\37*\3\2\2\2 !\f\f\2\2!\"\5\6\4\2\"#\5\4\3\r#)\3\2\2\2$%\f\13\2\2"+ "%&\5\b\5\2&\'\5\4\3\f\')\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\3\2\2\2,*\3\2\2\2-.\t\2\2\2.\7\3\2\2\2/\60\t\3\2\2\60"+ "\t\3\2\2\2\61\62\t\4\2\2\62\13\3\2\2\2\5\36(*"; 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); } } }