protected bool Evaluate(string rule) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(rule, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor(); return(expressionEvaluator.Evaluate <UserAggregation>(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, this.userAggregation)); }
public R EvaluateNonBooleanDynamic <R>(string evaluationText, dynamic[] collection) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(evaluationText, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor(); var result = expressionEvaluator.EvaluateNonBooleanDynamic <R>(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, collection); return(result); }
public R EvaluateNonBoolean <T, R>(string evaluationText, T objectValue) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(evaluationText, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor(); var result = expressionEvaluator.EvaluateNonBoolean <T, R>(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, objectValue); return(result); }
public bool EvaluateDynamic(string evaluationText, DynamicBaseClass[] objectValues) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(evaluationText, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(objectValues); ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor(); var result = expressionEvaluator.EvaluateDynamicBaseClass(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, objectValues); return(result); }
public bool EvaluateDynamic(string evaluationText, dynamic objectValue, dynamic[] collection) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(evaluationText, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorDynamic expressionEvaluator = new ExpressionEvaluatorDynamic(); var result = expressionEvaluator.EvaluateDynamic(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, objectValue, collection); return(result); }
public R EvaluateNonBooleanDynamic <R>(string evaluationText, DynamicBaseClass objectValue) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(evaluationText, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorDynamic expressionEvaluator = new ExpressionEvaluatorDynamic(); var result = expressionEvaluator.EvaluateNonBooleanDynamic <R>(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, objectValue); return(result); }
public bool Evaluate <T>(string evaluationText, T objectValue) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(evaluationText, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorGeneric expressionEvaluator = new ExpressionEvaluatorGeneric(); var result = expressionEvaluator.Evaluate <T>(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, objectValue); return(result); }
PreEvaluateDynamic(string evaluationText) { ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(evaluationText, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor(); var symbolTable = expressionEvaluatorParser.SymbolTable; return(new Tuple <List <AbstractSyntaxTree.AbstractSyntaxTreeNode>, Dictionary <string, AbstractSyntaxTree.AbstractSyntaxTreeNode> >( AbstractSyntaxTreeNodeList, symbolTable )); }
public void ExpressionModuloTest() { string text = " Age = 100 % 64 "; Person person = new Person() { Name = "mathias", Age = 36, Children = 2, Married = true }; ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(text, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor(); var result = expressionEvaluator.Evaluate <Person>(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, person); Assert.AreEqual <bool>(result, true); }
public void ExpressionTest() { //string text = " test > 10 "; //string text = " 5 + 3 > 2 * 1 "; //string text = " 5 * 3 + 2 * 1 "; //string text = " Children * 2 + 5 = 9 && Married = true && Age = (5 * 6 + 7 - 1) "; //|| Name = 'mathias' //string text = " Children * 2.0 + 5.0 = 9.0 "; //string text = " Children * 2.0 + 5.0 = 9.0 && Married = true && Age = Children * 18 "; var text = " Children >= Age / 20 && Name != 'test' "; Person person = new Person() { Name = "mathias", Age = 36, Children = 2, Married = true }; ExpressionEvaluatorLexer expressionEvaluatorLexer = new ExpressionEvaluatorLexer(text, 1); ExpressionEvaluatorParser expressionEvaluatorParser = new ExpressionEvaluatorParser(expressionEvaluatorLexer); var AbstractSyntaxTreeNodeList = expressionEvaluatorParser.BuildParseTree(); ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor(); var result = expressionEvaluator.Evaluate <Person>(AbstractSyntaxTreeNodeList, expressionEvaluatorParser.SymbolTable, person); Assert.AreEqual <bool>(result, true); }