The Absynt Project: Semantics Directed Language Implementation

(Dirk Craeynest, Karel De Vlaminck)

The aim of the Absynt project is to develop a design methodology and a supporting environment for the implementation of programming languages.

The Absynt project is a logical successor of the LILA project. The support offered by LILA or Mira concerning semantics, consists of the use of semantic actions and the management of attributes associated with the syntactical structure of the program to be compiled.

This project concentrates on the semantics. The starting point in developing a system that supports, syntactically as well as semantically, the construction of compilers, interpreters, etc., is the observation that these tools can be described in a number of passes. Each pass transforms an internal abstract representation of the program.

To describe the structure of a language and to manipulate programs and program fragments in that language as basic data objects, the Absynt metaprogramming language has been designed. The most important characteristics are:

Currently, better support for describing the transformation of abstract representations of programs is being added to the metalanguage.

An implementation of the Absynt environment is used in a growing number of applications, such as a compiler for ISO Pascal, a Silage compiler for digital signal processors, an SDL to Ada translator, an interactive simulator for a VDM-like specification language and a translator for the hardware description language RT-Logmos-2 into the IEEE-standard VHDL.

The main elements of that implementation are an Absynt to Ada translator with separate compilation and full inter-module type checking, an Absynt interpreter and source level debugger, and an Absynt interface to existing syntax-oriented parser generators such as Mira and Ayacc. Several other tools are planned. An editor for Absynt objects will allow interactive creation, inspection and modification of objects representing program fragments. This tool will be integrated in the source level debugger. Also, a structured editor and module library management tools, including automatic (re-)compilation of out-of-date modules, are planned.


Dirk Craeynest