Semantica e traduzione guidata dalla sintassi (cenni)
|
|
|
- Irma Maggi
- 8 anni fa
- Просмотров:
Транскрипт
1 Corso di Laurea Magistrale in Ingegneria Informatica A.A Linguaggi Formali e Compilatori Semantica e traduzione guidata dalla sintassi (cenni) Giacomo PISCITELLI
2 Compile-time semantic evaluation Finora si è visto come il parser traccia le derivazioni di una sequenza di token, producendo via via il parse tree delle varie istruzioni del programma. Politecnico di Bari G. Piscitelli pag. 2 di 26
3 Abstract Syntax Trees Il resto del compilatore, però, ha bisogno di conoscere di più dei costrutti del programma: in particolare le proprietà non esprimibili nel modello non contestuale. Di qui la necessità di costruire l Abstract Syntax Tree (AST), cioè di: associare, ai terminali e non terminali del parse tree, attributi (es. valore e tipo per le variabili e le espressioni) che consentano l analisi e verifica di condizioni di natura semantica ; specificare le regole (o azioni) semantiche di verifica delle anzidette condizioni per ciascuna produzione della sintassi: le azioni indicano, là dove si usa una produzione, come valutare gli attributi del nodo non terminale in relazione a quelli dei nodi figli. Una Syntax Directed Definition (SDD) consiste nell associare un set di attributi a ciascun simbolo della grammatica e un set di azioni semantiche a ciascuna produzione. Politecnico di Bari G. Piscitelli pag. 3 di 26
4 Abstract Syntax Trees Gli Abstract Syntax Tree sono forme sintetiche di parse tree che consentono di rappresentare in maniera adeguata i costrutti linguistici di una grammatica Operatori e parole chiave non appaiono come simboli terminali Operatori e parole chiave, invece, definiscono il significato dei nodi figli Catene di singole produzioni possono essere collassate Politecnico di Bari G. Piscitelli pag. 4 di 26
5 Constructing an Abstract Syntax Trees Considerando la grammatica E int ( E ) E + E e la stringa 5 + (2 + 3) dopo l analisi lessicale sarà stata ricavata una lista di token int5 + ( int2 + int3 ) e avremo costruito un parse tree basato su troppi simboli terminali..... Politecnico di Bari G. Piscitelli pag. 5 di 26
6 Constructing an Abstract Syntax Trees.... che può essere sostituito dal seguente AST, più compatto e facile da trattare.... che conserva la struttura di nesting del parse tree ma astrae dalla pura sintassi e consente di associare ad un nodo terminale anche altri attributi (oltre al semplice valore) mediante un record da inserire nella tavola dei simboli. Politecnico di Bari G. Piscitelli pag. 6 di 26
7 Grammatica: E ::= E + T E T T T ::= (E) id num Defining a SDD from AST Uso di una SDD Problema: costruire un AST per ogni espressione Approccio grammatica ad attributi Associare ogni non-terminale con un AST Per ogni AST: un pointer ad ogni nodo nell AST E.nptr T.nptr Definizioni: come determinare gli attributi? Nel bottom-up: si fa uso di synthesized attribute Se si conosce l AST di ogni figlio, come determinare l AST del genitore? Politecnico di Bari G. Piscitelli pag. 7 di 26
8 Example: constructing AST Bottom-up parsing: si valuta un attributo ad ogni riduzione Politecnico di Bari G. Piscitelli pag. 8 di 26
9 Syntax Directed Translation scheme (SDT) Specificata una SDD, è poi possible definire uno schema di traduzione guidato dalla sintassi (SDT), una notazione, cioè, per attaccare frammenti di programma (semantic actions) alle produzioni di una grammatica. I frammenti di programma sono eseguiti quando, durante l analisi, si fa uso della produzione. L esecuzione di tali frammenti, nell ordine indotto dall analisi sintattica, produce come risultato la traduzione del programma. La posizione in cui eseguire un azione semantica è indicata racchiudendo il programma tra parentesi graffe e scrivendo il tutto nel corpo della produzione, come mostrato nel seguente esempio: rest + term print ( + ) rest1 Ogni SDT può essere realizzato prima costruendo un parse tree e poi eseguendo le azioni con attraversamento in pre-ordine sinistro. Politecnico di Bari G. Piscitelli pag. 9 di 26
10 Semantic Actions Poichè i simboli (non-terminali e terminali) della grammatica rappresentano costrutti di programmazione, gli attributi sono associati ai simboli. In ciò consiste quello che si chiama costruzione degli AST. Ogni simbolo della grammatica può avere attributi Gli attributi dei simboli terminali (detti anche token lessicali) possono essere determinati dallo scanner. Ogni produzione può richiedere una azione indicata nella seguente modalità: X Y1 Yn { action } che può far riferimento alla determinazione degli attributi dei simboli. Politecnico di Bari G. Piscitelli pag. 10 di 26
11 Analisi semantica e sintesi dell output La fase di analisi semantica dell input dipende dalla semantica del linguaggio sorgente. La fase di sintesi dell output dipende sia dalla semantica del linguaggio sorgente che dalla semantica del linguaggio destinazione. Data la complessità della definizione della semantica di un linguaggio, le fasi di analisi semantica dell input e di sintesi dell output non possono essere automatizzate, come invece avviene per le fasi di analisi lessicale e analisi sintattica. Pertanto, i moduli che realizzano le fasi di analisi semantica e sintesi dell output devono essere realizzati manualmente (non esistono strumenti di generazione automatica). Politecnico di Bari G. Piscitelli pag. 11 di 26
12 Sintesi dell output Approccio classico (due passate): 1. si sintetizza l albero sintattico (struttura dati) nella fase di analisi sintattica 2. si utilizza l albero sintattico per la sintesi dell output Approccio semplificato (una passata): 1. si sintetizza l output direttamente durante l analisi sintattica, senza costruire l albero sintattico L approccio semplificato ad una passata funziona solo nei casi semplici di traduzione e, più in generale, di elaborazione dell input. Invece, costruendo l albero sintattico e visitandolo successivamente si può implementare un insieme molto più grande di funzioni di traduzione e di elaborazione Politecnico di Bari G. Piscitelli pag. 12 di 26
13 Semantica e tipi di regole Se si considera un linguaggio assolutamente generale (e non soltanto un linguaggio di programmazione) le regole semantiche possono essere espresse: a parole (poco precisa e ambigua) mediante azioni Semantica operazionale mediante funzioni matematiche Semantica denotazionale mediante formule logiche Semantica assiomatica Il particolare tipo di regole semantiche utilizzate nell ambito dei compilatori è di tipo operazionale ed è noto con il nome di grammatica ad attributi, senza dubbio il più diffuso nel campo dei linguaggi di programmazione. Politecnico di Bari G. Piscitelli pag. 13 di 26
14 Traduzione guidata dalla sintassi Sarebbe difficile progettare in modo globale un algoritmo di traduzione di un linguaggio complesso senza prima analizzare la frase sorgente nei suoi costituenti definiti dalla sintassi. L analisi sintattica riduce la complessità del problema del calcolo della traduzione, decomponendolo in sottoproblemi più semplici. Per ogni costituente della frase sorgente il traduttore esegue le azioni appropriate per preparare la traduzione, azioni che consistono nel raccogliere certe informazioni (ad es. le tabelle dei simboli), nel fare dei controlli semantici, o nell emettere certe parti della frase pozzo. In altre parole il lavoro del traduttore è modularizzato secondo la struttura descritta dall albero sintattico della frase. Perciò questo tipo di traduttori è detto guidato dalla sintassi. Politecnico di Bari G. Piscitelli pag. 14 di 26
15 Grammatiche ad attributi Si parla di traduzione guidata dalla sintassi nei casi in cui è possibile definire il processo di sintesi dell output (traduzione) sulla base della struttura sintattica dell input. In altre parole, in questi casi l operazione di traduzione è fortemente legata alla sintassi dell input; pertanto la traduzione può essere definita in modo parallelo alla definizione della sintassi dell input. In moltissime applicazioni informatiche la funzione di traduzione (o di elaborazione) è guidata dalla sintassi; a tal fine, è possibile estendere i formalismi di specifica della sintassi al fine di catturare alcuni aspetti semantici. In particolare, vengono definite e utilizzate estensioni del formalismo delle grammatiche non contestuali: le grammatiche ad attributi, che estendono le grammatiche non contestuali introducendo le nozioni di: 1. attributi associati ai simboli (terminali e non terminali) della grammatica 2. azioni semantiche e regole semantiche, che affiancano le regole sintattiche della grammatica Tramite le azioni semantiche, è possibile specificare la fase di traduzione in parallelo alla specifica della sintassi del linguaggio sorgente. Anche per traduzioni guidate dalla sintassi, si può avere la necessità di costruire l albero sintattico (due passate distinte per analisi sintattica e sintesi dell output) oppure no (una sola passata per analisi sintattica e sintesi dell output) Politecnico di Bari G. Piscitelli pag. 15 di 26
16 Attributi, regole semantiche, azioni semantiche Nelle grammatiche ad attributi: un attributo è una proprietà associata al simbolo, che può essere letta o assegnata dalle azioni semantiche (proprio come una variabile di un linguaggio di programmazione) ogni simbolo terminale o non terminale può avere uno o più attributi gli attributi sono usati per rappresentare un significato (tramite un valore numerico o una stringa o una struttura di dati, ) che viene associato ai simboli sintattici ad ogni regola di produzione (regola sintattica) può essere associata una regola semantica una regola semantica è una sequenza di azioni semantiche una azione semantica è un azione in grado di assegnare valori agli attributi (e che quindi calcola tale significato ) e di avere altri effetti (proprio come una o più istruzioni di un linguaggio di programmazione) Politecnico di Bari G. Piscitelli pag. 16 di 26
17 esempio: Attributi e azioni semantiche in una grammatica per espressioni aritmetiche sui numeri interi, possiamo associare un attributo di tipo intero ad ogni simbolo non terminale della grammatica possiamo poi definire delle azioni semantiche in modo tale che il valore di ogni attributo corrisponda al valore della sottoespressione associata al corrispondente simbolo non terminale pertanto il valore dell attributo associato alla radice dell albero sintattico è uguale al valore dell intera espressione aritmetica Politecnico di Bari G. Piscitelli pag. 17 di 26
18 Attributi sintetizzati e attributi ereditati Gli attributi si distinguono in: attributi sintetizzati: sono gli attributi il cui valore dipende solo dai valori degli attributi presenti nel sottoalbero del nodo dell albero sintattico a cui sono associati attributi ereditati: sono gli attributi il cui valore dipende solo dai valori degli attributi presenti nei nodi predecessori e nei nodi fratelli del nodo dell albero sintattico a cui sono associati Gli attributi sintetizzati realizzano un flusso informativo ascendente nell albero sintattico (dalle foglie verso la radice). Gli attributi ereditati realizzano un flusso informativo discendente (dalla radice verso le foglie) e laterale (da sinistra verso destra e viceversa) nell albero sintattico. Politecnico di Bari G. Piscitelli pag. 18 di 26
19 Valutazione degli attributi L esecuzione di una regola semantica avviene in parallelo all applicazione della corrispondente regola sintattica nell analisi sintattica. Pertanto, l ordine di applicazione delle regole semantiche è conseguenza dell ordine di applicazione delle regole di produzione nell analisi sintattica. In particolare, dato un certo ordine di applicazione, le istruzioni che nelle regole semantiche effettuano la valutazione degli attributi potrebbero non essere eseguibili in modo corretto: ad esempio, può accadere che in una azione semantica si tenti di leggere il valore di un attributo non ancora assegnato. La valutazione può avere anche side effects (effetti collaterali) come la stampa di valori o l aggiornamento di una variabile globale. Questi problemi, noti come problema della valutazione degli attributi, sono fondamentali per il trattamento automatico delle grammatiche ad attributi. In una definizione guidata dalla sintassi si assume che i simboli terminali abbiano solo attributi sintetizzati: i valori per questi attributi sono in genere forniti dall analizzatore lessicale. Il simbolo iniziale, se non diversamente specificato, non ha attributi ereditati. Politecnico di Bari G. Piscitelli pag. 19 di 26
20 S-attributi e L-attributi Per risolvere il problema della valutazione degli attributi, occorre restringere i tipi di attributi che possono essere definiti. In particolare, si definiscono due classi di attributi che garantiscono la corretta valutazione degli attributi: 1. S-attributi (S-attributed): che coincide con la classe degli attributi sintetizzati. Quando una SDD è costruita con S-attributi, si possono valutare i suoi attributi in qualunque ordine bottom-up dei nodi del parse tree; è spesso particolarmente semplice valutare gli attributi effettuando un attraversamento in post ordine sinistro del parse tree, valutando gli attributi al nodo N quando l attraversamento lascia N per l ultima volta, cioè viene applicata la seguente funzione postorder alla radice del parse tree. postorder (N) for (ciascun figlio C di N, da sinistra) postorder (C); valuta gli attributi associati al nodo N 2. L-attributi (L-attributed): è una sottoclasse degli attributi ereditati, in cui si permette ad ogni attributo A di dipendere solo dal nodo padre o dai nodi fratelli a sinistra del nodo dell albero sintattico a cui l attributo A è associato. Politecnico di Bari G. Piscitelli pag. 20 di 26
21 Syntax Directed Translation Schemes (SDT) Sia che la SDD abbia una grammatica sottostante LR-parsable e attributi sintetizzati, sia che la SDD abbia una grammatica sottostante LL-parsable e attribute ereditati, in entrambi i casi, le regole semantiche in una SDD possono essere convertite in una SDT con azioni che vengono eseguite al tempo giusto: durante il parsing, un azione nel corpo di una produzione viene eseguita appena tutti i simboli della grammatica alla sinistra dell azione sono stati incontrati (cfr. marker nonterminals in sect. 5.4 of the text). La più semplice realizzazione di una SDD si ottiene quando si può condurre un analisi bottom-up e la SDD ha S-attributi. In tal caso si può costruire una SDT in cui ciascuna azione abbia luogo al termine della produzione e venga eseguita contestualmente alla riduzione del corpo della parte iniziale della produzione. Le SDT in cui le azioni appaiono al termine destro del corpo delle produzioni vengono dette SDT post-fisse. Politecnico di Bari G. Piscitelli pag. 21 di 26
22 Making bottom-up every translation Ogni traduzione realizzabile con un approccio top-down, può anche essere realizzata in modo bottom-up. Infatti, data una SDD con L-attributi e basata su una grammatica LL, si può adattare la grammatica in modo da poter ottenere la stessa SDD sulla grammatica modificata con un parsing LR (cfr. procedura all inizio del par del testo). Politecnico di Bari G. Piscitelli pag. 22 di 26
23 Grammatiche ad attributi Esempio: ll calcolo del valore decimale di un numero frazionario in base due (D. Knuth 1968) L esempio mostra il ruolo degli attributi ereditati, e la loro sostituibilità con gli attributi sintetizzati. Il linguaggio sintatticamente è definito dall espressione regolare L = { 0,1}*. {0, 1}* da interpretare come un numero binario con il punto che separa la parte intera da quella frazionaria. Ad es. il significato di è il numero 13,25 Sintassi 1. num str. str 2. str str bit 3. str bit 4. bit 0 5. bit 1 num è l assioma, str definisce la stringa binaria della parte intera e frazionaria, che è composta di bit. Politecnico di Bari G. Piscitelli pag. 23 di 26
24 Grammatiche ad attributi Politecnico di Bari G. Piscitelli pag. 24 di 26
25 Grammatiche ad attributi (1 di 2) 1. num str1. str2 f of str1 := 0 f of str2 := - l of str2 v of num= v of str1 +v of str2 2. str0 str1 bit f of str1 := f of str0 +1 f of bit := f of str l of str0 := l of str1 + 1 v of str0 := v of str1 + v of bit 3. str bit f of bit:= f of str l of str := 1 v of str := v of bit 4. bit 0 v of bit := 0 5. bit 1 v of bit := 2 f of bit Politecnico di Bari G. Piscitelli pag. 25 di 26
26 Grammatiche ad attributi (2 di 2) 1. num str1. str2 v of num= v of str1 +v of str2 * 2 l of str2 2. str0 str1 bit v of str0 := 2* v of str1 +v of bit l of str0 := l of str str bit v of str := v of bit l of str := 1 4. bit 0 v of bit := 0 5. bit 1 v of bit := 1 Politecnico di Bari G. Piscitelli pag. 26 di 26
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
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:
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
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
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
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
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
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
Definizioni syntax-directed
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
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
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 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
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,
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
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
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
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,
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
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
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
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
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
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
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
Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)
Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande
Teoria dell Informazione
Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro
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])
Rappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2012-2013 Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica
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
Parser Bottom UP. Giuseppe Morelli
Parser Bottom UP Giuseppe Morelli Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di input partendo dalle foglie (bottom) e risalendo via
Corso di Fondamenti di Informatica Linguaggi di Programmazione
Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di
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
Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi
RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO
RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento
CONCETTI FONDAMENTALI
CONCETTI FONDAMENTALI Algoritmo Procedura di trasformazione di un insieme di dati iniziali in un insieme di risultati finali mediante una sequenza di istruzioni. Linguaggio di programmazione Programma
Lezione 7 Alberi binari: visite e alberi di ricerca
Lezione 7 Alberi binari: visite e alberi di ricerca Informatica 6 Maggio 2015 Operazioni sugli alberi: visita La visita di un albero esplora tutti i nodi ed esegue una qualche operazione su di essi. Per
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
Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione
Sommario Problemi e soluzioni Definizione informale di algoritmo e esempi Proprietà degli algoritmi Input/Output, Variabili Algoritmi senza input o output 1 2 Problema Definizione (dal De Mauro Paravia):
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
Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a
Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma
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
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
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 ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura [email protected] 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
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
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=
Elementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università
Linguaggi di Programmazione
Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni
Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
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
Programmazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
Trattamento degli errori
Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Trattamento degli errori Giacomo PISCITELLI Trattamento degli errori Comunemente gli errori di programmazione
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2009-10 Dai flow-chart ai linguaggi... Abbiamo imparato ad usare uno strumento formale i flowchart per
Espressione di chiamata di funzione
Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è
Introduction. The Structure of a Compiler
Introduction The Structure of a Compiler ISBN 978-88-386-6573-8 Text Books Maurizio Gabbrielli e Simone Martini sono professori ordinari di Informatica presso l'alma Mater Studiorum - Università di Bologna.
Problemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
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
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,/}
PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA
PROGRAMMAZIONE DISCIPLINARE PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA 1. Competenze: le specifiche competenze di base disciplinari previste dalla
Fondamenti di Informatica T-1
Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo [email protected] a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De
ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)
1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano
Linguaggi di programmazione
Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché
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
Il Software programmabili programma algoritmo
Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia
Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica
FODAMETI DI IFORMATICA Prof. PIER LUCA MOTESSORO Prof. ELIO TOPPAO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio Toppano
FONDAMENTI DI INFORMATICA
Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia [email protected] A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica
Programmazione di INFORMATICA e Laboratorio
ISIUO ECNICO SAALE settore ECNOLOGICO ad indirizzo: Elettronica ed Elettrotecnica - Informatica e elecomunicazioni Meccanica, Meccatronica ed Energia "VIORIO EMANUELE III" Via Duca della Verdura, 48-90143
Introduzione a Matlab
INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi
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
Sviluppo di programmi
Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla
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
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
Unità di apprendimento 6. Dal problema al programma
Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 1 Conosciamo gli algoritmi e i linguaggi In questa lezione impareremo: cos è un problema come affrontarlo come descrivere
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
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
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
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
Primi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
Corso di Intelligenza Artificiale A.A. 2016/2017
Università degli Studi di Cagliari Corsi di Laurea Magistrale in Ing. Elettronica Corso di Intelligenza rtificiale.. 26/27 Esercizi sui metodi di apprendimento automatico. Si consideri la funzione ooleana
