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

本文关键字:令牌 类型 获取 Antlr 侦听器 | 更新日期: 2023-09-27 18:36:52

我正在使用Antlr4和C#目标。我的语法中有一个简单的词法分析器规则,如下所示

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

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

conditionExpr: Identifier LT SearchIdentifier

在我的侦听器中,我想知道解析了哪个词法分析器子规则。例如,目前我唯一得到的是

 context.SearchIdentifier().GetText();

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

谢谢

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

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

这与ANTLR 3词法分析器非常不同,但也非常快