Почему в предложении EBNF должно быть два операнда? - PullRequest
1 голос
/ 25 сентября 2010

Имейте эту грамматику EBNF

< calculation>  ->   <expr> =
         <expr> -> <term>  (+ | -) <expr>
                         |   <term>
         <term> -> <factor>  (*  |  /) <term>
                         |   <factor>
         <factor> -> ( <expr> )
                         |   <value>
            <value>     ->   [ <sign>  ]  <unsigned>  [ .  <unsigned>  ]
            <unsigned>  ->   <digit>  { <digit> }
            <digit>     ->  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
            <sign>      ->  + | -

. Почему бы вам иметь возможность ввести что-то подобное в 4 * + 3,5 =?Будет ли это предложение даже в этой грамматике?Как вы это понимаете, если это так?

1 Ответ

1 голос
/ 25 сентября 2010

Это в грамматике.+ Является унарным оператором.Рассмотрим 4 * -3,5, 4 раза -3,5.

Ваш парсер это выяснит.

...