我正在阅读this article关于将**
运算符添加到EcmaScript规范中,其中作者声明了以下内容:
必须在乘法之前评估指数以及更多 重要的是,BNF语法必须写成运算符 正确定义了右倾相关性(不像 MultiplicativeExpression,左关联)。
他将语法中的新非终端ExponentiationExpression
符号定义为:
ExponentiationExpression :
UnaryExpression[?Yield]
UnaryExpression[?Yield] ** ExponentiationExpression[?Yield]
MultiplicativeExpression[Yield] :
ExponentiationExpression[?Yield]
MultiplicativeExpression[?Yield] MultiplicativeOperator ExponentiationExpression[?Yield]
This article声明:
编写正确表达运算符关联性的语法:
- 对于左关联,请使用左递归。
- 对于正确的关联性, 使用正确的递归。
他似乎遵循该规则并通过在ExponentiationExpression
使用右递归来定义关联性:
ExponentiationExpression -> UnaryExpression[?Yield] ** ExponentiationExpression[?Yield]
我是对的吗?
答案 0 :(得分:2)
我是对的吗?
是强>