PA037 Compiler Project

Faculty of Informatics
Spring 2022
Extent and Intensity
1/2/1. 4 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Taught in person.
prof. RNDr. Antonín Kučera, Ph.D. (lecturer)
Guaranteed by
prof. RNDr. Antonín Kučera, Ph.D.
Department of Computer Science - Faculty of Informatics
Contact Person: prof. RNDr. Antonín Kučera, Ph.D.
Supplier department: Department of Computer Science - Faculty of Informatics
PA008 Compiler Construction
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 52 fields of study the course is directly associated with, display
Course objectives
The aim of the seminar is to provide students with a deeper knowledge about the structure of programming languages and the funcionality of the corresponding compilers. To pass this seminar, students have to design a simple programming language and implement its compiler. It is possible to work in groups of 2-4 members; the complexity of the project should be proportional to the number of group members.
Main objectives of the course can be summarized as follows: to understand basic design principles of programming languages and their compilers; to design a simple programming language and implement its compiler.
Learning outcomes
Own experience with implementation of a compiler.
  • The logical structure of a compiler. Formalisms used to specify the individual modules.
  • The scanner. Regular expressions. Tokens and their precedence.
  • The parser. Top-down and bottom-up analysis.
  • The constrainer. Attribute grammars. Attribute flow. Attribute evaluation.
  • The code generator, optimisations.
  • A complete specification of a simple one-pass optimising compiler.
  • Symbol tables as attributes. Declarations, type checking, scope analysis.
  • Functions. Stack frames. Passing of parameters. Conventions of C and Pascal.
  • Input and Output. Unix and the C language.
  • I386 assembler, conventions of the C language.
  • WILHELM, Reinhard and Dieter MAURER. Compiler design. Wokingham: Addison-Wesley Publishing Company, 1995. xv, 606 s. ISBN 0-201-42290-5. info
  • FISCHER, Charles N. and Richard J. LEBLANC. Crafting a compiler. Menlo Park: Benjamin/Cummings Publishing Company, 1988. 811 s. ISBN 0-8053-3201-4. info
  • AHO, Alfred V., Ravi SETHI and Jeffrey D. ULLMAN. Compilers, principles, techniques, and tools. Reading: Addison-Wesley Publishing Company, 1987. x, 796 s. ISBN 0-201-10088-6. info
Teaching methods
Lectures, tutorials, project.
Assessment methods
Seminars and a group project.
Language of instruction
Further Comments
The course is taught annually.
The course is taught: every week.
The course is also listed under the following terms Spring 2003, Spring 2004, Spring 2005, Spring 2006, Spring 2007, Spring 2008, Spring 2009, Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2014, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021.
  • Enrolment Statistics (recent)
  • Permalink: