Research overview

Applications and demonstration

Research Areas:

Automation Systems: Languages and Automation

Configuration Management

Feedback and Quality-of-Service

Natural Language Technologies

Object-Oriented Compiler Technology

Requirements Engineering

Research Methodology

Software Architectures

Software Quality Management

System and Software Architectures in Robotics

Verification and Validation

Education:

Undergraduate Education Development

Master Thesis Projects

Industry Courses

Postgraduate Courses

logo

Object-Oriented Compiler Technology

Compiler techniques form the basis for implementation of programming languages, but also for design and implementation of translators between data representations (CAD data, configuration parameters, etc.). Also for development of software functions enforcing proper use of APIs/systems/libraries (checking that programming conventions are followed), descriptions of rules in terms of a (small dedicated) language is very useful since major parts of the actual software can then be automatically generated. Support for the development/definition of such so called domain-specific languages is then another important issue. These LUCAS efforts put an emphasis on object-oriented domain-specific languages and generation of compilers and other related tools.

The techniques and tools used and developed within LUCAS are based on so called Reference Attributed Grammars (RAGs), which is an object-oriented extension to attribute grammars that is easy to work with and allows natural descriptions of many different problems, including name and type analysis for object-oriented languages. Based on this technology we have developed a complete front end for Java, and are experimenting with different backends, including a Java to C compiler for real-time systems. Other example applications include other languages (e.g., the ABB robot programming language RAPID), and other analyses and computations (e.g., WCET analysis, visualization generation, design pattern checking, and static analysis).
Our current research on RAGs is directed towards:

• Circular RAGs (CRAGs) where circular attribute dependencies are allowed, and attributes on cycles are evaluated iteratively (to their fixed points). This is useful, e.g., in grammar flow analysis, live analysis, etc.

• Rewritable RAGs (ReRAGs) which support conditional rewriting of the abstract syntax tree. This allows different computations during compilation to be carried out on structures more suitable than the initial parse tree. This technique is heavily used both in the Java front end and for generating code.

• Practical tools. We build tools for RAGs and apply them for real problems. Issues of interest to us are support for reusable specifications (we apply aspect-oriented techniques) and support for combining declarative formalisms (like RAGs) with imperative code (like ordinary Java code). Our current system JastAdd II is used in our undergraduate course on compiler construction as well as in our research projects.

• Applications. We build various compiler applications using RAGs. Current examples include the Java compiler and a compiler for the ABB robot language RAPID.

People
Dr. Torbjörn Ekman, Dr. Görel Hedin, Lic. Eng. Anders Ive, Lic. Eng. Eva Magnusson, Dr. Anders Nilsson

Contact: Dr. Görel Hedin

Funded projects 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 Funder
JastAdd                     LTH
Dynamic distributed software supporting flexible systems     x x x           VINNOVA
FLEXCON       x x x x       SSF

Demos and applications
JastAdd II: An aspect-oriented compiler tool based on Reference Attributed Grammars

Postgraduate or industry courses
Software Engineering for Technical Managers at SEMC (2002)

Related undergraduate courses
Compiler Construction

Publications

2004

2003

2000

© Center for Applied Software Research 2001-2007. Jonas.Wisbrant@cs.lth.se

Last update: Wednesday, 04-Apr-2007 11:45:43 CEST