1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone

Slides:



Advertisements
Presentazioni simili
Automi temporizzati.
Advertisements

Strutture dati per insiemi disgiunti
I numeri naturali ….. Definizione e caratteristiche
Alfabeti, Stringhe e Linguaggi
1 A B C D … a b c d … Il concetto di insieme 1
Sistema di riferimento sulla retta
Il linguaggio della Matematica: Insiemi e operazioni
Sintassi (prima parte)
Linguaggi Regolari e Linguaggi Liberi
Costruzione delle tabelle di parsing LR canoniche
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.
LE MATRICI.
Introduzione Cosa sono le reti di Petri?
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
= 2x – 3 x Definizione e caratteristiche
Definizione e caratteristiche
(se a = 0 l’equazione bx + c = 0 è di primo grado)
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Semantiche dei linguaggi di programmazione
Ordini Parziali - Reticoli
Esercitazioni su circuiti combinatori
Algoritmo di Ford-Fulkerson
Corso di Informatica (Basi di Dati)
Corso di Informatica (Programmazione)
CORSO DI RICERCA BIBLIOGRAFICA 4. giornata (20 marzo 2008) Web of Science Beilstein e Gmelin Crossfire.
Alfabeti, Stringhe e Linguaggi Def: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono.
Implementazione di Linguaggi 2
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Unità Didattica 2 I Linguaggi di Programmazione
I numeri by iprof.
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Codifica binaria Rappresentazione di numeri
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
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
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Introduzione ai linguaggi formali e alle stringhe
BIOINFO3 - Lezione 281 PATTERN MATCHING E sicuramente una delle cose più utili del Perl, che lo rende un linguaggio estremamente potente. Permette di cercare.
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
Grammatiche, Linguaggio e Automi R. Basili TAL - a.a
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
Università degli Studi di Bologna Facoltà di Ingegneria Anno Accademico 2007/2008 Laurea Specialistica in Ingegneria Informatica Linguaggi e Modelli Computazionali.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Informatica Introduzione alle basi di dati Lezione 2 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Università degli studi di Parma Dipartimento di Ingegneria dell’Informazione Politecnico di Milano Reti Logiche A Macchine non completamente specificate.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Linguaggi Diversi tipi di linguaggi:
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.
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.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
TEORIA ELEMENTARE DEGLI INSIEMI
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.
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.
Transcript della presentazione:

1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone

2 Linguaggi e programmi Dato un algoritmo, un programma è la sua descrizione in un particolare linguaggio di programmazione. Un linguaggio di programmazione è caratterizzato da due aspetti: – SINTASSI – SEMANTICA N.B.: una frase può essere sintatticamente corretta ma priva di significato. Insieme di regole formali che definiscono le modalità per costruire espressioni corrette (valide) del linguaggio Il significato da attribuire alle frasi (sintatticamente corrette) del linguaggio mediante uninterpretazione.

3 Una grammatica è uno strumento formale per definire un linguaggio attraverso la descrizione delle proprietà strutturali delle sue frasi. GRAMMATICHE Tale costruzione si effettua partendo da una frase particolare e riscrivendo via via parti di essa applicando una delle regole specificate nella grammatica stessa.

4 Le grammatiche formali generalmente studiate nel contesto informatico sono denominate Grammatiche di Chomsky perché furono introdotte dal linguista Noam Chomsky. GRAMMATICHE Le grammatiche formali hanno un ruolo fondamentale nello studio delle proprietà sintattiche dei programmi e dei linguaggi di programmazione.

5 V : alfabeto Un alfabeto è un insieme finito e non vuoto di simboli. Linsieme di tutte le sequenze finite di simboli in V, dette stringhe o frasi su V, è denotato da V*. ELEMENTI BASE DELLA SINTASSI DI UN LINGUAGGIO GRAMMATICHE V* : universo linguistico su V. Il simbolo denota la stringa vuota ed appartiene a V*. grammatica L : un linguaggio su V è un insieme di stringhe su V, cioè un sottoinsieme di frasi in V* generato da una grammatica.

6 Una grammatica G = (V,N,P,S) per la generazione di un linguaggio L è definita da: insieme di simboli terminali V: insieme di simboli terminali, alfabeto di L GRAMMATICHE simboli non terminalimetasimboli categorie sintattiche N: insieme di simboli non terminali o metasimboli (categorie sintattiche come per esempio:,,,,,,...) regole sintatticheproduzioni P: insieme finito di regole sintattiche (o produzioni) del tipo X Y assiomasimbolo iniziale S : elemento di N (assioma o simbolo iniziale)

7 forma di frase (sentential form) Si dice forma di frase (sentential form) una qualsiasi stringa comprendente sia simboli terminali sia simboli non terminali derivabile dallassioma S. frase Si dice frase una forma di frase comprendente solo simboli terminali.GRAMMATICHE derivabili Linsieme delle forme di frase di G è linsieme delle parole su V N derivabili a partire da S, cioè le parole su V N tali che S * v. linguaggio generato dalla grammatica G Il linguaggio generato dalla grammatica G è linsieme di frasi applicando in sequenza le possibili regole in P, iniziando da S.

8 Esempio di grammatica Esempio di grammatica: V = {a,b} N = {A,S} start symbol S P = {S A; A bAb; A a } Linguaggio generato da G: L(G) = {b n ab n |n 0}GRAMMATICHE Notazione Notazione: simboli terminali in minuscolo simboli non terminali in maiuscolo regole di produzione X Y: dalla parte a sinistra per sostituzione si deriva la parte a destra. Il simbolo/stringa X viene cioè sostituito dal simbolo/stringa Y in un passo di derivazione.

9 GRAMMATICHE derivare u v Data una grammatica G = (V,N,P,S), diciamo che da una stringa u = u 1 Au 2 (V N)* possiamo derivare in un passo una stringa v = u 1 wu 2 (V N)* se esiste una produzione A w e scriviamo u v Diciamo che v è derivabile da u, e scriviamo u * v, se esiste una catena finita di stringhe u 1, u 2 ….. u n (V N)* tale u = u 1 u 2 ….. u n = v per mezzo di applicazione delle regole in P. S A bAb bbAbb bbabb Esempio di derivazione della grammatica precedente:

10 CLASSIFICAZIONE DELLE GRAMMATICHE TIPO 0: ricorsivamente enumerabile – TIPO 0: ricorsivamente enumerabile a b quando le stringhe che appaiono nelle produzioni a b non sono soggette ad alcuna limitazione (a e b non vuote) TIPO 1: dipendente dal contesto (context dependent) – TIPO 1: dipendente dal contesto (context dependent) aAb axb quando le produzioni sono del tipo aAb axb dove A è un non terminale e x è non vuota – TIPO 2: libera dal contesto (context free) A x quando le produzioni sono limitate ad A x dove A è un non terminale e x è non vuota – TIPO 3: regolare (a stati finiti) A aA aB S A aA Ba S quando le produzioni sono limitate ad A a e A aB più eventualmente S, oppure a A a e A Ba più eventualmente S, dove A e B sono non terminali e a è un terminale

11 GERARCHIA DI CHOMSKY

12 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free) Le produzioni sono della forma A w, dove A N e w (V N)*. Esempio Esempio: V = {a,b,c,d} N = {A,S} start symbol S P = {S cAd, A bAb, A a} Linguaggio generato da G: L(G) = {cb n ab n d |n 0} Regola di tipo self-embedding Derivazione per cbbbabbbd? S cAd cbAbd cbbAbbd cbbbAbbbd cbbbabbbd

13 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free) Esempio Esempio: V = {a} N = {A,S} start symbol S P = {S Aa, A Aa, A } Linguaggio generato da G Linguaggio generato da G: L(G) = {a, aa, aaa,...} S Aa a S Aa Aaa aa

14 V = {a,b,c} N = {S,X} S assioma P = {S X,S X aXa,X bXb, X c} Linguaggio generato da G Linguaggio generato da G: il linguaggio delle stringhe palindrome su {a,b,c} con una e una sola c al centro, piu la stringa vuota. Derivazione per abcba S X aXa abXba abcba GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free) NOTA BENE NOTA BENE: notazione che sintetizza le produzioni che hanno lo stesso simbolo non terminale nella parte sinistra: X aXa | bXb | c

15 Esempio Esempio: V = {a, b} N = {A,B,S} start symbol S P = {S A, A Ba | B Ab | } Linguaggio generato da G Linguaggio generato da G: L(G) = { a,ba, aba, baba...} S A S A Ba Aba ba S A Ba Aba Baba Ababa baba GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free) NOTA BENE NOTA BENE: le frasi generate,alternando b ed a, che terminano sempre con il simbolo terminale a (tranne

16 Esempio Esempio: V = {0, 1, … 9} N = {A, S} start symbol S P = {S A, A 2, A 4, A 6, A 8, A 0 A 0A, A 1A, … A 9A} Linguaggio generato da G Linguaggio generato da G: notazione decimale dei numeri pari S A 2A 23A 230 S 1A 10 S 1A 11A 113A 1132 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free)

17 Esempio Esempio: V = {_, a, … z, A, … Z, 0, …, 9 } N = {A, B} start symbol A P = {A a B, A b B, …, A A B, …, A Z B B _B B a B, B b B, …, B A B, …, B Z B B 0 B, B 1 B, …, B 9 B, B } Linguaggio generato da G Linguaggio generato da G: questa grammatica genera gli identificatori del linguaggio C. Infatti come prima produzione si deve usare una produzione su A, che aggiunge un carattere iniziale non numerico. Dopo, le produzioni su B permettono di proseguire con qualsiasi sequenza di caratteri. GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free)

18 GRAMMATICHE REGOLARI (a stati finiti) TIPO 3: TIPO 3: Le produzioni sono della forma A w, dove A N e w (V N) V oppure w (N V) V. Quindi le produzioni sono limitate alle seguenti forme: A a oppure A aB oppure A Ba dove A e B sono non terminali e a è un terminale. lineari a destra Le grammatiche con SOLE regole del tipo A a e A aB si dicono lineari a destra. lineari a sinistra Le grammatiche con SOLE regole del tipo A a e A Ba si dicono lineari a sinistra. (A e B sono non terminali e a è un terminale) Le grammatiche regolari possono essere lineari a destra o lineari a sinistra. Il termine lineare deriva dal fatto che al lato destro di ogni produzione compare al più un simbolo non terminale.

19 Si dice lineare una grammatica non contestuale in cui la parte destra di ogni produzione contenga al più un non terminale. Esempio di regole di grammatica lineare ma NON regolare GRAMMATICHE LINEARI

20 Esempio Esempio: V = {0, 1} N = {U,V,S} start symbol S P = {S U0 | V1, U S1 | 1 V S0 | } Linguaggio generato da G Linguaggio generato da G: L(G) = {01, 0101, 0110, 1010, 10...} Grammatica regolare lineare a sinistra GRAMMATICHE REGOLARI

21 Per ogni grammatica lineare destra ne esiste una lineare sinistra equivalente e viceversa. Esempio Esempio: P = {S aS, S b} Grammatica regolare lineare a sinistra A) P = {S Ab | b, A Aa | a} V = {a, b} N = {S} B)V = {a, b} N = {S, A} Grammatica regolare lineare a destra L = {a n b | n 0} GRAMMATICHE REGOLARI

22 Le regole sintattiche sono espresse per mezzo di notazioni formali, come ad esempio: BNF BNF (Backus-Naur Form) notazione algebrica EBNF EBNF (Extended BNF) notazione algebrica diagrammi sintattici diagrammi sintattici notazione grafica Sintassi: notazioni

23 BACKUS NAUR FORM BNF Per descrivere le grammatiche con notazione più compatta di quella vista precedentemente si usa la BNF (Backus-Naur Form). I simboli non terminali vengono descritti da parole, mentre i terminali in grassetto. Nelle regole di produzione, al posto di si utilizza la notazione ::= La notazione A ::= a | b | c | d significa che la grammatica contiene le produzioni A ::= a, A ::= b, A ::= c, A ::= d. Il simbolo | rappresenta la disgiunzione.

24 BACKUS NAUR FORM esempio Esempio Esempio: V = {0, 1} N = {U,V,S} Start Symbol S P = {S ::= U0 | V1, U ::= S1 | 1 V ::= S0 | 0 } Linguaggio generato da G Linguaggio generato da G: L(G) = {01, 0101, 0110, 1010, 10...}

25 EXTENDED BACKUS NAUR FORM La notazione [w] nella parte destra di una produzione significa che la parola w può comparire o meno, è cioè opzionale. La notazione w} nella parte destra di una produzione significa che la parola w può comparire zero o più volte. Le parentesi tonde possono essere utilizzate per raggruppare: ad esempio, (a | b) [c] è diverso da a | (b [c]), che è uguale ad a | b [c].

26 X ::= [a]b equivale a X ::= b|ab X ::= {a} n bequivale a X ::= b|ab|aab|… ripetendo a fino a n volte X ::= {a}bequivale a X ::= b|ab|aab|… ripetendo a un numero di volte indefinito Equivale ad avere nella grammatica la produzione X ::= b | aX (ricorsiva) EXTENDED BACKUS NAUR FORM

27 V: { 0,1,2,3,4,5,6,7,8,9,+,- } N: { } S: P contiene le seguenti produzioni: ::= [+ | - ] ::= | ::= | 0 ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 EXTENDED BACKUS NAUR FORM

28 ::= { * } ::= | | ::= = ; ::= if { + } | if { + } else { + } ::= while { + } ::= | | ( ) | EXTENDED BACKUS NAUR FORM Attenzione: nel linguaggio generato da questa grammatica i simboli { e } sono simboli terminali ! Per denotare ripetizione si usa il simbolo *

29 ::= + | - | * | / | = | /= | | = ::= * ::= | ::= + ::= a | b | c |... | z ::= 0 | 1 |... | 9 Nota bene: * è sia un simbolo sia un metasimbolo EXTENDED BACKUS NAUR FORM

30 Sono dei grafi: – nodi: etichettati con simboli (terminali e non terminali), collegati da archi orientati – un arco da i a j significa che il simbolo i è seguito dal simbolo j – più archi rappresentano alternative DIAGRAMMI SINTATTICI

31 statement assignment conditional loop program statement {} ife expression statement { } else {statement } conditional assignment identifier = expression ; DIAGRAMMI SINTATTICI

32 expression operator expression identifier number expression() DIAGRAMMI SINTATTICI while expression statement { } loop

33 Identificatore in Java letterale cifra Unicode escape cifra DIAGRAMMI SINTATTICI

34 Il linguaggio L= {a n b n c n, con n 1} e generato dalla seguente regole, appartenenti a una grammatica dipendente dal contesto: 1) S aSBC 2) S aBC3) CB BC 4) aB ab5) bB bb6) bC bc 7) cC cc ESEMPIO DI GRAMMATICA DIPENDENTE DAL CONTESTO

35 infatti …. E possibile usare la produzione 1) per n-1 volte ed ottenere a n-1 S (BC) n-1. Quindi, usare la produzione 2) ed ottenere a n (BC) n. La produzione 3) consente di scambiare le B e le C in modo da avere tutte le B prima delle C, ed ottenere quindi a n B n C n. Usando la produzione 4) una volta si ottiene a n bB n-1 C n. A questo punto, usando la produzione 5) n-1 volte si ottiene a n b n C n. Infine, usando la produzione 6) una volta si ottiene a n b n c C n -1 e usando la produzione 7) n-1 volte si ottiene a n b n c n