Ejemplo n.º 1
0
        private void BuildBindingNode(ReteBuilderContext context, BindingElement element)
        {
            var node = context.BetaSource
                       .Sinks.OfType <BindingNode>()
                       .FirstOrDefault(x =>
                                       ExpressionElementComparer.AreEqual(x.ExpressionElement, element));

            if (node == null)
            {
                var compiledExpression = ExpressionCompiler.CompileLhsTupleExpression <object>(element, context.Declarations);
                node = new BindingNode(element, compiledExpression, element.ResultType, context.BetaSource);
            }
            node.NodeInfo.Add(context.Rule, element);
            BuildBetaMemoryNode(context, node);
            context.ResetAlphaSource();
        }
Ejemplo n.º 2
0
        public BenchmarkLhsExpression()
        {
            _nodeInfo = new NodeDebugInfo();
            Expression <Func <string, int, decimal, bool> > betaExpression = (s, i, d) => s.Length == i;
            var betaElement = Element.Condition(betaExpression);

            _lhsExpression      = ExpressionCompiler.CompileLhsTupleFactExpression <bool>(betaElement, betaElement.Imports.ToList());
            _lhsTupleExpression = ExpressionCompiler.CompileLhsTupleExpression <bool>(betaElement, betaElement.Imports.ToList());
            _tuple = ToTuple("abcd", 4, 1.0m);

            Expression <Func <string, bool> > alphaExpression = s => s.Length == 1;
            var alphaElement = Element.Condition(alphaExpression);

            _lhsFactExpression = ExpressionCompiler.CompileLhsFactExpression <bool>(alphaElement);
            _fact = new Fact("abcd");
        }