Qual è il modo corretto per risolvere questo problema in ANTLR:Come trattare con i valori elenco ritorno in ANTLR
Ho una semplice regola grammaticale, diciamo per una lista con un numero arbitrario di elementi.
list
: '[]'
| '[' value (COMMA value)* ']'
Se avessi voluto assegnare un valore di ritorno per la lista, e che hanno valore sia ha l'elenco dei valori restituiti dalla produzione, qual è il modo corretto di farlo? Le alternative Sto divertenti sono:
- creare il mio stack nel ambito globale per tenere traccia di queste liste
- Provare a ispezionare i nodi della struttura sotto di me ed estrarre le informazioni in questo modo
- accesso in un modo agile e interessante che spero di scoprire in cui posso ottenere un facile accesso a tale elenco dall'azione associata alla regola.
Credo che la domanda sia: come fanno i ragazzi alla moda?
(FYI sto usando l'API Python per ANTLR, ma se mi ha colpito con un altro linguaggio, posso gestire tale)
E questo è molto vicino a come appare in Java, pure. Grazie! Tuttavia, Antlr mi ha richiesto di assegnare nomi a ciascun "valore": a = expr {$ valueList.add ($ a.value);} (b = expr {$ valueList.add ($ b.value);}) * –