Introduction. The Structure of a Compiler

Похожие документы
Question 1: introduction to computer programming

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

Linguaggi e Ambienti di Programmazione

drag & drop visual programming appinventor storia appinventor un esempio di drag & drop programming: Scratch

Fasi di un Compilatore

Italian 102 Daily Syllabus

Copyright 2012 Binary System srl Piacenza ITALIA Via Coppalati, 6 P.IVA info@binarysystem.eu

Grammatiche Parse trees Lezione del 17/10/2012

Traduzione guidata dalla sintassi

UNIVERSITÀ DEGLI STUDI DI TORINO

MODALITÀ DI VALUTAZIONE

Prova esperta asse matematico GRIGLIA DI CORREZIONE. Prova di gruppo:

Fiori di campo. Conoscere, riconoscere e osservare tutte le specie di fiori selvatici più note

Semantica e traduzione guidata dalla sintassi

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register

Corso di Laurea Magistrale in Ingegneria Informatica A.A Linguaggi Formali e Compilatori. Introduzione. Giacomo PISCITELLI

29/02/2016. How to Access MyEconLab. Getting started: XL2A-41W1-901Z-4NT2. (included with your textbook) (Scienze e tecn. Ristorazione) 1.

Corso di Laurea in INFORMATICA

Question 1: introduction to computer programming and Linux/gvim/gcc/make/gdb

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

100 consigli per vivere bene (Italian Edition)

UNIVERSITÀ DEGLI STUDI DI TORINO

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Canti Popolari delle Isole Eolie e di Altri Luoghi di Sicilia (Italian Edition)

I CAMBIAMENTI PROTOTESTO-METATESTO, UN MODELLO CON ESEMPI BASATI SULLA TRADUZIONE DELLA BIBBIA (ITALIAN EDITION) BY BRUNO OSIMO

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Analizzatore Lessicale Parte I Scanner

Automi e Linguaggi Formali

SRT064 BTH SRT051 BTH SRT052 BTH

Posta elettronica per gli studenti for the students

Downloading and Installing Software Socio TIS

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Babaoglu 2006 Sicurezza 2

Session Description Protocol

FISE Federazione Italiana Sport Equestri

Corsi di Laurea Magistrale/ Master Degree Programs

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

TNCguide OEM Informativa sull introduzione di documentazione aggiuntiva nella TNCguide

Opera Aperta: Forma E Indeterminazione Nelle Poetiche Contemporanee (Tascabili Saggi) (Italian Edition) By Umberto Eco

REGISTRATION GUIDE TO RESHELL SOFTWARE

PLC CodeSys. Example 2. Automation Robotics and System CONTROL. Università degli Studi di Ferrara. Università degli Studi di Modena e Reggio Emilia

Get Instant Access to ebook D Lgs PDF at Our Huge Library D LGS PDF. ==> Download: D LGS PDF

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Resources and Tools for Bibliographic Research. Search & Find Using Library Catalogues

Helping you to rescue me

Trattamento degli errori

Una storia italiana: Dal Banco Ambrosiano a Intesa Sanpaolo (Italian Edition)

Linguaggi Formali e Compilatori. Premessa

REGULATIONS AGENDA. European Cup 2010 Coppa Europa First Round Prima Prova. Castiglioncello (LI) Tuscany - ITALY

REGISTRATION. Area Ricerca

Portale Materiali Grafiche Tamburini. Grafiche Tamburini Materials Portal

Famiglie di tabelle fatti

Brandon Brown vuole un cane

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Le cellule staminali dell embrione: cosa possono fare Embryonic stem cells are exciting because they can make all the different types of cell in the

Omeopatia: Guida medica ai rimedi omeopatici (Italian Edition)

Ingegneria dei sistemi di Controllo

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica. Programmazione orientata agli Oggetti

Dispensa YACC. 1.1 YACC: generalità

Appendice A. Conduttori elettrici, sezioni e diametri Appendix A. Wires, Sizes and AWG diameters

LE IMPOSTE SULLA COMPRAVENDITA PDF

SLIM LINE ACU Slim solutions

U Corso di italiano, Lezione Quindici

Newborn Upfront Payment & Newborn Supplement

Dispensa YACC: generalità

Metodi Di Calcolo E Tecniche Di Consolidamento Per Edifici In Muratura By Michele Vinci

METODOL.E DETERMINAZ. QUANTITATIVE D'AZIENDA

Fondamenti di Programmazione

Risvolti patologici e allocazione rischio. Avv. Gennaro Mazzuoccolo Partner Banking Norton Rose Fulbright Studio Legale Roma 14 novembre 2013

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

UniRoma2 - Ingegneria del Software 1 1

EML-16 EML-16. Pulses concentrator. Concentratore impulsi MODBUS COMMUNICATION PROTOCOL PROTOCOLLO DI COMUNICAZIONE MODBUS

Le piccole cose che fanno dimagrire: Tutte le mosse vincenti per perdere peso senza dieta (Italian Edition)

Expansion card. EXP-D8-120 I/O Interface Card 8 AC Opto-coupled Digital Inputs 8 DC Digital Outputs

Транскрипт:

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. Maurizio Gabbrielli Simone Martini Linguaggi di programmazione Principi e paradigmi Il testo affronta gli argomenti primari di un corso generale sui linguaggi di programmazione, ovvero gli aspetti propriamente linguistici, i modi in cui i costrutti linguistici possono essere implementati, il relativo costo e le tecniche di compilazione. L approccio scelto dagli Autori è elementare e richiede prerequisiti minimi: il lettore di riferimento è infatti quello che conosce almeno un linguaggio e, eventualmente, ha avuto esperienza di un altro paradigma. Si sono evitati riferimenti ai linguaggi ormai desueti e gli esempi di codice sono espressi in uno pseudolinguaggio che permette di descrivere efficacemente gli aspetti più rilevanti comuni a tutti quelli attualmente in uso. Tutti i capitoli presentano una breve serie di esercizi, intesi come banco di prova per la comprensione del materiale. La seconda edizione presenta tre capitoli del tutto nuovi. In primo luogo la trattazione della sintassi è stata estesa con la presentazione dei linguaggi regolari e degli analizzatori lessicali e, quindi, dei linguaggi liberi e degli analizzatori sintattici. Il terzo capitolo presenta invece la programmazione concorrente. Il testo è pensato in primo luogo per gli studenti dei corsi di laurea in Informatica e Ingegneria informatica, ma è anche adatto anche allo studio personale del professionista che voglia approfondire la propria conoscenza dei meccanismi che stanno dietro ai linguaggi che utilizza. All indirizzo web www.ateneonline.it/gabbrielli sono disponibili approfondimenti e dimostrazioni puntualmente richiamate nel testo. Principi e paradigmi INFORMATICA M. Gabbrielli S. Martini Linguaggi di programmazione Seconda edizione 6573-8 Maurizio Gabbrielli Simone Martini Linguaggi di programmazione Principi e paradigmi Seconda edizione McGraw-Hill www.mcgraw-hill.it 36,00 (i.i.) www.ateneonline.it

What is a compiler?

Interpreter Another kind of language processing

Hybrid Approaches Combine compilation and interpretation (Java bytecode and virtual machine) Java just-in-time compilers.

Producing a machine code

Phases of a Compiler Analysis or front-end Synthesis or back-end The symbol table stores information about the entire source program. Maps variables into attributes, i.e. type, name, dimension, address, etc. This information helps us detecting inconsistencies and misuses during type checking.

Compilation process

Compilation process

Analysis: A Simple Example Consider the simple Java program:

A Simple Example (ctd.) The compiler front end translates the program into the form:

A Quick Tour For constructing a compiler front end we need first of all a Syntax (specified in BNF).

Lexical Analysis (or Scanning) Input stings are split into symbol groups representing syntactic categories, called lexemes. For each lexeme, the scanner produces as output a token: (token-name, attribute-value), token-name is the abstract symbol used in the syntax analysis attribute-value points to an entry in the symbol table containing information for the semantic analysis and code generation.

Intermediate Code

Syntax Analysis (or Parsing) Problem: How to derive a given string of terminal from the start symbol of the grammar. If the string (token stream) cannot be derived, then the parser must report syntax errors within the string.

Parse Trees Consider the following grammar: list ::= list + digit list ::= list - digit list ::= digit digit ::= 0 1 2 3 4 5 6 7 8 9

Ambiguity If we do not distinguish between list and digit we get the grammar: string ::= string + string string string 0 1 2 3 4 5 6 7 8 9.

Precedence of Operators A grammar can be defined so as to reflect different associative rules. Operators on the same line have the same precedence.

An (ambiguous) Grammar for Java

Syntax-Directed Translation Attaching rules to productions in a grammar. Essential concepts: Attibutes: any quantity associated with a programming construct. Translation schemes: notations for attaching program fragments to the productions of a grammar. Example:

An Annotated Parse Tree

Parsing

Top-down Parsing