La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab.

Presentazioni simili


Presentazione sul tema: "Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab."— Transcript della presentazione:

1 Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab Lunghezza di una stringa X : |X| numero di simboli contenuti nella stringa A = {a,b} |aa| = 2 |bba| = 3 {  } : stringa vuota, composta da nessun simbolo

2 A : alfabeto A * ( chiusura di A) : insieme di tutte le frasi composte da simboli di A, inclusa la stringa vuota A + (chiusura positiva di A) = A * - {  } A = {a, b} A + = {a, ab, aa, aba, ….. } A * = { , a, ab, aa, aba, …. }

3 Il grosso gatto mangia il topo ( proposizione della lingua italiana ) IL GROSSO GATTO MANGIA IL TOPO ALBERO SINTATTICO

4 ALBERO SINTATTICO descrive la SINTASSI, cioè la struttura di una proposizione scomponendola nelle parti che la costituiscono   IL  GROSSO   MANGIA   GATTO | TOPO ---------------------------------------------------------------------------- simbolo NON TERMINALE ; simboli TERMINALI

5 GRAMMATICA Quadrupla G = ( V N, V T, P, S ) V N : insieme dei simboli non terminali V T : insieme dei simboli terminali P : produzioni S : START SYMBOL (simbolo distintivo), S  V N (parte sinistra di almeno una produzione) V N  V T = V (vocabolario) P : insieme di regole del tipo    ove   V +,   V *

6 Esempio V N = {, } V T = { 0, 1, 2 } S = P : a)  b)  c)  0 d)  1 e)  2 Deriviamo la seq. 012 0 1 2 b) a) c) d) e)

7 L’applicazione di una regola di P corrisponde ad una DERIVAZIONE Date 2 stringhe X e Y X produce direttamente Y ( X  Y ) Se esiste una regola    tale che X = a  b Y = a  b Per qualche a e b sottostringhe di X e Y (anche vuote)

8 * X produce Y ( X  Y ) Se esiste una sequenza di produzioni dirette tali che X  U 1  U 2  ……  U n = Y con n > 0     0  0 1  0 1 2 *  012 La lunghezza della derivazione è 6

9 Data una Grammatica con start symbol S G(S) Si dice forma sentenziale una qualunque stringa X derivabile da S * S  X Si dice PROPOSIZIONE una forma sentenziale di soli terminali Si dice LINGUAGGIO della grammatica G(S) * L = { X | S  X e X  V T +  Cioè = { stringhe formate da elementi di V T che possono essere derivati da S  ----------------------------------------------------------------------------- G( ) genera un linguaggio L = {0, 1, 2, 01, 12, 021012, ……  Il numero 1234 non fa parte del linguaggio L

10 Classificazione di CHOMSKY a) Grammatiche di Tipo 0 (Phrase Structure) Le produzioni sono del tipo    senza alcuna restrizione b) Grammatiche di Tipo 1 (Context Sensitive) Le produzioni possono avere la forma  1 A  2   1   2 con  1 e  2  V*,   V +, A  V N cioè A può essere espanso in  solo se appare nel contesto  1 e  2 c) Grammatiche di Tipo 2 (Context Free) Le produzioni sono del tipo A   con A  V N e   V + Cioè il simbolo a sinistra della produzione deve essere singolo, non terminale d) Grammatiche di Tipo 3 (Regular) Le produzioni sono del tipo A  a  oppure A  a con A e B  V N e a  V T Un linguaggio generato da una grammatica context free si dice context free ecc. La maggior parte del lavoro svolto nella teoria dei linguaggi formali si riferisce a linguaggi liberi dal contesto o a linguaggi regolari

11 Gerarchia delle grammatiche Ogni grammatica regolare è libera dal contesto Ogni grammatica libera dal contesto è dipendente dal contesto Ogni grammatica dipendente dal contesto è a struttura di frase Regolare  libera dal contesto  dipendente dal contesto  struttura di frase Libera dal contesto  dipendente dal contesto  struttura di frase Dipendente dal contesto  struttura di frase Struttura di frase. La stessa gerarchia è valida per i linguaggi relativi

12 Esempio (grammatica dipendente dal contesto) G = ( V N, V T, P, S) con V N =  S, B, C  V T =  a, b, c  S = Start symbol e P: 1)S  a S B C 2)S  a B C 3)C B  B C 4)A B  a b 5)b B  b b 6)b C  b c 7)c C  c c

13 Esempio (grammatica libera dal contesto) S  a B S  b A A  a A  a S A  b A A B  b B  b S B  a B B G = ( V N, V T, P, S) con V N =  S, A, B  V T =  a, b  S = Start symbol e P:

14 Esempio (grammatica regolare) S  0 A S  1 B A  0 A A  0 S A  1 B B  1 B B  1 B  0 S  0 G = ( V N, V T, P, S) con V N =  S, A, B  V T =  0, 1  S = Start symbol e P:

15 Esempio (grammatica regolare) G = ( V N, V T, P, S) con V N =  S, B  V T =  0, 1  S = Start symbol e P: S  0 B B  0 B B  1 S B  0

16 Una grammatica è RICORSIVA se esiste un algoritmo che determina, per qualunque parola W, se W è generata da G. Se G = ( V N, V T, P, S) è dipendente dal contesto, Allora è RICORSIVA Idem per grammatiche libere dal contesto e regolari

17 Esempio G = (  S, B, C ,  a, b, c , P, S) con P: S  a B Cb C  b c S  a S B C b B  b b C B  B Cc C  c c a B  a b Vogliamo verificare se w = a b a c appartiene a L(G) T0 =  S  T1 =  S, aSBC, aBC  T2 =  S, aSBC, aBC, abC  * non abbiamo messo aaSBCBC e aaBCBC T3 =  S, aSBC, aBC, abC, abc  perché più lunghe di 4 = l(w) T4 =  S, aSBC, aBC, abC, abc  Quindi abac NON APPARTIENE a L(G)

18 Una grammatica G è RIDOTTA se sono verificate le seguenti condizioni: + 1) G non consente derivazioni circolari del tipo A  A * 2)  A  V N, S   A  3)  A  V N, L A (G) non è vuoto : L A (G)   ---------------------------------------------------------------------------- Esempio G con P =  S  aASb, A  b  non genera alcuna frase Esempio G con P =  S  aASb, S  A, A  S, A  c  presenta la derivazione circolare S  A  S Si può ridurre: P 1 =  S  aSSb | c 

19 Esempio G con P =  S  a, S  b, A  b  Presenta un A  V N irragiungibile da S Si può ridurre a P 1 =  S  a, S  b  ---------------------------------------------------------------------------------- Esempio G = ( V N, V T, P, S) con V N =  E, T, F  ; V T =  i, +, *, (, )  ;  E  E + T | T P =  T  T * F | F  F  ( E ) | i Genera il linguaggio: L(G) =  i, i+i, i*i, (i+i)*i, ……  Questa grammatica rispetta implicitamente la priorità della moltiplicazione (*) rispetto alla somma(+)!

20 Derivazione della frase i + i * i E  E+T  T+T  F+T  i+T  i+T*F  i+F*F  i+i*F  i+i*i E E + T T T * F F F i i Albero sintattico

21 Grammatica con struttura inadeguata (?) E  E * T | T; T  T * F | F; F  V; V  a | b | c | ……| z E E * T V T + F a V V b c a * b + c ------------------------- ------------------------------------------ Analoga alla precedente ma con priorità somma rispetto al prodotto

22 Alberi di derivazione ( sintattici) Se G = ( V N, V T, P, S ) è una grammatica libera dal contesto Un albero è un ALBERO DI DERIVAZIONE per G se: Ogni nodo ha una label che è simbolo di V = V N  V T La label della radice è S Se un nodo n ha almeno un discendente e ha label A, allora A  V N Se i nodi N 1, N 2, … N k sono diretti discendenti del nodo n, in ordine da sinistra, con labels A 1, A 2, … A k, allora A  A 1 A 2 … A k I nodi finali sono simboli terminali

23 Un albero di derivazione descrive una particolare forma sentenziale della grammatica G Esempio G = (  S,A ,  a, b , P, S) Con P: S  a A S A  S b A A  S S S  a A  b a S a A S S b A a a b a Risultato dell’albero : a a b b a a S  aAS  aSbAS  aabAS  aabbaS  aabbaa

24 Una grammatica G = ( VN, VT, P, S) è una grammatica LIBERA DAL CONTESTO se e solo se * Per    e S   (sequenza di produzioni dirette) C’è un albero di derivazione in G con risultato 

25 Una frase X L(G) è detta AMBIGUA se è generata da G con almeno due alberi sintattici distinti. Allora anche G è AMBIGUA. Sia G con P =  E  E+E, E  E*E, E  (E), E  i  E E + E E + E i i i E E + E i E + E i i La frase i +i + i è AMBIGUA

26 Il problema dell’ambiguità delle grammatiche è NON DECIDIBILE Cioè non esiste un algoritmo generale per verificare se una grammatica sia ambigua o meno. Condizione necessaria per la non-ambiguità di una grammatica G libera dal contesto è che non esista un simbolo + U  V N tale che U  U

27 Altro esempio di grammatica ambigua E E + E E + E V V V e a b E E + E V E + E a V V b c E  E + E | E * E | V ; V  a | b| ….. | z


Scaricare ppt "Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab."

Presentazioni simili


Annunci Google