【发布时间】:2018-03-26 07:53:04
【问题描述】:
我正在尝试匹配一个非常基本的 ANTLR 语法。但是ANTLR一直告诉我他得到了输入'。并期待“。” .
完整的错误是:
line 1:0 extraneous input '.' expecting '.'
line 1:2 missing '*' at '<EOF>'
附文法:
grammar regex;
@parser::header
{
package antlr;
}
@lexer::header
{
package antlr;
}
WHITESPACE : (' ' | '\t' | '\n' | '\r') -> channel(HIDDEN);
COMP : '.';
KLEENE : '*';
start : COMP KLEENE;
然后输入:
.*
两个文件具有相同的字符集:
regex.g: text/plain; charset=us-ascii
test.grammar: text/plain; charset=us-ascii
不应混淆 Lexer 规则。为什么这不能按预期工作?
【问题讨论】:
-
您是否检查过该点在语法和输入中是同一个字符,即这不是另一个看起来相同的不同 unicode 字符?
-
我将语法中的点复制到输入文件中。所以,它们应该是一样的。
标签: antlr