如何解决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 举报,一经查实,本站将立刻删除。