为什么EBNF句子中会有两个操作数?

时间:2010-09-25 03:52:21

标签: ebnf

有这个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 个答案:

答案 0 :(得分:1)

这是语法。 +是一元运算符。考虑4 * -3.5,4倍-3.5。

你的解析器会搞清楚。