мой язык для анализа содержит такие выражения, как
public var a, b = 42, c;
Т.е. файл .g выглядит примерно так:
statements
: (introduction | expression ';'! | ... )+
;
introduction
: head single+ -> ^(head single)+
;
single
: Name ('='^ expression)?
;
head
: modifiers* v='var' -> ^(VARIABLE[$v] modifiers*)
;
Создание такого дерева было бы простым, но в основном бесполезным (для меня):
----------statements----------
/ | \
variable variable variable
/ \ / \ / \
'public' 'a' 'public' '=' 'public' 'c'
/ \
'b' expr
Я хотел бы иметь '='
поверх среднего узла:
----------statements----------
/ | \
variable '=' variable
/ \ / \ / \
'public' 'a' variable expr 'public' 'c'
/ \
'public' 'b'
, но я не могу найти правило перезаписи, чтобы сделатьчто.