MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI"

Transcript

1 MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI Un linguaggio di programmazione è uno strumento per esprimere algoritmi in una forma adatta allo loro esecuzione da parte di un elaboratore La formulazione di un algoritmo in un linguaggio di programmazione è detta programma Il processo di esecuzione di un programma col quale si ottengono i risultati calcolati dall algoritmo codificato dal programma, è fatto in generale da due passi: compilazione ovvero una trasformazione del testo del programma (codice sorgente) operata da un altro programma detto compilatore, in una forma equivalente ma eseguibile dalla macchina (codice oggetto o codice macchina) esecuzione nella quale il codice oggetto viene eseguito dall elaboratore Questa caratteristica è tipica dei linguaggi di programmazione nati per esprimere algoritmi in una forma indipendente dalla macchina ma espressiva per l utente La descrizione di un linguaggio di programmazione distingue aspetti sintattici, semantici e pragmatici I primi riguardano la forma che le frasi del linguaggio possono assumere, i secondi il significato di ogni frase e gli ultimi sono legati alla utilizzazione pratica del linguaggio IL LINGUAGGIO Alcune definizioni preliminari Alfabeto è un insieme finito e non vuoto di elementi detti simboli ALR = { I, V, X, L, D, C, M } APCP = {begin, end, while, repeat, for, } alfabeto lettere romane alfabeto parole chiave del Pascal Stringa ( o parola, o frase) su un alfabeto A è la concatenazione di un numero finito di simboli di A La stringa vuota è fatta da 0 simboli e si indica di norma con ε o con λ III, IVX, CCC sono parole su ALR Lunghezza o cardinalità di una stringa α è il numero di simboli concatenati per formare α e si indica con α XVII = 4 ε = 0 1

2 La concatenazione di due stringhe α e β si indica giustapponendole αβ ; la stringa vuota ε è unità sinistra e destra rispetto alla concatenazione αε = εα = α non è commutativa αβ βα ma è associativa α(βγ) = (αβ)γ Dato un alfabeto A, la stellatura di A, scritta A *, si può definire per induzione usando come costruttore la concatenazione (cl base) ε A * (cl induttiva) se α A * e a A, aα A * ad es se A = { a, b}, A * = {ε, a, b, aa, bb, ba, bb, aaa, aab, }, oppure definendo le potenze cartesiane n-esime di A come segue A 0 = { ε } A 1 = A A 2 = A x A A n +1 = A x A n e poi unendole A * = U i N A i = A 0 u A 1 u u x A n u La stellatura di un alfabeto A qualunque contiene dunque tutte le frasi su A di lunghezza finita Se indichiamo con l operazione di concatenazione su A * con le proprietà già indicate, l algebra (A *,, ε) è un monoide su A u { ε } detto linguaggio universale su A Per definizione un linguaggio L su A è un sottinsieme di A * : L A * 2

3 Tra due linguaggi, in quanto insiemi, si possono applicare le operazioni di unione e intersezione Se L 1 e L 2 sono due linguaggi su uno stesso alfabeto A, allora L 1 L 2 = { α α L 1 oppure α L 2 } è l unione L 1 L 2 = { α α L 1 e α L 2 } è l intersezione Oltre a queste abbiamo la concatenazione denotata ancora con e definita come segue: sia ( A * ) l insieme delle parti di A *, allora : ( A * ) x ( A * ) ( A * ) tale che dati due linguaggi L 1 e L 2 su A con le seguenti proprietà: L 1 L 2 = {αβ I α L 1, β L 2 } L 1, L 2 ( A * ), L {ε } = {ε } L L { } = { } L = { } L 1 ( L 2 L 3 ) = ( L 1 L 2 ) L 3 identità zero associatività e l iterazione denotata con, che dato un linguaggio L produce il linguaggio L cosi definito L = U n N L n L ( A * ), con L n è definito per induzione L n = L 0 ={ε }, n=0 L n-1 L, n>0 Il simbolo si chiama stella di Kleene Un linguaggio su un alfabeto A può essere descritto in modo insiemistico, ad es se A = { a,b } la scrittura L bs = {a n b n I n N} definisce l insieme delle stringhe formate da due sottostringhe α e β di uguale lunghezza n>=0 e tale che i simboli di α siano tutti uguali ad a e quelli di β tutti uguali a b; questo linguaggio è chiamato bisomatico [ Manca, op cit], 3

4 mentre L bp ={a n b m I n,m N} descrive il linguaggio bipartito [ Manca, op cit] le cui frasi sono fatte di due sottostringhe α e β con i simboli di α tutti uguali ad a e quelli di β tutti uguali a b Questo linguaggio può essere ottenuto tramite iterazione e concatenazione L bp ={a} {b} Il problema centrale della teoria dei linguaggi formali consiste nel fornire metodi rigorosi per definirli Un modo naturale per descrivere un linguaggio è quello di definire la forma delle sue frasi; ciò avviene fornendo una descrizione sintattica all interno di un più ampio contesto generativo ( poiché consente di generare un linguaggio) detto grammatica Una grammatica può pensarsi come un algoritmo in grado di produrre frasi caratterizzate da descrizioni sintattiche e può essere espressa anche come automa generatore Oltre agli algoritmi di generazione ci sono quelli di riconoscimento che possono essere implementati anche sotto forma di automi riconoscitori Sugli automi torneremo più avanti, ora ci occupiamo di definire che cosa sia una grammatica partendo da un esempio completo Vogliamo costruire un linguaggio che chiamiamo LN 10, le cui frasi rappresentano numeri in base 10 dotati di parte intera e/o di parte frazionaria Quelle che seguono 179, 394, 1538 sono frasi di questo linguaggio e l alfabeto A sul quale sono costruite è A = {0, 1,2,,9, } Ma LN 10 per quanto visto è un sottoinsieme di A *, LN 10 A *, anzi dato che la parola vuota ha qui nessun interesse, detto A + = A * - { ε } l insieme di tutte le stringhe di lunghezza finita privo della stringa vuota, sarà LN 10 A + Tuttavia questa proprietà che non dà alcuna informazione che consenta di distinguere le frasi che appartengono a LN 10 da altre definite sullo stesso alfabeto: occorre fornire un criterio per distinguere sequenze qualsiasi di A + da quelle buone appartenenti a LN 10 4

5 Tale criterio consiste nel definire la forma delle frasi corrette di LN 10 e si presenta come un insieme di regole o produzioni che definiscono la sintassi delle frasi del linguaggio: 1 Nd Sd I Sd I Sd Sd 2 Sd Cd I Sd Cd 3 Cd 0 I 1 I 2 I I 9 Ciascuna regola ha una struttura del tipo parte_ sinistra parte_ destra e si noti che in questo esempio la parte sinistra di ciascuna delle regole date è fatta di un solo simbolo La è un simbolo ausiliario che si può leggere in più modi equivalenti la parte sx produce la parte dx può essere riscritta come la parte dx ha la forma indicata nella parte dx la barra verticale è un altro simbolo ausiliario che significa oppure Pertanto la regola 1 stabilisce che un qualsiasi numero di LN 10 che indichiamo con Nd ha una forma del tipo Sd cioè una Sequenza di digit, oppure (I) un punto seguito da una Sd, oppure (I) una Sd seguita da un punto seguita da una Sd La 2 prescrive che una Sd sia formata da una singola Cifra decimale, Cd, oppure da una Sd seguita da una Cd ( questa è una regola ricorsiva ) Infine la 3 prescrive che una cifra decimale Cd può essere una delle cifre dell alfabeto A Le tre regole descrivono esaurientemente tutte le possibili forme delle frasi di LN 10 I simboli Nd, Sd e Cd si dicono categorie sintattiche o variabili, appartengono al linguaggio col quale descriviamo LN 10, detto metalinguaggio, e in questo senso sono dei mètasimboli da tenere distinti ( qui attraverso l uso del grassetto) da quelli, appartenenti all alfabeto, che usiamo per formare le frasi di LN 10 e che sono invece simboli terminali 5

6 Usiamo la scrittura α =>β per indicare che β è generata direttamente da α sostituendo una categoria sintattica presente in α con una delle sue possibili riscritture come prescritto dalle regole del linguaggio Ad es la sequenza Sd => Sd Cd => Sd 5 => Sd Cd 5 => Cd Cd 5 => 3 Cd 5 => esprime il processo di generazione o derivazione della frase 305 di LN 10, ottenuta con una catena di generazioni dirette Una derivazione di 1832 da Nd è data da Nd => Sd Cd => Sd Cd Sd => Sd Cd Sd Cd => Cd Cd Sd Cd => =>Cd Cd Cd Cd => 1 Cd Cd Cd => 18 Cd Cd =>18 3 Cd => 1832 Fissando le idee su quanto detto, individuiamo un insieme finito di norma indicato con V di simboli nonterminali (variabili, cat sint) un insieme finito T di simboli terminali un elemento S di V, detto simbolo iniziale (start symbol) o assioma un insieme P sottoinsieme di V x (V T) detto insieme delle produzioni Riferendoci all esempio presentato abbiamo V = {Nd, Sd, Cd} T = {0, 1,,9, } S = Nd P = {(Nd, Sd), (Nd, Sd), (Nd, Sd Sd), (Sd, Cd), (Sd, Sd Cd), (Cd, 0),,(Cd, 9)} ( si noti che scriviamo v w 1 Iw 2 I Iw n se (v,w 1 ), (v,w 2 ),, (v, w n ) sono tutte le produzioni in P con v in V come primo elemento) Le frasi di LN 10 sono esattamente quelle stringhe che possono essere derivate da Nd ( simbolo iniziale ) applicando le produzioni e contenenti solo i simboli terminali appartenenti all alfabeto Ciò giustifica la seguente Definizione 1 Una grammatica G, libera dal contesto (in inglese, context free), è una quadrupla G = (V, T, S, P) con V, T, S e P come specificato sopra 6

7 Data una grammatica G = (V, T, S, P) libera dal contesto, la relazione binaria di derivazione diretta => è definita su (V T) e come abbiamo detto, α =>β si legge come α genera (o deriva) direttamente β ; questa relazione può essere definita specificando che α =>β esattamente nel caso in cui β sia ottenuta da α sostituendo una singola variabile ( categoria sintattica ) in α secondo quanto prescritto da una produzione in P, cioè nel caso in cui esistono le stringhe γ e δ in (V T), la stringa v in V e la produzione (v, w ) in P tale che α = γ v δ, β = γ w δ è Date due relazioni qualsiasi R: A B e S: B C, la relazione composta S R:A C S R = {(a,c) esiste un b in B con arb e bsc } A X C Se una relazione R ha dominio e codominio uguali, R: A A, le potenze di R sono definite induttivamente come : R 0 = id A = {(a,a) a A} R 1 = R R 2 = R R R 3 = R 2 R R n+1 = R n R identità La chiusura transitiva di R viene indicata con R + e definita come R + = U n>0 R n invece la chiusura riflessiva transitiva di R indicata con R *, è R * = U n 0 R n Ad esempio se R: N N è una relazione dai naturali ai naturali nella quale mrn sse m=n+1, allora R + è la relazione >, maggiore, mentre R * è la relazione, maggiore o uguale La relazione binaria => * su ( V T) è la chiusura riflessiva e transitiva di =>, scriviamo w => * w che significa w deriva w nel caso in cui w = w oppure se esiste una sequenza w 1, w 2,, w n (n >= 2) di stringhe in (V T), tale che w = w 1 ; w j => w j+1 per 1 j < n ; w n = w 7

8 Definizione 2 Il linguaggio L(G) generato da una grammatica G è l insieme delle stringhe di caratteri terminali che possono essere derivate da S L(G) = {w w T, S => * w } Un insieme LLC T è un linguaggio libero dal contesto se LLC è un L(G) generato da una grammatica acontestuale G Come secondo es di grammatica libera dal contesto sia G 2 ( V, T, S, P) con: V = {S} T = {a, b} S = asb ab si può notare che le sole derivazioni possibili sono del tipo S => ab S => asb => aabb S => asb => aasbb => aaabbb etc Usando la notazione a n come abbreviazione di una stringa di n occorrenze di a, il linguaggio generato da G 2 è L(G 2 ) = { a n b n n 1} che abbiamo già visto: il linguaggio bisomatico Esercizi 1 Definire la grammatica che genera il linguaggio delle frasi palindrome su {a, b} 2 Definire la grammatica le cui frasi sono numeri naturali divisibili per 5 3 Data la grammatica G nella quale: V = {S, A, B, C, D}, T = {a, b}, S è il simbolo distinto e P contiene le seguenti produzioni: S CD Ab ba C acai bcb Ba ab AD ad Bb bb BD bd C ε Aa aa D ε derivare qualche frase e descrivere il linguaggio generato da G 4 Descrivete la grammatica le cui frasi sono espressioni aritmetiche esprimibili con i simboli a, +, *, ( e ) Nota La semplice osservazione della forma delle derivazioni di una grammatica non consente affatto di stabilire quale sia il linguaggio generato, occorre produrre una dimostrazione (spesso induttiva) Un testo fondamentale per queste problematiche è quello di Hopcrooft e Ullman citato in bibliografia 8

9 La classificazione di N Chomsky L analisi fatta sulla forma delle produzioni di una grammatica ha portato alla seguente classificazione dovuta a Chomsky Grammatiche di tipo 0 La struttura delle produzioni non è soggetta ad alcun vincolo; i linguaggi generati da esse si dicono di tipo 0 e indicati con L 0 Grammatiche di tipo 1 ( contestuali ) Un modo di caratterizzarle è imponendo che ciascuna produzione α β abbia questa caratteristica α β i linguaggi generati si diranno, analogamente, di tipo 1 e indicati con L 1 Grammatiche di tipo 2 ( context-free, acontestuali, libere dal contesto ) Ogni produzione è del tipo A α con A V e α ( V T) + La parte sinistra è costituita da un solo simbolo terminale Si prestano a descrivere linguaggi di programmazione, i linguaggi che generano si chiamano liberi dal contesto e sono denotati con L 2 Grammatiche di tipo 3 ( regolari ) Ciascuna produzione è del tipo A ab oppure A a con A, B V e a T regolari si dicono i linguaggi generati da esse, denotati con L 3 Cenni di semantica denotazionale Un linguaggio di programmazione serve per esprimere i processi di calcolo che devono essere svolti da un elaboratore Se vogliamo assegnare una semantica a un linguaggio allora dobbiamo trovare il modo di specificare senza ambiguità quale sia il significato di un qualsiasi programma scritto in quel linguaggio Due modi fondamentali sono 1 spiegare come si comporta una macchina più o meno reale che esegua il programma stesso; 2 costruire un modello che, indipendentemente da qualsiasi macchina, fornisca per ogni programma un oggetto matematico che ne definisca il significato 9

10 Il primo modo di procedere, detto operazionale, implica la definizione di una macchina in grado di eseguire il linguaggio e dare la semantica di uno specifico programma consiste nel mostrare il comportamento della macchina durante l esecuzione di quel programma: è esattamente questo che abbiamo fatto nel caso delle istruzioni della macchina a registri e (informalmente) nel caso delle istruzioni di sequenza, selezione e iterazione avendo supposto che la macchina che le esegue sia un normale personal La seconda alternativa, detta denotazionale, consiste invece nel definire una funzione di interpretazione semantica che associ a ogni programma un elemento di un insieme di oggetti matematici che diremo oggetti semantici scelti come significato o denotazione di quel programma Attraverso un esempio molto semplice vediamo l approccio denotazionale Cominciamo definendo un linguaggio per rappresentare i numeri naturali servendoci dei caratteri z e u ; la grammatica che genera tale linguaggio è G(V, T, S, P) con V={ Num, Cif } categorie sintattiche T={ z, u } simboli terminali S= Num assioma, simbolo iniziale P={Num ::=Cif I Num Cif ; Cif ::= z I u } insieme delle produzioni (notate che nelle produzioni ho usato il simbolo ::=, invece che la freccia, per separare la parte sinistra dalla destra e che non indicato in grassetto le categorie sintattiche: questa notazione è molto vicina alla BNF) Il linguaggio generato da G coincide con {z, u} e ogni parola ha una precisa struttura Per dare una semantica denotazionale a questo linguaggio occorre innanzitutto scegliere l insieme delle denotazioni che intendiamo usare La scelta è obbligata: visto che intendiamo rappresentare numeri naturali, scegliamo l insieme N dei naturali, appunto, sul quale assumiamo definite le operazioni di somma e prodotto e li rappresentiamo nella consueta rappresentazione decimale Restano da definire le funzioni di interpretazione semantica che ci permetteranno di passare da un programma sintatticamente corretto al suo significato C è un modo standard per definire tali funzioni, detto definizione guidata dalla sintassi, che consiste nel definire: 1 una funzione di interpretazione semantica per ogni categoria sintattica presente nella grammatica; 2 ciascuna funzione di interpretazione per casi, uno per ogni produzione della grammatica che abbia la categoria sintattica in questione come membro sinistro 10

11 Per il nostro esempio le due funzioni da definire sono allora: N : Num N C : Cif N corrispondenti alle due categorie sintattiche La prima associa ogni parola del linguaggio generato dalle produzioni con membro sinistro Num al suo significato: chiamiamo ancora Num tale linguaggio La seconda associa ogni parola del linguaggio Cif al suo significato Per definire C dobbiamo considerare due casi, ovvero C u = 1 C z = 0 da interpretare come segue: per ogni elemento c di Cif, C c = 1 se c= u cioè se è derivabile con la seconda produzione per Cif, C c = 0 se c= z In definitiva il significato della parola u è il naturale 1, mentre quello della z è, denota, il naturale 0 Le definizioni corrispondenti ai vari casi vengono chiamate clausole delle definizioni semantiche; in ciascuna clausola delle funzioni di interpretazione, le componenti sintattiche sono racchiuse in una coppia omologa di per distinguerle dalle componenti semantiche: più precisamente gli elementi dei domini sintattici che compaiono nelle definizioni sono sempre racchiusi come indicato Se la definizione di C è immediata, quella di N è più complicata poiché Num è definito ricorsivamente ( una produzione è ricorsiva se la categoria sintattica nel lato sinistro è presente anche in quello destro) Usando n come generico elemento di Num e c come generico elemento di Cif abbiamo la seguente definizione N c = C c N nc = 2 N n + C c da interpretare come: il significato di una parola n appartenente a Num è dato dalla prima clausola che rimanda alla funzione C se n è derivabile con la prima produzione per Num, altrimenti se n è derivabile con la seconda allora ha una struttura formata da due parti, n e c rispettivamente, come espresso dalla seconda clausola Calcoliamo il significato del programma uzu : osservando che uzu è formata dalla u più a destra che appartiene alla categoria Cif e dalla parte uz appartenente alla categoria Num, avremo N uzu = 2 N uz + C u = 2 ( 2 N u + C z ) + C u = = 2 ( 2 C u + C z ) + C u = = 2 ( 2x ) + 1 = 5 11

12 Num Num Cif u z u Albero sintattico (parziale) della parola uzu Esercizi 1 verificare denotazionalmente che uuz e zzuuz hanno lo stesso significato 2 calcolare il significato di uuzu Questo modulo si chiude qui Nel prossimo indagheremo il rapporto tra i linguaggi e gli automi riconoscitori deterministici a stati finiti con qualche cenno a questioni di calcolabilità e decidibilità 12

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

Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis Capitolo 2 Grammatiche e Linguaggi Si ringraziano il Prof. Giovanni Semeraro e il Dott. Pasquale Lops per la concessione del

Dettagli

Espressioni Regolari

Espressioni Regolari Espressioni Regolari Le espressioni regolari sono costituite dalle stringhe sull alfabeto Σ = Σ {+,,*,(,),φ} ottenute secondo le seguenti regole: 1. φ e ciascun membro di Σ sono Epressioni Regolari 2.

Dettagli

Grammatiche Parse trees Lezione del 17/10/2012

Grammatiche Parse trees Lezione del 17/10/2012 Fondamenti di Programmazione A.A. 2012-2013 Grammatiche Parse trees Lezione del 17/10/2012 AUTILI MARCO http://www.di.univaq.it/marco.autili/ Riassunto lezione precedente Sintassi vs Semantica Stringhe,

Dettagli

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

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Grammatiche Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Esempio dei numeri interi Si consideri il linguaggio

Dettagli

Espressività e limitazioni delle grammatiche regolari

Espressività e limitazioni delle grammatiche regolari Espressività e limitazioni delle grammatiche regolari Vantaggi: Le grammatiche regolari consentono di esprimere una significativa classe di linguaggi: linguaggi con un numero di sequenze infinito grazie

Dettagli

Parte n.4 Linguaggi: Gerarchia ed Operazioni

Parte n.4 Linguaggi: Gerarchia ed Operazioni Linguaggi di Programmazione Corso C Parte n.4 Linguaggi: Gerarchia ed Operazioni Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Gerarchia di Chomsky Sia

Dettagli

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd Fondamenti d Informatica: linguaggi formali Barbara Re, Phd Agenda } Introdurremo } La nozione di linguaggio } Strumenti per definire un linguaggio } Espressioni Regolari 2 Linguaggio } Da un punto di

Dettagli

Proprietà dei linguaggi non contestuali

Proprietà dei linguaggi non contestuali Proprietà dei linguaggi non contestuali Argomenti della lezione Pumping lemma per i linguaggi non contestuali Proprietà di chiusura Argomenti della lezione Grammatiche non contestuali in forma ridotta

Dettagli

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora una classe piu ampia di linguaggi, i Linguaggi Liberi da Contesto (CFL) i CFL sono stati

Dettagli

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

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2014/2015 Linguaggi formali e compilazione sul corso Sito web: http://algogroup.unimore.it/people/mauro/dida/2014-2015 / Ricevimento:

Dettagli

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

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 richiami teorici sulle grammatiche di Chomsky esercizivari esercizi su grammatiche ed espressioni regolari

Dettagli

Corso di Linguaggi e Traduttori 1 AA GRAMMATICHE

Corso di Linguaggi e Traduttori 1 AA GRAMMATICHE Corso di Linguaggi e Traduttori 1 AA 2004-05 GRAMMATICHE 1 Definizione di Grammatica Formalmente definiamo un grammatica G mediante una quadrupla V, V, P S ( ) N T, dove: V N e l insieme dei simboli non

Dettagli

Precorsi di matematica

Precorsi di matematica Precorsi di matematica Francesco Dinuzzo 12 settembre 2005 1 Insiemi Il concetto di base nella matematica moderna è l insieme. Un insieme è una collezione di elementi. Gli elementi di un insieme vengono

Dettagli

Quiz sui linguaggi regolari

Quiz sui linguaggi regolari Fondamenti dell Informatica 1 semestre Quiz sui linguaggi regolari Prof. Giorgio Gambosi a.a. 2016-2017 Problema 1: Data l espressione regolare a, definita su {a, b}, descrivere il linguaggio corrispondente

Dettagli

2. I numeri reali e le funzioni di variabile reale

2. I numeri reali e le funzioni di variabile reale . I numeri reali e le funzioni di variabile reale Introduzione Il metodo comunemente usato in Matematica consiste nel precisare senza ambiguità i presupposti, da non cambiare durante l elaborazione dei

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2015/2016 Linguaggi formali e compilazione sul corso Sito web: http://algogroup.unimore.it/people/mauro/dida/2015-2016 / Ricevimento:

Dettagli

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio 6 aprile 2016 1 Teorema di Kleene 2 3 o 1 o 3 o 8 Teorema di Kleene Vale la seguente equivalenza: L 3 L FSL L REG Dimostrazione.

Dettagli

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi Nozioni Preliminari e Terminologia Alfabeti Stringhe Linguaggi Insiemi Def. Un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { } Gli elementi sono inseriti tra

Dettagli

Definizione di Grammatica

Definizione di Grammatica Corso di Linguaggi e Traduttori 1 AA 2004-05 GRAMMATICHE 1 Definizione di Grammatica Formalmente definiamo un grammatica G mediante una quadrupla ( VN, VT, P, S ) dove: V N e l insieme dei simboli non

Dettagli

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

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 PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica Una grammatica permette di stabilire se una sequenza di simboli

Dettagli

Dall algoritmo al calcolatore: concetti introduttivi. Fondamenti di Programmazione

Dall algoritmo al calcolatore: concetti introduttivi. Fondamenti di Programmazione Dall algoritmo al calcolatore: concetti introduttivi Fondamenti di Programmazione Algoritmo Problema o compito Preparazione di una torta Programmazione del VCR MCD tra due numeri Algoritmo sequenza precisa

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 Linguaggi e Complessità : Lezione 1 Corso Fondamenti di Informatica 2 Marco Schaerf, 2009-2010 Linguaggi e Complessità : Lezione 1 1 Logica proposizionale Linguaggio matematico

Dettagli

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

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

Corso di Programmazione Linguaggi di Programmazione. Linguaggio. Messaggio

Corso di Programmazione Linguaggi di Programmazione. Linguaggio. Messaggio Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Linguaggi di Programmazione Dott. Pasquale Lops lops@di.uniba.it Università degli Studi di Bari Dipartimento di Informatica

Dettagli

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

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 Forme Normali A partire da una grammatica Context-free G è sempre possibile costruire una grammatica equivalente G ovvero L(G) = L(G ) che abbiano le produzioni in forme particolari, dette forme normali.

Dettagli

Matematica e Statistica per Scienze Ambientali

Matematica e Statistica per Scienze Ambientali per Scienze Ambientali Insiemi e Combinatoria - Appunti 1 1 Dipartimento di Matematica Sapienza, Università di Roma Roma, 23 - Ottobre 2012 Il concetto di insieme Non tratterò la teoria assiomatica degli

Dettagli

Unità Didattica 2 I Linguaggi di Programmazione

Unità Didattica 2 I Linguaggi di Programmazione Unità Didattica 2 I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche

Dettagli

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari Esercizi di Fondamenti di Informatica per la sicurezza tefano Ferrari 23 dicembre 2003 2 Argomento 1 Grammatiche e linguaggi Esercizi Es. 1.1 Definiti i linguaggi: L 1 = {aa, ab, bc, c} L 2 = {1, 22, 31}

Dettagli

Forma Normale di Chomsky

Forma Normale di Chomsky 2. Eliminazione delle produzioni unitarie Forma Normale di Chomsky Una produzione si dice unitaria se è della forma A! B. Le produzioni unitarie in pratica consistono in una ridenominazione di variabili,

Dettagli

(1) Linguaggio L = insieme di stringhe, sequenze finite di elementi del vocabolario

(1) Linguaggio L = insieme di stringhe, sequenze finite di elementi del vocabolario Luigi Rizzi Linguistica computazionale I. Elementi di base sulle grammatiche formali (1) Linguaggio L = insieme di stringhe, sequenze finite di elementi del vocabolario (2) Dato un vocabolario A, l insieme

Dettagli

Quiz sui linguaggi CF

Quiz sui linguaggi CF Fondamenti dell Informatica 1 semestre Quiz sui linguaggi CF Prof. Giorgio Gambosi a.a. 2014-2015 Problema 1: Si consideri la seguente grammatica context free G, dove S, NP, V P, P P, A sono i simboli

Dettagli

Corso di Programmazione Linguaggi di Programmazione

Corso di Programmazione Linguaggi di Programmazione Corso di Programmazione Linguaggi di Programmazione Dott. Stefano Ferilli ferilli@di.uniba.it Università degli Studi di Bari Dipartimento di Informatica Linguaggio Insieme di sequenze di simboli appartenenti

Dettagli

DISPENSE SU TEORIA DEGLI INSIEMI E NUMERI

DISPENSE SU TEORIA DEGLI INSIEMI E NUMERI FACOLTA' DI ECONOMIA UNIVERSITA DELLA CALABRIA Corso di Modelli Matematici per l Azienda a.a. 2011-2012 DISPENSE SU TEORIA DEGLI INSIEMI E NUMERI Prof. Fabio Lamantia INSIEMI INSIEME= gruppo di oggetti

Dettagli

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica.

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica. Richiami di Matematica 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica. Insiemi Definizioni di base Dato un insieme A: x A: elemento x appartenente

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle grammatiche 1

Dettagli

Corso di Laurea Magistrale in Ingegneria Informatica A.A Linguaggi Formali e Compilatori. I linguaggi formali. Giacomo PISCITELLI

Corso di Laurea Magistrale in Ingegneria Informatica A.A Linguaggi Formali e Compilatori. I linguaggi formali. Giacomo PISCITELLI Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori I linguaggi formali Giacomo PISCITELLI Traduttori Un traduttore è un programma che effettua la traduzione

Dettagli

Linguaggi e Ambienti di Programmazione

Linguaggi e Ambienti di Programmazione Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi

Dettagli

01 - Elementi di Teoria degli Insiemi

01 - Elementi di Teoria degli Insiemi Università degli Studi di Palermo Scuola Politecnica Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 01 - Elementi di Teoria degli Insiemi Anno Accademico 2015/2016

Dettagli

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE Cosimo Laneve 1 argomenti 1. linguaggi di programmazione 2. definizione formale di insiemi infiniti 3. la grammatica e la notazione BNF 4. notazioni alternative

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Università degli studi Roma Tre. linguaggio Java. A cura di A. Orlandini. Linguaggi: Sintassi e Semantica - Il. Il linguaggio Java

Università degli studi Roma Tre. linguaggio Java. A cura di A. Orlandini. Linguaggi: Sintassi e Semantica - Il. Il linguaggio Java Università degli studi Roma Tre Linguaggi: Sintassi e Semantica Il A cura di A. Orlandini 1 Obiettivi Distinguere la sintassi dalla semantica di un linguaggio Conoscere le convenzioni del meta-linguaggio

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada

Dettagli

3. OPERAZIONI TRA CLASSI 2

3. OPERAZIONI TRA CLASSI 2 INSIEMI 1. Elementi e Classi Lo scopo di questo primo capitolo è di introdurre in maniera rigorosa le nozioni di classe e insieme, e di studiarne le principali proprietà. Nel seguito useremo il termine

Dettagli

Linguaggi. Rosario Culmone, Luca Tesei. 20/10/2009 UNICAM - p. 1/32

Linguaggi. Rosario Culmone, Luca Tesei. 20/10/2009 UNICAM - p. 1/32 Linguaggi Rosario Culmone, Luca Tesei 20/10/2009 UNICAM - p. 1/32 Alfabeto Un alfabeto è un insieme finito di simboli. Useremo Σ per denotare un alfabeto. Esempi di alfabeto sono: l alfabeto latino adottato

Dettagli

Cenni di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B)

Cenni di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Cenni di programmazione ricorsiva Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Corso di Laurea in Informatica Università di Pisa A.A. 2009/10 R. Barbuti, P. Mancarella Indice

Dettagli

Verificare se una grammatica e LL(1) e costruirne la tabella di parsing. Verificare se una grammatica e LR(0) e costruirne la tabele ACTION e GOTO

Verificare se una grammatica e LL(1) e costruirne la tabella di parsing. Verificare se una grammatica e LR(0) e costruirne la tabele ACTION e GOTO ANALISI SINTATTICA TIPO 1: Data un linguaggio scrivere una grammatica che lo generi TIPO 2: Verificare se una grammatica non contestuale è ambigua TiPO 3: Verificare se una grammatica e LL(1) e costruirne

Dettagli

Sipser, Capitolo 0. Alfabeti, Stringhe, Linguaggi

Sipser, Capitolo 0. Alfabeti, Stringhe, Linguaggi Sipser, Capitolo 0 Alfabeti, Stringhe, Linguaggi Def. Un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { } Gli elementi sono inseriti tra le parentesi Insiemi

Dettagli

Grammatiche context-free

Grammatiche context-free Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2013-2014 Linguaggi Formali e Compilatori Grammatiche context-free Giacomo PISCITELLI Politecnico di Bari G. Piscitelli pag. 1 di 28 Grammatiche

Dettagli

DAI NUMERI NATURALI AI NUMERI RAZIONALI

DAI NUMERI NATURALI AI NUMERI RAZIONALI DAI NUMERI NATURALI AI NUMERI RAZIONALI 1. L insieme dei numeri naturali Nel sistema assiomatico ZF, l Assioma dell infinito stabilisce che: Esiste un insieme A, i cui elementi sono insiemi e tale che

Dettagli

I Linguaggi di Programmazione

I Linguaggi di Programmazione I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Cosa è l Informatica?

Cosa è l Informatica? Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore

Dettagli

Definire tramite una grammatica ad attributi il

Definire tramite una grammatica ad attributi il 1 ESERCIZI ESERCIZIO 1 Definire tramite una grammatica ad attributi il linguaggio L = {a n b n c n n 0} Implementare un analizzatore sintattico/ semantico a discesa ricorsiva Costruire le tabelle di analisi

Dettagli

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

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 Un po di storia sui linguaggi 1957 John Backus e colleghi della IBM rilasciano la prima

Dettagli

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2

Dettagli

Oggetti sintattici. Semantica operazionale dei linguaggi di Programmazione. Oggetti sintattici. Funzioni di valutazione semantica

Oggetti sintattici. Semantica operazionale dei linguaggi di Programmazione. Oggetti sintattici. Funzioni di valutazione semantica Oggetti sintattici Abbiamo più volte sottolineato il fatto che le stringhe di un linguaggio sono di base oggetti simbolici puri Non hanno un significato particolare associato, a parte quello di essere

Dettagli

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli

Dettagli

Logica proposizionale

Logica proposizionale Logica proposizionale Proposizione: frase compiuta che è sempre o vera o falsa. Connettivi Posti in ordine di precedenza: not, and, or, implica, doppia implicazione Sintassi Le proposizioni sono costituite

Dettagli

Linguaggi formali e compilatori

Linguaggi formali e compilatori POLITECNICO DI MILANO Linguaggi formali e compilatori Appunti Stefano Invernizzi Anno accademico 2010-2011 Corso del prof. Angelo Morzenti Sommario Introduzione ai linguaggi... 5 Terminologia di base...

Dettagli

Grammatiche. Rosario Culmone, Luca Tesei. 20/11/2006 UNICAM - p. 1/49

Grammatiche. Rosario Culmone, Luca Tesei. 20/11/2006 UNICAM - p. 1/49 Grammatiche Rosario Culmone, Luca Tesei 20/11/2006 UNICAM - p. 1/49 Grammatiche libere dal contesto Ogni linguaggio di programmazione ha delle regole che prescrivono la struttura sintattica dei programmi

Dettagli

a cura di Luca Cabibbo e Walter Didimo

a cura di Luca Cabibbo e Walter Didimo a cura di Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 automi a pila automi a pila e grammatiche non contestuali notazioni sul livello degli esercizi: (*)

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Potenza espressiva degli automi Potenza espressiva delle grammatiche 9/11/2004 Programmazione - Luca Tesei 1 Linguaggi Regolari Tutti i linguaggi che possono essere

Dettagli

L intero è o il valore zero o una stringa di cifre che inizia con una cifra diversa sa zero.

L intero è o il valore zero o una stringa di cifre che inizia con una cifra diversa sa zero. ANALISI SINTATTICA Data un linguaggio scrivere una grammatica che lo generi ESERCIZIO 1 Definire una grammatica per il linguaggio L = {ww w appartiene a (a, b)*} ESERCIZIO 2 Dato l alfabeto T=[0,1,2,3,4,5,6,7,8,9,/}

Dettagli

Alcune nozioni preliminari di teoria elementare di insiemi e funzioni

Alcune nozioni preliminari di teoria elementare di insiemi e funzioni Alcune nozioni preliminari di teoria elementare di insiemi e funzioni Alberto Pinto Corso Propedeutico - METS A.A. 2013/2014 1 Insiemi 1.1 Generalità Diamo la definizione di insieme secondo Georg Cantor,

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

La suddivisione lezione/esercitazione è orientativa Martedì Lezione Aula A4 Martedi Esercitazione Aula A2 Mercoledì Laboratorio

La suddivisione lezione/esercitazione è orientativa Martedì Lezione Aula A4 Martedi Esercitazione Aula A2 Mercoledì Laboratorio La suddivisione lezione/esercitazione è orientativa Martedì 11 13 Lezione Aula A4 Martedi 14 16 Esercitazione Aula A2 Mercoledì 11 13 Laboratorio Lab. 1 Mercoledì 14 16 Lezione Aula A3 Giovedì 14 16 Lezione

Dettagli

Indice degli argomenti

Indice degli argomenti Indice degli argomenti 1 Teoria degli insiemi 2 Numeri 3 Calcolo combinatorio 4 Approssimazioni, propagazione degli errori, percentuali 5 Funzioni reali 6 Funzioni lineari 7 Programmazione lineare 8 Funzioni

Dettagli

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

Dispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR: Dispensa 2 2.1 Costruzione Parsing Table LR: generalità Come tutti i parser tabellari predittivi, anche i parser LR possono essere applicati solo a parsing table senza conflitti (ossia entrate multiple)

Dettagli

LINGUAGGI CONTEXT FREE. Lezione Lezione

LINGUAGGI CONTEXT FREE. Lezione Lezione LINGUAGGI CONTEXT FREE Lezione 25-11-2010 Lezione 30-11-2010 2 INTRODUZIONE GERARCHIA DI CHOMSKY 3 4 DEFINIZIONE DEI LINGUAGGI CONTEXT FREE LINGUAGGI CF I linguaggi di tipo 2 sono detti context free (CF)

Dettagli

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Cristina Turrini UNIMI - 2016/2017 Cristina Turrini (UNIMI - 2016/2017) Elementi di Algebra e di Matematica

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Esempio stringhe palindrome 1

Esempio stringhe palindrome 1 Esempio stringhe palindrome 1 Automa per il riconoscimento del linguaggio L = {w c w R } A = < {s,f}, {a,b,c}, {a,b},!, s, { f } > con! che contiene le transizioni: 1. (( s, a, " ), (s, a)! [ push a] 2.

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

Sviluppi e derivate delle funzioni elementari

Sviluppi e derivate delle funzioni elementari Sviluppi e derivate delle funzioni elementari In queste pagine dimostriamo gli sviluppi del prim ordine e le formule di derivazioni delle principali funzioni elementari. Utilizzeremo le uguaglianze lim

Dettagli

Indice. 1 Cenni di logica. 2 Elementi di teoria degli insiemi. 3 Relazioni e funzioni. 4 Strutture algebriche

Indice. 1 Cenni di logica. 2 Elementi di teoria degli insiemi. 3 Relazioni e funzioni. 4 Strutture algebriche Indice 1 Cenni di logica 2 Elementi di teoria degli insiemi 3 Relazioni e funzioni 4 Strutture algebriche Silvia Pianta - Laura Montagnoli Geometria I - Prerequisiti - UCSC A.A. 2015/2016 1 / 36 1. Cenni

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 09 Linguaggi Sintassi e Semantica Alfonso Miola Ottobre 2009 http://www.dia.uniroma3.it/~java/fondinf/ Linguaggi - Sintassi e Semantica

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

I metodi formali dell Analisi Lessicale: Le Espressioni Regolar

I metodi formali dell Analisi Lessicale: Le Espressioni Regolar I metodi formali dell Analisi Lessicale: Le Espressioni Regolari (ER) N.Fanizzi - V.Carofiglio 6 aprile 2016 1 Introduzione 2 3 4 5 Espressioni Regolari Dato un alfabeto finito X, una espressione regolare

Dettagli

AUTOMA A STATI FINITI

AUTOMA A STATI FINITI Gli Automi Un Automa è un dispositivo, o un suo modello in forma di macchina sequenziale, creato per eseguire un particolare compito, che può trovarsi in diverse configurazioni più o meno complesse caratterizzate

Dettagli

CORSO DI AZZERAMENTO DI MATEMATICA

CORSO DI AZZERAMENTO DI MATEMATICA CORSO DI AZZERAMENTO DI MATEMATICA 1 LE BASI FONDAMENTALI INSIEMI INSIEMI NUMERICI (naturali, interi, razionali e reali) CALCOLO LETTERALE RICHIAMI DI TRIGONOMETRIA I NUMERI COMPLESSI ELEMENTI DI GEOMETRIA

Dettagli

Pumping lemma per i linguaggi Context-free

Pumping lemma per i linguaggi Context-free Pumping lemma per i linguaggi Context-free Sia L un linguaggio context-free. E possibile determinare una costante k, dipendente da L, tale che qualunque stringa z! L con z > k si può esprimere come z=

Dettagli

Insiemi di numeri reali

Insiemi di numeri reali Capitolo 1 1.1 Elementi di teoria degli insiemi Se S è una totalità di oggetti x, si dice che S è uno spazio avente gli elementi x. Se si considerano alcuni elementi di S si dice che essi costituiscono

Dettagli

Concetti di base sugli automi e sui linguaggi formali

Concetti di base sugli automi e sui linguaggi formali Concetti di base sugli automi e sui linguaggi formali Andrea Burattin 18 marzo 2005 Sommario Piccolo insieme di concetti sul funzionamento degli automi (a stati finiti, a pila,...), delle grammatiche libere

Dettagli

7. Automi a Pila e Grammatiche Libere

7. Automi a Pila e Grammatiche Libere (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari 20 aprile 2016 1 Automi a Pila Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi 2 Teorema delle

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

La Rappresentazione Dell informazione

La Rappresentazione Dell informazione La Rappresentazione Dell informazione Parte I I Sistemi Di Numerazione La Rappresentazione Una rappresentazione è una relazione tra entità Un oggetto (rappresentante) rappresenta un altro oggetto (rappresentato),

Dettagli

Nozioni introduttive e notazioni

Nozioni introduttive e notazioni Nozioni introduttive e notazioni 1.1 Insiemi La teoria degli insiemi è alla base di tutta la matematica, in quanto ne fornisce il linguaggio base e le notazioni. Definiamo un insieme come una collezione

Dettagli

ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI

ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI 1. GLI ASSIOMI DI PEANO Come puro esercizio di stile voglio offrire una derivazione delle proprietà elementari dei numeri naturali e delle operazioni

Dettagli

I.4 Rappresentazione dell informazione

I.4 Rappresentazione dell informazione I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione

Dettagli

ALGORITMI: PROPRIETÀ FONDAMENTALI

ALGORITMI: PROPRIETÀ FONDAMENTALI ALGORITMI: PROPRIETÀ FONDAMENTALI Non si può risolvere un problema senza prima fissare un insieme di azioni, i di mosse elementari possibili per l'esecutore. Bisogna conoscerne le caratteristiche, le mosse

Dettagli

Automi e Linguaggi Formali Automi a stack (Pushdown automata)

Automi e Linguaggi Formali Automi a stack (Pushdown automata) Automi e Linguaggi Formali Automi a stack (Pushdown automata) A.A. 2014-2015 Enrico Mezzetti emezzett@math.unipd.it Automi a stack Un Pushdown Automata (PDA) o Automa a stack Essenzialmente un ɛ-nfa con

Dettagli

Progetto Matematica in Rete - Insiemi - Insiemi

Progetto Matematica in Rete - Insiemi - Insiemi Insiemi Il concetto di insieme è molto importante in matematica. Cominciamo con lo stabilire cos è un insieme in senso matematico: un raggruppamento di oggetti è un insieme se si può stabilire in modo

Dettagli

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Analizzatore lessicale o scanner Dispensa del corso di Linguaggi e Traduttori A.A. 2005-2006 Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner,

Dettagli

Linguaggi Sintassi e Semantica

Linguaggi Sintassi e Semantica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 4 Linguaggi Sintassi e Semantica Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Linguaggi - Sintassi

Dettagli

Espressioni regolari

Espressioni regolari spressioni Regolari Un FA (NFA o DFA) e una macchina a stati finiti che riconosce linguaggi regolari. Una espressione regolare e un modo dichiarativo (o algebrico) per descrivere un linguaggio regolare.

Dettagli

Parole note, nuovi significati: linguaggio, determinismo e infinito

Parole note, nuovi significati: linguaggio, determinismo e infinito Parole note, nuovi significati: linguaggio, determinismo e infinito Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario Filosofico

Dettagli