Antlr 区分语法中的多个标记

Antlr 区分语法中的多个标记,antlr,Antlr,我的语法是这样的: stmt : ( TYPE1 expr )? ( TYPE2 expr ( ',' expr )* )? ; 如何判断给定的expr是在TYPE1还是TYPE2之后出现?所有expr的Context对象被分组到一个列表中。这条规则有点奇怪。它不能匹配任何内容,因为所有内容都是可选的 但是,stmt上下文的子列表包含被识别的子上下文。而其他上下文(TYPE1和TYPE2)只有在匹配时才有值(顺便说一句,这些方便访问器最终也会与子列表一起工作)。因此,通过测试stmtCon

我的语法是这样的:

stmt
 : ( TYPE1 expr )? ( TYPE2 expr ( ',' expr )* )?
 ;

如何判断给定的
expr
是在
TYPE1
还是
TYPE2
之后出现?所有
expr
Context
对象被分组到一个列表中。

这条规则有点奇怪。它不能匹配任何内容,因为所有内容都是可选的

但是,stmt上下文的子列表包含被识别的子上下文。而其他上下文(
TYPE1
TYPE2
)只有在匹配时才有值(顺便说一句,这些方便访问器最终也会与子列表一起工作)。因此,通过测试
stmtContext.TYPE1()
可以确定第一部分是否匹配。第二部分同样通过
类型2