@Override public DirectCompilerResult visitPositiveUnaryTestIneq(FEEL_1_1Parser.PositiveUnaryTestIneqContext ctx) { DirectCompilerResult endpoint = visit(ctx.endpoint()); String opText = ctx.op.getText(); UnaryOperator op = UnaryOperator.determineOperator(opText); return createUnaryTestExpression(ctx, endpoint, op); }
public static UnaryOperator determineOperator(String symbol) { for ( UnaryOperator op : UnaryOperator.values() ) { if ( op.symbol.equals( symbol ) ) { return op; } } throw new IllegalArgumentException( "No operator found for symbol '" + symbol + "'" ); } }
public static Expression unary( UnaryTestNode.UnaryOperator operator, Expression right) { switch (operator) { case LTE: return unaryComparison("lte", right); case LT: return unaryComparison("lt", right); case GT: return unaryComparison("gt", right); case GTE: return unaryComparison("gte", right); case EQ: return new MethodCallExpr(null, "gracefulEq", new NodeList<>(FeelCtx.FEELCTX, right, LEFT_EXPR)); case NE: return unaryComparison("ne", right); case IN: // only used in decision tables: refactor? how? return new MethodCallExpr(null, "includes", new NodeList<>(FeelCtx.FEELCTX, right, LEFT_EXPR)); case NOT: return new MethodCallExpr(null, "notExists", new NodeList<>(FeelCtx.FEELCTX, right, LEFT_EXPR)); case TEST: return coerceToBoolean(right); default: throw new UnsupportedOperationException(operator.toString()); } }
public UnaryTestNode(ParserRuleContext ctx, String op, BaseNode value) { super( ctx ); this.operator = UnaryOperator.determineOperator( op ); this.value = value; }
public UnaryTestNode( String op, BaseNode value ) { super(); setText( op+" "+value.getText() ); this.operator = UnaryOperator.determineOperator( op ); this.value = value; }