Какой общий способ генерации предложений из грамматики?
Я хочу, чтобы алгоритм выглядел как противоположный синтаксическому анализатору. То есть, учитывая формальную контекстно-свободную грамматику (скажем, LL), я хочу сгенерировать произвольное предложение, соответствующее этой грамматике. Я использую здесь предложение для обозначения любого действительного текста текста, поэтому он может фактически представлять собой целую программу (даже если это не имеет никакого смысла - до тех пор, пока оно синтаксически корректно).
Пример грамматики:
program : <imports> NEWLINE? <namespace>
imports : ("import" <identifier> NEWLINE)*
namespace : "namespace " <identifier> NEWLINE "{" <classes> "}"
identifier: (A-Za-z_) (A-Za-z0-9_)*
...
Пример сгенерированной программы:
import jkhbhhuob
import aaaaa888_
namespace u8nFGubgykb
{ class ui0op_np { ... }
}