F29LP Language Processors

Prof Radu MardareDr Kathrin Stark

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.