public static FormulaNode parse(String expression) { if(Strings.isNullOrEmpty(expression)) { return new ConstantNode((String)null); } FormulaLexer lexer = new FormulaLexer(expression); FormulaParser parser = new FormulaParser(lexer); return parser.parse(); } }
private FormulaNode parse(String string) { System.out.println("Parsing [" + string + "]"); FormulaLexer lexer = new FormulaLexer(string); FormulaParser parser = new FormulaParser(lexer); return parser.parse(); }
private String validateExpression(String value) { try { FormulaLexer lexer = new FormulaLexer(value); FormulaParser parser = new FormulaParser(lexer); FormulaNode expr = parser.parse(); // expr node is created, expression is parsable // try to check variable names List<SymbolNode> placeholderExprList = Lists.newArrayList(); gatherPlaceholderExprs(expr, placeholderExprList); List<String> existingIndicatorCodes = existingIndicatorCodes(); for (SymbolNode placeholderExpr : placeholderExprList) { if (!existingIndicatorCodes.contains(placeholderExpr.getName())) { return I18N.MESSAGES.doesNotExist(placeholderExpr.getName()); } } return null; } catch (FormulaSyntaxException e) { return e.getMessage(); } catch (Exception ignored) { return constants.calculationExpressionIsInvalid(); } }
private void evaluate(String exprString, boolean expectedValue) { FormulaLexer lexer = new FormulaLexer(exprString); FormulaParser parser = new FormulaParser(lexer); FormulaNode expr = parser.parse(); FieldValue result = expr.evaluate(EmptyEvalContext.INSTANCE); assertThat(exprString, Casting.toBoolean(result), equalTo(expectedValue)); }
private void validateExpression() { String expression = expressionTextBox.getValue(); if(Strings.isNullOrEmpty(expression)) { expressionGroup.setShowValidationMessage(false); expressionGroup.validationStateType(ValidationStateType.NONE); return; } try { FormulaLexer lexer = new FormulaLexer(expression); FormulaParser parser = new FormulaParser(lexer); FormulaNode expr = parser.parse(); } catch (Exception e) { expressionGroup.setShowValidationMessage(true); expressionGroup.setValidationMessage(I18N.CONSTANTS.calculationExpressionIsInvalid()); expressionGroup.validationStateType(ValidationStateType.ERROR); return; } // Ok expressionGroup.setShowValidationMessage(false); expressionGroup.validationStateType(ValidationStateType.SUCCESS); } }
private void evaluate(String exprString, double expectedValue) { FormulaLexer lexer = new FormulaLexer(exprString); FormulaParser parser = new FormulaParser(lexer); FormulaNode expr = parser.parse(); FieldValue value = expr.evaluate(EmptyEvalContext.INSTANCE); if(Double.isNaN(expectedValue)) { assertTrue(exprString + " is NaN", Double.isNaN(Casting.toQuantity(value).getValue())); } else { assertThat(exprString, Casting.toQuantity(value).getValue(), closeTo(expectedValue, 0)); } }
private void eval(String relevanceExpression, boolean expectedValue, TypedFormRecord instance) { FormulaLexer lexer = new FormulaLexer(relevanceExpression); FormulaParser parser = new FormulaParser(lexer); FormulaNode expr = parser.parse(); Assert.assertEquals(relevanceExpression, expectedValue, Casting.toBoolean(expr.evaluate(new FormEvalContext(formClass, instance)))); }
private void eval(String relevanceExpression, boolean expectedValue, TypedFormRecord instance) { FormulaLexer lexer = new FormulaLexer(relevanceExpression); FormulaParser parser = new FormulaParser(lexer); FormulaNode expr = parser.parse(); Assert.assertEquals(relevanceExpression, expectedValue, Casting.toBoolean(expr.evaluate(new FormEvalContext(formClass, instance)))); }
try { FormulaLexer lexer = new FormulaLexer(field.getRelevanceConditionExpression()); FormulaParser parser = new FormulaParser(lexer); FormulaNode expr = parser.parse(); FieldContainer fieldContainer = simpleFormPanel.getWidgetCreator().get(field.getId());