如何在ANTLR 4中匹配任何非换行符



我想知道如何在换行符是终端的语法中匹配非换行符,希望用它来匹配,例如,可能包含数字标点符号等的标题文件。

我现在使用的语法是:

grammar ABCHeaderNew;
import Configuration;
root: header EOF;
header: index title; 
index: 'X:' INDEX stop+;
title: 'T:' TITLE stop+;
INDEX: INTEGER+;
TITLE: ANY+;
stop: comment | NEWLINE; 
comment: '%' ANY* NEWLINE;
INTEGER: [0-9];
NEWLINE: 'r'? 'n';
ANY: ~(NEWLINE);
WHITESPACE: [ t]+ -> skip;

这不会编译(错误消息:集合中当前不支持规则引用NEWLINE)。我尝试过的其他几种变体也不起作用。

有人知道一个好的变通办法吗?

not运算符只对集合进行操作,而令牌引用(如NEWLINE)不合格。

只需使用标准集表示

ANY  : ~[rn] ;

注意:您可能需要扩展定义以排除转义的行尾字符,当然这取决于您的最终需求。

相关内容

  • 没有找到相关文章

最新更新