После https://github.com/antlr/antlr4/blob/master/doc/parser-rules.md#rule-element-labels существует ли способ явного добавления поля в объект контекста правила?
Мой вариант использования - это последовательность точек и идентификаторов:
dotIdentifierSequence
: identifier dotIdentifierSequenceContinuation*
;
dotIdentifierSequenceContinuation
: DOT identifier
;
Часто мы хотим иметь дело с «полным путем» структуры dotIdentifierSequence
. Atm это означает использование DotIdentifierSequenceContext#getText
. Однако DotIdentifierSequenceContext#getText
обходит дерево, посещая каждый подузел, собирая текст.
Метки правил, как обсуждалось на этой странице документа, позволили бы мне сделать:
dotIdentifierSequence
: i:identifier c+=dotIdentifierSequenceContinuation*
;
и добавить поля i
и c
в DotIdentifierSequenceContext. Однако, чтобы получить полный текст структуры, мне все равно придется посетить узел i
и каждый узел c
.
Что было бы замечательно - это иметь возможность определять строковое поле «полный текст последовательности» для DotIdentifierSequenceContext и DotIdentifierSequenceContinuationContext.
Возможно ли это сегодня каким-либо образом?