Struttura di un compilatore

Un compiler รจ un programma che ha come input un altro programma.

La compilazione si compone di diverse fasi, approfondite di seguito.

Analisi lessicale (scanner)

Questa fase controlla che gli operatori e la sintassi siano corretti avvalendosi di una symbol table (come quella realizzata nel compiler del progetto di Architettura), controlla che gli identificatori siano corretti e che il lessico sia ammissibile.

Riempie parzialmente la symbol table con gli identificatori di variabili, di procedure, ecc.

Come output produce la lista dei token (ovvero i componenti sintattici primitivi).

Analisi sintattica (parser)

La lista di token viene data in pasto all'analizzatore sintattico, che procede a:

Produce in output l'albero di derivazione del programma, riconoscendo se le frasi sono sintatticamente corrette.

Analisi semantica

Esegue dei controlli di semantica statica per rilevare eventuali errori semantici.

Genera in output l'albero di derivazione aumentato.

Generazione della forma intermedia