Antlr Lexer规则不包括令牌

时间:2016-11-01 02:16:38

标签: antlr4 lexer

这是我的ANTLR4语法中的一个片段:

Lexer规则:

AND                 : ('a'|'A') ('n'|'N') ('d'|'D');
OR                  : ('o'|'O') ('r'|'R') ;
NOT                 : ('n'|'N') ('o'|'O') ('t'|'T') ;

TERM                : ('a'..'z'|'A'..'Z'|'0'..'9'|[1-9])+ ;

解析器规则:

negation: NOT;
logical:  AND|OR;
term:     TERM;

search
   : negation? term (logical negation? term)* ;
   ;

基本上我试图让它解析&#34;你和我&#34; 字符串,以便TERM令牌匹配&#34;你&#34; &#34; me&#34; ,我希望&#34;和#34; 能够被AND规则识别,不< / em> TERM规则。

现在我得到:line 1:4 missing TERM at 'and'错误。

我理解我的输入与AND和TERM词法分析器规则相匹配,但我希望能够指定TERM是除了匹配和规则之外的任何内容。

1 个答案:

答案 0 :(得分:0)

尝试将以下内容添加到词法规则中:

WS : [ \r\n\t\u000C]+ -> skip ;

基本上这是一个匹配任何whitspace,tab,newline,tr和skip的令牌,你告诉ANTLR跳过它。