Der ANTLR 4 Parsergenerator können Gruppen von Übergängen kombinieren, um einen einzelnen „gesetzt Übergang“ in bestimmten Fällen zu bilden, wodurch statischen und dynamischen Speicher-Overhead sowie Verbesserung der Laufzeitleistung Dies kann nur auftreten, wenn alle Alternativen eines Blocks ein einzelnes Element oder einen Satz enthalten. Zum Beispiel kann der folgende Code INT
und FLOAT
in einen einzigen Übergang kombiniert werden:
// example 1
number
: INT
| FLOAT
;
// example 2, elements grouped into a set
primary
: '(' expression ')'
| (INT | FLOAT)
;
jedoch in der folgenden Situation können die Elemente nicht durch den Compiler kombiniert werden, so werden sie getrennt behandelt werden:
primary
: '(' expression ')'
| INT
| FLOAT
;
der Hinweis deutet darauf hin, Orte, an denen die einfache Zugabe von (
... )
genug ist, der Compiler zu ermöglichen, einen Satz zu kollabieren, die es sonst nicht in der Lage sein. Das Ändern des folgenden Codes würde die Warnung beheben.
expression
: expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| ( INT
| FLOAT
| BOOLEAN
| NULL
| ID
)
;