Antlr4不';t正确识别unicode字符

Antlr4不';t正确识别unicode字符,antlr4,Antlr4,我有一个非常简单的语法,它试图将“é”与标记E_代码匹配。 我已经使用TestRig工具(带-tokens选项)对其进行了测试,但解析器无法正确匹配它。 我的输入文件是用UTF-8编码的,没有BOM,我使用的是ANTLR版本4.4。 其他人也可以检查一下吗?我在控制台上获得了以下输出: 第1行:0“Ă”处的令牌识别错误 grammar Unicode; stat:EOF; E_CODE: '\u00E9' | 'é'; 我测试了语法: grammar Unicode; stat: E_

我有一个非常简单的语法,它试图将“é”与标记E_代码匹配。 我已经使用TestRig工具(带-tokens选项)对其进行了测试,但解析器无法正确匹配它。 我的输入文件是用UTF-8编码的,没有BOM,我使用的是ANTLR版本4.4。 其他人也可以检查一下吗?我在控制台上获得了以下输出:
第1行:0“Ă”处的令牌识别错误

grammar Unicode;

stat:EOF;  
E_CODE: '\u00E9' | 'é';
我测试了语法:

grammar Unicode;

stat: E_CODE* EOF;

E_CODE: '\u00E9' | 'é';
详情如下:

UnicodeLexer lexer = new UnicodeLexer(new ANTLRInputStream("\u00E9é"));
UnicodeParser parser = new UnicodeParser(new CommonTokenStream(lexer));
System.out.println(parser.stat().getText());
以下内容被打印到我的控制台:

éé<EOF>

使用4.2和4.3进行测试(4.4尚未在Maven Central中)

编辑
查看一下,我看到TestRig采用可选的
-encoding
参数。您尝试过设置它吗?

您的语法文件没有以utf8格式保存。
Utf8是antlr根据terence Parr book接受作为输入语法文件的默认格式。

是的,我得到了相同的结果,但测试装备仍然无法重新定义此输入。很难说。也许是一件绝症?查看我看到的
TestRig
采用可选的
-encoding
参数。你试过设置吗?现在可以了。这个附加参数解决了这个问题。设置-
编码UTF-8
。酷,我会把它添加到我的答案中。