我正在使用Antlr 3.5编写SQL语法(由于公司政策,我无法共享)。
我只提供我需要解析的语句,但语法庞大而复杂。
我遇到“代码太大”的问题,生成的java文件超过65535字节 - 有时在静态初始化程序中,有时在某些方法中。
正如在各个地方所建议的那样,我将语法分成多个语法并通过import关键字使用它们。
这种方法现在工作正常,但我必须继续添加这个语法 我相信在某些时候它会再次遇到这个代码太大的问题 另外,我不知道通过分割语法确切地获得了多少收益。
我的问题是:
几点:
答案 0 :(得分:0)
据我记忆,问题不是类大小本身,而是方法大小。对我们来说,问题是静态初始化器(对于编译器,它也是一种方法!) - 它初始化所有后续集和DFA。
我们最终将我们的SQL语法分成多个语法文件(对于某些SQL方言甚至达到6个文件),并且还直接修改ANTLR(Java.stg
模板)的部分以将大型方法和静态初始化器拆分为较小的。