A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ......
Transcript of A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ......
![Page 1: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/1.jpg)
A Set of Tools to Teach Compiler Construction
Akim Demaille Roland Levillain Benoıt Perrot
EPITA Research and Development Laboratory (LRDE)Paris, France
13th Annual Conference on Innovation and Technology inComputer Science Education (ITiCSE)
Universidad Politecnica de Madrid, Spain – July 2, 2008
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 1
![Page 2: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/2.jpg)
Context and Motivation
The SchoolEPITA: a French engineering school teaching computer science tograduate students.Third year (among five) is dedicated to the core curriculum.Strong practical emphasis on projects.
The NeedsTen years ago, the school asked for a long and challenging project.Should virtually be a potpourri of every subject from computerscience courses taught in third year.
A (Miraculous) SolutionA compiler construction project.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 2
![Page 3: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/3.jpg)
Context and Motivation
The SchoolEPITA: a French engineering school teaching computer science tograduate students.Third year (among five) is dedicated to the core curriculum.Strong practical emphasis on projects.
The NeedsTen years ago, the school asked for a long and challenging project.Should virtually be a potpourri of every subject from computerscience courses taught in third year.
A (Miraculous) SolutionA compiler construction project.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 2
![Page 4: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/4.jpg)
Context and Motivation
The SchoolEPITA: a French engineering school teaching computer science tograduate students.Third year (among five) is dedicated to the core curriculum.Strong practical emphasis on projects.
The NeedsTen years ago, the school asked for a long and challenging project.Should virtually be a potpourri of every subject from computerscience courses taught in third year.
A (Miraculous) SolutionA compiler construction project.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 2
![Page 5: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/5.jpg)
Goals
AimCompiler construction as a by-product
Complete Project Specifications, implementation, documentation,testing, distribution.
Several iterations 7 (optionally up to 11) steps, for 6 (resp. up to 9)months.
Algorithmically challenging Applied use of well known data structuresand algorithms.
Team Management Project conducted in group of four students.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 3
![Page 6: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/6.jpg)
Goals
AimCompiler construction as a by-product
Complete Project Specifications, implementation, documentation,testing, distribution.
Several iterations 7 (optionally up to 11) steps, for 6 (resp. up to 9)months.
Algorithmically challenging Applied use of well known data structuresand algorithms.
Team Management Project conducted in group of four students.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 3
![Page 7: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/7.jpg)
Goals
AimCompiler construction as a by-product
Complete Project Specifications, implementation, documentation,testing, distribution.
Several iterations 7 (optionally up to 11) steps, for 6 (resp. up to 9)months.
Algorithmically challenging Applied use of well known data structuresand algorithms.
Team Management Project conducted in group of four students.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 3
![Page 8: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/8.jpg)
Goals
AimCompiler construction as a by-product
Complete Project Specifications, implementation, documentation,testing, distribution.
Several iterations 7 (optionally up to 11) steps, for 6 (resp. up to 9)months.
Algorithmically challenging Applied use of well known data structuresand algorithms.
Team Management Project conducted in group of four students.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 3
![Page 9: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/9.jpg)
Goals
AimCompiler construction as a by-product
Complete Project Specifications, implementation, documentation,testing, distribution.
Several iterations 7 (optionally up to 11) steps, for 6 (resp. up to 9)months.
Algorithmically challenging Applied use of well known data structuresand algorithms.
Team Management Project conducted in group of four students.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 3
![Page 10: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/10.jpg)
Goals (cont.)
C++ Expressive power; uses both low- and high-levelconstructs; industry standard.
Object Oriented (OO) Design and Design Pattern (DP) Practicecommon OO idioms, apply DPs.
Development Tools Autotools, Doxygen, Flex, Bison, GDB, Valgrind,Subversion, etc.
Understanding Computers Compiler and languages are tightly relatedto computer architecture.
English Everything is to be written in English (code,documentation, test).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 4
![Page 11: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/11.jpg)
Goals (cont.)
C++ Expressive power; uses both low- and high-levelconstructs; industry standard.
Object Oriented (OO) Design and Design Pattern (DP) Practicecommon OO idioms, apply DPs.
Development Tools Autotools, Doxygen, Flex, Bison, GDB, Valgrind,Subversion, etc.
Understanding Computers Compiler and languages are tightly relatedto computer architecture.
English Everything is to be written in English (code,documentation, test).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 4
![Page 12: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/12.jpg)
Goals (cont.)
C++ Expressive power; uses both low- and high-levelconstructs; industry standard.
Object Oriented (OO) Design and Design Pattern (DP) Practicecommon OO idioms, apply DPs.
Development Tools Autotools, Doxygen, Flex, Bison, GDB, Valgrind,Subversion, etc.
Understanding Computers Compiler and languages are tightly relatedto computer architecture.
English Everything is to be written in English (code,documentation, test).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 4
![Page 13: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/13.jpg)
Goals (cont.)
C++ Expressive power; uses both low- and high-levelconstructs; industry standard.
Object Oriented (OO) Design and Design Pattern (DP) Practicecommon OO idioms, apply DPs.
Development Tools Autotools, Doxygen, Flex, Bison, GDB, Valgrind,Subversion, etc.
Understanding Computers Compiler and languages are tightly relatedto computer architecture.
English Everything is to be written in English (code,documentation, test).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 4
![Page 14: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/14.jpg)
Goals (cont.)
C++ Expressive power; uses both low- and high-levelconstructs; industry standard.
Object Oriented (OO) Design and Design Pattern (DP) Practicecommon OO idioms, apply DPs.
Development Tools Autotools, Doxygen, Flex, Bison, GDB, Valgrind,Subversion, etc.
Understanding Computers Compiler and languages are tightly relatedto computer architecture.
English Everything is to be written in English (code,documentation, test).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 4
![Page 15: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/15.jpg)
Non Goal
Writing a Compiler Paradoxically!Well, at least considered a secondary issue.
Why?The vast majority of [Computer Science] students areunlikely to ever design a compiler. [Debray, 2002]
But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 5
![Page 16: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/16.jpg)
Non Goal
Writing a Compiler Paradoxically!Well, at least considered a secondary issue.
Why?The vast majority of [Computer Science] students areunlikely to ever design a compiler. [Debray, 2002]
But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 5
![Page 17: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/17.jpg)
Non Goal
Writing a Compiler Paradoxically!Well, at least considered a secondary issue.
Why?The vast majority of [Computer Science] students areunlikely to ever design a compiler. [Debray, 2002]
But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 5
![Page 18: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/18.jpg)
Non Goal
Writing a Compiler Paradoxically!Well, at least considered a secondary issue.
Why?The vast majority of [Computer Science] students areunlikely to ever design a compiler. [Debray, 2002]
But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 5
![Page 19: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/19.jpg)
Non Goal
Writing a Compiler Paradoxically!Well, at least considered a secondary issue.
Why?The vast majority of [Computer Science] students areunlikely to ever design a compiler. [Debray, 2002]
But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 5
![Page 20: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/20.jpg)
Non Goal
Writing a Compiler Paradoxically!Well, at least considered a secondary issue.
Why?The vast majority of [Computer Science] students areunlikely to ever design a compiler. [Debray, 2002]
But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 5
![Page 21: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/21.jpg)
Non Goal
Writing a Compiler Paradoxically!Well, at least considered a secondary issue.
Why?The vast majority of [Computer Science] students areunlikely to ever design a compiler. [Debray, 2002]
But... Students interested in compiler construction should be giventhe opportunity to work on challenging, optional assignments.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 5
![Page 22: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/22.jpg)
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 6
![Page 23: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/23.jpg)
The Tiger Project
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 7
![Page 24: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/24.jpg)
The Tiger Project
A Compiler Construction Project Relevant to CoreCurriculum
Based on Andrew Appel’s Tiger language and Modern CompilerImplementation books [Appel, 1998]...
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 8
![Page 25: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/25.jpg)
The Tiger Project
A Compiler Construction Project Relevant to CoreCurriculum (cont.)
...and largely adapted [Demaille, 2005].Compiler (to be) written in C++.Initial Tiger language definition (a Pascal-descendant language,dressed in a clean ML-like syntax).Augmented with import statements, adjustable prelude, OOconstructs, etc.Better defined (no implementation-defined 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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 9
![Page 26: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/26.jpg)
The Tiger Project
A Compiler Construction Project Relevant to CoreCurriculum (cont.)
...and largely adapted [Demaille, 2005].Compiler (to be) written in C++.Initial Tiger language definition (a Pascal-descendant language,dressed in a clean ML-like syntax).Augmented with import statements, adjustable prelude, OOconstructs, etc.Better defined (no implementation-defined 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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 9
![Page 27: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/27.jpg)
The Tiger Project
A Compiler Construction Project Relevant to CoreCurriculum (cont.)
...and largely adapted [Demaille, 2005].Compiler (to be) written in C++.Initial Tiger language definition (a Pascal-descendant language,dressed in a clean ML-like syntax).Augmented with import statements, adjustable prelude, OOconstructs, etc.Better defined (no implementation-defined 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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 9
![Page 28: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/28.jpg)
The Tiger Project
A Compiler Construction Project Relevant to CoreCurriculum (cont.)
...and largely adapted [Demaille, 2005].Compiler (to be) written in C++.Initial Tiger language definition (a Pascal-descendant language,dressed in a clean ML-like syntax).Augmented with import statements, adjustable prelude, OOconstructs, etc.Better defined (no implementation-defined 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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 9
![Page 29: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/29.jpg)
The Tiger Project
Project’s Modus Operandi
The compiler is designed as a long pipe composed of severalmodules.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 theimplementation of the back-end of the compiler.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 10
![Page 30: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/30.jpg)
The Tiger Project
Project’s Modus Operandi
The compiler is designed as a long pipe composed of severalmodules.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 theimplementation of the back-end of the compiler.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 10
![Page 31: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/31.jpg)
The Tiger Project
Project’s Modus Operandi
The compiler is designed as a long pipe composed of severalmodules.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 theimplementation of the back-end of the compiler.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 10
![Page 32: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/32.jpg)
The Tiger Project
Project’s Modus Operandi
The compiler is designed as a long pipe composed of severalmodules.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 theimplementation of the back-end of the compiler.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 10
![Page 33: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/33.jpg)
The Tiger Project
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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 11
![Page 34: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/34.jpg)
The Tiger Project
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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 11
![Page 35: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/35.jpg)
The Tiger Project
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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 11
![Page 36: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/36.jpg)
The Tiger Project
Figures
9 years of existence.250 students per year (on average).Project done in groups of 4 (formerly 6) students.7 mandatory steps (compiler front-end).4 optional steps (compiler back-end).Reference compiler: 25KLOC.Students are expected to write about 5500 lines (or about 7000lines, with the optional assignments).250+ pages of documentation (reference manual[Demaille, 2007b] and project assignments [Demaille, 2007a]).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 12
![Page 37: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/37.jpg)
Compiler Components Generation
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 13
![Page 38: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/38.jpg)
Compiler Components Generation
Generated Components
Many components of the Tiger compiler are generated.Some generators are provided to the students, others are forteachers’ use only.
Generated components (for both students & teachers)The parser, generated by GNU Bison.The code generator, generated by MonoBURG.
Generated components (for teachers only)Data structures (classes) of the Abstract Syntax Tree (AST).Traversals (visitors) of the AST.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 14
![Page 39: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/39.jpg)
Compiler Components Generation
Generated Components
Many components of the Tiger compiler are generated.Some generators are provided to the students, others are forteachers’ use only.
Generated components (for both students & teachers)The parser, generated by GNU Bison.The code generator, generated by MonoBURG.
Generated components (for teachers only)Data structures (classes) of the AST.Traversals (visitors) of the AST.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 14
![Page 40: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/40.jpg)
Compiler Components Generation
Generated Components
Many components of the Tiger compiler are generated.Some generators are provided to the students, others are forteachers’ use only.
Generated components (for both students & teachers)The parser, generated by GNU Bison.The code generator, generated by MonoBURG.
Generated components (for teachers only)Data structures (classes) of the AST.Traversals (visitors) of the AST.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 14
![Page 41: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/41.jpg)
Compiler Components Generation
Rationale
Generated components are easier toUnderstand They provide concise contents—for both students and
teachers— with more semantics than bare source code.Maintain The generation process tends to unify the output;
moreover, it makes the selection of code hidden tostudents easier for the teachers.
Extend The conciseness of the input helps to focus on the addedmaterial.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 15
![Page 42: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/42.jpg)
Compiler Components Generation
Rationale
Generated components are easier toUnderstand They provide concise contents—for both students and
teachers— with more semantics than bare source code.Maintain The generation process tends to unify the output;
moreover, it makes the selection of code hidden tostudents easier for the teachers.
Extend The conciseness of the input helps to focus on the addedmaterial.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 15
![Page 43: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/43.jpg)
Compiler Components Generation
Rationale
Generated components are easier toUnderstand They provide concise contents—for both students and
teachers— with more semantics than bare source code.Maintain The generation process tends to unify the output;
moreover, it makes the selection of code hidden tostudents easier for the teachers.
Extend The conciseness of the input helps to focus on the addedmaterial.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 15
![Page 44: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/44.jpg)
Compiler Components Generation
Benefits for Students
More time spent on the core of a topic for a given step,e.g. writing and debugging a grammar (parser);or understanding and applying pattern-based tree-rewritingprinciples (code generator).
. . . Rather than on “side-effect issues”memory allocation,C++ idiosyncrasies,lack of expressive power from the language in some areas,etc.
Those secondary-order problems are important though, andshould be part of the assignments
→ Hence there are parts of the project that do not use generators.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 16
![Page 45: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/45.jpg)
Compiler Components Generation
Benefits for Students
More time spent on the core of a topic for a given step,e.g. writing and debugging a grammar (parser);or understanding and applying pattern-based tree-rewritingprinciples (code generator).
. . . Rather than on “side-effect issues”memory allocation,C++ idiosyncrasies,lack of expressive power from the language in some areas,etc.
Those secondary-order problems are important though, andshould be part of the assignments
→ Hence there are parts of the project that do not use generators.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 16
![Page 46: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/46.jpg)
Compiler Components Generation
Benefits for Students
More time spent on the core of a topic for a given step,e.g. writing and debugging a grammar (parser);or understanding and applying pattern-based tree-rewritingprinciples (code generator).
. . . Rather than on “side-effect issues”memory allocation,C++ idiosyncrasies,lack of expressive power from the language in some areas,etc.
Those secondary-order problems are important though, andshould be part of the assignments
→ Hence there are parts of the project that do not use generators.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 16
![Page 47: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/47.jpg)
Compiler Components Generation
Benefits for Teachers
According to our experience the cost of using or even developinga generator is generally lower than writing everything by hand.For instance, the number of sources lines of codes of our ASTdescription and its generators is less than the third of the lines ofthe generated C++ classes.Generators save us a huge amount of time when conductingexperiments (renewing the project, adding optional assignments).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 17
![Page 48: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/48.jpg)
Compiler Components Generation
Benefits for Teachers
According to our experience the cost of using or even developinga generator is generally lower than writing everything by hand.For instance, the number of sources lines of codes of our ASTdescription and its generators is less than the third of the lines ofthe generated C++ classes.Generators save us a huge amount of time when conductingexperiments (renewing the project, adding optional assignments).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 17
![Page 49: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/49.jpg)
Compiler Components Generation
Benefits for Teachers
According to our experience the cost of using or even developinga generator is generally lower than writing everything by hand.For instance, the number of sources lines of codes of our ASTdescription and its generators is less than the third of the lines ofthe generated C++ classes.Generators save us a huge amount of time when conductingexperiments (renewing the project, adding optional assignments).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 17
![Page 50: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/50.jpg)
Compiler Components Generation Parser Generation
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 18
![Page 51: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/51.jpg)
Compiler Components Generation Parser Generation
Bison, the GNU Yacc implementation[Corbett et al., 2003]
Free software (GNU GPL).Backward-compatible with Yacc.With many additions:
C++ and Java back-ends,GLR algorithm in addition to LALR(1),improved programming interface,better debug tools.
Used along with Flex (free software Lex implementation).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 19
![Page 52: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/52.jpg)
Compiler Components Generation Parser Generation
Our Contributions to Bison
A LALR(1) C++ back-end.A GLR C++ back-end.Helpers to pretty-print symbols and manage memory during errorhandling.Improved debug information from Bison and the generated parser.Named symbols in productions.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 20
![Page 53: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/53.jpg)
Compiler Components Generation Parser Generation
Our Contributions to Bison
A LALR(1) C++ back-end.A GLR C++ back-end.Helpers to pretty-print symbols and manage memory during errorhandling.Improved debug information from Bison and the generated parser.Named symbols in productions.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 20
![Page 54: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/54.jpg)
Compiler Components Generation Parser Generation
Our Contributions to Bison
A LALR(1) C++ back-end.A GLR C++ back-end.Helpers to pretty-print symbols and manage memory during errorhandling.Improved debug information from Bison and the generated parser.Named symbols in productions.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 20
![Page 55: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/55.jpg)
Compiler Components Generation Parser Generation
Our Contributions to Bison
A LALR(1) C++ back-end.A GLR C++ back-end.Helpers to pretty-print symbols and manage memory during errorhandling.Improved debug information from Bison and the generated parser.Named symbols in productions.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 20
![Page 56: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/56.jpg)
Compiler Components Generation Parser Generation
Our Contributions to Bison
A LALR(1) C++ back-end.A GLR C++ back-end.Helpers to pretty-print symbols and manage memory during errorhandling.Improved debug information from Bison and the generated parser.Named symbols in productions.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 20
![Page 57: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/57.jpg)
Compiler Components Generation Parser Generation
Our Contributions to BisonDebug Information from Bison.
Textual (improvedwith initialautomaton state,easier-to-read statelabels, lookaheadsymbols).Graphical(Graphviz’s dotformat).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 21
![Page 58: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/58.jpg)
Compiler Components Generation Parser Generation
Our Contributions to BisonDebug Information from Bison.
Textual (improvedwith initialautomaton state,easier-to-read statelabels, lookaheadsymbols).Graphical(Graphviz’s dotformat).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 21
![Page 59: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/59.jpg)
Compiler Components Generation Parser Generation
Our Contributions to BisonNamed Symbols in Productions
Before:exp: "identifier" "[" exp "]" "of" exp//$$ $1 $2 $3 $4 $5 $6{ $$ = new Array (@$, new Type (@1, $1), $3, $6) }
After:exp: "identifier"$type "[" exp$size "]" "of" exp$init{ $$ = new Array(@$, new Type(@type, $type), $size, $init) }
Work in progress (should be integrated into the project next year).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 22
![Page 60: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/60.jpg)
Compiler Components Generation Parser Generation
Our Contributions to BisonNamed Symbols in Productions
Before:exp: "identifier" "[" exp "]" "of" exp//$$ $1 $2 $3 $4 $5 $6{ $$ = new Array (@$, new Type (@1, $1), $3, $6) }
After:exp: "identifier"$type "[" exp$size "]" "of" exp$init{ $$ = new Array(@$, new Type(@type, $type), $size, $init) }
Work in progress (should be integrated into the project next year).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 22
![Page 61: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/61.jpg)
Compiler Components Generation Parser Generation
Assignments and Results
First stage Students have to write an LALR(1) parser (along with ascanner generated by Flex) from scratch using Bison andits C++ back-end.
Second stage Students convert their LALR(1) parser to a GLR one(e.g., they can simplify the grammar to accept localambiguities).
ResultsStudents debug their parser easier and faster than before, thanksto Bison’s helpful information.They learn more material from language theory (GLR, forinstance) in the same amount of time.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 23
![Page 62: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/62.jpg)
Compiler Components Generation Parser Generation
Assignments and Results
First stage Students have to write an LALR(1) parser (along with ascanner generated by Flex) from scratch using Bison andits C++ back-end.
Second stage Students convert their LALR(1) parser to a GLR one(e.g., they can simplify the grammar to accept localambiguities).
ResultsStudents debug their parser easier and faster than before, thanksto Bison’s helpful information.They learn more material from language theory (GLR, forinstance) in the same amount of time.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 23
![Page 63: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/63.jpg)
Compiler Components Generation Parser Generation
Assignments and Results
First stage Students have to write an LALR(1) parser (along with ascanner generated by Flex) from scratch using Bison andits C++ back-end.
Second stage Students convert their LALR(1) parser to a GLR one(e.g., they can simplify the grammar to accept localambiguities).
ResultsStudents debug their parser easier and faster than before, thanksto Bison’s helpful information.They learn more material from language theory (GLR, forinstance) in the same amount of time.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 23
![Page 64: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/64.jpg)
Compiler Components Generation Abstract Syntax Tree and Traversals Generation
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 24
![Page 65: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/65.jpg)
Compiler Components Generation Abstract Syntax Tree and Traversals Generation
Why Generating the Abstract Syntax Tree and itsTraversals?
From the input (concrete syntax) the parser generates an AST.Usually, in Object-Oriented Language:
ASTs node types are implemented as “uniform” classes.Tree traversals are based on the design pattern.
Hence both might be generated.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 25
![Page 66: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/66.jpg)
Compiler Components Generation Abstract Syntax Tree and Traversals Generation
A Teacher-Only Generator
Writing AST and traversal is part of the first C++ assignment of theproject, that students are expected to write.
→ This part of the compiler is actually generated, butstudents only see the output, with gaps;the AST description (input) and the generators are kept private.
Input is a simple Y description, generators are written inPython.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 26
![Page 67: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/67.jpg)
Compiler Components Generation Abstract Syntax Tree and Traversals Generation
A Teacher-Only Generator
Writing AST and traversal is part of the first C++ assignment of theproject, that students are expected to write.
→ This part of the compiler is actually generated, butstudents only see the output, with gaps;the AST description (input) and the generators are kept private.
Input is a simple Y description, generators are written inPython.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 26
![Page 68: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/68.jpg)
Compiler Components Generation Abstract Syntax Tree and Traversals Generation
A Teacher-Only Generator
Writing AST and traversal is part of the first C++ assignment of theproject, that students are expected to write.
→ This part of the compiler is actually generated, butstudents only see the output, with gaps;the AST description (input) and the generators are kept private.
Input is a simple Y description, generators are written inPython.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 26
![Page 69: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/69.jpg)
Compiler Components Generation Abstract Syntax Tree and Traversals Generation
Generating the AST
Y description
---
# Top-most class of the AST class hierarchy.
Ast:
attributes:
- location:
type: Location
desc: Scanner position information
Dec:
super: Ast Typable
attributes:
- name:
type: Symbol
desc: Name of the defined entity
owned: False
C++ code generated
class Dec: public Ast, public Typable {public:Dec (const Location& l, const Symbol& n);virtual ˜Dec ();
/** \name Visitors entry point. \{ */
/// Accept a const visitor \a v.
virtual void accept (ConstVisitor& v) const = 0;/// Accept a non-const visitor \a v.
virtual void accept (Visitor& v) = 0;/** \} */
/** \name Accessors. \{ */
/// Return name of the defined entity.
const Symbol& name_get () const;/// Set name of the defined entity.
void name_set (const Symbol&);/** \} */
protected:/// Name of the defined entity.
Symbol name_;
};
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 27
![Page 70: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/70.jpg)
Compiler Components Generation Abstract Syntax Tree and Traversals Generation
Benefits
Architecture (as well as gaps in the code) are easy to change fromyear to year.
→ Discourages teaching by stealing code from previous years.Language changes/extensions are made easier and faster.For instance, adding AST classes and basic visitors (abstract,identity, cloning and pretty-printing visitors) for OO constructs tookonly 50 lines of Y description.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 28
![Page 71: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/71.jpg)
Compiler Components Generation Code Generator Generation
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 29
![Page 72: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/72.jpg)
Compiler Components Generation Code Generator Generation
Parsing vs Code Generation
Code generation (aka instruction selection) is symmetric toparsing.
Parsing Code generationInput (Tiger) Code IR treesTool Parser Code generatorOutput AST Assembly language code
Both task make use of a grammar to match their entries.Yet another part to be generated.Existing literature and tools (Twig [Appel, 1987], BURG[Fraser et al., 1991]).Again, existing tools did no suit our plans.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 30
![Page 73: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/73.jpg)
Compiler Components Generation Code Generator Generation
Parsing vs Code Generation
Code generation (aka instruction selection) is symmetric toparsing.
Parsing Code generationInput (Tiger) Code IR treesTool Parser Code generatorOutput AST Assembly language code
Both task make use of a grammar to match their entries.Yet another part to be generated.Existing literature and tools (Twig [Appel, 1987], BURG[Fraser et al., 1991]).Again, existing tools did no suit our plans.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 30
![Page 74: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/74.jpg)
Compiler Components Generation Code Generator Generation
MonoBURG
We extended MonoBURG, from the Mono Project.C++ features (namespaces, references).Named arguments in rules.Modules (%include directive).Better debugging (#line statements in emitted code).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 31
![Page 75: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/75.jpg)
Compiler Components Generation Code Generator Generation
Benefits
Helped students write their code generators.Allowed some of them to write a few optimizations.Allowed us to provide a second back-end (IA-32) in addition to thefirst one (MIPS).Writing a tree pattern matcher by hand in C++ is a tedious task.Less interesting than focusing on the tree rewriting task itself.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 32
![Page 76: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/76.jpg)
Pedagogical Interpreters
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 33
![Page 77: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/77.jpg)
Pedagogical Interpreters
Checking Outputs of the Compiler
Many deliveries (7, up to 11) from students, all to be automaticallychecked.Compiler produces outputs at almost every stage: pretty-printedAST (possibly annotated), intermediate representation, codegeneration, etc.Interpreters are needed
for students, to check their compiler during development;for teachers, to assess the work of students.
Two interpreters have been developedHavm A virtual machine interpreting code from the
intermediate representation (middle-end).Nolimips A simulator executing MIPS code (back-end).
Both are free software and are available on the Internet.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 34
![Page 78: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/78.jpg)
Pedagogical Interpreters
Checking Outputs of the Compiler
Many deliveries (7, up to 11) from students, all to be automaticallychecked.Compiler produces outputs at almost every stage: pretty-printedAST (possibly annotated), intermediate representation, codegeneration, etc.Interpreters are needed
for students, to check their compiler during development;for teachers, to assess the work of students.
Two interpreters have been developedHavm A virtual machine interpreting code from the
intermediate representation (middle-end).Nolimips A simulator executing MIPS code (back-end).
Both are free software and are available on the Internet.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 34
![Page 79: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/79.jpg)
Pedagogical Interpreters
Checking Outputs of the Compiler
Many deliveries (7, up to 11) from students, all to be automaticallychecked.Compiler produces outputs at almost every stage: pretty-printedAST (possibly annotated), intermediate representation, codegeneration, etc.Interpreters are needed
for students, to check their compiler during development;for teachers, to assess the work of students.
Two interpreters have been developedHavm A virtual machine interpreting code from the
intermediate representation (middle-end).Nolimips A simulator executing MIPS code (back-end).
Both are free software and are available on the Internet.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 34
![Page 80: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/80.jpg)
Pedagogical Interpreters Register-based Intermediate Language
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 35
![Page 81: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/81.jpg)
Pedagogical Interpreters Register-based Intermediate Language
Assessment of the Middle-End
Checking the Intermediate Representation (IR) is troublesomebefore completion of the compiler.Evaluation done by executing the IR.The IR from the Tiger compiler uses the T language, ahigh-level register-based Intermediate Language (IL).No tool available.
→ Havm, a T interpreter.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 36
![Page 82: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/82.jpg)
Pedagogical Interpreters Register-based Intermediate Language
Assessment of the Middle-End
Checking the Intermediate Representation (IR) is troublesomebefore completion of the compiler.Evaluation done by executing the IR.The IR from the Tiger compiler uses the T language, ahigh-level register-based IL.No tool available.
→ Havm, a T interpreter.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 36
![Page 83: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/83.jpg)
Pedagogical Interpreters Register-based Intermediate Language
Assessment of the Middle-End
Checking the Intermediate Representation (IR) is troublesomebefore completion of the compiler.Evaluation done by executing the IR.The IR from the Tiger compiler uses the T language, ahigh-level register-based IL.No tool available.
→ Havm, a T interpreter.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 36
![Page 84: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/84.jpg)
Pedagogical Interpreters Register-based Intermediate Language
Havm
Free students from handling the stack (implicit support forrecursion).Support for an unlimited set of temporaries (pseudo-registers).Trace mode.Performance measurement (profiling).Havm proved to be a valuable tool to help student develop andunderstand the middle-end, and improve it.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 37
![Page 85: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/85.jpg)
Pedagogical Interpreters MIPS Assembly Language
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 38
![Page 86: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/86.jpg)
Pedagogical Interpreters MIPS Assembly Language
MIPS
MIPS is simple and elegant, perfectly fitted for education.However, MIPS is not necessarily common hardware in acomputer science school.Moreover, a MIPS machine would not be able to execute codewithout register allocation.
→ Use a simulator.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 39
![Page 87: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/87.jpg)
Pedagogical Interpreters MIPS Assembly Language
Nolimips
Existing simulators (SPIM [Larus, 1990], MARS[Vollmar and Sanderson, 2006]) are good, but lack some features.Nolimips, a new MIPS simulator.
Can execute code using an arbitrary number of registers.Can up- or downgrade the MIPS architecture byincreasing/decreasing the number of registers.Provides with a small set of system calls (I/O, memorymanagement).Trace mode.Interactive shell.
A useful tool to diagnose mistakes and debug the back-end of thecompiler.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 40
![Page 88: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/88.jpg)
Pedagogical Interpreters MIPS Assembly Language
Nolimips
Existing simulators (SPIM [Larus, 1990], MARS[Vollmar and Sanderson, 2006]) are good, but lack some features.Nolimips, a new MIPS simulator.
Can execute code using an arbitrary number of registers.Can up- or downgrade the MIPS architecture byincreasing/decreasing the number of registers.Provides with a small set of system calls (I/O, memorymanagement).Trace mode.Interactive shell.
A useful tool to diagnose mistakes and debug the back-end of thecompiler.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 40
![Page 89: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/89.jpg)
Results and discussion
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 41
![Page 90: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/90.jpg)
Results and discussion
Other Tools
The Tiger project also features (teacher) tools for:Generating code with gaps Based on annotations in either code or
description of components.Automating deliveries Students just have to upload their work, which
get a timestamp and is possibly immediately evaluated.Automating evaluation Runs a big (private) test suite, and makes use
of the reference compiler and interpreters (Havm &Nolimips).
Interactive compiler sessions The Tiger Compiler Shell: a Python- orRuby-based shell giving access to the compiler’scomponent.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 42
![Page 91: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/91.jpg)
Results and discussion
Feedback From the Users
According to teaching assistants, interaction with students is lessdemanding from year to year.Students are aware of the flaws of their work
either because they used the tools and discovered themthemselves,or because we (teachers/assistants) pointed them at errors(interpreters are used to grade and generate automatedpost-delivery reports to students).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 43
![Page 92: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/92.jpg)
Results and discussion
Feedback from the Teachers
Quality of the delivered compiler increased.From one year to the following,
Groups whose parser passes more than 97% of the tests ×2Number of correct ASTs ×3Average grade for the binding stage ×2
Automating is a gain of time, allowing teacher and assistants towork on other, more advanced issues.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 44
![Page 93: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/93.jpg)
Results and discussion
Frequent Reports from Alumni
“I understood those design patterns thanks to the Tiger project(and I’m using them right now).”“I’m usually the one being asked questions aboutC++/design/development/tools in my professional environmentthanks to what I learned during this project.”“I had a problem last week, and I remembered (and reused!) asolution from my own instance of the Tiger project.”
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 45
![Page 94: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/94.jpg)
Results and discussion
Conclusion and Future Work
Tools in a CS programming assignment are profitable.We highly encourage to either use, extend or even develop them!Some presented here are already available.Contact us about the others.We would like to share experience and tools on the Tiger Project.
http://tiger.lrde.epita.fr
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 46
![Page 95: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/95.jpg)
Results and discussion
A Set of Tools to Teach Compiler Construction
1 The Tiger Project
2 Compiler Components GenerationParser GenerationAbstract Syntax Tree and Traversals GenerationCode Generator Generation
3 Pedagogical InterpretersRegister-based Intermediate LanguageMIPS Assembly Language
4 Results and discussion
http://tiger.lrde.epita.fr
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 47
![Page 96: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/96.jpg)
History
2000 Beginning of the Tiger Project: a front-end, a singleteacher, no assistant.
2001 Have students learn and use the Autotools for projectmaintenance.
2002 Teaching Assistants involved in the project.Interpreter for the Intermediate Representation (IR)language (HAVM).
2003 Addition of back-end, partly from the work of motivatedstudents.Interpreter for the MIPS language (Nolimips).The structures of the Abstract Syntax Tree (AST) and avisitor are generated from a description file.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 48
![Page 97: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/97.jpg)
History (cont.)
2005 A second teacher in the project maintenance andsupervision.First uses of some Boost library (Boost.Variant, BoostGraph Library (BGL), Smart Pointers).First use of concrete-syntax program transformations(code generation)
2007 Tiger becomes an Object-Oriented Language (OOL).Full concrete-syntax rewriting engine (code matching &generation).
2008 Extension of Bison’s grammar to handle namedparameters (pending).
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 49
![Page 98: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/98.jpg)
Bibliography I
Appel, A. W. (1987).Concise specifications of locally optimal code generators.Technical Report CS-TR-080-87, Princeton University, Dept. ofComputer Science, Princeton, New Jersey.
Appel, A. W. (1998).Modern Compiler Implementation in C, Java, ML.Cambridge University Press.
Corbett, R., Stallman, R., and Hilfinger, P. (2003).Bison: GNU LALR(1) and GLR parser generator.http://www.gnu.org/software/bison/bison.html.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 50
![Page 99: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/99.jpg)
Bibliography II
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 onComputer science 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, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 51
![Page 100: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/100.jpg)
Bibliography III
Demaille, A. (2007a).The Tiger Compiler Project Assignment.EPITA Research and Development Laboratory (LRDE), 14-16 rueVoltaire, FR-94270 Le Kremlin-Bicetre, France.http://www.lrde.epita.fr/˜akim/ccmp/assignments.pdf.
Demaille, A. (2007b).The Tiger Compiler Reference Manual.EPITA Research and Development Laboratory (LRDE), 14-16 rueVoltaire, FR-94270 Le Kremlin-Bicetre, France.http://www.lrde.epita.fr/˜akim/ccmp/tiger.pdf.
Fraser, C. W., Henry, R. R., and Proebsting, T. A. (1991).BURG–fast optimal instruction selection and tree parsing.Technical Report CS-TR-1991-1066.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 52
![Page 101: A Set of Tools to Teach Compiler Construction · A Set of Tools to Teach Compiler Construction ... Writing a CompilerParadoxically! Well, at least considered asecondaryissue. Why?](https://reader031.fdocuments.us/reader031/viewer/2022022603/5b5d1ff57f8b9ad21d8d82cc/html5/thumbnails/101.jpg)
Bibliography IV
Larus, J. R. (1990).SPIM S20: A MIPS R2000 simulator.Technical Report TR966, Computer Sciences Department,University of Wisconsin–Madison.
Vollmar, K. and Sanderson, P. (2006).MARS: An education-oriented MIPS assembly language simulator.
In Proceedings of the 37th SIGCSE technical symposium onComputer science education (SIGCSE’06), pages 239–243,Houston, Texas, USA. ACM Press.
A. Demaille, R. Levillain, B. Perrot (LRDE) Tools to Teach Compiler Construction ITiCSE 2008 53