WG211/M17Oliveira

From WG 2.11
Jump to: navigation, search

Semantic Modularization Techniques in Practice: A TAPL case study by Bruno Oliveira

In this talk I will present a case study on a modular implementation of the Types and Programming Languages (TAPL) interpreters. In our modular implementation, extensions of interpreters can reuse code from existing interpreters without resorting to copy&paste techniques. One interesting aspect in this work is that the modularization techniques are semantic. That is the various language components are directly implemented in a statically typed programming language (such as Java or Scala). Those components can be statically type-checked, separately compiled and later (type-)safely composed with other language components to build complete languages or larger language components. Our approach employs frameworks based on variants of Object Algebras combined with some simple program generation techniques aimed at removing boilerplate code.

Using TAPL as a case study is interesting for several reasons. Firstly TAPL contains several programming language features that are relevant in practice. Secondly TAPL accounts for different aspects of language implementation (dynamic semantics, static semantics and parsing). Finally there are many difficulties in modularizing TAPL interpreters, including the use of a small-step semantics, operations that require non-structural forms of pattern matching, and dependencies between operations.