Вам нужно пометить альтернативы правил , чтобы получить эту специфику. Язык грамматики ANTLR предоставляет альтернативную метку, которая выглядит как комментарий Python, как показано ниже:
effectiveAddress16 : 'byte [' (BX '+' SI # effAddBXSI
| BX '+' DI # effAddBXDI
| BP '+' SI # effAddBPSI
| BP '+' DI # effAddBPDI
| SI # effAddSI
;
Когда вы сделаете это и восстановите своего посетителя и / или слушателя, вы найдете методы для переопределения для каждой из этих конкретных альтернатив для правила. Таким образом, вместо генерации одного обработчика для effectiveAddress16
, вы получите один обработчик для каждой из помеченных альтернатив. Тогда вы точно знаете, какой из них соответствует.