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
являются дочерними узлами.