Ejemplo n.º 1
0
        public bool ExecuteEvaluateDynamic <T>(Tuple <List <AbstractSyntaxTreeNode>, Dictionary <string, AbstractSyntaxTreeNode> > values, dynamic objectValue)
        {
            ExpressionEvaluatorExecutor expressionEvaluator = new ExpressionEvaluatorExecutor();
            var result = expressionEvaluator.EvaluateDynamic(values.Item1, values.Item2, objectValue);

            return(result);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        public Tuple <List <AbstractSyntaxTreeNode>, Dictionary <string, AbstractSyntaxTreeNode> > 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 <AbstractSyntaxTreeNode>, Dictionary <string, AbstractSyntaxTreeNode> >(AbstractSyntaxTreeNodeList, symbolTable));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }