예제 #1
0
 public virtual void Visit(TreeNodeVisitor visitor)
 {
     foreach (TreeNode treeNode in this)
     {
         treeNode.Visit(visitor);
     }
 }
예제 #2
0
        //Converts a JSON sparql solution binding row into a graph result
        private LabelledTreeNode <object, Term> CreateResultGraph(Dictionary <string, Binding> solution, LabelledTreeNode <object, Term> queryModel)
        {
            TreeNodeVisitor <object, object> visitor = (object nodeData) => ResolveNode(nodeData, solution);

            var result = queryModel.Copy().Traverse(visitor);

            return(result);
        }
예제 #3
0
 private void Traverse_PostOrder(TreeNode <T> node, TreeNodeVisitor <T> visitor)
 {
     foreach (TreeNode <T> kid in node.children)
     {
         Traverse_PostOrder(kid, visitor);
     }
     visitor(node);
 }
예제 #4
0
        public void UpdateCachedPostOrderLists()
        {
            _cachedPostOrder.Clear();
            var postOrderDelegate = new TreeNodeVisitor <T>(AddToPostOrderList);

            this.Traverse(this, postOrderDelegate, SearchOrder.PostOrder);
            foreach (var child in children)
            {
                child.UpdateCachedPostOrderLists();
            }
        }
예제 #5
0
        /// <summary>
        /// Creates an instance of the zone tree builder
        /// </summary>
        /// <param name="significantBlockType">Significant block type</param>
        /// <param name="significantInlineType">Significant inline type</param>
        /// <param name="significantLinebreakType">Significant linebreak type</param>
        /// <param name="significantInvisibleType">Significant invisible type</param>
        /// <param name="breakDownType">Break down type</param>
        /// <param name="anameType">A name type</param>
        /// <param name="hiddenType">Hidden type</param>
        /// <returns>
        /// the created instance
        /// </returns>
        public static ZoneTreeBuilder Create(string significantBlockType, string significantInlineType, string significantLinebreakType, string significantInvisibleType, string breakDownType, string anameType, string hiddenType)
        {
            var startNewZoneFilter         = new TypeFilter(significantLinebreakType);
            var breakDownFilter            = new TypeFilter(breakDownType);
            var significantBlockFilter     = new TypeFilter(significantBlockType);
            var significantInlineFilter    = new TypeFilter(significantInlineType);
            var significantInvisibleFilter = new TypeFilter(significantInvisibleType);
            var postProcessingSteps        = new TreeNodeVisitor[] { };
            var builder = new ZoneTreeBuilder(startNewZoneFilter, breakDownFilter, significantBlockFilter, significantInlineFilter, significantInvisibleFilter, postProcessingSteps);

            return(builder);
        }
예제 #6
0
    public ShowTreeNodeVisitor()
    {
        TreeView view = new TreeView();

        view.Dock = DockStyle.Fill;
        view.Font = UI.NORMAL.Font;
        TreeNodeVisitor v = new TreeNodeVisitor();

        v.Visit(ExampleMachine.Dublin());
        view.Nodes.Add(v.TreeNode);
        Controls.Add(view);
        Text = "Show Tree Node View";
    }
예제 #7
0
        public void Traverse(TreeNode <T> node, TreeNodeVisitor <T> visitor, SearchOrder searchOrder)
        {
            //switch statement was messing up intellisense for some reason?

            if (searchOrder == SearchOrder.PostOrder)
            {
                Traverse_PostOrder(node, visitor);
            }
            if (searchOrder == SearchOrder.PreOrder)
            {
                Traverse_PreOrder(node, visitor);
            }
            if (searchOrder == SearchOrder.BreadthFirst)
            {
                Traverse_BreadthFirst(node, visitor);
            }
        }
예제 #8
0
        /// <summary>
        /// Traverse the tree and perform operations recursively
        /// </summary>
        /// <returns>
        /// A new tree node that is, at every node, the result of the visit.
        /// The stopper decides whether the exploration of a branch should be passed
        /// </returns>
        public LabelledTreeNode <TY, TE> Traverse <TY>(TreeNodeVisitor <TN, TY> nodeVisitor, Func <LabelledTreeNode <TN, TE>, bool> stopCondition = null)
        {
            var node = new LabelledTreeNode <TY, TE>(nodeVisitor(Value));

            if (stopCondition == null)
            {
                stopCondition = d => false;
            }
            foreach (var child in Children)
            {
                if (!stopCondition(child.TerminalNode))
                {
                    node.AddChild(child.Edge, child.TerminalNode.Traverse(nodeVisitor, stopCondition));
                }
            }

            return(node);
        }
예제 #9
0
 public void Accept(TreeNodeVisitor visitor)
 {
     _treeNode.Accept(visitor);
 }
예제 #10
0
 public virtual void Accept <TContext>(TreeNodeVisitor <TContext> visitor, TContext context)
 {
     visitor.VisitNode(this, context);
 }
예제 #11
0
 public virtual TResult Accept <TContext, TResult>(TreeNodeVisitor <TContext, TResult> visitor, TContext context)
 {
     return(visitor.VisitNode(this, context));
 }
 public TReturn Accept <TContext, TReturn>(TreeNodeVisitor <TContext, TReturn> visitor, TContext context)
 {
     return(visitor.VisitNode(this, context));
 }
예제 #13
0
 public virtual void Accept(TreeNodeVisitor visitor)
 {
     visitor.VisitNode(this);
 }
예제 #14
0
 public void Accept <TContext>(TreeNodeVisitor <TContext> visitor, TContext context) =>
 visitor.VisitYamlFileNode(this, context);
예제 #15
0
 public TReturn Accept <TContext, TReturn>(TreeNodeVisitor <TContext, TReturn> visitor, TContext context) =>
 visitor.VisitYamlFileNode(this, context);
예제 #16
0
 public abstract TResult Accept <TContext, TResult>(TreeNodeVisitor <TContext, TResult> visitor, TContext context);
예제 #17
0
 public void Accept(TreeNodeVisitor visitor) =>
 visitor.VisitYamlFileNode(this);
예제 #18
0
 public virtual void Visit(TreeNodeVisitor treeNodeVisitor)
 {
     treeNodeVisitor.Accept(this);
     Nodes.Visit(treeNodeVisitor);
 }
예제 #19
0
 public abstract void Accept(TreeNodeVisitor visitor);
예제 #20
0
 public virtual TReturn Accept <TContext, TReturn>(TreeNodeVisitor <TContext, TReturn> visitor, TContext context) =>
 visitor.VisitNode(this, context);
예제 #21
0
 public abstract TReturn Accept <TContext, TReturn>(TreeNodeVisitor <TContext, TReturn> visitor, TContext context);
예제 #22
0
 public abstract void Accept <TContext>(TreeNodeVisitor <TContext> visitor, TContext context);
예제 #23
0
 private void Traverse_BreadthFirst(TreeNode <T> node, TreeNodeVisitor <T> visitor)
 {
     throw new NotImplementedException();
 }
예제 #24
0
 public void Accept <TContext> (TreeNodeVisitor <TContext> visitor, TContext context)
 {
     _treeNode.Accept(visitor, context);
 }
예제 #25
0
 public virtual void Visit(TreeNodeVisitor treeNodeVisitor)
 {
     treeNodeVisitor.Accept(this);
     Nodes.Visit(treeNodeVisitor);
 }
예제 #26
0
 public TReturn Accept <TContext, TReturn> (TreeNodeVisitor <TContext, TReturn> visitor, TContext context)
 {
     return(_treeNode.Accept(visitor, context));
 }