Example #1
0
  @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);
    }
  }