Grammatiche Altro metodo per generare insiemi di stringhe

  • Slides: 22
Download presentation
Grammatiche Altro metodo per generare insiemi di stringhe Una grammatica è, intuitivamente, un insieme

Grammatiche Altro metodo per generare insiemi di stringhe Una grammatica è, intuitivamente, un insieme di regole che permettono di generare un linguaggio. Un ruolo fondamentale tra le grammatiche è costituito dalle grammatiche libere dal contesto (Context-Free - CF), mediante le quali viene solitamente descritta la sintassi dei linguaggi di programmazione.

Una Grammatica di tipo 0 (o a struttura di frase) (V ∪ T)+ (regola

Una Grammatica di tipo 0 (o a struttura di frase) (V ∪ T)+ (regola di riscrittura)

Nel seguito useremo la seguente notazione V = {A, B, . . . }

Nel seguito useremo la seguente notazione V = {A, B, . . . } variabili non terminali �� = {a, b, . . . } simboli terminali

Esempio

Esempio

Molto più complicato di prima ottenere le stringhe del linguaggio: 6

Molto più complicato di prima ottenere le stringhe del linguaggio: 6

n=3 a 3 b 3 a 3 a. SBA aa. SBABA aaab. ABABA aaab.

n=3 a 3 b 3 a 3 a. SBA aa. SBABA aaab. ABABA aaab. BABAA aaab. BBAAA aaabbb. AAA aaabbbaa. A aaabbbaaa (1) (2) (3) (3) (4) (5) (6) n-1 n-1

L'insieme si dice ricorsivamente enumerabile se CA è parzialmente computabile, cioè se 'x A'

L'insieme si dice ricorsivamente enumerabile se CA è parzialmente computabile, cioè se 'x A' è semidecidibile in altre parole:

A sinistra ci sono solo variabili I simboli terminali stanno solo a destra

A sinistra ci sono solo variabili I simboli terminali stanno solo a destra

Tipo 2 - CF Grammatiche di Tipo 2 libere dal contesto (Context Free -

Tipo 2 - CF Grammatiche di Tipo 2 libere dal contesto (Context Free - CF) Rappresentano facilmente stringhe con struttura ottenibile mediante ricorsione Usate inizialmente per studiare la struttura delle lingue naturali Applicazioni: parser per compilatori e interpreti

Tipo 2 - CF A sinistra ci sono solo variabili invece che Un linguaggio

Tipo 2 - CF A sinistra ci sono solo variabili invece che Un linguaggio generato da una grammatica Context Free si chiama Context Free Language (CFL)

Tipo 2 - CF Esempio di derivazione Rappresentazione mediante albero di derivazione della stringa

Tipo 2 - CF Esempio di derivazione Rappresentazione mediante albero di derivazione della stringa 000#111

Tipo 2 - CF Rappresentazione mediante albero di derivazione della stringa ((0 or 1)

Tipo 2 - CF Rappresentazione mediante albero di derivazione della stringa ((0 or 1) and (not 0))

Altro esempio Tipo 2 - CF

Altro esempio Tipo 2 - CF

Tipo 2 - CF

Tipo 2 - CF

Tipo 2 - CF Altro esempio

Tipo 2 - CF Altro esempio

Tipo 2 - CF

Tipo 2 - CF

Forma normale di Chomsky Ogni produzione è nella forma: A �BC A, B, C∈V

Forma normale di Chomsky Ogni produzione è nella forma: A �BC A, B, C∈V A ��� �� simbolo terminale Nota: B e C non possono essere variabili iniziali; si accetta la produzione S ��� con S variabile iniziale Si può dimostrare che ogni CFG può essere resa in forma normale

Teorema (senza dim. ): Un linguaggio è Context Free se e solo se può

Teorema (senza dim. ): Un linguaggio è Context Free se e solo se può essere generato da una macchina non deterministica con 1 memoria pushdown (automa a pila) Linguaggi regolari Automi a stati finiti (DFA) Automi non-deterministici (NFA) Grafi di Transizione (GT) Espressioni Regolari (ER) Linguaggi CF Macchina non deterministica con 1 memoria pushdown

A struttura di frase CF Regolari

A struttura di frase CF Regolari

Gerarchia delle grammatiche di Chomsky Struttura di frase (tipo 0) Sensibile al contesto (tipo

Gerarchia delle grammatiche di Chomsky Struttura di frase (tipo 0) Sensibile al contesto (tipo 1) Libere dal contesto - CF (tipo 2) Regolari (tipo 3)

Gerarchia delle potenze Macchine non deterministiche di Turing – Macchine finite non deterministiche con

Gerarchia delle potenze Macchine non deterministiche di Turing – Macchine finite non deterministiche con due memorie push-down || Macchine di Turing – Modello RAM – Macchine di Post – Macchine finite con due memorie push-down {an bn an | n ≥ 0} > Macchine finite non deterministiche con una memoria push-down > Macchine finite con una memoria push-down {w w. R | w∈{a, b}* } {an bn | n ≥ 0} > Macchine finite non deterministiche senza memorie push-down || Macchine finite senza memorie push-down || Automi finiti