@Override public void enterNegative_predicate(@NotNull TESLAParser.Negative_predicateContext ctx) { int eventId = predicates_map.get(ctx.predicate().EVT_NAME().getText()); Negation neg = null; if (ctx.neg_one_reference() != null) { // within X from Y Neg_one_referenceContext nctx = ctx.neg_one_reference(); int eventId2 = rule_predicates_names.indexOf(nctx.EVT_NAME().getText()); long win = Long.parseLong(nctx.INT_VAL().getText()); neg = new Negation(eventId, eventId2, win); } else if (ctx.neg_between() != null) { Neg_betweenContext nctx = ctx.neg_between(); int eventId2 = rule_predicates_names.indexOf(nctx.EVT_NAME(0).getText()); int eventId3 = rule_predicates_names.indexOf(nctx.EVT_NAME(1).getText()); neg = new Negation(eventId, eventId2, eventId3); } // Constraints for this predicate List<Attr_constraintContext> constraints = ctx.predicate().attr_constraint(); for (Attr_constraintContext cons : constraints) { neg.addConstraint(getConstraint(cons)); } rule_negations.add(neg); // Parameters List<Attr_parameterContext> params = ctx.predicate().attr_parameter(); for (Attr_parameterContext par : params) { addParameter(par, rule_negations.size() - 1, StateType.NEG); } }