Code: BIE-PJP.21 |
Programming Languages and Compilers |
Lecturer: doc. Ing. Jan Janoušek Ph.D. |
Weekly load: 2P+1C |
Completion: A, EX |
Department: 18101 |
Credits: 5 |
Semester: S |
- Description:
-
Students learn basic compiling methods of programming languages. They are introduced to intermediate representations used in current compilers GNU and LLVM. They learn to create a specification of a translation of a text that conforms a given syntax, to a target code and also to create a compiler based on the specification. The compiler can translate not only a programming language but any text in a language generated by a given LL input grammar.
- Contents:
-
1. Structure of a compiler, lexical analysis.
2. Deterministic top-down parsing: LL parsing.
3. [2] Implementing LL parsing, properties of LL grammars.
5. Transformations to LL(1) grammars, error recovery during LL parsing.
6. Formalisms for syntax-directed translation and semantics: translation and attributed grammar.
7. One-pass attributed translation directed by LL parsing, L-attributed grammars, examples of simple translations.
8. Data structures of a compiler, intermediate representations.
9. Abstract syntax tree, three address code - intermediate representations of GNU compiler.
10. Intermediate representations of the LLVM compiler.
11. An example of a simple compiler.
12. Local code optimization.
13. Other variants of LL parsing.
- Seminar contents:
-
1. Lexer design and implementation.
2. Parser implementation using recursive descent.
3. Attribute translation grammars.
4. Compiling to a language of a stack machine.
5. Compiling to a syntax tree.
6. [2] Project consultations.
- Recommended literature:
-
1. Aho A.V., Lam M.S., Sethi R., Ullman J.D. : Compilers: Principles, Techniques, and Tools (2nd Edition). Addison Wesley, 2006. ISBN 978-0321486813.
2. Crespi Reghizzi S., Breveglieri L., Morzenti A. : Formal Languages and Compilation (3rd Edition). Springer, 2019. ISBN 978-3-030-04878-5.
3. Scott M. L. : Programming Language Pragmatics (3rd Edition). Morgan Kaufmann, 2009. ISBN 978-8131222560.
4. Wilhelm R., Seidl H., Hack S. : Compiler Design - Syntactic and Semantic Analysis. Springer, 2013. ISBN 978-3642175398.
5. Fischer C. N., Cytron R. C., LeBlanc R. J. : Crafting A Compiler. Addison-Wesley, 2009. ISBN 978-0136067054.
- Keywords:
- LL parsing, attribute grammars, compilers
Abbreviations used:
Semester:
- W ... winter semester (usually October - February)
- S ... spring semester (usually March - June)
- W,S ... both semesters
Mode of completion of the course:
- A ... Assessment (no grade is given to this course but credits are awarded. You will receive only P (Passed) of F (Failed) and number of credits)
- GA ... Graded Assessment (a grade is awarded for this course)
- EX ... Examination (a grade is awarded for this course)
- A, EX ... Examination (the award of Assessment is a precondition for taking the Examination in the given subject, a grade is awarded for this course)
Weekly load (hours per week):
- P ... lecture
- C ... seminar
- L ... laboratory
- R ... proseminar
- S ... seminar