Attribute grammar-based language extensions for java

Eric Van Wyk, Lijesh Krishnan, Derek Bodin, August Schwerdfeger

Research output: Chapter in Book/Report/Conference proceedingConference contribution

71 Scopus citations


This paper describes the ableJ extensible language framework, a tool that allows one to create new domain-adapted languages by importing domain-specific language extensions into an extensible implementation of Java 1.4. Language extensions may define the syntax, semantic analysis, and optimizations of new language constructs. Java and the language extensions are specified as higher-order attribute grammars. We describe several language extensions and their implementation in the framework. For example, one extension embeds the SQL database query language into Java and statically checks for syntax and type errors in SQL queries. The tool supports the modular specification of composable language extensions so that programmers can import into Java the unique set of extensions that they desire. When extensions follow certain restrictions, they can be composed without requiring any implementation-level knowledge of the language extensions. The tools automatically compose the selected extensions and the Java host language specification.

Original languageEnglish (US)
Title of host publicationECOOP 2007 - Object-Oriented Programming - 21st European Conference, Proceedings
PublisherSpringer Verlag
Number of pages25
ISBN (Print)9783540735885
StatePublished - 2007
Event21st European Conference on Object-Oriented Programming, ECOOP 2007 - Berlin, Germany
Duration: Jul 30 2007Aug 3 2007

Publication series

NameLecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
Volume4609 LNCS
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349


Other21st European Conference on Object-Oriented Programming, ECOOP 2007


Dive into the research topics of 'Attribute grammar-based language extensions for java'. Together they form a unique fingerprint.

Cite this