Corso di Teoria della Computazione

Working in progress...
 

Progettazione di un Compilatore

Definizione

Definiamo compilatore “un programma che converte un programma sorgente in un programma target”

Figura 1 - Definizione di compilatore

Suddivisione logica

La progettazione di un compilatore è “logicamente” [1] suddivisa in:

-         Analisi, la quale è a sua volta suddivisa in:

o       Analisi Lessicale, che si occupa:

§         Di riconoscere le stringhe di caratteri e di classificarle in token e quindi trasformare il programma in una sequenza di token.

§         Di riconoscere gli errori di digitazione delle parole.

o       Analisi Sintattica, che si occupa:

§         Di verificare il corretto uso delle regole della grammatica del linguaggio.

o       Analisi Semantica, che si occupa:

§         Di verificare che il programma abbia senso.

-         Sintesi

o       Generazione Codice Intermedio, dove il codice viene tradotto in una forma più facile da tradurre nel linguaggio target.

o       Ottimizzazione di Codice, che si occupa di ridurre il numero di istruzioni, eliminando quelle ritenute inutili.

o       Generazione Codice, dove il programma viene tradotto in codice target.

 

Esempio di una compilazione di un programma

Supponiamo di voler compilare la seguente istruzione:

 

position := initial + rate * 60

 

Analisi Lessicale

id1 := id2 + id3 * 60

 

Analisi Sintattica

 

 

 

Analisi Semantica

 

 

 

Generazione di Codice Intermedio

 

Temp1 := IntToReal(60)

Temp2 := Id3 * Temp1

Temp3 := Id2 + Temp2

Id1 := Temp3

 

 

Ottimizzazione di Codice

 

Temp2 := id3 * IntToReal(60)

Id1 := Id2 + Temp2

 

 

Generazione di Codice

 

MOVF Id3, R2

MULF #60.0, R2

MOVF Id2, R1

ADDF R2, R1

MOVF R1, Id1

 

 



[1] Nella fase di realizzazione del compilatore non viene utilizzata questa suddivisione. Utilizziamo questa suddivisione per semplificarne la progettazione.

Print | posted on martedì 5 ottobre 2004 01:09

Comments on this post

# Teoria della Computazione

Requesting Gravatar...
Left by Beyond the Good and Evil on ott 04, 2004 11:11

# Teoria della Computazione

Requesting Gravatar...
Left by Beyond the Good and Evil on ott 04, 2004 11:12
Comments have been closed on this topic.