private static IList <IForestNode> GetFlattenedList(IIntermediateForestNode intermediate) { var children = new List <IForestNode>(); for (var a = 0; a < intermediate.Children.Count; a++) { var andNode = intermediate.Children[a]; for (var c = 0; c < andNode.Children.Count; c++) { var child = andNode.Children[c]; switch (child.NodeType) { case ForestNodeType.Intermediate: var childList = GetFlattenedList(child as IIntermediateForestNode); children.AddRange(childList); break; default: children.Add(child); break; } } } return(children); }
public override void Visit(IIntermediateForestNode intermediateNode) { VisitLog.Add(intermediateNode.ToString()); foreach (var child in intermediateNode.Children) { Visit(child); } }
bool AreIntermediateNodesEqual(IIntermediateForestNode firstIntermediateForestNode, IIntermediateForestNode secondIntermediateForestNode) { if (!firstIntermediateForestNode.DottedRule.Equals( secondIntermediateForestNode.DottedRule)) { return(false); } return(AreChildNodesEqual(firstIntermediateForestNode, secondIntermediateForestNode)); }
public override void Visit(IIntermediateForestNode intermediateNode) { if (!_visited.Add(intermediateNode)) { return; } var childIndex = GetOrSetChildIndex(intermediateNode); var path = intermediateNode.Children[childIndex]; Visit(path); }
public void Visit(IIntermediateForestNode node) { if (!this.visited.Add(node)) { return; } foreach (var child in node.Children) { Visit(child); } }
public IIntermediateForestNode AddOrGetExistingIntermediateNode(IState trigger, int origin, int location) { var hash = trigger.GetHashCode(); IIntermediateForestNode intermediateNode = null; if (_intermediateNodes.TryGetValue(hash, out intermediateNode)) { return(intermediateNode); } intermediateNode = new IntermediateForestNode(trigger, origin, location); _intermediateNodes.Add(hash, intermediateNode); return(intermediateNode); }
public void Visit(IIntermediateForestNode node) { if (!_visited.Add(node)) { return; } for (var i = 0; i < node.Children.Count; i++) { var child = node.Children[i]; Visit(child); } }
public IIntermediateForestNode AddOrGetExistingIntermediateNode(IDottedRule dottedRule, int origin, int location) { int hash = ComputeHashCode(dottedRule, origin, location); IIntermediateForestNode intermediateNode = null; if (_intermediateNodes.TryGetValue(hash, out intermediateNode)) { return(intermediateNode); } intermediateNode = new IntermediateForestNode(dottedRule, origin, location); _intermediateNodes.Add(hash, intermediateNode); return(intermediateNode); }
private static IList<IForestNode> GetFlattenedList(IIntermediateForestNode intermediate) { var children = new List<IForestNode>(); foreach (var andNode in intermediate.Children) { foreach (var child in andNode.Children) { switch (child) { case IIntermediateForestNode intermediateChild: var childList = GetFlattenedList(intermediateChild); children.AddRange(childList); break; default: children.Add(child); break; } } } return children; }
public override void Visit(IIntermediateForestNode intermediateNode) { var currentAndNode = ForestDisambiguationAlgorithm.GetCurrentAndNode(intermediateNode); Visit(currentAndNode); }
public abstract void Visit(IIntermediateForestNode intermediateNode);
public override void Visit(IIntermediateForestNode intermediateNode) { VisitLog.Add(intermediateNode.ToString()); foreach (var child in intermediateNode.Children) Visit(child); }
public override void Visit(IIntermediateForestNode intermediateNode) { if (!_visited.Add(intermediateNode)) return; var childIndex = GetOrSetChildIndex(intermediateNode); var path = intermediateNode.Children[childIndex]; Visit(path); }
private static string GetIntermediateNodeString(IIntermediateForestNode node) { return($"({node.DottedRule}, {node.Origin}, {node.Location})"); }