内部EBCDIC对ANTLR 3.1.3的支持?

时间:2014-11-20 04:15:33

标签: antlr antlr3 ebcdic

我正在尝试在具有本地EBCDIC字符集

的系统上使用ANTLR 3.1.3

即使是这样的简单语法:

lexer grammar test;

GENERIC_ID
: (LETTER)*
;

fragment LETTER
: 'a' .. 'z'
;

在初始编译期间导致这些错误(java org.antlr.Tool test.g):

error(10):  internal error: problem parsing group <unknown>: line 1:1: unexpected char: 0x7 : line 1:1: unexpected char: 0x7
org.antlr.stringtemplate.language.GroupLexer.nextToken(GroupLexer.java:233)
antlr.TokenBuffer.fill(TokenBuffer.java:69)
antlr.TokenBuffer.LA(TokenBuffer.java:80)
antlr.LLkParser.LA(LLkParser.java:52)
antlr.Parser.match(Parser.java:210)
org.antlr.stringtemplate.language.GroupParser.group(GroupParser.java:120)
org.antlr.stringtemplate.StringTemplateGroup.parseGroup(StringTemplateGroup.java:792)
org.antlr.stringtemplate.StringTemplateGroup.<init>(StringTemplateGroup.java:274)
org.antlr.stringtemplate.PathGroupLoader.loadGroup(PathGroupLoader.java:67)
org.antlr.stringtemplate.StringTemplateGroup.loadGroup(StringTemplateGroup.java:969)
org.antlr.stringtemplate.StringTemplateGroup.loadGroup(StringTemplateGroup.java:955)
org.antlr.codegen.CodeGenerator.loadTemplates(CodeGenerator.java:198)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:292)
org.antlr.Tool.generateRecognizer(Tool.java:607)
org.antlr.Tool.process(Tool.java:429)
org.antlr.Tool.main(Tool.java:91)
error(10):  internal error: test.g : java.lang.IllegalArgumentException: Can't find template outputFile.st; group hierarchy is [null]
org.antlr.stringtemplate.StringTemplateGroup.lookupTemplate(StringTemplateGroup.java:507)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:392)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:404)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:314)
org.antlr.Tool.generateRecognizer(Tool.java:607)
org.antlr.Tool.process(Tool.java:429)
org.antlr.Tool.main(Tool.java:91)

语法文件似乎得到了适当的处理,但内部出现了一些问题。无论我在语法文件中使用什么字符,非法字符似乎总是为0x7。

我是否可以在具有本地EBCDIC字符集的系统上编译ANTLR?有什么建议吗?

更新:问题出现在模板文件(.stg文件)中。如果我将codegen / templates目录中的文件转换为EBCDIC(也是ANTLRCore.sti),那么编译似乎就完成了。有没有办法告诉java / antlr不能以本地编码读取这些文件?这些模板文件是否可用于其他编码?否则我被迫手工转换并替换每一个

0 个答案:

没有答案