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.

Slides:



Advertisements
Presentazioni simili
Automi temporizzati.
Advertisements

Alberi binari Definizione Sottoalberi Padre, figli
Alfabeti, Stringhe e Linguaggi
Estendere i linguaggi: i tipi di dato astratti

Sommario Nelle lezioni precedenti abbiamo introdotto tutti gli elementi che formano un particolare tipo di linguaggio logico, denominato linguaggio predicativo.
Sintassi (prima parte)
Traduttore diretto dalla sintassi (seconda parte)
Parser Bottom UP Giuseppe Morelli. Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di.
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Linguaggi Regolari e Linguaggi Liberi
Costruzione delle tabelle di parsing LR canoniche
La comunicazione.
Algebra parziale con predicati
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Automi e Linguaggi Regolari Alberto Cuesta Cañada.
Sistemi di Lindenmayer
INSIEMI INSIEME= gruppo di oggetti di tipo qualsiasi detti elementi dell’insieme. Un insieme è definito quando viene dato un criterio non ambiguo che.
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Istituzioni di linguistica
Strategie per la progettazione di algoritmi:
Il ragionamento classico
Sistemi computazionali per il linguaggio naturale
Elaborazione del linguaggio naturale automi & morfologia Maria Teresa PAZIENZA a.a
FMZ, Giugno 2001 Parsing del linguaggio naturale Fabio Massimo Zanzotto Università di Tor Vergata.
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale Prof. M.T. PAZIENZA a.a
Scuola Secondaria di 1° Grado - Classe I F - Favara
Chomsky La grammatica/sintassi è una proprietà della mente
Albero: insieme di punti chiamati NODI e linee chiamate EDGES
Alfabeti, Stringhe e Linguaggi Def: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono.
-calcolo Vogliamo studiare le problematiche relative al meccanismo di chiamata di funzione (eg differenze fra binding statico e dinamico) in isolamento.
Implementazione di Linguaggi 2
Unità Didattica 2 I Linguaggi di Programmazione
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
Fondamenti di Comunicazione Digitale
Chomsky La grammatica/sintassi è una proprietà della mente Distinta dalla capacità di comunicare E una facoltà autonoma ed innata La comunicazione è solo.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
Logica Matematica Seconda lezione.
Lo sviluppo del software e i linguaggi di programmazione
Introduzione ai linguaggi formali e alle stringhe
SINTASSI.
Grammatiche, Linguaggio e Automi R. Basili TAL - a.a
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale (grammatica, semantica) Prof. M.T. PAZIENZA a.a
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Sistemi basati su conoscenza Linguaggio naturale: grammatiche Prof. M.T. PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 19 Prof. M.T. PAZIENZA a.a
Elaborazione del linguaggio naturale automi & morfologia Maria Teresa PAZIENZA a.a
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Linguaggi di programmazione: panoramica Linguaggi di programmazione ad alto livello: – –Programmazione procedurale – –Programmazione object oriented –
Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q0, Z0, F) dove: Q insieme finito di stati S alfabeto finito di input 3. G alfabeto di pila.
Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 3 Mappe genetiche.
public class volume { public static void main (String[] args) { final double bott_vol =2.0; final double latt_vol = 0.355; int bott_num = 4; int latt_num.
Grammatiche non contestuali (1)
Macchine di Turing (1) Il modello di base ha un controllo finito, un nastro di input diviso in celle e una testa di lettura che esamina una cella alla.
Modelli A Stati Finiti Per Il Linguaggio Naturale A cura di De Pascalis Roberto.
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale (grammatica, semantica) Prof. M.T. PAZIENZA a.a
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
Automi temporizzati.
In generale, con il termine di grammatica si intende un formalismo che permette di definire un insieme di stringhe mediante l’imposizione di un particolare.
Problemi, algoritmi e programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Intelligenza artificiale idee fondamentali 1. Funzionalismo e test di Turing.
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Logica Lezione 11, Annuncio Non si terrà la lezione di Lunedì 16 Marzo.
Transcript della presentazione:

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

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, …. }

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

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

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 *

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

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)

* 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  *  012 La lunghezza della derivazione è 6

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, , ……  Il numero 1234 non fa parte del linguaggio L

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

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

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

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:

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:

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

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

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)

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 

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(+)!

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

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

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

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

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 

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

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

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