我是ANTLR的新手。我才发现,原来这是可能的标记每个替代在生产像这样:为什么ANTLR要求标记全部或者没有选项?
foo
: a # aLabel
| b # bLabel
| // ...
;
不过,我觉得不愉快的是全或无的选择必须贴有标签。我最近只需要为20多家分公司标注2种产品的替代品,而我最终为其他产品标注了# stubLabel
。是否有任何理由说明为什么所有标签都没有标签?
我是ANTLR的新手。我才发现,原来这是可能的标记每个替代在生产像这样:为什么ANTLR要求标记全部或者没有选项?
foo
: a # aLabel
| b # bLabel
| // ...
;
不过,我觉得不愉快的是全或无的选择必须贴有标签。我最近只需要为20多家分公司标注2种产品的替代品,而我最终为其他产品标注了# stubLabel
。是否有任何理由说明为什么所有标签都没有标签?
只要你添加一个标签ANTLR4将不再生成该规则对每个ALT上下文类,而是个别的上下文类。这不能混合使用(例如,对于整个规则以及仅在某些alt中同时存在上下文)。一旦开始使用标签并且不再生成规则上下文,则必须为所有的alt生成上下文,否则将会丢失某些内容。