Analisi Sintattica Ruolo dell'analizzatore sintattico: Classificazione degli analizzatori sintattici per grammatiche libere dal contesto: 1. Universali inefficienti 2. Top-down 3. Bottom-up Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 1 Analizzatore lessicale programma sorgente simbolo next() Analizzatore sintattico Symbol Table Resto del Front-End albero sintattico codice intermedio intermedia
13
Embed
Knowledge Discovery nella Diagnosi di Sistemi Attivi · Relazione fra Alberi Sintattici e Derivazioni Albero sintattico = rappresentazione grafica di una derivazione indipendentemente
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Analisi Sintattica
Ruolo dell'analizzatore sintattico:
Classificazione degli analizzatori sintattici per grammatiche libere dal contesto:
1. Universali inefficienti
2. Top-down
3. Bottom-up
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 1
Analizzatorelessicale
programma sorgente
simbolo
next()
Analizzatoresintattico
SymbolTable
Resto del Front-End
albero sintattico
codice intermediointermedia
Derivazioni
Processo con cui G definisce L operativamente (strumento generativo)
Derivazione: Idea precisa della costruzione top-down dell'albero sintattico Produzione vista come una regola di riscrittura: A : A sostituito da
Derivazione di (id) da E = dimostrazione che (id) è una istanza di E (frase, se derivata dall'assioma)
Generalizzazione: 1 2 n 1 deriva n (in più passi)
Notazione
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 2
deriva in un passo
deriva in zero o più passi
deriva in uno o più passi
*
derivazione
albero sintattico
E E E deriva E (forma sentenziale)
E * E (E) * E
E E (E) (id) (frase)
E E + E | E * E | (E) | E | id
+
Derivazioni (ii)
Possibile derivare una frase in diversi modi
Derivazioni canoniche
S forma sentenziale sinistra
S forma sentenziale destra
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 3
sinistra
destraad ogni passo, sostituzione del nonterminale più a
sinistra
destra
s
d
*
d
*
s
Relazione fra Alberi Sintattici e Derivazioni
Albero sintattico = rappresentazione grafica di una derivazione indipendentemente dall'ordine scelto nelle sostituzioni (rappresentazione più diretta della derivazione)
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 4
E
E
( E )
E + E
id id
E E + E | E * E | (E) | E | id
Variazioni nell'ordine in cui le produzioni sono applicate possono essere eliminate considerando le derivazioni canoniche
Ogni albero sintattico è associato ad una sola derivazione canonica (sinistra e destra)
G ambigua: quando frase associata a più alberi sintattici associata a più derivazioni canoniche
Relazione fra Alberi Sintattici e Derivazioni (ii)
1. E E + E id + E id + E * E id + id * E id + id * id
2. E E * E E E * E id + E * E id + id * E id + id * id
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 5
E E + E | E * E | (E) | E | id possibile derivare canonicamente in più modiid + id * id
Algoritmo per l'eliminazione della ricorsione sinistra:
Hp: G senza
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 9
cicli: A AA
+
condizione sufficiente
Ordina i nonterminali: A1, A2, ..., An;
for i=1 to n do
for j=1 to i-1 do
Sostituisci ogni produzione Ai Aj con le produzioni Ai 1 | 2 | ... | k, in cui Aj 1 | 2 | ... | k sono tutte le produzioni correnti di Aj
end-for;
Elimina le eventuali ricorsioni sinistre dirette nelle produzioni di Ai
end-for.
A1
A2
.
.
.
Aj
.
.
.
Ai
.
.
.
An
Ricorsione Sinistra (iii)
Ordinamento: A1 = S, A2 = A, A3 = B
i = 1: Eliminazione delle ricorsioni dirette di S
i = 2: Sostituzione di A2 A1 = A S
Eliminazione delle ricorsioni dirette di A
i = 3: j = 1: Sostituzione di A3 A1 = B Sg con B Aag | bg
j = 2: Sostituzione di A3 A2 = B Aag con B Bf | BdA’ag | eA’ag | bg | h
Eliminazione delle ricorsioni dirette di B
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 10
S Aa | bA Ac | Bd | eB Bf | Sg | h
A BdA’ | eA’
A’ cA’ |
S Aa | bA BdA’ | eA’A’ cA’ | B Bf | Sg | h
S Aa | bA BdA’ | eA’A’ cA’ | B Bf | Aag | bg | h
S Aa | bA BdA’ | eA’A’ cA’ | B eA’agB’ | bgB’ | hB’B’ fB’ | dA’agB’ |
Relazione tra Grammatiche ed Espressioni Regolari
espressione regolare G equivalente
Algoritmo per generare G partendo dall'NFA = (, S, T, s0, F)
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 11
(a | b)*abb a b b1 2 3 4
a
b
A1 aA1 | bA1 | aA2
A2 bA3
A3 bA4
A4
stato i S, crea un nonterminale Ai;
transizione i j T, crea una produzione Ai aAj;
stato finale i F, crea una produzione Ai ;
Assioma di G = nonterminale corrispondente ad s0.
a
2 3
Tabella degli Operatori e Grammatica delle Espressioni
Regole di precedenza / associatività: stabiliscono gli operandi di ogni operatore
G per espressioni: specificabile sulla base della tabella degli operatori
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 12
precedenze
Associazione Operatori Nonterminale
sinistra + expr
sinistra * term
livello di precedenza nonterminale
Ulteriore nonterminale factor per le unità di base
expr expr + term | expr – term | term
term term * factor | term / factor | factor
factor digit | (expr)
precedenza crescente factor
associazioni
Tabella degli Operatori e Grammatica delle Espressioni (ii)Data la seguente tabella degli operatori, con precedenza crescente dall'alto verso il basso:
specificare la BNF del corrispondente linguaggio delle espressioni sulla base dei seguenti requisiti:
• gli elementi atomici della espressione sono costanti o identificatori;
• la precedenza / associatività relativa a + e * può essere alterata dalle parentesi;
• la precedenza / associatività relativa a and e or non può essere alterata dalle parentesi.
Tecnologie dei Linguaggi Artificiali 4. Analisi sintattica 13
Operatori Associatività
and, or destra
<, > non associativo+, * sinistra
(a*(b+24)) > x+y and c < z+12 or (d+3)*4 > 10
Operatori Associatività Nonterminale
and, or destra E
<, > non associativo T+, * sinistra S
F
E T and E | T or E | TT S > S | S < S | SS S + F | S * F | FF id | num | ( S )