Пример #1
0
        public void GenerateTrace(object source, object target, object concept,
                                  string metaScaffold, string scaffold)
        {
            Term currentTerm;

            if (_innerLoop.Count == 0)
            {
                currentTerm = this;
            }
            else
            {
                currentTerm = _innerLoop[_innerLoop.Count - 1].Target as Term;
                if (currentTerm == null)
                {
                    return;
                }
            }
            Term          cloneTerm = currentTerm.Clone();
            List <object> lst;
            bool          isFound = cloneTerm.SearchList(source, out lst);

            if (isFound)
            {
                Debug.Assert(lst != null);
                var index = lst.FindIndex(x => x.Equals(source));
                lst[index] = target;
                object objj = cloneTerm.ReConstruct();
                var    ts   = new TraceStep(currentTerm, objj, concept, metaScaffold, scaffold);
                _innerLoop.Add(ts);
            }
            else
            {
                var targetTerm = target as Term;
                if (targetTerm != null)
                {
                    object objj = targetTerm.ReConstruct();
                    var    ts   = new TraceStep(currentTerm, objj, concept, metaScaffold, scaffold);
                    _innerLoop.Add(ts);
                }
                else
                {
                    var ts = new TraceStep(currentTerm, target, concept, metaScaffold, scaffold);
                    _innerLoop.Add(ts);
                }
            }
        }
Пример #2
0
 public void Test_Reconstruct()
 {
     var term = new Term(Expression.Add, new List<object>() { 1 });
     Assert.True(term.ReConstruct().Equals(1));
 }