public static String functionName(String originalText) { return "ZZFN_" + CodegenStringUtil.escapeIdentifier(originalText); }
public static String numericName(String originalText) { return "K_" + CodegenStringUtil.escapeIdentifier(originalText); }
public static String unaryTestName(String originalText) { return "UT_" + CodegenStringUtil.escapeIdentifier(originalText); }
private FieldDeclaration fieldDeclarationOf(String prefix, String originalText, Expression initializer) { String constantName = prefix + "_" + CodegenStringUtil.escapeIdentifier(originalText); return new FieldDeclaration( EnumSet.of(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL), new VariableDeclarator( JavaParser.parseClassOrInterfaceType(Range.class.getCanonicalName()), constantName, initializer)) .setJavadocComment(" FEEL range: " + originalText + " "); }
@Override public DirectCompilerResult visitNumberLiteral(FEEL_1_1Parser.NumberLiteralContext ctx) { ObjectCreationExpr result = new ObjectCreationExpr(); result.setType(JavaParser.parseClassOrInterfaceType(BigDecimal.class.getCanonicalName())); String originalText = ParserHelper.getOriginalText(ctx); String constantName = "K_" + CodegenStringUtil.escapeIdentifier(originalText); try { Long.parseLong(originalText); result.addArgument(originalText.replaceFirst("^0+(?!$)", "")); // see EvalHelper.getBigDecimalOrNull } catch (Throwable t) { result.addArgument(new StringLiteralExpr(originalText)); } result.addArgument(DECIMAL_128); VariableDeclarator vd = new VariableDeclarator( JavaParser.parseClassOrInterfaceType(BigDecimal.class.getCanonicalName()), constantName); vd.setInitializer(result); FieldDeclaration fd = new FieldDeclaration(); fd.setModifier(Modifier.PUBLIC, true); fd.setModifier(Modifier.STATIC, true); fd.setModifier(Modifier.FINAL, true); fd.addVariable(vd); return DirectCompilerResult.of(new NameExpr(constantName), BuiltInType.NUMBER, fd); }
private DirectCompilerResult createRuntimeUnaryTestExpression(FEEL_1_1Parser.PositiveUnaryTestContext ctx, DirectCompilerResult endpoint) { String originalText = ParserHelper.getOriginalText(ctx); LambdaExpr initializer = new LambdaExpr(); initializer.setEnclosingParameters(true); initializer.addParameter(new Parameter(new UnknownType(), "feelExprCtx")); initializer.addParameter(new Parameter(new UnknownType(), "left")); Statement lambdaBody = null; MethodCallExpr expression = new MethodCallExpr(null, "gracefulEq"); expression.addArgument(new NameExpr("feelExprCtx")); expression.addArgument(endpoint.getExpression()); expression.addArgument(new NameExpr("left")); lambdaBody = new ExpressionStmt(expression); initializer.setBody(lambdaBody); String constantName = "UT_" + CodegenStringUtil.escapeIdentifier(originalText); VariableDeclarator vd = new VariableDeclarator(JavaParser.parseClassOrInterfaceType(UnaryTest.class.getCanonicalName()), constantName); vd.setInitializer(initializer); FieldDeclaration fd = new FieldDeclaration(); fd.setModifier(Modifier.PUBLIC, true); fd.setModifier(Modifier.STATIC, true); fd.setModifier(Modifier.FINAL, true); fd.addVariable(vd); fd.setJavadocComment(" FEEL unary test: " + originalText + " "); DirectCompilerResult directCompilerResult = DirectCompilerResult.of(new NameExpr(constantName), BuiltInType.UNARY_TEST, endpoint.getFieldDeclarations()); directCompilerResult.addFieldDesclaration(fd); return directCompilerResult; }
private DirectCompilerResult createListUnaryTestExpression(ParserRuleContext ctx, DirectCompilerResult endpoint) { String originalText = ParserHelper.getOriginalText(ctx); LambdaExpr initializer = new LambdaExpr(); initializer.setEnclosingParameters(true); initializer.addParameter(new Parameter(new UnknownType(), "feelExprCtx")); initializer.addParameter(new Parameter(new UnknownType(), "left")); Statement lambdaBody = null; MethodCallExpr expression = new MethodCallExpr( new EnclosedExpr(new CastExpr(TYPE_LIST, endpoint.getExpression())), "contains"); expression.addArgument(new NameExpr("left")); lambdaBody = new ExpressionStmt(expression); initializer.setBody(lambdaBody); String constantName = "UT_" + CodegenStringUtil.escapeIdentifier(originalText); VariableDeclarator vd = new VariableDeclarator(JavaParser.parseClassOrInterfaceType(UnaryTest.class.getCanonicalName()), constantName); vd.setInitializer(initializer); FieldDeclaration fd = new FieldDeclaration(); fd.setModifier(Modifier.PUBLIC, true); fd.setModifier(Modifier.STATIC, true); fd.setModifier(Modifier.FINAL, true); fd.addVariable(vd); fd.setJavadocComment(" FEEL unary test: " + originalText + " "); DirectCompilerResult directCompilerResult = DirectCompilerResult.of(new NameExpr(constantName), BuiltInType.UNARY_TEST, endpoint.getFieldDeclarations()); directCompilerResult.addFieldDesclaration(fd); return directCompilerResult; }
private DirectCompilerResult createWildcardUnaryTestExpression(ParserRuleContext ctx, DirectCompilerResult endpoint) { String originalText = ParserHelper.getOriginalText(ctx); LambdaExpr initializer = new LambdaExpr(); initializer.setEnclosingParameters(true); initializer.addParameter(new Parameter(new UnknownType(), "feelExprCtx")); initializer.addParameter(new Parameter(new UnknownType(), "left")); Statement lambdaBody = null; lambdaBody = new ExpressionStmt(new MethodCallExpr( null, "coerceToBoolean", new NodeList<>( new NameExpr("feelExprCtx"), endpoint.getExpression()))); initializer.setBody(lambdaBody); String constantName = "UT_" + CodegenStringUtil.escapeIdentifier(originalText); VariableDeclarator vd = new VariableDeclarator(JavaParser.parseClassOrInterfaceType(UnaryTest.class.getCanonicalName()), constantName); vd.setInitializer(initializer); FieldDeclaration fd = new FieldDeclaration(); fd.setModifier(Modifier.PUBLIC, true); fd.setModifier(Modifier.STATIC, true); fd.setModifier(Modifier.FINAL, true); fd.addVariable(vd); fd.setJavadocComment(" FEEL unary test: " + originalText + " "); DirectCompilerResult directCompilerResult = DirectCompilerResult.of(new NameExpr(constantName), BuiltInType.UNARY_TEST, endpoint.getFieldDeclarations()); directCompilerResult.addFieldDesclaration(fd); return directCompilerResult; }
String constantName = "UT_" + CodegenStringUtil.escapeIdentifier(originalText); VariableDeclarator vd = new VariableDeclarator(JavaParser.parseClassOrInterfaceType(UnaryTest.class.getCanonicalName()), constantName); vd.setInitializer(initializer);