ANTLR lexer错误:字符'\n';

ANTLR lexer错误:字符'\n';,antlr,lexer,Antlr,Lexer,我正在编写一个ANTLR解析器,它试图从给定的输入字符串识别GDB回溯输出 我将忽略具有以下lexer语法的新行: RETURN : ('\r' | '\n' | '\r\n') { skip(); }; 但是,当我针对某些输入运行解析器时,ANTLR会给出以下lexer错误: line 20:21 no viable alternative at character '\n' line 23:14 no viable alternative at character '\n' line 30

我正在编写一个ANTLR解析器,它试图从给定的输入字符串识别GDB回溯输出

我将忽略具有以下lexer语法的新行:

RETURN : ('\r' | '\n' | '\r\n') { skip(); };
但是,当我针对某些输入运行解析器时,ANTLR会给出以下lexer错误:

line 20:21 no viable alternative at character '\n'
line 23:14 no viable alternative at character '\n'
line 30:21 no viable alternative at character '\n'
line 33:31 no viable alternative at character '\n'
我不确定为什么会发生这种情况,因为我已经在lexer中指定了“\n”


有人有什么想法吗?谢谢。

问题似乎出在语法中的其他地方:它仍在对另一个尚未结束的元素进行词法分析,并意外地遇到了行尾,而它仍希望完成当前元素。

谢谢,我认为这就是原因。我有一个lexer规则
文件名:(ALPHA | NUMBER |下划线|斜杠|点)+点(ALPHA | NUMBER)+对于像“a行”这样的行,将显示错误消息。有没有办法解决这个问题?文件名应该(可能)是一个解析器规则,而不是词法规则。不过我还是个新手。