我是ANTLR的新手。我才發現,原來這是可能的標記每個替代在生產像這樣:爲什麼ANTLR要求標記全部或者沒有選項?
foo
: a # aLabel
| b # bLabel
| // ...
;
不過,我覺得不愉快的是全或無的選擇必須貼有標籤。我最近只需要爲20多家分公司標註2種產品的替代品,而我最終爲其他產品標註了# stubLabel
。是否有任何理由說明爲什麼所有標籤都沒有標籤?
我是ANTLR的新手。我才發現,原來這是可能的標記每個替代在生產像這樣:爲什麼ANTLR要求標記全部或者沒有選項?
foo
: a # aLabel
| b # bLabel
| // ...
;
不過,我覺得不愉快的是全或無的選擇必須貼有標籤。我最近只需要爲20多家分公司標註2種產品的替代品,而我最終爲其他產品標註了# stubLabel
。是否有任何理由說明爲什麼所有標籤都沒有標籤?
只要你添加一個標籤ANTLR4將不再生成該規則對每個ALT上下文類,而是個別的上下文類。這不能混合使用(例如,對於整個規則以及僅在某些alt中同時存在上下文)。一旦開始使用標籤並且不再生成規則上下文,則必須爲所有的alt生成上下文,否則將會丟失某些內容。