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



假设存在关于"type"的规则。它是预定义的类型(由IDENTIFIER引用)或typeDescriptor。

type
:   IDENTIFIER
|   typeDescriptor
;

在我的程序中,我有一个typeContext"ctx"的实例。我如何知道是选择了路径IDENTIFIER,还是选择了typeDescriptor。

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

否,您可以使用所描述的方法(检查项是否为非null),也可以使用#运算符标记规则的外部备选项。

type
: IDENTIFIER     # someType
| typeDescriptor # someOtherType
;

当您标记外部备选方案时,它将为每个标签生成ParserRuleContext类。在上面的示例中,您将获得SomeTypeContextSomeOtherTypeContext,这同样适用于生成的侦听器和访问者接口。

相关内容

  • 没有找到相关文章

最新更新