Antlr4 如何在括号内定义替代标签n

Antlr4 如何在括号内定义替代标签n,antlr4,Antlr4,这是我的解析器语法的一部分: expression: multiplyingExpression ( PLUS multiplyingExpression #plus | MINUS multiplyingExpression #minus )*; 我想定义加减替代标签,显然它不允许我这样做 在#加号和@减号处,它给出了错误: 查找规则元素时在“#”处缺少RPAREN 有人知道如何在不改变规则定义结构的情况下实现这一点吗?alt标签只能在alt的外边缘(非

这是我的解析器语法的一部分:

expression: 
    multiplyingExpression
   (
   PLUS multiplyingExpression  #plus
   | MINUS multiplyingExpression #minus 
   )*;
我想定义加减替代标签,显然它不允许我这样做

在#加号和@减号处,它给出了错误:

查找规则元素时在“#”处缺少RPAREN


有人知道如何在不改变规则定义结构的情况下实现这一点吗?

alt标签只能在alt的外边缘(非嵌套)上定义。因此,如果不改变规则的结构,就无法实现这一点

可以做的是使用普通标签来有效地达到预期的效果

expression: 
    multiplyingExpression
    ( type+=PLUS  multiplyingExpression
    | type+=MINUS multiplyingExpression
    )*;
结果是
ExpressionContext
将包含
列表类型其连续值将通过推断识别匹配的ALT