巴克斯诺尔形式结合性
Backus Naur Form Assoicativity
这是为求幂 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
你写的是正确的。
顺便说一句,您可能想重新考虑您的层次结构;在常规数学中,−34 是 −(34),而不是 (−3)4 .因此,您可能希望 - 3 ^ 4
表示 - (3 ^ 4)
,在这种情况下 NegExp
将包含 PowExp
,而不是相反。 (但我想如果 -3 ^ 4
表示 -(3 ^ 4)
可能会造成混淆,所以这里可能没有直观的操作顺序?另一种可能性是 或者 [=30= 需要括号] 阅读,让 PowExp
和 NegExp
都直接依赖于 RootExp
。)
这是为求幂 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
你写的是正确的。
顺便说一句,您可能想重新考虑您的层次结构;在常规数学中,−34 是 −(34),而不是 (−3)4 .因此,您可能希望 - 3 ^ 4
表示 - (3 ^ 4)
,在这种情况下 NegExp
将包含 PowExp
,而不是相反。 (但我想如果 -3 ^ 4
表示 -(3 ^ 4)
可能会造成混淆,所以这里可能没有直观的操作顺序?另一种可能性是 或者 [=30= 需要括号] 阅读,让 PowExp
和 NegExp
都直接依赖于 RootExp
。)