2013-04-04 15 views
8

Ho una grammatica ANTLR3 che costruisce un albero di sintassi astratto. Sto esaminando l'aggiornamento a ANTLR4. Tuttavia, sembra che ANTLR4 costruisca solo alberi di analisi e non alberi di sintassi astratti. Ad esempio, l'opzione output=AST non viene più riconosciuta. Inoltre, né "AST""sintassi astratta" viene visualizzato nel testo di "Il riferimento ANTLR4 definitivo".Come posso costruire un AST usando ANTLR4?

Mi chiedo se mi manca qualcosa.

La mia applicazione attualmente sa come eseguire la scansione sull'AST prodotto da ANTLR3. Cambiarlo per elaborare un albero di analisi non è impossibile, ma sarà un po 'di lavoro. Voglio essere sicuro che sia necessario prima di iniziare questa strada.

+0

Alla fine è stata data una risposta a http://stackoverflow.com/questions/29971097/how-to-create-ast-with-antlr4 – James

risposta

7

ANTLR 4 produce alberi di analisi basati sulla grammatica anziché AST basati su operatori AST arbitrari e/o regole di riscrittura. Ciò consente a ANTLR 4 di produrre automaticamente le interfacce di ascoltatore e visitatore che è possibile implementare nel codice utilizzando la grammatica.

Il cambiamento può essere drammatico per gli utenti che aggiornano le applicazioni esistenti dalla versione 3, ma nel complesso il nuovo sistema è molto più facile da usare e (soprattutto) mantenere.

+0

Grazie. Posso capire i vantaggi del nuovo sistema ed è per questo che mi piacerebbe aggiornarlo. Sono disposto a fare ciò che è necessario per farlo accadere. Volevo solo essere sicuro di aver capito la situazione prima di intraprendere questo sforzo. Suona come me. –

+0

Posso prendere 'ParserRuleContext' come nodo di AST? – jiamo

Problemi correlati