Backus Naur形式辅助性

时间:2015-02-11 03:01:56

标签: bnf associativity

这是实现Exponentiation PowExp的正确关联性的正确方法吗?所以2 ^ 3 ^ 4实际上是(2 ^(3 ^ 4))

<Exp> ::= <Exp> + <MulExp>
| <Exp> - <MulExp>
| <MulExp>
<MulExp> ::= <MulExp> * <PowExp>
| <MulExp> / <PowExp>
| <PowExp>
<PowExp> ::= <NegExp> ^ <PowExp>
|<NegExp>
<NegExp> ::= - <RootExp>
| <RootExp>
<RootExp> ::= ( <Exp> )
| 1 | 2 | 3 | 4

1 个答案:

答案 0 :(得分:0)

你写的方式是正确的。

顺便说一句,您可能想重新考虑您的层次结构;在常规数学中,-3 4 是 - (3 4 ),而不是(-3) 4 。因此,您可能希望- 3 ^ 4表示- (3 ^ 4),在这种情况下,NegExp将包含PowExp,而不是相反。 (但我想如果-3 ^ 4表示-(3 ^ 4)可能会让人感到困惑,所以也许这里没有直观的操作顺序?另一种可能性就是要求 读取括号,让PowExpNegExp都直接依赖于RootExp。)