次の再帰 BNF ルールを見てください。
(1) X = Xa | b
これは次のような文を生成します
X = b
X = ba
X = baa
X = baaa
...
これは次のように記述できます。
(2) X = b a*
右辺が再帰的でない場合
次の再帰的 BNF ルールを見てみましょう。
(3) X = { X } | b
これは次のような文を生成します
X = b
X = {b}
X = {{b}}
X = {{{b}}}
...
ルール (1) をルール (2) に書き直したときと同様に、ルール (3) を非再帰的な方法で書き直す方法はありますか。
括弧のバランスをとる必要があるため、X = {* b }* は良くないことに注意してください。