Antlr 我如何在Lexer规则中忽略除我自己创建的标记之外的所有其他字符?

Antlr 我如何在Lexer规则中忽略除我自己创建的标记之外的所有其他字符?,antlr,antlr3,lexer,Antlr,Antlr3,Lexer,我已经创建了一些lexer规则来匹配输入文件中的一些标记。我想在一行中消除输入文件中的所有其他字符(即,后跟换行符),而不是我之前创建的标记 所以,我在lexer中创建了这个规则 Newline : '\r'? '\n' | '\r'; ... My Own meaningful tokens ... Others: (~Newline)* Newline; 但不知何故,这在lexer中造成了一种混淆,即与我自己的有意义的标记相匹配的标记。我能做些调整吗?你的问题中信息太少了。假设MU是您语言

我已经创建了一些lexer规则来匹配输入文件中的一些标记。我想在一行中消除输入文件中的所有其他字符(即,后跟换行符),而不是我之前创建的标记

所以,我在lexer中创建了这个规则

Newline : '\r'? '\n' | '\r';
...
My Own meaningful tokens
...
Others: (~Newline)* Newline;

但不知何故,这在lexer中造成了一种混淆,即与我自己的有意义的标记相匹配的标记。我能做些调整吗?

你的问题中信息太少了。假设
MU
是您语言中的一个关键字。令牌
MUM
会是一个关键字(
MU
),后跟一个字母
'M'
?或者
MUM
是一个标记,因此会被忽略吗?在你的问题中提供一些例子,准确地解释你想要达到的目标,这总是一个好主意。那很有趣。但是,是的,我想忽略所有以前没有被我的
有意义的标记捕获的其他东西。因此,是的,
MU
将被考虑,M将被丢弃。但是我应该提到,在我的
其他规则之前,我有WS(空白)作为一个规则。因此,MUM在那里是一个错误的单词,应该被报告,不应该被语法正确解析。