когда мы расширяем BNF на EBNF, это нормально? - PullRequest
0 голосов
/ 07 октября 2018
<program> -> begin<stmt_list>end                                                   
<stmt_list> -> <stmt> | <stmt> ; <stmt_list>                                       
<stmt> -> <var> = <expression>                                                   
<var> -> A | B |C                                                                          
<expression> -> <var> + <var> | <var> - <var> | <var>

Я думаю, что вторая строка может быть преобразована таким образом, но решение не предлагает

<stmt_list> -> <stmt> [; <stmt_list>

Кроме того, последняя строка конвертируется в это

<expression> -> <var> {(+|-) <var>}

но я думаю, что это не может быть повторено как

 <var> + <var> - <var> + <var> ....

, поэтому я думаю, что это должно быть изменено как

<expression> -> <var> [(+|-) <var>]
...