introduction to the tiger project and tigrou projecttiger/lecture-notes/... · introduction to the...

81

Upload: others

Post on 20-Jun-2020

31 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Introduction to the Tiger Projectand Tigrou project

Akim Demaille Étienne Renault Roland [email protected]

EPITA � École Pour l'Informatique et les Techniques Avancées

February 3, 2020

Page 2: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Context and Motivation

The Needs

20 years ago, EPITA asked for a long and challenging project.

Should virtually be a potpourri of every subject from computer sciencecourses taught in third year.

A (Miraculous) Solution

A compiler construction project.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 2 / 37

Page 3: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Context and Motivation

The Needs

20 years ago, EPITA asked for a long and challenging project.

Should virtually be a potpourri of every subject from computer sciencecourses taught in third year.

A (Miraculous) Solution

A compiler construction project.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 2 / 37

Page 4: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals

Aim

Compiler construction as a by-product

Complete ProjectSpeci�cations, implementation, documentation, testing,distribution.

Several iterations6 (optionally up to 9) steps, for 3 (resp. up to 6) months.

Algorithmically challengingApplied use of well known data structures and algorithms.

Team ManagementProject conducted in group of four students.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 3 / 37

Page 5: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals

Aim

Compiler construction as a by-product

Complete ProjectSpeci�cations, implementation, documentation, testing,distribution.

Several iterations6 (optionally up to 9) steps, for 3 (resp. up to 6) months.

Algorithmically challengingApplied use of well known data structures and algorithms.

Team ManagementProject conducted in group of four students.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 3 / 37

Page 6: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals

Aim

Compiler construction as a by-product

Complete ProjectSpeci�cations, implementation, documentation, testing,distribution.

Several iterations6 (optionally up to 9) steps, for 3 (resp. up to 6) months.

Algorithmically challengingApplied use of well known data structures and algorithms.

Team ManagementProject conducted in group of four students.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 3 / 37

Page 7: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals

Aim

Compiler construction as a by-product

Complete ProjectSpeci�cations, implementation, documentation, testing,distribution.

Several iterations6 (optionally up to 9) steps, for 3 (resp. up to 6) months.

Algorithmically challengingApplied use of well known data structures and algorithms.

Team ManagementProject conducted in group of four students.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 3 / 37

Page 8: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals

Aim

Compiler construction as a by-product

Complete ProjectSpeci�cations, implementation, documentation, testing,distribution.

Several iterations6 (optionally up to 9) steps, for 3 (resp. up to 6) months.

Algorithmically challengingApplied use of well known data structures and algorithms.

Team ManagementProject conducted in group of four students.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 3 / 37

Page 9: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals (cont.)

C++

Expressive power; uses both low- and high-level constructs;industry standard.

Object-Oriented (OO) Design and Design Pattern (DP)Practice common OO idioms, apply DPs.

Development ToolsAutotools, Doxygen, Flex, Bison, GDB, Valgrind, Git, etc.

Understanding ComputersCompiler and languages are tightly related to computerarchitecture.

EnglishEverything is to be written in English (code, documentation,tests).

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 4 / 37

Page 10: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals (cont.)

C++

Expressive power; uses both low- and high-level constructs;industry standard.

Object-Oriented (OO) Design and Design Pattern (DP)Practice common OO idioms, apply DPs.

Development ToolsAutotools, Doxygen, Flex, Bison, GDB, Valgrind, Git, etc.

Understanding ComputersCompiler and languages are tightly related to computerarchitecture.

EnglishEverything is to be written in English (code, documentation,tests).

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 4 / 37

Page 11: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals (cont.)

C++

Expressive power; uses both low- and high-level constructs;industry standard.

Object-Oriented (OO) Design and Design Pattern (DP)Practice common OO idioms, apply DPs.

Development ToolsAutotools, Doxygen, Flex, Bison, GDB, Valgrind, Git, etc.

Understanding ComputersCompiler and languages are tightly related to computerarchitecture.

EnglishEverything is to be written in English (code, documentation,tests).

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 4 / 37

Page 12: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals (cont.)

C++

Expressive power; uses both low- and high-level constructs;industry standard.

Object-Oriented (OO) Design and Design Pattern (DP)Practice common OO idioms, apply DPs.

Development ToolsAutotools, Doxygen, Flex, Bison, GDB, Valgrind, Git, etc.

Understanding ComputersCompiler and languages are tightly related to computerarchitecture.

EnglishEverything is to be written in English (code, documentation,tests).

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 4 / 37

Page 13: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Goals (cont.)

C++

Expressive power; uses both low- and high-level constructs;industry standard.

Object-Oriented (OO) Design and Design Pattern (DP)Practice common OO idioms, apply DPs.

Development ToolsAutotools, Doxygen, Flex, Bison, GDB, Valgrind, Git, etc.

Understanding ComputersCompiler and languages are tightly related to computerarchitecture.

EnglishEverything is to be written in English (code, documentation,tests).

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 4 / 37

Page 14: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 15: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 16: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 17: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 18: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 19: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 20: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 21: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 22: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Non Goal

Writing a Compiler Paradoxically!Well, at least considered a secondary issue.

Why?The vast majority of [Computer Science] students are unlikely toever design a compiler [Debray, 2002].

But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.

But... Since 2002, graphics processors units have raised (GPU). A lotof work has to be done to targer such GPU.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 5 / 37

Page 23: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Introduction to the Tiger Projectand Tigrou project

1 Overview of the Tiger Project

2 Practical information

3 Rules of the Game

4 Vocabulary and Structure of a compiler

5 The Tiger Compiler (and Tigrou's architecture)

6 The Tiger Language

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 6 / 37

Page 24: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Overview of the Tiger Project

1 Overview of the Tiger Project

2 Practical information

3 Rules of the Game

4 Vocabulary and Structure of a compiler

5 The Tiger Compiler (and Tigrou's architecture)

6 The Tiger Language

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 7 / 37

Page 25: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

A Core-Curriculum Compiler-Construction Project

Based on Andrew Appel's Tiger language and Modern CompilerImplementation books [Appel, 1998].

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 8 / 37

Page 26: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

A Core-Curriculum Compiler-Construction Project (cont.)

...and largely adapted [Demaille, 2005].

Compiler (to be) written in C++.

Initial Tiger language de�nition (a Pascal-descendant language,dressed in a clean ML-like syntax).

Augmented with import statements, adjustable prelude, OOconstructs, etc.

Better de�ned (no implementation-de�ned behavior left).

More compiler modules and features than in the initial design.

In particular more tools to both help students develop and improvetheir compiler and make the maintenance easier to teachers andassistants.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 9 / 37

Page 27: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

A Core-Curriculum Compiler-Construction Project (cont.)

...and largely adapted [Demaille, 2005].

Compiler (to be) written in C++.

Initial Tiger language de�nition (a Pascal-descendant language,dressed in a clean ML-like syntax).

Augmented with import statements, adjustable prelude, OOconstructs, etc.

Better de�ned (no implementation-de�ned behavior left).

More compiler modules and features than in the initial design.

In particular more tools to both help students develop and improvetheir compiler and make the maintenance easier to teachers andassistants.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 9 / 37

Page 28: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

A Core-Curriculum Compiler-Construction Project (cont.)

...and largely adapted [Demaille, 2005].

Compiler (to be) written in C++.

Initial Tiger language de�nition (a Pascal-descendant language,dressed in a clean ML-like syntax).

Augmented with import statements, adjustable prelude, OOconstructs, etc.

Better de�ned (no implementation-de�ned behavior left).

More compiler modules and features than in the initial design.

In particular more tools to both help students develop and improvetheir compiler and make the maintenance easier to teachers andassistants.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 9 / 37

Page 29: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

A Core-Curriculum Compiler-Construction Project (cont.)

...and largely adapted [Demaille, 2005].

Compiler (to be) written in C++.

Initial Tiger language de�nition (a Pascal-descendant language,dressed in a clean ML-like syntax).

Augmented with import statements, adjustable prelude, OOconstructs, etc.

Better de�ned (no implementation-de�ned behavior left).

More compiler modules and features than in the initial design.

In particular more tools to both help students develop and improvetheir compiler and make the maintenance easier to teachers andassistants.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 9 / 37

Page 30: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Project's Modus Operandi

The compiler is designed as a long pipe composed of several modules.

The project is divided in several steps, where students have toimplement one (or two) module(s).

Code with gaps.

Work is evaluated by a program at each delivery.

Students defend their work every two steps in front of a teachingassistant.

Several optional assignments are given as extra modules.

Motivated students can choose to proceed with the implementation ofthe back-end of the compiler.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 10 / 37

Page 31: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Project's Modus Operandi

The compiler is designed as a long pipe composed of several modules.

The project is divided in several steps, where students have toimplement one (or two) module(s).

Code with gaps.

Work is evaluated by a program at each delivery.

Students defend their work every two steps in front of a teachingassistant.

Several optional assignments are given as extra modules.

Motivated students can choose to proceed with the implementation ofthe back-end of the compiler.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 10 / 37

Page 32: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Project's Modus Operandi

The compiler is designed as a long pipe composed of several modules.

The project is divided in several steps, where students have toimplement one (or two) module(s).

Code with gaps.

Work is evaluated by a program at each delivery.

Students defend their work every two steps in front of a teachingassistant.

Several optional assignments are given as extra modules.

Motivated students can choose to proceed with the implementation ofthe back-end of the compiler.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 10 / 37

Page 33: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Project's Modus Operandi

The compiler is designed as a long pipe composed of several modules.

The project is divided in several steps, where students have toimplement one (or two) module(s).

Code with gaps.

Work is evaluated by a program at each delivery.

Students defend their work every two steps in front of a teachingassistant.

Several optional assignments are given as extra modules.

Motivated students can choose to proceed with the implementation ofthe back-end of the compiler.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 10 / 37

Page 34: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Figures

20 years of existence.

250/300 students per year (on average).

Project done in groups of 4 students.

6 mandatory steps (compiler front-end).

4 optional steps (compiler back-end).

Reference compiler: 25KLOC.

Students are expected to write about 5500 lines (or about 7000 lines,with the optional assignments).

250+ pages of documentation (reference manual[Demaille and Levillain, 2007b] and project assignments[Demaille and Levillain, 2007a]).

3 papers in international conferences[Demaille, 2005, Demaille et al., 2008, Demaille et al., 2009].

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 11 / 37

Page 35: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

History I

2000 Beginning of the Tiger Project: a front-end, a single teacher, noassistant.

2001 Have students learn and use the Autotools for project maintenance.

2002 Teaching Assistants involved in the project.Interpreter for the Intermediate Representation (IR) language(HAVM).

2003 Addition of a MIPS back-end, partly from the work of motivatedstudents.Interpreter for the MIPS language (Nolimips).The structures of the Abstract Syntax Tree (AST) and a visitor aregenerated from a description �le.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 12 / 37

Page 36: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

History II

2005 A second teacher in the project maintenance and supervision.First uses of some Boost libraries (Boost.Variant, Boost GraphLibrary (BGL), Smart Pointers).First use of concrete-syntax program transformations (codegeneration) using TWEASTs

2007 Tiger becomes an Object-Oriented Language (OOL).

2009 C++ objects on the parser stack.

2011 Extension of Bison's grammar to handle named parameters.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 13 / 37

Page 37: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

History I

2012 Conversion of tc to C++11.

2015 Even more C++11/C++14, aiming at C++17.OO is now optional.Much simpler/faster build system.Support form ARM backend.

2016 Support for LLVM intermediate langage.

2017 Introduce Docker�le.Move on C++17

2017 Introduce Docker�le.

2018 Refactoring python bindings for jupyter-notebooks

2019 Rework assignments

2020 Setup Tigrou's project

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 14 / 37

Page 38: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Practical information

1 Overview of the Tiger Project

2 Practical information

3 Rules of the Game

4 Vocabulary and Structure of a compiler

5 The Tiger Compiler (and Tigrou's architecture)

6 The Tiger Language

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 15 / 37

Page 39: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Entry Points

Home page of the project:http://tiger.lrde.epita.fr

Resources for the project:http://www.lrde.epita.fr/~tiger

news.epita.fr newsgroup:assistants.tiger

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 16 / 37

Page 40: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Reference Documents

Tiger Compiler Project Assignments:http://assignments.lrde.epita.fr/

Tiger Compiler Reference Manual (TCRM):http://www.lrde.epita.fr/~tiger/tiger.html

http://www.lrde.epita.fr/~tiger/tiger.split

http://www.lrde.epita.fr/~tiger/tiger.pdf

http://www.lrde.epita.fr/~tiger/tiger.info

http://www.lrde.epita.fr/~tiger/tiger.txt

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 17 / 37

Page 41: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Lectures notes

Slides (like these ones):http://www.lrde.epita.fr/~tiger/lecture-notes/slides/

Handouts (if you need to print lectures, please use these and save a tree):

1-up http://www.lrde.epita.fr/~tiger/lecture-notes/

handouts/

4-up http://www.lrde.epita.fr/~tiger/lecture-notes/

handouts-4/

Subdirectories:

ccmp/ CCMP lecture notes

tc/ TC-n presentations, given by the Assistants

tyla/ TYLA lecture notes

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 18 / 37

Page 42: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Other Useful Resources

Doxygen Documentation:http://www.lrde.epita.fr/~tiger/tc-doc/

Past exams [outdated since 2016]http://www.lrde.epita.fr/~tiger/exams/

Emacs/Vim modeshttp://www.lrde.epita.fr/~tiger/tc/tiger.el

http://www.lrde.epita.fr/~tiger/tc/tiger.vim

Docker for a fully working environnementhttp://www.lrde.epita.fr/~tiger/tc/docker-sid

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 19 / 37

Page 43: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Rules of the Game

1 Overview of the Tiger Project

2 Practical information

3 Rules of the Game

4 Vocabulary and Structure of a compiler

5 The Tiger Compiler (and Tigrou's architecture)

6 The Tiger Language

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 20 / 37

Page 44: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Nul n'est censé ignorer la loi.

http://www.assignements.lrde.epita.fr

1 No copy between groups.

2 Tests are part of the project(test cases and frameworks should not be exchanged).

3 Fixing mistakes earlier is better (and less expensive).4 Work between groups is encouraged!

As long as they don't cheat.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 21 / 37

Page 45: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Nul n'est censé ignorer la loi.

http://www.assignements.lrde.epita.fr

1 No copy between groups.

2 Tests are part of the project(test cases and frameworks should not be exchanged).

3 Fixing mistakes earlier is better (and less expensive).4 Work between groups is encouraged!

As long as they don't cheat.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 21 / 37

Page 46: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Nul n'est censé ignorer la loi.

http://www.assignements.lrde.epita.fr

1 No copy between groups.

2 Tests are part of the project(test cases and frameworks should not be exchanged).

3 Fixing mistakes earlier is better (and less expensive).4 Work between groups is encouraged!

As long as they don't cheat.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 21 / 37

Page 47: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Nul n'est censé ignorer la loi.

http://www.assignements.lrde.epita.fr

1 No copy between groups.

2 Tests are part of the project(test cases and frameworks should not be exchanged).

3 Fixing mistakes earlier is better (and less expensive).4 Work between groups is encouraged!

As long as they don't cheat.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 21 / 37

Page 48: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Vocabulary and Structure of a compiler

1 Overview of the Tiger Project

2 Practical information

3 Rules of the Game

4 Vocabulary and Structure of a compiler

5 The Tiger Compiler (and Tigrou's architecture)

6 The Tiger Language

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 22 / 37

Page 49: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Compiler

A compiler is a program that converts a source language into atarget machine language.

A cross-compiler is a program (running on a machine A) thatconverts a source language into a target machine language B(di�erent from A).

A transpiler is a program that converts a source language into atarget language (same level of abstraction).

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 23 / 37

Page 50: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Compiler

Pre-processor remove all de�ne, include directives. Produces a purecode.

Linker combines one or more object �les and possible some librarycode into either some executable, or some library

Loader A loader reads the executable code into memory, does someaddress translation and tries to run the program resulting in a runningprogram.

Linker and loader performs Basically the loader does the programloading; the linker does the symbol resolution; and either of them cando the relocation.

Static/Dynamic Compile time / runtime

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 24 / 37

Page 51: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The C Compilation Model

Which (coarse-grained) steps can we �nd in gcc?

cpp (preprocessor)

cc1 (actual C compiler)

as (assembler)

ld (linker)

→ A pipe.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 25 / 37

Page 52: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The C Compilation Model

Which (coarse-grained) steps can we �nd in gcc?

cpp (preprocessor)

cc1 (actual C compiler)

as (assembler)

ld (linker)

→ A pipe.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 25 / 37

Page 53: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The C Compilation Model

Which (coarse-grained) steps can we �nd in gcc?

cpp (preprocessor)

cc1 (actual C compiler)

as (assembler)

ld (linker)

→ A pipe.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 25 / 37

Page 54: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The C Compilation Model

Which (coarse-grained) steps can we �nd in gcc?

cpp (preprocessor)

cc1 (actual C compiler)

as (assembler)

ld (linker)

→ A pipe.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 25 / 37

Page 55: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The C Compilation Model

Which (coarse-grained) steps can we �nd in gcc?

cpp (preprocessor)

cc1 (actual C compiler)

as (assembler)

ld (linker)

→ A pipe.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 25 / 37

Page 56: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The C Compilation Model

Which (coarse-grained) steps can we �nd in gcc?

cpp (preprocessor)

cc1 (actual C compiler)

as (assembler)

ld (linker)

→ A pipe.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 25 / 37

Page 57: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The Tiger Compiler (and Tigrou's architecture)

1 Overview of the Tiger Project

2 Practical information

3 Rules of the Game

4 Vocabulary and Structure of a compiler

5 The Tiger Compiler (and Tigrou's architecture)

6 The Tiger Language

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 26 / 37

Page 58: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

tc: A Compiler as A Long Pipe

Bind Type

Translate

CanonInstr. sel.Liveness an.Reg. alloc.

tokens ASTchars

IG

pre-asm

Parse

Bison AstGen boundand typed

AST

HIR

MonoBURG

boundAST

LIR

HAVM

asm

Nolimips

Scan

hand-written module generated module

parse.y

Flex

scan.l

mips.brg

ast.yml

interpretergenerator

generator input

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 27 / 37

Page 59: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

tc: A Compiler as A Long Pipe

Bind Type

Translate

CanonInstr. sel.Liveness an.Reg. alloc.

tokens ASTchars

IG

pre-asm

Parse

Bison AstGen boundand typed

AST

HIR

MonoBURG

boundAST

LIR

HAVM

asm

Nolimips

Scan

hand-written module generated module

parse.y

Flex

scan.l

mips.brg

ast.yml

interpretergenerator

generator input

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 27 / 37

Page 60: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

tc: A Compiler as A Long Pipe

Bind Type

Translate

CanonInstr. sel.Liveness an.Reg. alloc.

tokens ASTchars

IG

pre-asm

Parse

Bison AstGen boundand typed

AST

HIR

MonoBURG

boundAST

LIR

HAVM

asm

Nolimips

Scan

hand-written module generated module

parse.y

Flex

scan.l

mips.brg

ast.yml

interpretergenerator

generator input

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 27 / 37

Page 61: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Other Compiling Strategies

Intermediate language-based strategy: SmartEi�el, GHC

Bytecode strategy: Java bytecode (JVM), CIL (.NET)

Hybrid approaches: GCJ (Java bytecode or native code)

Retargetable optimizing back ends: MLRISC, VPO (Very PortableOptimizer), and somehow C- - (Quick C- -).Modular systems: LLVM (compiler as a library, centered on a typedIR). Contains the LLVM core libraries, Clang, LLDB, etc. Also:

VMKit: a substrate for virtual machines (JVM, etc.).Emscripten: an LLVM-to-JavaScript compiler. Enables C/C++ to JScompilation.

Intermediate Representations (IR) are fundamental.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 28 / 37

Page 62: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The Tiger Language

1 Overview of the Tiger Project

2 Practical information

3 Rules of the Game

4 Vocabulary and Structure of a compiler

5 The Tiger Compiler (and Tigrou's architecture)

6 The Tiger Language

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 29 / 37

Page 63: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Two �avors

Appel's De�ned in Modern Compiler Implementation books(see the Appendix).

Ours De�ned in the Tiger Compiler Reference Manual (TCRM).

Features many extensions: import keyword, overloading,OOP, . . .Implemented by LRDE's reference compiler.This is the target language for your project.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 30 / 37

Page 64: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Two �avors

Appel's De�ned in Modern Compiler Implementation books(see the Appendix).

Ours De�ned in the Tiger Compiler Reference Manual (TCRM).

Features many extensions: import keyword, overloading,OOP, . . .Implemented by LRDE's reference compiler.This is the target language for your project.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 30 / 37

Page 65: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Two �avors

Appel's De�ned in Modern Compiler Implementation books(see the Appendix).

Ours De�ned in the Tiger Compiler Reference Manual (TCRM).

Features many extensions: import keyword, overloading,OOP, . . .Implemented by LRDE's reference compiler.This is the target language for your project.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 30 / 37

Page 66: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Two �avors

Appel's De�ned in Modern Compiler Implementation books(see the Appendix).

Ours De�ned in the Tiger Compiler Reference Manual (TCRM).

Features many extensions: import keyword, overloading,OOP, . . .Implemented by LRDE's reference compiler.This is the target language for your project.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 30 / 37

Page 67: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Two �avors

Appel's De�ned in Modern Compiler Implementation books(see the Appendix).

Ours De�ned in the Tiger Compiler Reference Manual (TCRM).

Features many extensions: import keyword, overloading,OOP, . . .Implemented by LRDE's reference compiler.This is the target language for your project.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 30 / 37

Page 68: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 69: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 70: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 71: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 72: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 73: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 74: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 75: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Tiger

Toy language (not industry-proof). . .

. . . but still e�ective.

Imperative language, descendant of Algol.Functional �avour.

a := if 1 then 2 else 3

function incr(x : int) : int = x + 1

Simple and sound grammar.

Well de�ned semantics.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 31 / 37

Page 76: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Your �rst Tiger Program

print("Hello World!\n")

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 32 / 37

Page 77: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Your second Tiger program

let

function hello(name : string) =

print(concat("Hello ", name))

in

hello("You");

print("\n")

end

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 33 / 37

Page 78: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

The classic Factorial function

let

/* Compute n! */

function fact(n : int) : int =

if n = 0

then 1

else n * fact(n - 1)

in

print_int(fact(10));

print("\n")

end

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 34 / 37

Page 79: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Bibliography I

Appel, A. W. (1998).Modern Compiler Implementation in C, Java, ML.Cambridge University Press.

Debray, S. (2002).Making compiler design relevant for students who will (most likely)never design a compiler.In Proceedings of the 33rd SIGCSE technical symposium on Computerscience education, pages 341�345. ACM Press.

Demaille, A. (2005).Making compiler construction projects relevant to core curriculums.In Proceedings of the Tenth Annual Conference on Innovation andTechnology in Computer Science Education (ITICSE'05), pages266�270, Universidade Nova de Lisboa, Monte da Pacarita, Portugal.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 35 / 37

Page 80: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Bibliography II

Demaille, A. and Levillain, R. (2007a).The Tiger Compiler Project Assignment.EPITA Research and Development Laboratory (LRDE), 14-16 rueVoltaire, FR-94270 Le Kremlin-Bicêtre, France.http://www.lrde.epita.fr/~akim/ccmp/assignments.pdf.

Demaille, A. and Levillain, R. (2007b).The Tiger Compiler Reference Manual.EPITA Research and Development Laboratory (LRDE), 14-16 rueVoltaire, FR-94270 Le Kremlin-Bicêtre, France.http://www.lrde.epita.fr/~akim/ccmp/tiger.pdf.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 36 / 37

Page 81: Introduction to the Tiger Project and Tigrou projecttiger/lecture-notes/... · Introduction to the Tiger Project and Tigrou project 1 Overview of the Tiger Project 2 Practical information

Bibliography III

Demaille, A., Levillain, R., and Perrot, B. (2008).A set of tools to teach compiler construction.In Proceedings of the Thirteenth Annual Conference on Innovation andTechnology in Computer Science Education (ITICSE'08), pages 68�72,Universidad Politécnica de Madrid, Spain.

Demaille, A., Levillain, R., and Sigoure, B. (2009).TWEAST: A simple and e�ective technique to implementconcrete-syntax AST rewriting using partial parsing.In Proceedings of the 24th Annual ACM Symposium on AppliedComputing (SAC'09), pages 1924�1929, Waikiki Beach, Honolulu,Hawaii, USA.

A. Demaille, E. Renault, R. Levillain Introduction to the Tiger Projectand Tigrou project 37 / 37