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! 
+0

[mcve]会帮助我们理解确切的问题。 –

至于这么简单:你不能改变正在生成的类的方式。这是一个精心安排的合奏和变化,会打破许多事情。