Посмотрите на следующий рекурсивного правиле BNFперепишет рекурсивное правило 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}}}
...
Есть ли способ переписать правила (3) в не рекурсивным образом, аналогично, как мы делали когда мы переписали правило (1) на правило (2).
Обратите внимание, что X = {* b} * не подходит, поскольку скобки необходимо сбалансировать.
Это немного догадаться, но: x = (, ab) * a –
BTW: для правила (3): x = {ab Я не уверен, что это хорошо. –
@AdamOcsvari, у вас нет скобок. И нет запятой. –