LINGUAGGI FORMALI E COMPILATORI

Attività formativa monodisciplinare
Codice dell'attività formativa: 
38070

Scheda dell'insegnamento

Per studenti immatricolati al 1° anno a.a.: 
2019/2020
Insegnamento (nome in italiano): 
LINGUAGGI FORMALI E COMPILATORI
Tipo di attività formativa: 
Attività formativa Caratterizzante
Tipo di insegnamento: 
Opzionale
Settore disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Anno di corso: 
1
Anno accademico di offerta: 
2019/2020
Crediti: 
9
Responsabile della didattica: 
Mutuazioni

Altre informazioni sull'insegnamento

Modalità di erogazione: 
Didattica Convenzionale
Lingua: 
Italiano
Ciclo: 
Primo Semestre
Obbligo di frequenza: 
No
Ore di attività frontale: 
90
Ore di studio individuale: 
135
Ambito: 
Ingegneria informatica
Materiali didattici: 
Prerequisiti

Buona conoscenza delle nozioni fondamentali di informatica e relative ai linguaggi di programmazione.

Obiettivi formativi

Presentare le tecniche per la definizione dei linguaggi formali e mostrare gli algoritmi di riconoscimento dei linguaggi.
Presentazione degli strumenti freeware per la generazione automatica dei compilatori.
Lo studente acquisirà la capacità di progettare piccoli linguaggi artificiali e realizzare il traduttore.

Contenuti dell'insegnamento

Teoria dei linguaggi.
Operatori sui linguaggi.
Espressioni regolari: derivazione del linguaggio, riconoscimento mediante automi a stati finiti-
Sintassi dei linguaggi: grammatiche BNF, proprietà.
Famiglie di linguaggi e tecniche di riconoscimento (parsing): discendente (LL(1)) e ascendente (LR(0), LALR(1), LR(1)).
Semantica dei linguaggi: modello delle grammatiche ad attributi e modalità di valutazione semantica.
La macchina virtuale di Java e il byte code.

Testi di riferimento

Stefano Crespi-Reghizzi
Linguaggi Formali e Compilazione
Pitagora Editrice, Bologna

Metodi didattici

Lezioni frontali, esercizi.
Sedute in laboratorio.

Modalità verifica profitto e valutazione

Esame scritto obbligatorio.
Progetto facoltativo ma consigliato.

Prerequisites

Good knowledge of fundamentals of Information technology and programming languages.

Educational goals

Introducing techniques to describe formal languages and algorithms to recognizes artificial languages.
Presenting freeware tools to generate language compilers.
Students will get the ability to design simple artificial languages and develop the translator.

Course content

Language theory.
Operators on languages.
Regular expressions: derivation of language, recognition by means of finite state automata.
Syntax of languages: BNF grammars, properties.
Families of languages and parsing techniques: descending (LL(1)) and ascending (LR(0), LALR(1), LR(1)).
Semantics of languages: attribute grammars model and semantic evaluation methods.
The Java virtual machin and the byte code.

Textbooks and reading lists

Stefano Crespi-Reghizzi
Linguaggi Formali e Compilazione
Pitagora Editrice, Bologna

Teaching methods

Lectures and exercises.
Session in the lab.

Assessment and Evaluation

Mandatory written exam.
Optional (but strongly suggested) project work.