antlr разница между двумя правилами перезаписи ID INT и ^(INT ID)

В документации antlr я вижу два следующих правила, но их описание звучит совершенно одинаково. В чем разница между этими двумя правилами...

a : INT ID -> ID INT ; // reorder nodes
a : ^(ID INT) -> ^(INT ID) ; // flip order of nodes in tree

Кроме того, почему бы не написать второе правило, подобное этому, или оно будет таким же, как первое правило, и поэтому нет никакой разницы между правилами?

a : ^(INT ID) -> ^(ID INT) ;

спасибо, Дин

1 ответ

Решение
  • ^(INT ID) средства INT это корень, и ID ребенок.
  • INT ID означает оба INT а также ID являются дочерними узлами.
Другие вопросы по тегам