relation method
Implementation
RelationContext relation([int _p = 0]) {
final _parentctx = context;
final _parentState = state;
dynamic _localctx = RelationContext(context, _parentState);
var _prevctx = _localctx;
var _startState = 8;
enterRecursionRule(_localctx, 8, RULE_relation, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
state = 60;
calc(0);
context!.stop = tokenStream.LT(-1);
state = 67;
errorHandler.sync(this);
_alt = interpreter!.adaptivePredict(tokenStream, 3, context);
while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) {
if (_alt == 1) {
if (parseListeners != null) triggerExitRuleEvent();
_prevctx = _localctx;
_localctx = RelationContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_relation);
state = 62;
if (!(precpred(context, 1))) {
throw FailedPredicateException(this, "precpred(context, 1)");
}
state = 63;
_localctx.op = tokenStream.LT(1);
_la = tokenStream.LA(1)!;
if (!(((_la) & ~0x3f) == 0 && bitwiseAnd(pow(2, _la), 254) != 0)) {
_localctx.op = errorHandler.recoverInline(this);
} else {
if (tokenStream.LA(1)! == IntStream.EOF) matchedEOF = true;
errorHandler.reportMatch(this);
consume();
}
state = 64;
relation(2);
}
state = 69;
errorHandler.sync(this);
_alt = interpreter!.adaptivePredict(tokenStream, 3, context);
}
} on RecognitionException catch (re) {
_localctx.exception = re;
errorHandler.reportError(this, re);
errorHandler.recover(this, re);
} finally {
unrollRecursionContexts(_parentctx);
}
return _localctx;
}