Il generatore parser ANTLR 4 può combinare gruppi di transizione per formare un unico "transizione set" in taluni casi, riducendo il carico di memoria statica e dinamica, nonché migliorare le prestazioni di runtime. Questo può accadere solo se tutte le alternative di un blocco contengono un singolo elemento o insieme. Ad esempio, il seguente codice consente INT
e FLOAT
per essere combinati in un unico passaggio:
// example 1
number
: INT
| FLOAT
;
// example 2, elements grouped into a set
primary
: '(' expression ')'
| (INT | FLOAT)
;
Tuttavia, nella seguente situazione gli elementi non possono essere combinati dal compilatore in modo da essere trattati separatamente:
primary
: '(' expression ')'
| INT
| FLOAT
;
il suggerimento suggerisce luoghi in cui la semplice aggiunta di (
... )
è sufficiente per permettere al compilatore di crollare un set che sarebbe altrimenti non essere in grado di. L'alterazione del codice di seguito avrebbe indirizzato l'avviso.
expression
: expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| ( INT
| FLOAT
| BOOLEAN
| NULL
| ID
)
;
fonte
2013-04-26 13:35:52