代码之家  ›  专栏  ›  技术社区  ›  user9985127

如何消除运算符优先语法中的冲突?

  •  0
  • user9985127  · 技术社区  · 4 年前

    给定以下语法(非终端大写),

    S -> aSbXc
       | abXc
    X -> aa
    

    我们可以为它构建优先级矩阵,如下所示。

         a   b   c   #
      ーーーーーーーーーー
    a | <,=  =   >  
    b |  <       =
    c |      >       >
    # |  <           =
    

    其中,符号“#”标记字符串的开始和结束。

    • <表示产量优先
    • >手段优先
    • =表示同等优先级

    根据该矩阵,上述语法不是运算符优先语法,因为<a和a=a。

    是否有可能消除这种冲突,例如通过重写语法?

    0 回复  |  直到 4 年前