statik ve dinamik hafıza yükünü azaltarak, bazı durumlarda tek bir "set geçişi" oluşturmak üzere geçişlerin gruplarını birleştirebilir ANTLR 4 ayrıştırıcı jeneratör bahsediyorum koddur çalışma zamanı performansını iyileştirmek. Bu, yalnızca bir bloğun tüm alternatifleri tek bir öğe veya set içerdiğinde gerçekleşebilir. bunlar ayrı ayrı tedavi edilmeleri için elemanlar derleyici tarafından birleştirilemez aşağıdaki durumda,
// example 1
number
: INT
| FLOAT
;
// example 2, elements grouped into a set
primary
: '(' expression ')'
| (INT | FLOAT)
;
Ancak: Örneğin, aşağıdaki kod INT
ve FLOAT
tek geçiş halinde birleştirilebilir sağlar
primary
: '(' expression ')'
| INT
| FLOAT
;
ipucu (
basit eklenmesi ... )
derleyici aksi mümkün olmazdı bir dizi daraltmak için izin verecek kadar olan yerleri göstermektedir. Kodunuzu aşağıdaki şekilde değiştirmek, uyarıya hitap eder.
expression
: expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| ( INT
| FLOAT
| BOOLEAN
| NULL
| ID
)
;