ANTLR4:如何控制类层次结构?

时间:2017-10-06 17:35:22

标签: java antlr

如何将ANTLR4配置为生成父类?

给出语法MyGrammar

statement: 'do' | 'check';

ANTLR4生成

class MyGrammar {
    class StatementContext {}
}

由于ANTLR4为所有XXXContext类生成父类,因此该类名也必须在任何用法中使用。所以我必须写

MyGrammar.StatementContext node = ...;

并不能简单地写

NodeContext node = ...;

这是一笔足够大的交易,因为它会使用额外的字符来污染我的代码,这些字符不会增加任何可读性。因此,它降低了可读性,从而降低了可理解性和可调试性等等。

那么,我怎样才能制作语法MyGrammar

statement: 'do' | 'check';

生成ANTLR4

class StatementContext {} // look ma: no parent MyGrammar class!

1 个答案:

答案 0 :(得分:0)

就这么简单:你不能改变类的生成方式。它是一个精心安排的整体和改变,会破坏很多东西。