野牛 - 运营商优先权

And*_*dna 3 bison operator-precedence

我对Bison中的运算符优先级和关联性有疑问.

在每个例子中,我看到的产品都是expr 'op' expr,例如:http://dinosaur.compilertools.net/bison/bison_8.html

但如果我会使用野牛%left和其他关联工具,我会使用语法:

  expr|     expr binop expr
      |     expr relop expr
      |     expr logical_op expr
Run Code Online (Sandbox Code Playgroud)

 binop: '+' 
      | '-' 
      | '*' 
      | '/' 
      ;
 relop: EE
      | NE
      | LE
      | '<'
      | GE
      | '>'
      ;
 logical_op: AND
           | OR
           ;
Run Code Online (Sandbox Code Playgroud)

是否会使用关联性和优先级规则?

或者我是否需要expr 'op' expr为每个运营商编写明确的解释?

我问,因为当我尝试使用像我发布的那样的语法时,我得到有关冲突的警告.

但是,当我手工编写制作时,我expr '+' expr没有收到任何警告.

ric*_*ici 7

要使优先规则起作用,终端本身必须出现在模糊的生产中.因此,您无法将终端分组到非终端并保留使用优先级规则的能力.