Exemplo n.º 1
0
        IEnumerable <string> SuffixesFrom(IDawgReader reader, StringBuilder builder)
        {
            if (reader.Current == 0)
            {
                yield break;
            }

            builder.Append(_charset[reader.SymbolId]);

            if (reader.IsEndOfWord)
            {
                yield return(builder.ToString());
            }

            if (reader.FirstChild != 0)
            {
                var current = reader.Current;
                if (!reader.MoveToFirstChild())
                {
                    yield break;
                }

                foreach (var word in SuffixesFrom(reader, builder))
                {
                    yield return(word);
                }

                reader.MoveToNode(current);
            }

            builder.Length--;

            if (reader.IsLastSibling)
            {
                yield break;
            }

            reader.MoveNextSibling();
            foreach (var word in SuffixesFrom(reader, builder))
            {
                yield return(word);
            }
        }