Я ищу способ узнать, использовалось ли дополнительное подчиненное правило или нет.Например:
my_rule returns [node* n = 0]:
(v = (optional_subrule)?)
{
$n = new node($v ? $v.n : MY_DEFAULT_VALUE);
}
;
Но это не работает.Я пытался написать это разными способами, и без написания кода, кажется, ничего не получается ...
my_rule returns [node* n = new node()]:
((optional_subrule { n->set_subrule(...); })?)
;
А когда у вас есть бизоновский фон, вам нравится иметь свои конструкторы ast узлов в конце ваших правил.... И это уменьшает читабельность (представьте себе гораздо большее правило).
Кто-нибудь знает, что я пропустил?
Спасибо.