Linguaggi e Traduttori: Analisi lessicale
|
|
|
- Gilberta Pavone
- 8 anni fa
- Visualizzazioni
Transcript
1 Linguaggi e Traduttori: Analisi lessicale Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-La) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di Genova AA 2006/ Primo semestre
2 Outline Introduzione e motivazioni Strumenti formali Espressioni regolari (RE) Automi a stati finiti (DFA) Relazione tra RE e DFA Automi a stati finiti non deterministici (NFA) Costruzione di Thomson: da RE a NFA Conversione da NFA a DFA
3 Il Front End COMPILATORE codice sorgente codice eseguiile errori Lo scopo del Front End è quello di analizzare il codice sorgente Eseguire un test di appartenenza: programma linguaggio? Verificare se il programma è semanticamente en fondato Costruire la rappresentazione intermedia (IR)
4 Realizzazione del Front End Scanner Parser codice sorgente token stream errori IR Specifica della sintassi con una notazione formale espressioni regolari per l analisi lessicale grammatiche context-free per l analisi sintattica Sintesi automatica dei riconoscitori lessical e sintattici
5 Microsintassi e sintassi stream di caratteri Scanner (microsintassi) stream di token errori Parser (sintassi) IR + annotazioni token = <parte del discorso, lessema> L analizzatore lessicale identifica i token L analizzatore sintattico controlla il rispetto della grammatica L analisi sintattica è più complessa La separazione semplifica l implementazione
6 Visione d insieme Codice sorgente Scanner stream di token specifiche taelle/codice Generatore di Scanner COMPILAZIONE PROGETTAZIONE Le specifiche per il generatore sono espressioni regolari L analizzatore lessicale è un implementazione degli automi a stati finiti che corrispondono alle specifiche
7 Outline Introduzione e motivazioni Strumenti formali Espressioni regolari (RE) Automi a stati finiti (DFA) Relazione tra RE e DFA Automi a stati finiti non deterministici (NFA) Costruzione di Thomson: da RE a NFA Conversione da NFA a DFA
8 Operazioni su insiemi (Ripasso?) Operazione Definizione Unione di L ed M L M L M = {s s L o s M} Concatenazione di L ed M LM LM = {st s L e t M} Chiusura di L L L = 0 i Li
9 Espressioni regolari (RE) Dato un alfaeto (insieme di simoli) Σ è una RE che denota l insieme vuoto {} Se s Σ allora s è una RE che denota {s} Se x e y sono RE che denotano L(x) ed L(y) allora x y è una RE che denota L(x) L(y) xy è una RE che denota L(x)L(y) x è una RE che denota L(x)
10 Utilizzo delle RE Dato un generico alfaeto Σ utilizzando le RE possiamo specificare singole parole con la concatenazione insiemi di parole con l unione insiemi di parole aventi la stessa struttura con la chiusura Ad esempio, dato Σ = {caratteri ASCII} possiamo scrivere: una RE per ogni singola parola chiave del C: if, then, void, int, ecc una RE che racchiude tutte le parole chiave del C: if then void int una RE che riconosce identificatori validi in C: date x = a z A B _ e y = x 0 9, l espressione xy definisce (infiniti) identificatori
11 Outline Introduzione e motivazioni Strumenti formali Espressioni regolari (RE) Automi a stati finiti (DFA) Relazione tra RE e DFA Automi a stati finiti non deterministici (NFA) Costruzione di Thomson: da RE a NFA Conversione da NFA a DFA
12 Automi a stati finiti deterministici (DFA) Un DFA è una quintupla S, Σ, δ, s 0, S F, dove: S è un insieme di finito stati (o configurazioni) Σ è un insieme finito di simoli δ è una funzione δ : S Σ S s 0 è lo stato di partenza s 0 S S F è l insieme degli stati finali S F S Intuitivamente, data una sequenza di simoli w: l automa si accende nello stato s 0 dato lo stato corrente s, l automa consuma un carattere c di w, ed effettua una transizione nello stato δ(s, c) quando w è stata consumata, se lo stato corrente appartiene a S F allora w è accettata dall automa, altrimenti è rifiutata
13 Utilizzo dei DFA a z A Z _ 0 9 s0 a z A Z _ s1 Un DFA per riconoscere gli identificatori validi del C Formalmente: Σ = {a,, z, A,, Z, _, 0,, 9} S = {s 0, s 1 } δ è la funzione rappresentata dal diagramma S F = {s 1 } Identificatori accettati: _, a21, pippo Identificatori rifiutati: 15, 7a
14 Sintesi dei DFA Schema del riconoscitore ISIDENTIFIER(inputStream) : ool 1 char GETCHAR(inputStream) 2 state s 0 3 while (char EOF) 4 state δ(state, char) 5 char GETCHAR(inputStream) 6 if state S F 7 then return TRUE 8 else return FALSE Funzione di transizione δ a z 0 9 altro A Z _ s 0 s 1 err err s 1 s 1 s 1 err
15 Outline Introduzione e motivazioni Strumenti formali Espressioni regolari (RE) Automi a stati finiti (DFA) Relazione tra RE e DFA Automi a stati finiti non deterministici (NFA) Costruzione di Thomson: da RE a NFA Conversione da NFA a DFA
16 Visione d insieme descrivono Linguaggi Regolari riconoscono Espressioni Regolari (RE)??? Automi a Stati Finiti (DFA) Le RE descrivono (tutti e soli) i linguaggi regolari I DFA riconoscono (tutti e soli) i linguaggi regolari Quale corrispondenza tra RE e DFA? Chiave per la sintesi automatica di scanner
17 Da RE a DFA: prolematiche La RE (a ) a corrisponde al DFA: a s0 a s1 a s2 s3 a La corrispondenza non è immediata La conversione diretta è difficilmente automatizzaile
18 Da RE a DFA: non determinismo Un altro automa per la RE (a ) a a s0 s1 a s2 s3 s4 Un riconoscitore intrinsecamente diverso: s 0 ha una transizione con s 1 ha due transizioni uscenti con a Si tratta di un automa a stati finiti non deterministico
19 Automi a stati finiti non deterministici (NFA) Un NFA accetta una stringa x se e solo se esiste una sequenza di transizioni da s 0 a s S F (ignorando ) che corrisponde ai simoli di x Le transizioni su non consumano l input L esecuzione di un NFA prevede che si indovini la mossa corretta ad ogni passo viene sempre fatta la scelta giusta se una sequenza di scelte giuste accetta x allora x fa parte del linguaggio riconosciuto dall automa
20 Relazione tra NFA e DFA I DFA sono un caso particolare di NFA non ammettono transizioni su le transizioni sono descritte da una funzione Un DFA può essere simulato con un NFA (ovviamente!) Un NFA può essere simulato con un DFA (meno ovvio) Simulare sovrapposizioni di stati Nel caso pessimo, esplosione esponenziale (spazio) Tempo di esecuzione comunque proporzionale a x
21 RE, NFA e DFA nei compilatori Per generare automaticamente il codice dell analizzatore lessicale: 1 Scrivere le specifiche con le RE (a mano) 2 Convertire le RE in un NFA (Thomson s construction) 3 Convertire l NFA in un DFA (Suset construction) 4 (Minimizzare il DFA risultante) 5 Generare il codice
22 Outline Introduzione e motivazioni Strumenti formali Espressioni regolari (RE) Automi a stati finiti (DFA) Relazione tra RE e DFA Automi a stati finiti non deterministici (NFA) Costruzione di Thomson: da RE a NFA Conversione da NFA a DFA
23 Elementi di ase s0 a s1 s0 a s1 s2 s3 NFA per a NFA per a s0 s1 a s2 s5 s0 s1 a s2 s3 s3 s4 NFA per a NFA per a
24 Esempio di costruzione di Thomson (1/2) NFA per la RE a( c) 1 NFA per a, e c s0 a s1 s0 s1 s0 c s1 2 NFA per c s1 s0 s2 s5 s3 c s4 3 NFA per ( c) s2 s0 s1 s3 s6 s7 s4 c s5
25 Esempio di costruzione di Thomson (2/2) 4 NFA per a( c) s8 a s9 s0 s1 s2 s3 s6 s7 s4 c s5 È possiile costruire un automa molto più semplice a mano s0 a s1 c però la costruzione di Thomson può essere automatizzata!
26 Outline Introduzione e motivazioni Strumenti formali Espressioni regolari (RE) Automi a stati finiti (DFA) Relazione tra RE e DFA Automi a stati finiti non deterministici (NFA) Costruzione di Thomson: da RE a NFA Conversione da NFA a DFA
27 Suset Construction: NFA DFA Si tratta di simulare un NFA Due funzioni chiave: MOVE(s i, a): insieme degli stati raggiungiili da s i tramite a -CLOSURE: insieme degli stati raggiungiili da s i tramite Algoritmo: Lo stato iniziale del DFA q 0 è la -CLOSURE dello stato iniziale del NFA s 0, ossia q 0 = -CLOSURE(s 0 ) Lo stato successivo è l immagine di q 0, ossia la -CLOSURE del risultato di MOVE(s i, α) per ogni α Σ Ripeto il procedimento finché nessun nuovo stato q i viene creato
28 Pseudo-codice per la suset construction q 0 -CLOSURE({s 0 }) Q {q 0 } W {q 0 } while (W ) selezionare e rimuovere q da W foreach α Σ t -CLOSURE(MOVE(q,α)) δ(q, α) t if (t S) then S S {t} W W {t} L algoritmo termina: 1 S non contiene duplicati 2 2 {# stati NFA} è finito 3 il loop while aggiunge sempre elementi ad S (monotono) il loop termina! S contiene tutti gli stati raggiungiili dell NFA esplora tutti i simoli in tutti gli stati costruisce ogni possiile configurazione S e δ sono il DFA risultante
29 Esempio di conversione NFA DFA (1) s8 a s9 s0 s1 s2 s3 s6 s7 s4 c s5 Stati DFA (q) Stati NFA (s) -CLOSURE(MOVE(q,*)) a c q 0 s 8 s 9,s 0,s 1, s 2,s 4,s 7 q 1 s 9,s 0,s 1, s 3, s 6, s 7, s 5, s 6, s 7, s 2,s 4,s 7 s 1,s 2,s 4 s 1,s 2,s 4 q 2 s 3, s 6, s 7, q 2 q 3 s 1,s 2,s 4 q 3 s 5, s 6, s 7, q 2 q 3 s 1,s 2,s 4
30 Esempio di conversione NFA DFA (2) q2 q0 a q1 c c q3 s0 a s1 Generato automaticamente c Generato a mano c L automa ottenuto: ha minori dimensioni del NFA corrispondente, ha tutte le transizioni deterministiche, e può essere implementato utilizzando il codice visto in precedenza
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
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,
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
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
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
Analizzatore Lessicale Parte I Scanner
Analizzatore Lessicale Parte I Scanner Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar, Pasquale Lops In questa dispensa si descrive un approccio alla costruzione di un analizzatore lessicale
Analisi lessicale (scanner)
Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Analisi lessicale (scanner) Giacomo PISCITELLI Ruolo dell Analizzatore lessicale Compito di un analizzatore
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)
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.
Dispensa 1. Da un punto di vista logico l architettura di un compilatore si può suddividere in due parti: Analisi e Sintesi.
Dispensa 1 1. Introduzione ai compilatori Compilatore Un compilatore è un programma che legge un programma scritto in un linguaggio (sorgente) e lo traduce in un programma equivalente in un altro linguaggio
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,
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}
Fasi di un Compilatore
Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore
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
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
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
Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza
Macchine di Turing Argomenti della lezione Definizione della macchina di Turing Riconoscimento e accettazione di linguaggi Macchine a più nastri La macchina di Turing èun è automa che può leggere e scrivere
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
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
Proprieta dei Linguaggi regolari
Proprieta dei Linguaggi regolari Pumping Lemma. Ogni linguaggio regolare soddisfa il pumping lemma. Se qualcuno vi presenta un falso linguaggio regolare, l uso del pumping lemma mostrera una contraddizione.
Linguaggi regolari e automi a stati finiti
utomi a stati finiti Gli automi a stati finiti sono usati come modello per Software per la progettazione di circuiti digitali. Analizzatori lessicali di un compilatore. Ricerca di parole chiave in un file
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.
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.
Corso di Informatica 1 Esercitazione n. 4
Corso di Informatica 1 Esercitazione n. 4 Marco Liverani Esercizio n. 1 Letti in input due numeri interi n > 0 e k > 1 costruire un array A di n numeri interi casuali minori di 100 che non siano multipli
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
Aniello Murano Automi e Pushdown
Aniello Murano Automi e Pushdown 2 Lezione n. Parole chiave: Automi e PDA Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Calcolabilità, complessità e macchine computazionali
Automi. Rosario Culmone, Luca Tesei. 20/10/2009 UNICAM - p. 1/55
Automi Rosario Culmone, Luca Tesei 20/10/2009 UNICAM - p. 1/55 Storia Dal latino automatus "che si muove da sé" Macchine o dispositivi reali o ipoteticamente realizzabili, i quali siano in grado di eseguire
Espressioni regolari descrivono i linguaggi regolari. Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari.
Espressioni regolari descrivono i linguaggi regolari Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari. Una espressione regolare e un modo dichiarativo per descrivere
Esercitazioni di Linguaggi e Traduttori
1 Linguaggi CF e Riconoscitori 2 Introduzione a Yacc Introduzione a YACC Definizione dei simboli Codifica della grammatica Formato del programma prodotto da YACC Ambiguità e conflitti Conflitti shift-reduce
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Cosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
Analizzatori Lessicali con JLex. Giuseppe Morelli
Analizzatori Lessicali con JLex Giuseppe Morelli Terminologia Tre concetti sono necessari per comprendere la fase di analisi lessicale: TOKEN: rappresenta un oggetto in grado di rappresentare una specifica
Yet Another Compiler-Compiler. Generazione automatica di analizzatori sintattici
Yet Another Compiler-Compiler Generazione automatica di analizzatori sintattici 2 YACC Yet Another Compiler-Compiler YACC (Bison) è un generatore di analizzatori sintattici a partire dalla descrizione
Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione
Principali informazioni sull insegnamento Titolo insegnamento Linguaggi di Programmazione Corso di studio Informatica e Comunicazione Digitale Crediti formativi 9 Denominazione inglese Programming Languages
Ottimizzazione dei Sistemi Complessi
1 Giovedì 2 Marzo 2017 1 Istituto di Analisi dei Sistemi ed Informatica IASI - CNR Pseudo-code del metodo Fermi-Metropolis Input: x 0, 0, min, maxit k 0, x x 0, 0 while k maxit and min do k k + 1, x x
Il Modello di un Compilatore. La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa.
Il Modello di un Compilatore La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa. La complessità dipende dal linguaggio sorgente. Compilatore: traduce
Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd
Fondamenti d Informatica: Le Macchine di Turing Barbara Re, Phd Agenda } Introdurremo } il formalismo delle Macchine di Turing nelle varie versioni } la nozione di calcolabilità e di decidibilità 2 La
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Automi e Linguaggi Formali
E-mail: [email protected] rario e ricevimento Orario: Lunedi, Martedi, Mercoledi, Giovedi 13:30-15:30 LUM250 Crediti: 8 crediti formativi, circa 64 ore di lezione Ricevimento: Martedi 11:00-13:00, studio
Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
LA METAFORA DELL UFFICIO
LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome
Dall algoritmo al programma
Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione
Il linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani ([email protected])
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
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,/}
Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
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
Principio di composizione delle MT
Principio di composizione delle MT La definizioni date fanno riferimento a situazioni in cui la macchina sia capace di risolvere problemi singoli. E possibile far sì che macchine progettate per problemi
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=
Introduzione alla programmazione strutturata
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio
Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali
Introduzione agli Algoritmi
Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Macchina di Turing Universale
Informatica Teorica 2010/2011 M.Di Ianni Macchina di Turing Universale Vogliamo definire una macchina di Turing U che, presi in input la descrizione di una macchina di Turing ad un nastro T ed un input
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
INTRODUZIONE AL TESTO FILOSOFICO
INTRODUZIONE AL TESTO FILOSOFICO MEDIANTE FORME DI ANNOTAZIONE SEMANTICA Ciclo seminariale 4 febbraio 2011 4 marzo 2011 Fra ontologie e mappe: un introduzione Francesco Bianchini DI COSA PARLEREMO Mappe
Rappresentazione con i diagrammi di flusso (Flow - chart)
Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo
Linguaggi e Traduttori: Introduzione al corso
Linguaggi e Traduttori: Introduzione al corso Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di
18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
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)
Dispensa YACC. 1.1 YACC: generalità
Dispensa YACC 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in
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
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
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :
PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:
