Вопрос о том, как получить доступ к текущему узлу дерева внутри {"action"}
блок в грамматике.Как получить доступ к текущему узлу дерева внутри грамматики?
Я говорю о Java
цели, поэтому внутри сгенерированное правило, метод, который я хотел бы получить доступ к объекту root_1
(см ниже, стандартный сгенерированный код, SUBJECT
здесь лексема внутри моей грамматики, это не имеет значения):
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SUBJECT, "SUBJECT"), root_1);
adaptor.addChild(root_1, stream_noun.nextTree());
adaptor.addChild(root_0, root_1);
}
Внутри грамматики Я хотел бы иметь возможность сделать что-то вроде:
subject : noun -> ^(SUBJECT noun) { ... place code here to work with `root_1` object ... } ;
Может кто-нибудь предложить какие-либо идеи? Благодарю.
Хорошо, спасибо за ваш ответ. Но, как я вижу, '$ tree' - это просто ссылка на переменную' root_0'. Он также может быть помещен только в конструкцию '@ after' (до этого он содержит только значение« null »). Итак, мой вопрос все еще открыт, потому что я ищу красивый способ получить ссылку на переменную 'root_1'. – Andremoniy
Кроме того, поскольку '$ tree' на самом деле' retval.tree = root_0', его также нужно отличить от типа CommonTree. – Andremoniy
@Andremoniy вам нужно установить опцию 'options {ASTLabelType = CommonTree;}' для '$ tree' для этого типа. –