Это грамматика в форме BNF, и цель состоит в том, чтобы преобразовать ее в грамматику EBNF.
<factor_list> = <factor> | <factor>;<factor_list>
<factor> = A|B|C
Книга преобразует ее так, что имеет смысл
<factor_list> = <factor>{;<factor>}
<factor> = A|B|C
Я пытался придумать разные решения. Основная идея заключается в предоставлении дополнительного рекурсивного подхода с метасимволами '[' ']' и предоставлении базового варианта с другой стороной. Вот они:
1-Это тоже решение, если не почему?
<factor_list> = <factor>[;<factorlist>]
<factor> = A|B|C
2-Также это решение, если не почему?
<factor_list> = <factor>[;(<factor> | <factorlist>)]
<factor> = A|B|C
Насколько я понимаю, все эти решения должны работать для этой проблемы. Если они это делают, есть ли причина выбирать одно из другого?