private void LeoComplete(ITransitionState transitionState, IState completed, int k) { var earleySet = _chart.EarleySets[transitionState.Position]; var rootTransitionState = earleySet.FindTransitionState( transitionState.PreDotSymbol); if (rootTransitionState == null) rootTransitionState = transitionState; var virtualParseNode = new VirtualNode(k, rootTransitionState, completed.ParseNode); var topmostItem = new State( transitionState.Production, transitionState.Length, transitionState.Origin, virtualParseNode); if (_chart.Enqueue(k, topmostItem)) Log("Complete", k, topmostItem); }
private void LazyLoadChildren() { if (_transitionState.NextTransition != null) { var virtualNode = new VirtualNode(Location, _transitionState.NextTransition, _completedParseNode); if (_transitionState.Reduction.ParseNode == null) AddUniqueFamily(virtualNode); else AddUniqueFamily(_transitionState.Reduction.ParseNode, virtualNode); } else if (_transitionState.Reduction.ParseNode != null) { AddUniqueFamily(_transitionState.Reduction.ParseNode, _completedParseNode); } else { AddUniqueFamily(_completedParseNode); } }