Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La...

9
Traduzione cap2 1 CAP. 2 ANALISI LESSICALE • 2.1 Il ruolo dell'analizzatore lessicale • 2.2 La specificazione delle unità lessicali • 2.3 Il riconoscimento delle unità lessicali

Transcript of Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La...

Page 1: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 1

CAP. 2 ANALISI LESSICALE

• 2.1 Il ruolo dell'analizzatore lessicale

• 2.2 La specificazione delle unità lessicali

• 2.3 Il riconoscimento delle unità lessicali

Page 2: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 2

2.1 Il ruolo dell'analizzatore lessicale

programmainiziale

analizzatore lessicale

analizzatore sintattico

tabella dei simboli

unità lessicale

richiesta

Page 3: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 3

• Vantaggi della separazione lessicale-sintattica:

Modularità: chiarezza della concezione del compilatore migliorata analizzatore sintattico (centro del compilatore) più simplice efficacità migliorata (tecniche specifiche per trattamento lessicale) miglioramento della portabilità (meno sensibilità alle particolarità dell'alfabeto)

Trasmette all'analizzatore sintattico, sulla richiesta di esso, la parte necessaria all'analisi sintattica (unità lessicale)Trasmette per la fase di traduzione le caratteristiche delle unità lessicali (attributi): Inizializza la tabella dei simboli, trasmette il valore dei numeriRimuove gli spazi e i commenti

Page 4: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 4

Unità lessicale: categoria di oggetti simili numero, identificatore, operazione, assegnamento...Modello: descrive le regole di formazione di ogni unità lessicaleLessema: realizzazione particolare di una unità lessicale, conforme al modello

area := base*altezza/2

area := base * altezza / 2

Esempio:

22 caratteri, 7 unità lessicali di 4 tipi diversi

numerooperazioneidentificatoreassegnamento

2.2 La specificazione delle unità lessicali

Page 5: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 5

Esempi:

unità lessicale modello lessemi ammissibili

identificatore sequenza di caratteri area alfanumerici, cominciando x1a2

con una lettera

numero intero sequenza di cifre 205

assegnamento i due caratteri := :=

operazione uno dei caratteri + – * / * /

Page 6: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 6

Descrizione formale dei modelli lessicali: Espressioni regolari Parole fra

• Insiemi finiti di caratteri• Prodotti di concatenazione di tali insiemi• Unioni finite di tali insiemi• Chiusura transitiva di tali insiemi

Varianti e estensioni possibili

Chiuso per intersezione e complementazione (non ovvio)

Esempi: numeri interi 0 | {1 2 3 4 5 6 7 8 9}{0 1 2 3 4 5 6 7 8 9}*

o 0 | {1-9}{0-9}*

identificatore {a-z | A-Z}{a-z | A-Z | 0-9}*

Page 7: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 7

2.2 La riconoscenza delle unità lessicali

Casi semplici, diagramma

Esempio: identificatore

{a-z | A-Z}

{a-z | A-Z | 0-9}

Altro = riporre l'ultimo carattere letto sul flusso d'ingresso

Convenzione usata: leggere il numero massimo di caratteri

Altre convenzioni possibili

Page 8: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 8

Casi più generali: automi finiti.Teoria e algoritmi efficaci per trasformare una specificazione data sotto la forma di un'espressione regolare in un tale diagramma.Utilizzato negli editori di testi, programmi di ricerca di motivi nei testi.

Azioni associate: • trasmettere il tipo dell'unità lessicale riconosciuta • conservare le informazioni necessarie alla traduzione: rappresentazione interna del numero, operazione esatta, ...

Per gli identificatori: interazione colla tabella dei simboli inserire o verificare che una stringa è inserita nella tabella l'informazione necessaria per il traduttore è l'indice in questa tabella

Page 9: Traduzione cap2 1 CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale 2.2 La specificazione delle unità lessicali 2.3 Il riconoscimento delle.

Traduzione cap2 9

Questa tabella contiene informazioni su: • il nome effettivo dell'identificatore • altre entrate sul tipo, l'indirizzo, la portata, ... che vengono completate da fasi ulteriori.

Caso particolare delle "parole riservate" Queste, come if, then, for, ... possono essere entrate nella tabella dei simboli dall'inizio, prima della compilazione, coll'indicazione di ritornare un'unità lessicale speciale.

Il programma lex (o il suo variante flex) è un software che trasforma una descrizione di modelli come espressioni regolari in un'analizzatore lessicale. Le azioni sugli attributi sono incluse come istruzioni C.