1

我正在将 Antlr4 与 C# Target 一起使用。我的语法中有一个简单的词法分析器规则如下

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

我在以下解析器规则之一中使用此规则

conditionExpr: Identifier LT SearchIdentifier

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

 context.SearchIdentifier().GetText();

这会给我 SearchIdentifier 文本,有没有办法知道哪个子规则(QT Identifier QT 或 Digit)匹配?

谢谢

4

1 回答 1

3

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

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

于 2013-10-26T02:27:55.713 回答