SubjectsSubjects(version: 983)
Course, academic year 2025/2026
   
Compiler Design - NSWI002
Title: Konstrukce překladačů
Guaranteed by: Department of Software Engineering (32-KSI)
Faculty: Faculty of Mathematics and Physics
Actual: from 2005
Semester: winter
E-Credits: 9
Hours per week, examination: winter s.:2/2, C [HT]
summer s.:2/0, Ex [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: cancelled
Language: Czech
Teaching methods: full-time
Additional information: http://ulita.ms.mff.cuni.cz/mff/sylaby/kpr.html
Guarantor: RNDr. David Bednárek, Ph.D.
Class: Informatika Mgr. - Softwarové systémy
Classification: Informatics > Software Engineering
Pre-requisite : NSWI003, NTIN013
Opinion survey results   Schedule   Noticeboard   
Annotation -
Lexical and syntax analysis of artificial languages, semantics analysis of procedural programming languages. Translation of procedural programming languages. Semantics analysis, intermediate code, code generation, optimization.
Last update: T_KSI (07.05.2004)
Literature - Czech

Aho, Sethi, Ullman: Compilers - Principles, Techniques and Tools, Addison-Wesley 1986

Chytil M.: Automaty a gramatiky, SNTL 1984

Melichar B.: Konstrukce překladačů. ČVUT 1999

Deransart, Jourdan, Lorho: Attribute grammars: definitions, systems and bibliography, Springer 1998

Muchnick, S.: Advanced Compiler Design and Implementation, Morgan Kaufmann 1997

Grune, Bal, Jacobs, Langendoen: Modern Compiler Design, Wiley 2000

Last update: T_KSI (06.05.2004)
Syllabus -

Compilers of programming languages, compiler structure.

Lexical analysis: Finite automata, automatized constructions, flex.

Macroprocesors.

Top-down parsers - strong and weak LL(k). Extensions to regular right parts.

Bottom-up parsers - LR(k), LALR(k), SLR(k), bison.

Tree representation of input text: Derivation and abstract tree.

Embedding semantics actions to syntax analysis.

Attribute grammars: Definition, classification, simple left-to-right k-pass grammars.

Memory strustures of a compiler of a procedural language: Table types, organization and examples of implementation.

Compiler structure.

The role of intermediate code, the nature of information carried, artefacts contained in intermediate code.

Object representation, variables, temporaries, memory, aliasing.

Procedure representation, control-flow, data-flow, basic blocks, live ranges.

Intermediate code formats: Triples, quadruples, tree, DAG, SSA.

Intermediate code generation, translation of expressions and program structures.

Calling conventions, implementation of languages with nested procedures.

Register allocation.

Key features of modern processors, code generation, scheduling.

Last update: T_KSI (07.05.2004)
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html