Здравствуйте, snoopy, Вы писали:
S>Может все же подскажете путь с использованием регулярных выражений?
S>Если эти выражения в общем используются для разделения и поиска строк,
S>так почему их не использовать для их формирования?
Потому что разбор строки — это детерминированная задача, а генерация — нет.
Простой пример: грамматика
буква -> 0 | 1
строка -> буква | буква строка
Одну произвольную строку, естественно, родить несложно. В каждом случае выбора (между 0 и 1, между концом и продолжением) — кидаем монетку. И то, нет гарантии, что процесс когда-либо остановится.
А уж заниматься перебором... Слово состояния машины-генератора оказывается равно всем выборам, совершенным при порождении последней строки; в следующий шаг мы меняем последний выбор и пытаемся вывести строку дальше.
Если грамматика не ограничивает сверху длину строки, то, очевидно, и слово состояния генератора может оказаться бесконечным.