antlr4:在给定的上下文中,如何知道选择了哪一个备选方案

antlr4:在给定的上下文中,如何知道选择了哪一个备选方案,antlr,antlr4,Antlr,Antlr4,假设有关于“类型”的规则。它是预定义类型(由标识符引用)或类型描述符 type : IDENTIFIER | typeDescriptor ; 在我的程序中,我有一个typeContext“ctx”的实例。我如何知道是选择了路径标识符,还是选择了typeDescriptor 我认识到一种方法是测试ctx.IDENTIFIER()==null和ctx.typeDescriptor()==null。但是,当有更多的选择时,它似乎不太管用。有没有方法返回一个索引来指示选择了哪个规则?谢谢 否

假设有关于“类型”的规则。它是预定义类型(由标识符引用)或类型描述符

type
:   IDENTIFIER
|   typeDescriptor
;
在我的程序中,我有一个typeContext“ctx”的实例。我如何知道是选择了路径标识符,还是选择了typeDescriptor


我认识到一种方法是测试
ctx.IDENTIFIER()==null
ctx.typeDescriptor()==null
。但是,当有更多的选择时,它似乎不太管用。有没有方法返回一个索引来指示选择了哪个规则?谢谢

否,您可以使用所描述的方法(检查项目是否为非空),也可以使用
操作符标记规则的外部备选方案

type
  : IDENTIFIER     # someType
  | typeDescriptor # someOtherType
  ;
标记外部备选方案时,它将为每个标签生成
ParserRuleContext
类。在上面的示例中,您将得到一个
SomeTypeContext
SomeOtherTypeContext
,它同样适用于生成的侦听器和访问者接口