В произведениях для 'n', 'b' и 'e', предположительно, '*' означает, что каждый из них может получить эпсилон (пустая строка), что неверно.(Это означает, что за D может следовать C без перевода строки или табуляции или даже пробела.)
Кроме того, это неоднозначно, что не обязательно означает, что оно некорректно для генерации языка, но, вероятно,означает, что он некорректен для построения парсера.
- Продукция типа
T ::= TeT
означает, что T
получает TeTeT
двумя способами (и т. д.). - Продукция типа
n ::= n*
означает, что любое производное от n
может включать в себя произвольно много n -> n
шагов.