Programming Languages and Compilers
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
BI-PJP | Z,ZK | 5 | 2P+1C | Czech |
- Lecturer:
- Jan Janoušek (guarantor)
- Tutor:
- Radomír Polách, Jan Trávníček
- Supervisor:
- Department of Theoretical Computer Science
- Synopsis:
-
Students master basic methods of implementation of common high-level programming languages. They get experience with the design and implementation of individual compiler parts for a simple programming language: data types, subroutines, and data abstractions. Students are able to formally specify a translation of a text that has a certain syntax into a target form and write a compiler based on such a specification. The notion of compiler in this context is not limited to compilers of programming languages, but extends to all other programs for parsing and processing text in a language defined by a LL(1) grammar.
- Requirements:
- Syllabus of lectures:
-
1. Overview of programming languages, programming paradigms. Compiler structure, virtual machine.
2. Design and implementation of a lexer (lexical analyser).
3. LL(1) grammars, context-free to LL(1) transformation.
4. Implementation of syntax parsing by recursive descent.
5. Translation grammars, pushdown translation automata.
6. Attribute translation grammars.
7. Internal forms of programs, compiling and evaluating expressions.
8. Compiling to a language of a stack machine.
9. Compiling to a syntax tree.
10. Specification and implementation of data types.
11. Compiling typical language constructs.
12. Specification and implementation of subroutines.
13. Specification and implementation of data abstractions.
- Syllabus of tutorials:
-
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.
- Study Objective:
-
After completing the course, students will be able to formally specify a translation of a text that has a certain syntax into the target form and write a compiler based on such specification. The notion of compiler in this context is not limited to compilers of programming languages but extends to all other programs for parsing and processing text in a language defined by a LL(1) grammar.
- Study materials:
-
1. Grune, D., Bal, H., Jacobs, C., Langendoen, K. Modern Compiler Design. Wiley, 2000. ISBN 0471976970.
2.
- Note:
- Time-table for winter semester 2019/2020:
- Time-table is not available yet
- Time-table for summer semester 2019/2020:
- Time-table is not available yet
- The course is a part of the following study plans:
-
- Information Technology - Version for those who Enrolled in 2014 (in Czech) (elective course)
- Information Systems and Management - Version for those who Enrolled in 2014 (in Czech) (elective course)
- Bc. Programme Informatics, in Czech, Version 2015 to 2019 (VO)
- Bc. Branch Security and Information Technology, in Czech, Version 2015 to 2019 (elective course)
- Bc. Branch Computer Science, in Czech, Version 2015 to 2019 (compulsory course of the specialization)
- Bc. Branch Computer Engineering, in Czech, Version 2015 to 2019 (elective course)
- Bachelor Branch Information Systems and Management, in Czech, Version 2015 to 2019 (elective course)
- Bachelor Branch Knowledge Engineering, in Czech, Version 2015, 2016 and 2017 (elective course)
- Bachelor Branch WSI, Specialization Software Engineering, in Czech, Version 2015 to 2019 (elective course)
- Bachelor Branch, Specialization Web Engineering, in Czech, Version 2015 to 2019 (elective course)
- Bachelor Branch WSI, Specialization Computer Grafics, in Czech, Version 2015 to 2019 (elective course)
- Bachelor Branch Knowledge Engineering, in Czech, Version 2018 to 2019 (elective course)