Programming Language Translation
- Class 60
- Practice 0
- Independent work 90
Programming Language Translation
Lecturers and associates
- Associate Professor PhD Goran Delač
- Assistant Professor PhD Ante Đerek
- Full Professor PhD Siniša Srbljić
- Associate Professor PhD Marin Šilić
- Associate Professor PhD Dejan Škvorc
- Assistant Professor PhD Klemo Vladimir
Programs that take (other) programs as input such as interpreters, compilers, type-checkers, documentation, generators; Data structures to represent code for execution, translation, or transmission; Interpretation vs. compilation to native code vs. compilation to portable intermediate representation; Language translation pipeline: parsing, optional type-checking, translation, linking, execution.
Lexical analysis using regular expressions; Lexical analyser generators.
Top-down parsing (S, Q, and LL(k) grammar, recursive descent parsing).
Bottom-up parsing (shift-identify, shift-reduce, LR parsing).
Abstract syntax trees; Attributed syntax trees; High-level program representations such as abstract syntax trees; Scope and binding resolution.
Type checking; Attribute and attribute-translation grammars.
Run-time representation of core language constructs such as objects (method tables) and first-class functions (closures); Run-time layout of memory: call-stack, heap, static data; Procedure calls and method dispatching.
Memory management; Manual memory management: allocating, de-allocating, and reusing heap memory; Automated memory management: garbage collection as an automated technique using the notion of reachability; Dynamic memory management approaches and techniques: malloc/free, garbage collection.
Data layout for objects and activation records; Just-in-time compilation and dynamic recompilation; Other common features of virtual machines, such as class loading, threads, and security; Static and dynamic linking.
Basic blocks; Static single assignment; Source code, native code, and virtual machine code; Separate compilation; Linking; Absolute, relocatable, and virtual machine target code; Syntax-driven code generation; Intermediate code generation.
Control-flow graphs; Def-use chains; Instruction scheduling; Instruction selection; Register allocation.
Implementing loops, recursion, and tail calls; Machine-independent optimization; Machine-dependent optimization; Peephole optimization.
(.), Prevođenje programskih jezika, S. Srbljić, Element,
(.), Modern Compiler Design, D. Grune, H. E. Bal, C. J. H. Jacobs, K. G. Langendoen, Wiley,
(.), Compilers: Principles, Techniques, and Tools, A. V. Aho, R. Sethi, J. D. Ullman, Addison-Wesley,
(.), Engineering a Compiler, K. Cooper, L. Torczon, Morgan Kaufmann,(.), Advanced Compiler Design and Implementation, S. S. Muchnick, Morgan Kaufmann,
(.), Algorithms for Compiler Design, O. G. Kakde, Charles River Media,
Online education during epidemiological measures
- Study program duration
- 6 semesters (3 years)
- Semester duration
- 15 weeks of active teaching + 5 examination weeks
- Total number of ECTS points
- Bacc.ing.comp (Bachelor of Science in Computing)
Minimal learning outcomes
- Breakdown the design of a computer system into problem analysis phase and solution synthesis phase
- Describe lexical, syntax, and semantic properties of a programming language using formal grammar
- Select optimal formal grammar for formal description of a programming language
- Select optimal parsing technique for programming language translation
- Design and implement a compiler from formal specification of a programming language
- Design an efficient language translation process with respect to processor resources and memory hierarchy