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