Definizioni syntax-directed

Размер: px
Начинать показ со страницы:

Download "Definizioni syntax-directed"

Транскрипт

1 Definizioni syntax-directed Esempio: Notazione infissa Notazione postfissa Produzioni E E 1 + T E E 1 T E T T 0 T 1 T 2... T 9 Regole semantiche E.t := E 1.t _T.t _ + E.t := E 1.t _T.t _ - E.t := T.t T.t := 0 T.t := 1 T.t := 2 T.t := 9

2 Movimenti di un robot Seq Seq Istr begin Istr est ovest nord sud begin ovest sud est est sud Traduciamo la sequenza in una posizione relativa al punto di partenza: (-1,0) (0,0) (-1,-1) (1,-1) (0,-1) (1,-2)

3 Produzioni Seq begin Seq Seq 1 Istr Istr est Istr ovest Istr nord Istr sud Regole semantiche Seq.x := 0 Seq.y := 0 Seq.x := Seq 1.x + Istr.dx Seq.y := Seq 1.y + Istr.dy Istr.dx := 1, Istr.dy := 0 Istr.dx := -1, Istr.dy := 0 Istr.dx := 0, Istr.dy := 1 Istr.dx := 0, Istr.dy := -1

4 Attributi ereditati Dichiarazioni: int NUM, ELEM, K Produzioni D T L L L 1, id L id T int T real Regole semantiche L.in := T.type L 1.in := L.in, addtype (id.entry, L.in) addtype (id.entry, L.in) T.type := integer T.type := real

5 D T L, int L id 3, L id 2 id 1

6 D T.type = integer L.in = integer int L.in = integer, id 3, L.in = integer id 2 id 1

7 Grafo delle dipendenze e ordine di valutazione for ogni nodo n dell albero di parsificazione do for ogni attributo a del simbolo della grammatica associato ad n do costruisci un nodo per a for ogni nodo n dell albero di parsificazione do for ogni regola semantica b := f(c 1,...,c k ) associata alla produzione usata in n do for i = 1 to k do costruisci un arco dal nodo c i al nodo b

8 Esempio: costruzione di alberi sintattici Funzioni usate: mknode (op, left, right): crea un nodo operatore con label op e i puntatori agli operandi, restituisce il puntatore al nodo creato. mkleaf (id, entry): crea un nodo identificatore con label id e un puntatore alla entry per l identificatore nella symbol-table, restituisce il puntatore al nodo creato. mkleaf (num, val): crea un nodo numero con label num e il valore del numero, restituisce il puntatore al nodo creato.

9 Definizione syntax-directed per costruire l albero sintattico Produzioni E E 1 + T E E 1 T E T T ( E ) T id T num Regole semantiche E.nptr := mknode ( +, E 1.nptr, T.nptr) E.nptr := mknode ( -, E 1.nptr, T.nptr) E.nptr := T.nptr T.nptr := E.nptr T.nptr := mkleaf (id, id.entry) T.nptr := mkleaf (num, num.val)

10 E.nptr = + E.nptr = + T.nptr = - E.nptr = - T.nptr = T.nptr = id id id id num num

11 Esempio: Lista delle differenze Definizione syntax-directed per costruire la lista delle differenze Produzioni C N#L L N;L 1 L N N 0 N 1... N 9 Regole semantiche C.list := L.list L.elem := N.val L.list := N.val - L.elem, L 1.list; L 1.elem := L.elem) L.list := N.val - L.elem N.val := 0 N.val := 1 N.val := 9 list, eval: sintetizzati elem: ereditato

12 C C.list = 2,-2,4 4#6;2;8 2,-2,4 N.val=4 N # L L.elem = 4 L.list = 2,-2,4 4 N.val=6 N ; L L.elem = 4 L.list = -2,4 6 N N.val=2 ; L L.elem = 4 L.list = 4 2 N N.val=8 8

13 Definizioni L-attribuiteL A X 1 X 2... X n Ogni attributo ereditato di X j dipende solo da: gli attributi dei simboli X 1 X 2... X j-1 a sinistra di X j nella produzione; gli attributi ereditati di A. Schemi di traduzione Uno schema di traduzione e una grammatica libera in cui gli attributi sono associati ai simboli della grammatica e le azioni semantiche, racchiuse tra parentesi graffe, sono inserite nei membri destri delle produzioni.

14 Gli schemi di traduzione sono un utile notazione per specificare la traduzione durante la parsificazione. E T R R addop T {print (addop. lessema)} R 1 ε T num {print (num.val)} Bisogna assicurare che il valore di un attributo sia disponibile quando un azione fa ad esso riferimento. Solo attributi sintetizzati: azioni alla fine del membro destro della produzione associata.

15 Attributi sintetizzati ed ereditati: un attributo ereditato per un simbolo al membro destro di una produzione deve essere calcolato con un azione prima del simbolo un azione non deve far riferimento a un attributo sintetizzato di un simbolo a destra dell azione un attributo sintetizzato per un non terminale a sinistra puo essere calcolato solo dopo che sono stati calcolati tutti gli attributi cui fa riferimento. Le azioni che calcolano questi attributi possono di solito essere posti alla fine del membro destro della produzione.

16 Definizione non L-attribuita Produzioni A L M A Q R Regole semantiche L.i := l (A.i) M.i := m (L.s) A.s := f (M.s) R.i := r (A.i) Q.i := q (R.s) A.s := f (Q.s)

17 Schema di traduzione che non soddisfa le condizioni: S A 1 A {A 2 1.in := 1; A 2.in := 2} {print (A.in)} A a Per una definizione diretta dalla sintassi L-attribuita è sempre possibile costruire uno schema di traduzione che soddisfa le tre condizioni precedenti. S {A 1.in := 1} A 1 {A 2.in := 2} A 2 A a {print (A.in)}

18 Ricorsione sinistra E E 1 num E num {E.val := E 1.val + num.val} {E.val := num.val} Equivalente grammatica senza ricorsione sinistra: E num R R num R ε

19 E E 1 num E num E num R R num R 1 R ε {E.val := E 1.val + num.val} {E.val := num.val} E E E num num R E num num R num num R ε

20 E E 1 num E num E num R num R ε {E.val := E 1.val + num.val} {E.val := num.val} {R.i := num.val} R {E.val := R.s} {R1.i := R.i + num.val} R 1 {R.s := R 1.s} {R.s := R.i} E 5+7 E E num 7 3 num R.i=3 E 3 num 2 2 num R.i=3+2 num 3 7 num R.i=5+7 R.s := 1 ε

21 A A 1 Y A X {A.a := g (A 1.a, Y.y)} {A.a := f (X.x)} A X R R YR ε A X R R Y R 1 R ε {R.i := f (X.x)} {A.a := R.s} {R 1.i := g (R.i, Y.y)} {R.s := R 1.s} {R.s := R.i}

22 Eliminazione ricorsione sinistra: Esempio E E 1 + T E E 1 -T E T T ( E ) T num {E.val := E 1.val + T.val} {E.val := E 1.val - T.val} {E.val := T.val} {T.val := E.val} {T.val := num.val} La grammatica non è LL(1)

23 E T R R + T R 1 R - T R 1 R ε T ( E ) T num {R.i := T.val} {E.val := R.s} {R 1.i := R.i + T.val} {R.s := R 1.s} {R 1.i := R.i -T.val} {R.s := R 1.s} {R.s := R.i} {T.val := E.val} {T.val := num.val}

24 E 4+3=7 E 7 9-5=4 E + T 3 T R E 9 - T 5 3 num num 9 - T 5 R 9-5=4 7 T 9 num 5 5 num + T 3 4+3=7 R 7 num 9 3 num ε R.i e R.s sono gli attributi, ereditato e sintetizzato rispettivamente, che giocano il ruolo di E.val nella grammatica con ricorsione sinistra.

25 Eliminazione ricorsione sinistra: Esempio Produzioni E E 1 + T E E 1 T E T T ( E ) T id T num Regole semantiche E.nptr := mknode ( +, E 1.nptr, T.nptr) E.nptr := mknode ( -, E 1.nptr, T.nptr) E.nptr := T.nptr T.nptr := E.nptr T.nptr := mkleaf (id, id.entry) T.nptr := mkleaf (num, num.val)

26 E T R R + T R 1 R - T R 1 R ε T ( E ) T num T id {R.i := T.nptr} {E.nptr := R.s} {R 1.i := mknode ( +, R.i, T.nptr)} {R.s := R 1.s} {R 1.i := mknode ( -, R.i, T.nptr)} {R.s := R 1.s} {R.s := R.i} {T.nptr := E.nptr} {T.nptr := mkleaf (num, num.val)} {T.nptr := mkleaf (id, id.entry)}

27 E.nptr = T.nptr = T R.i = R.s = num - T.nptr = R.i = - R.s = num id id + T.nptr = R.i + = R.s = id ε id

28 E.nptr = + - id num id

29 Valutazione top-down di grammatiche L-attribuiteL L analizzatore a discesa ricorsiva per grammatiche LL(1) può essere modificato in modo da valutare gli L-attributi. Ad ogni non terminale si associa una funzione che ha come parametri i valori degli attributi ereditati della variabile e restituisce i valori dei suoi attributi sintetizzati. La funzione per un non terminale ha una variabile locale per ogni attributo ereditato o sintetizzato per i simboli che compaiono nelle parti destre delle produzioni dal non terminale.

30 Codice per le parti destre delle produzioni: Per ogni non terminale B si genera un assegnazione <c 1,..., c k > := B(b 1,... B n ), che è una chiamata alla funzione associata a B. Per ogni terminale a i valori degli attributi sintetizzati vengono assegnati alle corrispondenti variabili e l esame passa al simbolo successivo. Le azioni semantiche vengono ricopiate dopo aver sostituito i riferimenti agli attributi con le variabili corrispondenti.

31 Valutazione top-down di grammatiche L-attribuiteL function A(e 1,... e n ) var s 1,..., s m, X 1 _x 1,..., X 1 _x k,..., X h _x 1,..., X h _x r begin if cc Gui(A α 1 ) then body (α 1 ) else if cc Gui(A α 2 ) then body (α 2 ). else if cc Gui(A α k ) then body (α k ) else ERRORE( ) return < s 1,..., s m > end

32 Produzioni C N#L L N;L 1 L N N 0... N 9 ε Regole semantiche C.list := L.list; L.elem := N.val L.list := cons N.val(N.val - L.elem, - L.elem, L 1.list; L 1.list); L 1.elem := L.elem L.list := N.val - L.elem N.val := 0 N.val := 9 C N#L L N;L 1 L ε N 0... N 9 L.list := null Insiemi guida {0, 1,..., 9} {0, 1,..., 9} { } {0} {9}

33 Schema di traduzione C N# {L.elem := N.val} L {C.list := L.list} L N; {L 1.elem := L.elem} L 1 {cons (N.val - L.elem, L 1.list)} {L.list := null} L ε N 0 {N.val := 0}... N 9 {N.val := 9}

34 N 0 {N.val := 0}... N 9 {N.val := 9} function N var val begin if cc = 0 then cc := PROSS val := 0 else if cc = 1 then cc := PROSS val := 1. else if cc = 9 then cc := PROSS val := 9 else ERRORE( ) return < s 1,..., s m > end

35 L N; L ε L 1 {L 1.elem := L.elem} {L.list := cons (N.val - L.elem, L 1.list)} {L.list := null} function L (elem) var list, N_val, L_elem, L_list begin if cc {0, 1,..., 9} then N_val := N if cc = ; then cc := PROSS L_elem := elem L_list := L (L_elem) list := cons (N_val - L_elem, L_list) else ERRORE( ) else if cc = then list := null else ERRORE( ) return list end

36 C N# L {L.elem := N.val} {C.list := L.list} function C var list, N_val, L_elem, L_list begin if cc {0, 1,..., 9} then N_val := N if cc = # then cc := PROSS L_elem := N_val L_list := L (L_elem) list := L_list else ERRORE( ) else ERRORE( ) return list end

Traduzione guidata dalla sintassi

Traduzione guidata dalla sintassi Traduzione guidata dalla sintassi Attributi e definizioni guidate dalla sintassi Dipartimento di Matematica e Informatica [email protected] Analisi Semantica Analisi sintattica - output:

Подробнее

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

Подробнее

Traduttore diretto dalla sintassi (seconda parte) Giuseppe Morelli

Traduttore diretto dalla sintassi (seconda parte) Giuseppe Morelli Traduttore diretto dalla sintassi (seconda parte) Giuseppe Morelli Traduzione di linguaggi guidata da Grammatiche Context Free La traduzione diretta della sintassi avviene associando regole e/o frammenti

Подробнее

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

Подробнее

Yet Another Compiler-Compiler. Generazione automatica di analizzatori sintattici

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

Подробнее

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,

Подробнее

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

Подробнее

Semantica e traduzione guidata dalla sintassi

Semantica e traduzione guidata dalla sintassi Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Semantica e traduzione guidata dalla sintassi Giacomo PISCITELLI Compile-time semantic evaluation Finora

Подробнее

Inserimento in una lista ordinata

Inserimento in una lista ordinata Inserimento in una lista ordinata Vogliamo inserire un nuovo elemento in una lista in cui gli elementi sono memorizzati in ordine crescente: Passo 1: creare un nuovo nodo della lista Passo 2: trovare il

Подробнее

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

Подробнее

Un esempio di compilatore realizzato con flex e bison

Un esempio di compilatore realizzato con flex e bison POLITECNICO DI MILANO Dipartimento di Elettronica e Informazione Corso di Linguaggi Formali e Compilatori - Esercitazioni Un esempio di compilatore realizzato con flex e bison Progetto di Vincenzo Martena

Подробнее

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

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

Подробнее

Fasi di un Compilatore

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

Подробнее

Analizzatore Lessicale Parte I Scanner

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

Подробнее

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,

Подробнее

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

Подробнее

Espressioni aritmetiche

Espressioni aritmetiche Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:

Подробнее

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico

Подробнее

Esercitazioni di Linguaggi e Traduttori

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

Подробнее

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

Подробнее

Esercitazione 6. Alberi binari di ricerca

Esercitazione 6. Alberi binari di ricerca Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)

Подробнее

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

Подробнее

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=

Подробнее

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

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:

Подробнее

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Подробнее

Esercizi Strutture dati di tipo astratto

Esercizi Strutture dati di tipo astratto Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio

Подробнее

Analisi lessicale (scanner)

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

Подробнее

Aritmetica postfissa

Aritmetica postfissa Aritmetica postfissa Le espressioni aritmetiche sono normalmente scritte in notazione infissa, cioe in modo tale che i simboli delle operazioni binarie compaiono tra gli oggetti su cui operano. ESEMPIO:

Подробнее

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni [email protected] Programmazione prof. Domenico

Подробнее

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,/}

Подробнее

Automi e Linguaggi Formali

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

Подробнее

Dispensa YACC. 1.1 YACC: generalità

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

Подробнее

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

Подробнее

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità Intelligenza Artificiale I Soddisfacibilità e Algoritmi Marco Piastra Intelligenza Artificiale I - A.A. 2010- Soddisfacibilità e Semantic Tableau [1] Problemi e decidibilità (automatica) Problema Un problema

Подробнее

La sintassi del C APPENDICE H

La sintassi del C APPENDICE H APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i

Подробнее

Dispensa 1. Da un punto di vista logico l architettura di un compilatore si può suddividere in due parti: Analisi e Sintesi.

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

Подробнее

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 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 un

Подробнее

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Подробнее

Per semplicità eliminiamo le ripetizioni nell'albero.

Per semplicità eliminiamo le ripetizioni nell'albero. Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore

Подробнее

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

Подробнее

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. 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

Подробнее

Espressioni. Espressioni. Valutazione di un espressione. Espressioni semplici

Espressioni. Espressioni. Valutazione di un espressione. Espressioni semplici Espressioni Una espressione E del linguaggio C può essere definita formalmente come segue (definizione induttiva): E è una espressione semplice. Espressioni Sia Op n un operatore del linguaggio di arità

Подробнее

albero sintattico parser scanner Errori sintattici

albero sintattico parser scanner Errori sintattici albero programma scanner tokens parser sintattico rrori sintattici Un parser deve riconoscere la struttura di una stringa di ingresso, la cui struttura è fornita in termini di regole di produzione di una

Подробнее

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

Подробнее

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Algoritmi e Strutture Dati + Lab A.A. / Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro ALBERO

Подробнее

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

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

Подробнее

4. I moduli in Access 2000/2003

4. I moduli in Access 2000/2003 LIBRERIA WEB 4. I moduli in Access 2000/2003 Il modulo è uno degli oggetti del database di Access e rappresenta un insieme di dichiarazioni e routine scritte con il linguaggio Visual Basic, memorizzate

Подробнее

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Подробнее

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]

Подробнее

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Подробнее

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Подробнее

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Подробнее

Le funzioni in JavaScript. Modularizzazione

Le funzioni in JavaScript. Modularizzazione Modularizzazione Quando abbiamo a che fare con un problema complesso spesso lo suddividiamo in problemi più semplici che risolviamo separatamente, per poi combinare insieme le soluzioni dei sottoproblemi

Подробнее

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro

Подробнее

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg [email protected] Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità

Подробнее

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

Подробнее

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi e alberi binari I Un albero è un caso particolare di grafo Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra

Подробнее

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica

Подробнее

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

Подробнее

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

Подробнее

Le basi del linguaggio Java

Le basi del linguaggio Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del

Подробнее

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli 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

Подробнее

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Подробнее

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Подробнее

Esercitazioni di Informatica 3

Esercitazioni di Informatica 3 Esercitazioni di Informatica 3 Part I: Programming Languages Syntax and semantics Laurea in Ingegneria Informatica Politecnico di Milano Polo di Milano Leonardo Esercizio 1: EBNF Utilizzando il linguaggio

Подробнее

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo

Подробнее