在Antlr侦听器中获取令牌类型

时间:2013-10-25 20:13:23

标签: c# antlr4

我正在使用Antlr4和C#Target。我的语法中有一个简单的词法规则如下

SearchIdentifier : QTE (WILDCARD | Identifier) QTE  
           | (Digit)+                               
           ;

我在其中一个解析器规则中使用此规则,如下所示

conditionExpr: Identifier LT SearchIdentifier

在我的听众中,我想知道解析了哪个lexer子规则。例如,目前我唯一得到的是

 context.SearchIdentifier().GetText();

这会给我一个SearchIdentifier文本,有没有办法知道哪个子规则(QT标识符QT或数字)匹配?

由于

1 个答案:

答案 0 :(得分:3)

不,ANTLR 4词法分析器是除了令牌停止的位置之外不跟踪任何信息的状态机(因此它可以执行正确的操作并分配正确的令牌类型)。

这与ANTLR 3 lexers非常不同,但非常更快。