Course co-ordinator(s): Prof Radu Mardare (Edinburgh), Dr Kathrin Stark (Edinburgh), Mahmoud Mousa (Dubai), Joolekha Bibi Joolee (Dubai).
Aims:
- To develop skills in programming language definition
- To develop skills in programming language implementation
Detailed Information
Course Description: Link to Official Course Descriptor.
Pre-requisite course(s): F28PL Programming Languages .
Location: ALP, Dubai, Edinburgh.
Semester: 2.
Syllabus:
Language definition:
- lexicon: non-terminal & terminal symbols, type 3 grammars, regular expressions, finite state automata, Moore & Mealey machines, left & right recursion
- concrete syntax: type 2 grammars & BNF, factoring grammars, converting left to right recursion, LL(K) & LR(K) grammars, push down automata, parsing
- abstract syntax: abstract syntax from concrete syntax
- static semantics: types
- dynamic semantics: overviews of axiomatic, denotational & operational semantics; introduction to structural operational semantics (SOS) for declarations, expressions, statements
Language implementation:
- lexical analysis
- syntax analysis: recursive descent for LL(1)
- abstract syntax tree (AST) construction
- AST pretty printing
- overview of interpreter/abstract machine
- AST interpretation
- static analysis of AST: e.g. type checking, identifier resolution
code generation e.g.: register/memory allocation, structured constructs as test/jump, structured data as structured memory sequences, stack discipline for
- blocks/subroutines, parameter passing
- run time environment: e.g. heap allocation, garbage collection, debugging support
- compiler construction tools e.g. Lex, Yacc, JavaCC based on simple imperative language
SCQF Level: 9.
Credits: 15.