我正在使用Antlr4和C#Target。我的语法中有一个简单的词法规则如下
SearchIdentifier : QTE (WILDCARD | Identifier) QTE
| (Digit)+
;
我在其中一个解析器规则中使用此规则,如下所示
conditionExpr: Identifier LT SearchIdentifier
在我的听众中,我想知道解析了哪个lexer子规则。例如,目前我唯一得到的是
context.SearchIdentifier().GetText();
这会给我一个SearchIdentifier文本,有没有办法知道哪个子规则(QT标识符QT或数字)匹配?
由于
答案 0 :(得分:3)
不,ANTLR 4词法分析器是除了令牌停止的位置之外不跟踪任何信息的状态机(因此它可以执行正确的操作并分配正确的令牌类型)。
这与ANTLR 3 lexers非常不同,但非常更快。