Programming Language Translation

Learning Outcomes

  1. breakdown the design of a computer system into problem analysis phase and solution synthesis phase
  2. describe lexical, syntax, and semantic properties of a programming language using formal grammar
  3. select optimal formal grammar for formal description of a programming language
  4. select optimal parsing technique for programming language translation
  5. design and implement a compiler from formal specification of a programming language
  6. design an efficient language translation process with respect to processor resources and memory hierarchy

Forms of Teaching

Lectures

Partial e-learning

Laboratory

Week by Week Schedule

  1. 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
  2. Lexical analysis using regular expressions, Lexical analyser generators
  3. Top-down parsing (S, Q, and LL(k) grammar, recursive descent parsing)
  4. Bottom-up parsing (shift-identify, shift-reduce, LR parsing)
  5. Parser generators
  6. Abstract syntax trees, Attributed syntax trees, High-level program representations such as abstract syntax trees, Scope and binding resolution
  7. Type checking, Attribute and attribute-translation grammars
  8. Midterm exam
  9. 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
  10. 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
  11. 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
  12. 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
  13. Control-flow graphs, Def-use chains, Instruction scheduling, Instruction selection, Register allocation
  14. Implementing loops, recursion, and tail calls, Machine-independent optimization, Machine-dependent optimization, Peephole optimization
  15. Final exam

Study Programmes

University undergraduate
Computing (study)
(5. semester)

Literature

(.), 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,

General

ID 183425
  Winter semester
5 ECTS
L1 English Level
L1 e-Learning
60 Lectures
0 Exercises
0 Laboratory exercises
0 Project laboratory

Grading System

Excellent
Very Good
Good
Acceptable