Le grammatiche formali

Похожие документы
Definizione di Grammatica

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi

Grammatiche Parse trees Lezione del 17/10/2012

Pumping lemma per i linguaggi Context-free

Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica G=(V n,v t

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

GRAMMATICA FORMALE. Albero sintattico

Forme Normali. Forma normale di Chomsky. E caratterizzata da regole di due tipi. A! BC dove A, B, C $ V N A! a con a $ V T. Forma normale di Greibach

Grammatiche context-free

LINGUAGGI CONTEXT FREE. Lezione Lezione

Dispense del corso di Linguaggi di programmazione e laboratorio Linguaggi formali(versione non definitiva con diversi refusi) Francesco Sisini

Le basi del linguaggio Java

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Appunti di Linguaggi Formali

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

Linguaggi formali e compilatori

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Forma Normale di Chomsky

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Linguaggi Sintassi e Semantica

Linguaggi e Grammatiche Liberi da Contesto

Le macchine di Turing

Dispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR:

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

Linguaggi, grammatiche, espressioni regolari

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

AUTOMA A STATI FINITI

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

Espressioni regolari

Unità Didattica 2 I Linguaggi di Programmazione

Espressioni regolari descrivono i linguaggi regolari. Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari.

8. Completamento di uno spazio di misura.

Programmazione. Marco Anisetti. Università degli Studi di Milano, Dipartimento di Informatica

Aniello Murano Automi e Pushdown

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Esempio stringhe palindrome 1

La codifica digitale

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

1 Giochi di Ehrenfeucht-Fraissé e Logica del Prim ordine

Linguaggio della Matematica

Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza

Linguistica Computazionale

Linguaggio della Matematica

Le grammatiche formali

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Funzioni: definizioni e tipi. Prof.ssa Maddalena Dominijanni

Automi. Rosario Culmone, Luca Tesei. 20/10/2009 UNICAM - p. 1/55

0.1 Esercizi calcolo combinatorio

Maiuscole e minuscole

MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

Linguaggi di Programmazione

Quiz sui linguaggi regolari

STRINGHE di un ALFABETO. Consideriamo un alfabeto di simboli V V è un insieme finito e non vuoto. Alfabeto della lingua inglese I={a,b,c,..

Транскрипт:

Le grammatiche formali

Il carattere generativo dei sistemi linguisticii i Consideriamo i la seguente frase: Un gatto rincorre il topo Non facciamo difficoltà a riconoscere che si tratta di una frase sintatticamente corretta, al contrario della seguente espressione: Gatto il un topo rincorre Dato un insieme finito di elementi di partenza (le parole della nostra lingua), siamo in grado di comprendere e produrre un insieme praticamente illimitato di enunciati

Linguaggi i e grammatiche Sia Σ = {un, il, gatto, topo, rincorre} Le espressioni un gatto rincorre il topo e gatto il un topo rincorre appartengono entrambe all insieme delle stringhe generabili a partire da Σ Le espressioni che diremmo sintatticamente corrette costituiscono un sottoinsieme proprio di tutte le stringhe generabili a partire da Σ Come definire questo sottoinsieme? Possiamo definirlo mediante una grammatica formale

Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre

Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un Una grammatica formale è un insieme di espressioni dette regole di produzione Ogni regola assume la forma e 1 e 2 6 ARTICOLO il Nelle espressioni e 1 ed e 2 compaiono: 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre Simboli non terminali (espressi in maiuscolo nell esempio) Simboli terminali (alfabeto)

Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO La regola e 1 e 2 indica che, ogni volta che si trova l espressione e 1, si può sostituire il simbolo non terminale in e 1 4. SV VERBO SN con e 2 5. ARTICOLO un esempio: sostituire SV con 6. ARTICOLO il VERBO SN 7. NOME gatto A ogni grammatica è associato 8. NOME topo un simbolo non terminale detto 9. VERBO rincorre simbolo iniziale. In questo caso il simbolo iniziale è E

Un esempio di grammatica formale Per generare una stringa a partire 1. E SN SV da questa grammatica: 2. SN ARTICOLO NOME 1. Si prende in considerazione il 3. SV VERBO simbolo iniziale 4. SV VERBO SN 2. Si sceglie una regola che abbia 5. ARTICOLO un quel simbolo a sinistra della 6. ARTICOLO il freccia 7. NOME gatto 3. Si effettua la sostituzione 8. NOME topo 4. Nella stringa così ottenuta,si 9. VERBO rincorre selezionano gli eventuali simboli non terminali e si torna al passo 2, finchè rimangono solo simboli terminali

Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre Esempio di derivazione (1,2,5,7,4,9,2,6,8): E SN SV (regola 1) ARTICOLO NOME SV (regola 2) Un NOME SV (regola 5) Un gatto SV (regola 7) Un gatto VERBO SN (regola 4) Un gatto rincorre SN (regola 9) Un gatto rincorre ARTICOLO NOME (regola 2) Un gatto rincorre il NOME (regola 6) Un gatto rincorre il topo (regola 8)

Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre Quali altre espressioni possiamo generare a partire da questa grammatica? Un topo rincorre Un topo rincorre il gatto Il topo rincorre un gatto Esempi di espressioni i non generabili? Un rincorre gatto topo

La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 0 non esiste alcun vincolo sulla forma delle produzioni: non esiste alcun vincolo sulla forma delle produzioni: può essere usata qualunque regola e 1 e 2

La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 1 Dette anche grammatiche non decrescenti. Non sono permesse regole e 1 e 2 tale che e 2 sia più corta di e 1 Esempio: non è permessa una regola del tipo NOME gatto topo Tutte le grammatiche di livello 1 sono anche di livello 0, ma non viceversa!

La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 2 Dette anche grammatiche libere da contesto. Le regole hanno la forma S γ dove S è un simbolo non terminale e γ è una stringa di simboli terminali e/o non terminali La grammatica vista in precedenza è libera da contesto Tutte le grammatiche libere da contesto sono non Tutte le grammatiche libere da contesto sono non decrescenti, ma non viceversa!

La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 3 Dette anche grammatiche lineari. Una grammatica lineare destra include regole della forma S t B oppure S t Una grammatica lineare sinistra include regole della forma S B t oppure S t dove S e B sono simboli non terminali e t è un simbolo terminale

La gerarchia di Chomsky Grammatiche di livello 0 Grammatiche di livello 1 (o non decrescenti) Grammatiche di livello 2 (o libere da contesto) Grammatiche di livello 3 (o lineari) Gerarchia: tutte le stringhe generate da una grammatica di livello i sono generate dalla grammatica di livello i-11

Una grammatica lineare destra S 0S S 1S S 1 Una grammatica lineare destra include regole della forma S t B oppure S t Quale linguaggio è generato da questa grammatica? Questa grammatica genera solo stringhe che terminano per 1 1 0 1 Esiste un automa finito it che riconosce questo linguaggio! q 1 q 2 0

Grammatiche e automi Alcuni teoremi (che non dimostriamo): i Tutti i linguaggi generati da grammatiche lineari sono Tutti i linguaggi generati da grammatiche lineari sono riconosciuti da automi finiti

Linguaggi liberi da contesto e automi a pila Sappiamo che esiste un automa a pila che riconosce il linguaggio {w b m n m } La grammatica che genera questo linguaggio è S bsn S bn Stringhe generate: bn bbnn bbbnnn Grammatiche libere da contesto Le regole hanno la forma S γ dove S è un simbolo non terminale e γ è una stringa di simboli terminali e/o non terminali

Grammatiche e automi Alcuni teoremi (che non dimostriamo): i Tutti i linguaggi generati da grammatiche lineari sono riconosciuti da automi finiti Tutti i linguaggi generati da grammatiche libere da contesto sono riconosciuti da automi a pila

Grammatiche e automi Linguaggi Automi Grammatiche di livello ll 0 Grammatiche di livello 1 (o non decrescenti) Grammatiche di livello 2 (o libere da contesto) Grammatiche di livello 3 (o lineari) Automi a pila Automi finiti