ANTLR4:如何控制类的层次结构?
问题描述:
如何将ANTLR4配置为而不是生成父类?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!
答
至于这么简单:你不能改变正在生成的类的方式。这是一个精心安排的合奏和变化,会打破许多事情。
[mcve]会帮助我们理解确切的问题。 –