Generative Programming and Component Engineering

Building Composable, Domain-specific and General Purpose Extensions to Java

Note: Despite low registration in all tutorials, this tutorial will be held. But it is running informally, without any charges to the participants. The tutorial will take place Sunday 9:00-12:30 in NH Hotel Salzburg in the "Club" meeting room. To attend the tutorial, please send an email to Ulrik Schultz.

Eric Van Wyk, University of Minnesota

This tutorial provides an introduction to building domain-specific and general purpose language extensions to Java. This is illustrated using ableJ, an attribute grammar-based extensible language framework for Java. Language extensions may define the syntax, semantic analysis, and optimizations of new language features. We describe several language extensions and their implementation in the framework. For example, one embeds the SQL database query language into Java and statically checks for syntax and type errors in SQL queries. AbleJ supports the modular specification of composable language extensions so that programmers can import into Java the unique set of extensions that they desire.

The tutorial introduces Silver, a feature-rich attribute grammar specification language that also supports local and composable global transformations. It also covers the ableJ framework; a specification of Java written in Silver. We cover various aspects of this specification to show how one can build new language extensions to Java.

Duration: Half-day

Level: Introductory

Required Knowledge: Although a basic understanding of compilers, context free grammars and abstract syntax trees is helpful it is not required. These basic concepts will be discussed in the context of Silver. Basic understanding of Java is assumed.

Speaker Profile

Dr. Eric Van Wyk is an assistant professor at the University of Minnesota and is a McKnight Land-Grant professor. His research interests include techniques for the declarative specification and implementation of languages and language extensions.