这种语法生成的目的是什么?优先攀登方法"?

时间:2014-08-14 01:22:25

标签: parsing grammar

我看到了一个所谓的" Precedence Climbing Method"用于在维基百科here上的正式语法中表示运算符优先级。

它给出了以下语法作为例子:

expression ::= equality-expression
equality-expression ::= additive-expression ( ( '==' | '!=' ) additive-expression ) *
additive-expression ::= multiplicative-expression ( ( '+' | '-' ) multiplicative-expression ) *
multiplicative-expression ::= primary ( ( '*' | '/' ) primary ) *
primary ::= '(' expression ')' | NUMBER | VARIABLE | '-' primary

我不明白上次制作结束时'-' primary的目的是什么。任何人都可以解释为什么它是这样建造的吗?

1 个答案:

答案 0 :(得分:2)

它是一元减号,它比乘法运算符更紧密地绑定:

-a * 7

(在这种情况下并没有太大的区别。)