Return to: U of M Home

Gold University of Minnesota M. Skip
    to main cozntent.University of Minnesota. Home page.
 

  Minnesota Extensible Language Tools

What's inside.

MELT Home

People

Publications

Software
- Silver
- ableJ - Java 1.4

Test Demos

Melt public wiki
   

Department of Computer Science and Engineering

University of Minnesota Software Engineering Center

Institute of Technology

University of Minnesota

 

Research:

Our main research interests lie in the area of the declarative specification of programming languages semantics and transformations for optimization. We are specifically interested in techniques that lead to a high degree of modularity in the composition of language specifications. This is so that specifications for language features can be easily combined to create specifications for new languages. We are thus interested in tools that automatically compose and implement such specifications to create pre-processors, compilers and optimizers for the newly specified languages.

Motivation:

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.

Tools and Applications:

In these efforts we have developed tools for specifying the semantics and optimizing transformations of extensible languages and used them to develop a number of extensible language specifications.

Tools:

  • Silver is an attribute grammar specification language (and its supporting tools) that allow for the highly-modular specification of languages. Silver has higher-order,reference, and production-valued attributes. It also supports forwarding (see the paper "Forwarding in Attribute Grammars for Modular Language Design") and collections. These features, especially forwarding, provide a high-level declarative means for modularly specifying languages and language extensions.

    More information about Silver, including papers, a Silver compiler, and Silver documentation, can be found here.

  • Parsing and Scanning tools: One of the challenges in modularly specifying languages arises in the specification of concrete syntax and we are exploring different means for doing so in Silver.

    • Scanning: In cases where different extensions want to associate the same lexeme with different tokens or specify different precedence and associativity rules for binary operators we cannot rely on tradition tools such as Lex. We are developing a scanning technique that uses the context of the parser to disambiguates different terminals that match the same lexeme and to treat binary operators different in different embedded languages. These are useful in language extensions such as regular expressions which have operators "*" and "+" as in imperative host languages but may want to associate different terminal names and different precedence and associativities with these operators.
    • Parsing: Traditional tools such as Yacc that rely on the construction of LR parsing tables are often quite brittle in that it is easy to introduce new concrete syntax rules (grammar productions) that cause conflicts in the generated parser tables. This brittleness is significantly mitigated by the context aware scanning described above.

Applications: We have used Silver and the associated tools described above to implement a number of extensible languages.

  • ableJ We are currently completing an extensible specification of Java 1.4 in Silver. More information can be found here.

  • Silver As mentioned above, Silver itself is implemented in Silver.

  • Lustre We are also investigating the specification of synchronous languages such as Lustre, Esterell, RMSL-e in Silver. A prototype implementation of a Lustre-like language has been developed.

Acknowledgements:

We are very grateful to the National Science Foundation, the McKnight Foundation, the University of Minnesota, and IBM for funding different aspects of our research.
 
The University of Minnesota is an equal opportunity educator and employer.