代码之家  ›  专栏  ›  技术社区  ›  Max Koretskyi

该语法是否通过右递归定义右结合性

  •  1
  • Max Koretskyi  · 技术社区  · 9 年前

    this article 关于添加 ** EcmaScript规范的运算符,其中作者声明了以下内容:

    在乘法和其他运算之前必须求幂 重要的是,BNF语法的编写必须确保 运营商 右结合性定义明确 乘法表达式(左结合)。

    他定义了新的非终端 ExponentiationExpression 语法中的符号为:

    ExponentiationExpression : 
      UnaryExpression[?Yield]
      UnaryExpression[?Yield] ** ExponentiationExpression[?Yield]
    
    MultiplicativeExpression[Yield] :
      ExponentiationExpression[?Yield]
      MultiplicativeExpression[?Yield] MultiplicativeOperator ExponentiationExpression[?Yield]
    

    This article

    • 对于右结合性, 使用右递归。

    右递归 在这里:

    ExponentiationExpression -> UnaryExpression[?Yield] ** ExponentiationExpression[?Yield]
    

    我说得对吗?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Bergi    9 年前

    我说得对吗?