public SuffixTree(string text) { this.text = text; this.root = new StNode(this, null); StUtil.WriteLine(StVerbosityLevel.Verbose, "Creating the active (longest proper) suffix pointer"); StSuffix active = new StSuffix(this, root, 0, InfiniteIndex); for (int endIndex = 0; endIndex < text.Length; endIndex++) { StUtil.WriteLine(StVerbosityLevel.Verbose, this.ToString()); StUtil.WriteLine(StVerbosityLevel.Verbose, String.Format( "Calling extendSuffixes() with endIndex = {0:d} ('{1:c}') and active suffix = {2:s}", endIndex, text[endIndex], active.ToString())); extendSuffixes(ref active, endIndex); } StUtil.Write(StVerbosityLevel.Normal, this.ToString()); }
public void Canonicalize() { if (IsImplicit) { bool haveValuesChanged = false; StringBuilder sb = new StringBuilder(); sb.AppendLine(" Canonicalize: Entering"); // sb.AppendLine(tree.ToString()); int origNodeId, begin, end; origNodeId = this.OriginNode.Id; begin = this.beginIndex; end = this.endIndex; StEdge edge = OriginNode.GetChildEdge(tree.Text[BeginIndex]); while (edge.Span <= Span) { sb.Append(String.Format( " Canonicalize: Active suffix changed from {0:s}", ToSuffixString(origNodeId, begin, end))); this.beginIndex += edge.Span + 1; this.OriginNode = edge.ChildNode; haveValuesChanged = true; sb.AppendLine(String.Format(" to {0:s}", ToSuffixString(OriginNode.Id, beginIndex, endIndex))); if (Span >= 0) { edge = edge.ChildNode.GetChildEdge(tree.Text[BeginIndex]); } } sb.AppendLine(" Canonicalize: Exiting"); if (haveValuesChanged) { StUtil.Write(StVerbosityLevel.Verbose, sb.ToString()); } } }
public static void WriteLine(StVerbosityLevel v, string message) { StUtil.Write(v, message + Environment.NewLine); }