Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I Linguaggi di programmazione
Traduzione ed Interpretazione
Laboratorio di Linguaggi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica.
Nel sistema operativo MS-DOS il comando cd.. (change directory), serve a cambiare cartella. Il comando rd (remove directory), serve a rimuovere una cartella.
Sistema operativo MS-DOS
Software di base: Linguaggi di Programmazione
Evoluzione dei linguaggi di programmazione
I linguaggi di programmazione
Sintassi (prima parte)
Analizzatori Sintattici con Cup Giuseppe Morelli.
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Linguaggi di Programmazione e compilatori
Linguaggi di programmazione
Informazioni sul Corso
Generalità Linguaggio e Macchina Astratta
1 Metodologie di Programmazione. 2 Contenuto generale §tecniche per la programmazione orientata ad oggetti (in piccolo) §esemplificate utilizzando il.
Dr. Francesco Fabozzi Corso di Informatica
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Anno accademico Il preprocessore del linguaggio C.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
TRADUZIONE DEL PROGRAMMA Una volta che un programma sia stato scritto in C, esso non può essere eseguito senza unulteriore traduzione. Ciò perché qualsiasi.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
FONDAMENTI DI INFORMATICA III A3A1-1 Realtà e Modello MODELLI E METODOLOGIE PER LA PROGETTAZIONE LOGICA DI SISTEMI INFORMATIVI PER LUFFICIO Argomento 3.
Laboratorio di Linguaggi lezione IX Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2007/08.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: i commenti Anno Accademico 2009/2010.
Interpolazione ed estrapolazione
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
I linguaggi di alto livello
Unità Didattica 2 I Linguaggi di Programmazione
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Fondamenti di Informatica
AN FI Concetti. Linguaggi di alto livello u Hanno capacita' espressive superiori a quelle del linguaggio macchina u Suggeriscono concetti e modi.
Java Contardi Carlo A.S. 2008/09.
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Traduzione cap.5 1 CAP.5 LA PRODUZIONE DI CODICE 5.1 I languaggi intermedi 5.2 Le instruzioni di assegnamento 5.3 I collegamenti e le espressioni booleane.
Lo sviluppo del software e i linguaggi di programmazione
Puntatori e gestione dinamica della memoria
Macchine astratte, linguaggi, interpretazione, compilazione
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
R. Grande - Corso di Informatica '07
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Linguaggi per COMUNICARE
Generalità Software1Luglio 2004 Generalità Software Luglio 2004.
Lezione 3 Struttura lessicale del linguaggio
Dal problema all’ algoritmo
la traduzione dei programmi
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Scrivere e compilare programmi
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
Linguaggi Diversi tipi di linguaggi:
1 Macchine astratte, linguaggi, interpretazione, compilazione.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Il software Claudia Raibulet
I linguaggi di alto livello
L'ORA DEL CODICE. Il lato scientifico-culturale dell’informatica, definito anche pensiero computazionale, aiuta a sviluppare competenze logiche e capacità.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Facoltà di Economia Corso di Laurea in Economia Informatica Strumenti Formali per l’Analisi Lessicale – Sintattica dei Compilatori Universtità degli Studi “G. D’Annunzio” Chieti – Pescara LaureandaRelatore Caterina MandoliniStefano Bistarelli Anno Accademico

STRUMENTI FORMALI PER L’ANALISI LESSICALE- SINTATTICA DEI COMPILATORI. 1) Compilatori 2) Analisi Lessicale – Sintattica 3) Strumenti Formali

Il compilatore come traduttore da linguaggi di alto livello a linguaggi di basso livello Tipicamente: Il programma sorgente è scritto in un linguaggio di alto livello. Il programma oggetto nel linguaggio macchina. P1 equivalente a P2 P1 Programma Sorgente Compilatore P2 Programma Oggetto

Linguaggi di Programmazione Alto livello: Pascal, C, Java X=Y+5 Basso livello: Linguaggio macchina

Il Compilatore ci consente di Sfruttare le Potenzialità della Macchina (Velocità e Precisione nell’esecuzione delle istruzioni) evitandoci l’Onere di imparare il Linguaggio Macchina

Modello analisi - sintesi Analisi lessicale Analisi sintattica Analisi semantica Analisi P.S.Analisi SintesiP.O. Rappresentazione Intermedia

Il modulo dell’analisi: esempio Vogliamo assegnare alla variabile C il numero Supponiamo che l’istruzione di assegnamento sia := C=2.795 …….Errore!!! Analizzatore Lessicale 2.795:=C …….Errore!!! Analizzatore sintattico C:=2.795 …….Errore!!! Analizzatore semantico

Analizzatore Lessicale e Parser Verifica della correttezza sintattica del programma

Linguaggi formali  x  y (f(x)<y) Il linguaggio matematico è un linguaggio formale o informale? Conta il numero dei bit La lingua italiana è un linguaggio formale o informale?

Linguaggio Formale E’ un insieme costituito da un numero (finito o infinito) di frasi. Ogni frase è una sequenza finita di simboli. H = {f1, f2, …, fn, …} f1=, f2=, …, fn= n,…. H è un linguaggio formale?

Grammatiche Generative   Luca | Maria  guarda | chiama   il  cane

Luca chiama il cane 1) 2) 3) Luca 4) Luca chiama 5) Luca chiama 6) Luca chiama il 7) Luca chiama il cane

Albero di derivazione Lucachiama caneil

Classificazione delle grammatiche alla Chomsky I linguaggi regolari ed i linguaggi liberi sono decidibili. Complessità lineare: O(n 3 ) e O(n) Tipo 2 : libere dal contesto A   Tipo 0 Tipo 1 : dipendenti dal contesto  A   Tipo 3 : regolari A  aB | a

Automa a Stati Finiti Nastro di input  Controllo a stati finiti

Nastro di input  Controllo a stati finiti Memoria a pila Automa a Pila

STRUMENTI AUTOMATICI Analizzatore lessicale: LEX Analizzatore sintattico: YACC (Yet Another Compiler Compiler)

INTERAZIONE LEX – YACC YACC P.S. LEX ….. Token Altro token

Sintassi LEX P1, P2, …, Pn % P1 {Azione 1} P2 {Azione 2}... Pn {Azione n}

Sintassi YACC % token T1, T2,…, Tn, % A1:  1 {Azione semantica 1} A2:  2 {Azione semantica 2}... An:  n {Azione semantica n}

Programma YACC: esempio % token NUMERO % espr: espr ‘+’ espr {$$= $1 + $3;} | espr ‘-’ espr {$$= $1 - $3;} | espr ‘*’ espr {$$= $1 * $3;} | espr ‘/’ espr {$$= $1 / $3;} | espr ‘-’ espr {$$= $1 - $3;} | ‘(’ espr ‘)’ {$$= $2} | NUMERO Programma LEX NUMERO [0-9] % {NUMERO} {yylval=valore(); return (NUMERO);}