作者:t53457078 | 来源:互联网 | 2023-02-01 12:51
我是ANTLR的新手。我刚刚发现,可以像这样在生产中标记每个替代品:
foo
: a # aLabel
| b # bLabel
| // ...
;
但是,我发现必须标记所有替代方案或不标记替代方案是令人不快的。最近,我只需要标记具有20个以上分支的产品中的2个替代品,最后我标记了每个其他替代品# stubLabel
。有什么理由要全部或不加标签?
1> Mike Lischke..:
一旦添加标签,ANTLR4将不再为该规则生成上下文类,而是为每个替代生成单独的上下文类。这不能混合使用(例如,具有整个规则的上下文,而同时仅具有某些替代项的上下文)。一旦开始使用标签并且不再生成规则上下文,则必须为所有替代生成上下文,否则将丢失某些内容。