Released May 24, 2005
----++ Download
[[JavaFront][Java-front]] 0.7 requires [[StrategoRelease014][Stratego/XT 0.14]].
Source tar.gz
* [[%PREFIX%/java-front-0.7.tar.gz][java-front-0.7]]
Source RPM
* [[%PREFIX%/src-rpm/java-front-0.7-1.src.rpm][java-front-0.7]]
Redhat Linux RPM
* [[%PREFIX%/redhat-9/java-front-0.7-1.i386.rpm][java-front-0.7]] (Redhat 9.0)
SuSE Linux RPM
* [[%PREFIX%/suse-9/java-front-0.7-1.i586.rpm][java-front-0.7]] (SuSE 9.0)
Fedora Core RPM
* [[%PREFIX%/fedora-core-2/java-front-0.7-1.i386.rpm][java-front-0.7]] (Fedora Core 2)
* [[%PREFIX%/fedora-core-3/java-front-0.7-1.i386.rpm][java-front-0.7]] (Fedora Core 3)
Nix Package
* [[%DIST%/java-front-0.7/pkgs/java-front-0.7-i686-linux.nixpkg][java-front 0.7]] (one-click installation for i686-linux, open with =nix-install-package=)
----++ License
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.
---++ News
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).
---+++ Deployment
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:
* http://www.stratego-language.org/Stratego/PkgConfig
---+++ Documentation
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.
* http://www.stratego-language.org/Stratego/JavaFront
---+++ Contributors
* Martin Bravenboer
* Rene de Groot
* Rob Vermaas
* Valentin David
* Pankaj Risbood
Thanks!
---++ More Information
See the [[JavaFront][website of the Java-front]] for a general introduction to Java-front and its development.