微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

grun无法识别ANTLR4 Unicode解析

如何解决grun无法识别ANTLR4 Unicode解析

给出以下内容

grammar Lang
start: CHAR;
CHAR: [\uE001];
WS: [ \t\r\n]+ -> skip;

此批处理文件运行时:

@echo off
setlocal
call antlr4 -o .\javatarget LangFile.g4 -encoding UTF-8
cd .\javatarget
call javac LangFile*.java
call grun LangFile Lang -gui -diagnostics -trace -encoding UTF-8
endlocal
@echo on

当我粘贴Unicode字符时会发生此错误


^Z
line 1:0 token recognition error at: '?'
enter   Lang,LT(1)=<EOF>
consume [@0,3:2='<EOF>',<-1>,2:0] rule Lang 
exit    Lang,LT(1)=<EOF>

尽管我搜索了其他答案(例如-encoding选项),但似乎无法使这种Unicode(专用区域)解析正常工作。

编辑:我的版本是4.8。

问题似乎出在grun工具上。使用Python手动运行它可以很好地运行,指定输入文件也可以。但是直接将内容粘贴到控制台失败。对我来说,恢复使用输入文件已经足够了,但是当grun的直接输入模式起作用时,也许可以回答这个问题。

解决方法

您的grun脚本如何处理输入可能是一个问题,因为当我生成一个词法分析器和解析器并运行它时:

LangLexer lexer = new LangLexer(CharStreams.fromString("\uE001"));
LangParser parser = new LangParser(new CommonTokenStream(lexer));

parser.start();

它解析时没有任何警告或错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。