ANTLR 4 parser generator może łączyć grupy przejściami tworząc pojedynczy „set przejście” w niektórych przypadkach zmniejszenie statyczne i dynamiczne obciążenie pamięci, jak również poprawa wydajności środowiska wykonawczego. Może się to zdarzyć tylko wtedy, gdy wszystkie alternatywy bloku zawierają pojedynczy element lub zbiór. Na przykład, następujące kod umożliwia INT
i FLOAT
być połączone w jednym przejściu:
// example 1
number
: INT
| FLOAT
;
// example 2, elements grouped into a set
primary
: '(' expression ')'
| (INT | FLOAT)
;
Jednakże w następującej sytuacji gdy elementy te nie mogą być łączone przez kompilator więc być traktowane oddzielnie:
primary
: '(' expression ')'
| INT
| FLOAT
;
Podpowiedź wskazują miejsca, w których proste dodanie (
... )
wystarczy pozwolić kompilator aby zwinąć zestaw, który w przeciwnym razie nie byłoby w stanie. Zmiana kodu na poniższe spowoduje usunięcie ostrzeżenia.
expression
: expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| ( INT
| FLOAT
| BOOLEAN
| NULL
| ID
)
;