University of Minnesota
Software Engineering Center

You are here

Minnesota Extensible Language Tools

Software development is a time-consuming and error-prone process that often results in unreliable and insecure software. At least part of the reason for these undesirable results is that large semantic gap between the programmer's high-level understanding of the problem and the relatively low-level programming language in which the problem solutions are encoded. Thus, programmers cannot "say what they mean" but must encode their ideas as programming idioms at a lower level of abstraction. This wastes time and is the source of many errors. A long range goal is to improve the software development process and the quality of the resulting software artifacts by reducing the semantic gap. Extensible languages provide a promising way to achieve this goal. An extensible language can easily be extended with the unique combination of domain-specific language features that raises the level of abstraction to that of the task at hand. The extended language provides the programmer with language constructs, optimizations, and static program analyses to significantly simplify the software development process.

Recent Publications

Intentional programming: a host of language features

Programming languages and programming tasks are rarely a perfect fit: often a program could be much clarified by using a number of tailored language features, but the cost of introducing those features in the language is perceived as too high. If a programming language could be implemented in a highly modular fashion, that cost might be lower. To achieve such modularisation is the goal of Intentional Programming; language features are called intentions to emphasise the fact that language features can be tailored to the programmer's wishes.

Meta Languages in Algebraic Compilers

Algebraic compilers provide a powerful and convenient mechanism for specifying language translators. With each source language operation one associates a computation for constructing its target language image; these associated computations, called derived operations,

Domain Specific Meta Languages

There are several different problem domains in the implementation of language processing tools. The manipulation of textual data when generating code, creation and inspection of environments during type checking, and analysis of dependency graphs during program optimization and parallelization are but a few. The use of domain specific languages to solve these sub problems can reduce the complexity of a tools specification. We argue this point in the realm of attribute grammars and use domain specific meta languages to write attribute definitions.