文法から文を生成する一般的な方法は何ですか?
パーサーとは正反対のアルゴリズムが必要です。つまり、形式的な文脈自由文法 (たとえば 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 { ... }
}