News
Attend one of the following events to learn more about our language
extensions tools.
Recent Papers
-
Jimin Gao's PhD thesis Building an
Extensible Modeling Language Framework with Enhanced Attribute Grammars
-
Attribute
Grammar-based Language Extensions for Java,
by Eric Van Wyk, Lijesh Krishnan, August Schwerdfeger, Derek Bodin.
In Proc. of European Conference on Object Oriented Programming (ECOOP 2007).
-
Flexible and Extensible Notations for Modeling Languages, by Jimin
Gao, Mats Heimdahl, Eric Van Wyk. In Proc. of Fundamental Approaches
to Software Engineering (FASE 2007).
-
Silver: an Extensible Attribute Grammar System, by Eric Van Wyk, Derek
Bodin, Jimin Gao, Lijesh Krishnan. Workshop on Language Descriptions,
Tools, and Applications (LDTA 2007)
-
A technical report on extending Lustre.
Recent Events:
- "Technology Presentation": Building composable domain-specific
language extensions at
GTTSE
(2nd Summer School on Generative and Transformational Techniques in
Software Engineering) July 2-7, 2007, Braga, Portugal
- Tool Demo: ECOOP
(European Conference on Object Oriented Programming), July 30-August
3, 2007 in Berlin, Germany.
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.
|