Java-front 0.7

Stratego -- Strategies for Program Transformation
Released May 24, 2005


Java-front 0.7 requires Stratego/XT 0.14.

Source tar.gz

Source RPM

Redhat Linux RPM

SuSE Linux RPM

Fedora Core RPM

Nix Package

  • java-front 0.7 (one-click installation for i686-linux, open with nix-install-package)


Java-front is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.


This is a major update of Java-front, a package that provides the syntax-related support for implementing Java transformation systems.

Syntax Definition

Types that refer to member types of a parameterized class (e.g. the type M<O>.N) are now supported. The change does not affect the AST of members of unparameterized classes. The issue was reported by Valentin David. Thanks!

This release adds support for hexadecimal floating-point literals, which is a feature that was added to JLS3 without much fanfare. Hexadecimal floating-point literals have been added to Java to allow "precise and predictable specification of particular floating-point values".

The parse table Java-15.tbl now contains only a single start symbol: CompilationUnit. This results in better error reporting, for obscure reasons. The tool parse-java uses a different parse table with more start-symbols if a different (i.e. not CompilationUnit) start symbol is specified, otherwise Java-15.tbl is used.

The constructor of the assert statement is now AssertStm (was Assert). This was requested by Valentin David to avoid name clashes.

Java-front 0.7 does no longer contain the obsolete 'basic' and 'generic' variants of the Java syntax definition. These variants have been deprecated for quite some time and do not seem to be in use anymore.

Pretty Printer

The Java-front syntax and pretty-printer is now tested with the most recent version of GNU Classpath: 0.15. This release contains much more Java code, which makes the testing even more thorough.

A minor bug in the pretty-printing of qualified types has been fixed. This issue only showed up when pretty-printing an AST after a transformation that produces empty type qualifiers. This is pattern that will never be produced by the parser. The pretty-printer now supports these empty qualifiers.

Internally, the pretty-printer has been restructured to be more modular. The module structure is similar to the syntax definition of Java. The pretty-printer is now available as a Stratego library as well (java/pp/- in the share directory).

Stratego Library

This release of Java-front generates a module of typematching strategies (e.g is-Expr) and installs it for use in your Stratego programs: java/typematch/common (contributed by Rob Vermaas).

Embedding of Java in Stratego

A bug in the meta variable for lists of formal parameters has been fixed (reported by Pankaj Risbood, fixed by Rob Vermaas). Also, several ambiguity problems have been fixed, some related to undesired splitting of identifiers (fixed by Rene de Groot).

The embedding now supports more verbose meta variables, which include a custom name, instead of just allowing a number. Example: bstm_foo (contributed by Rene de Groot).


Java-front now uses (and requires) pkg-config. This means that explicit configuration with the location of aterm, sdf, and strategoxt is no longer required. A plain ./configure should do the job. However, you might need to set your PKG_CONFIG_PATH if you did not install the dependencies in a standard location. Configure will tell you to do this if it cannot find aterm, sdf or strategoxt.

pkg-config can also be used to compile your Stratego program in a more convenient way from the command-line. Java-front declares a pkg-config variable strcflags, which contains the required include flags. For an example on how to use this strcflags variable, see:


A code browser for the syntax definition of Java is now available from the Java-front website. This feature has been contributed by Rob Vermaas, the author of xdoc, wich is used to generate the code browser.


  • Martin Bravenboer
  • Rene de Groot
  • Rob Vermaas
  • Valentin David
  • Pankaj Risbood


More Information

See the website of the Java-front for a general introduction to Java-front and its development.