这是我的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是除了匹配和规则之外的任何内容。
答案 0 :(得分:0)
尝试将以下内容添加到词法规则中:
WS : [ \r\n\t\u000C]+ -> skip ;
基本上这是一个匹配任何whitspace,tab,newline,tr和skip
的令牌,你告诉ANTLR跳过它。