Antlr 如何标记具有相同优先级的表达式备选方案?

Antlr 如何标记具有相同优先级的表达式备选方案?,antlr,antlr4,operator-precedence,Antlr,Antlr4,Operator Precedence,使用antlr4,我可以标记如下规则备选方案: e : e '*' e # Mult | e '+' e # Add | INT # Int ; 据我所知,在上面的规则中,Mult比Add具有更高的优先级,因为Mult在备选方案列表中位于Add之前 例如,如果我写: e : e '*' e # Mult | e ('+'|'-') e # Add | INT # Int ; 1+2中的+和4-2中的-具有相同的优先级。 然而,现在替代方案并不在顶级。有没有

使用antlr4,我可以标记如下规则备选方案:

e : e '*' e # Mult
  | e '+' e # Add
  | INT # Int
  ;
据我所知,在上面的规则中,Mult比Add具有更高的优先级,因为Mult在备选方案列表中位于Add之前

例如,如果我写:

e : e '*'       e # Mult
  | e ('+'|'-') e # Add
  | INT # Int
  ;
1+2
中的
+
4-2
中的
-
具有相同的优先级。
然而,现在替代方案并不在顶级。有没有一种方法可以在两个选项的优先级相同的情况下,分别标记规则
e'+'e#Add
e'-'e#Sub
。您可以使用op=(“+”|“-”)标记op-through,然后在树遍历期间获取ctx.op()值并请求其令牌类型