假设我有以下两种语法:
grammar Token;
rule : 'test' x=Identifier;
Identifier : [a-z]+;
grammar ParserRuleContext;
rule : 'test' x;
x : Identifier;
Identifier : [a-z]+;
在前者中,我可以将"rule"作为公共字段(Token类型的值)访问。在后者中,我将其作为一个方法访问(值类型RuleContext扩展了ParserRuleContext)。最终结果是通过getText()获取的,因此最终结果没有什么不同。问题是我应该使用哪个,以及为什么?
Token变体更紧凑。
我认为第二种变体没有任何优势。然而,在我看来,这是一个品味问题。