• Non ci sono risultati.

1 Compilatore Compilatore

N/A
N/A
Protected

Academic year: 2021

Condividi "1 Compilatore Compilatore"

Copied!
7
0
0

Testo completo

(1)

Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio

Compilatore

Un programma sorgente deve essere ‘tradotto’ in linguaggio macchina per poter essere eseguito

Un compilatore è un programma che esegue questa ‘traduzione’ generando un programma oggetto

Il compilatore effettua la traduzione sulla base del lessico, sintassi e semantica del linguaggio di programmazione usato per il programma sorgente

Il programa sorgente è costituito da una sequenza di simboli appartenenti al lessico del linguaggio di programmazione usato (caratteri alfabetici, cifre, simboli di

operatori, …) che è opportunamente analizzata dal compilatore per produrre le sequenze binarie formanti il programma oggetto

In un programma è possibile riconoscere:

Componenti lessicali, quali parole chiavi, operatori, nomi di variabili e di costanti

Istruzioni, formate da opportune sequenze di componenti lessicali secondo i costrutti sintattici del linguaggio di programmazione.

Possono essere distinte in istruzioni di tipo dichiarativo (definenti gli elementi da elaborare quali tipi, variabili, etc.) e istruzioni di tipo esecutivo (definenti le azioni elaborative)

Compilatore

(2)

Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio

Per effettuare la traduzione il compilatore usa e genera alcune tabelle, tra cui:

Tabella dei codici operativi: riporta gli elementi corrispondenti ad operatori ed i relativi codici macchina. E’ una tabella statica.

Tabella degli pseudocodici: tabella statica per far corrispondere a ciascun pseudocodice l’indirizzo di inizio di un programma (o sottoprogramma) che esegue le operazioni richieste dallo specifico pseudocodice.

Compilatore

Tabella dei simboli: tabella dinamica che fa corrispondere a ciasuno dei nomi simbolici del programma sorgente (nomi di variabili, di costanti, …) informazioni descriventi le proprietà associate a quel nome, quali:

- Tipo

- indirizzo di memoria assegnato - dimensione

- ….

Compilatore

(3)

Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio

Compilatore

La traduzione è effettuata mediante tre fasi:

- analisi lessicale - analisi sintattica - analisi semantica

È analizzata la sequenza di caratteri costituenti ciascuna istruzione e sono identificati i simboli effettivi (token), quali nomi di identificatori, costanti, operatori, parole chiavi, delimitatori, …

E’ costruita/aggiornata la tabella dei simboli

E’ effettuata la conversione delle costanti nella rappresentazione interna

Sono identificati e diagnosticati errori di tipo lessicale

Analisi Lessicale

(4)

Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio

Esempio:

ALFA =AA + 50;

A L F A = A A + 50 ; A L F A = A A + 50 ; i d o i o c d

i = identificatore d = delimitatore c = costante o = operatore

Analisi Lessicale

Tabella simboli:

Token Classe Tipo Occupazione Indirizzo

ALFA VARIABILE INT 2 BYTE

AA VARIABILE INT 2 BYTE

Analisi Lessicale

Esempio:

int ALFA, AA;

(5)

Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio

Analisi Sintattica

E’ analizzata la sequenza dei token e degli altri simboli risultanti dall’analisi lessicale per verificarne la sintassi

Essi sono raggruppati in strutture sintattiche (alberi sintattici) per ottenere forme più generali delle istruzioni.

Tale rappresentazione è usata per classificare ciascuna istruzione.

Sono identificati e diagnosticati errori sintattici

Analisi Sintattica

Esempio: ALFA =AA + 50;

ALFA =

AA 50

+

i =

i c

+

<identificatore> = <espressione>

Espressione Operatore di

assegnazione

Classificata come calcolo ed assegnazione

Nella istruzione: A = B * (C+H));

è riconosciuto un errore di sintassi

(6)

Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio

Analisi Semantica

E’ effettuata la verifica semantica dell’istruzione e se questa è corretta viene generato il codice macchina.

Esempi di violazioni semantiche sono:

Operazioni tra operandi di tipo non compatibile b+c con b stringa e c intero

… ma non in C …

Operandi non validi per gli operatori cui sono applicati b*c con b e c di tipo stringa

Uso di variabili non dichiarate Violazioni della cardinalità di array

Analisi Semantica

Token Classe Tipo Occupazione Indirizzo

ALFA VARIABILE INT 2 BYTE 8000

AA VARIABILE INT 2 BYTE 8004

50 COSTANTE INT 1 BYTE

Esempio: ALFA =AA + 50;

(7)

Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio

Programma Sorgente

Programma Oggetto

Analizzatore Lessicale

Analizzatore Sintattico

Analizzatore Semantico

TABELLE Sequenza

caratteri

Sequenza Token

Generatore Testo oggetto

Albero Sintattico

COMPILATORE

Riferimenti

Documenti correlati

Se avete capito come funziona avrete anche capito che ho dovuto chiamarlo fotografia2 perchè essendo possibile usare lo stesso ID una sola volta per pagina con id fotografia è

Classi di token (dipendono dal linguaggio) - Keywords: un token per ogni parola chiave - Operators: vari token per gli operatori - Identifers: un token per tutti gli identificatori.

Minnie Cervino Biancaneve Per ciascuna categoria generica, trova almeno tre nomi propri.. COMPAGNI DI

 Se il codice sorgente non contiene errori, l'invocazione del comando (1) produce nella directory corrente un file chiamato &#34;a.out&#34;, che è il risultato della

• Si ritorni alla finestra del prompt di MS-DOS e si verifichi la presenza del file hello.c nel direttorio corrente (comando “dir”).. • Si visualizzi il contenuto di tale

Fra le città italiane Milano è la città più cara per gli affitti universitari, seguita dalle città di Genova, Bologna e Torino dove una camera singola, in centro o vicino alle

Collega ciascuna parola al significato corrispondente. Scolaresca insieme

“romantica” delle professioni di aiuto) ma indiscutibilmente utili – che permettono la “sopravvivenza” mentale (oltre che fisica) degli operatori i quali, nel loro