Conversione di ANTLR AST in bytecode Java utilizzando ASM

3

Attualmente sto provando a scrivere il mio compilatore, prendendo di mira la JVM.

Ho completato la fase di analisi utilizzando le classi Java generate da ANTLR , e avere un AST del codice sorgente da cui lavorare (An ANTLR "CommonTree", in particolare). Sto usando ASM per semplificare la generazione del bytecode.

Qualcuno potrebbe dare una panoramica generale su come convertire questo AST in bytecode?

La mia strategia attuale è esplorare l'albero, generando un codice diverso a seconda del nodo corrente (usando "Tree.getType ()").

Il problema è che posso riconoscere i token dal mio lexer in questo modo, piuttosto che schemi più complessi dal parser.

C'è qualcosa che mi manca, o mi sto semplicemente avvicinando a questo sbagliato?

    
posta Nick 08.03.2012 - 02:50
fonte

2 risposte

3

Questo è semplicemente un argomento troppo grande da coprire in un forum Q / A. Devi comprare / prendere in prestito e leggere un libro di testo sulla scrittura del compilatore che ha una buona copertura della generazione del codice.

The problem is that I can only recognise tokens from my lexer this way, rather than more complex patterns from the parser.

Non lo capisco. Vuoi dire che non hai un tavolo dei simboli? In caso contrario, ne avrai bisogno. Un buon libro spiegherà questo concetto e come implementarlo.

Se qualcuno volesse suggerire un libro di testo aggiornato, sentiti libero. (Ho una copia del Libro del Drago ... ma è piuttosto datato.)

    
risposta data 08.03.2012 - 03:06
fonte
2

Sto facendo qualcosa seguendo le stesse linee. Raccomando Pragmatic's ANTLR The Definitive Guide e anche Pragmatic's Language Implementation Patterns entrambi disponibili sul loro sito web (con cui ho zero connessioni). Direi che entrambi questi libri presi insieme sono migliori del Dragon

    
risposta data 11.06.2012 - 16:34
fonte

Leggi altre domande sui tag