Released July, 2009
----++ Download
Java Front %VERSION% requires [[StrategoRelease017][Stratego/XT 0.17]].
Source tar.gz
* [[%ATERMPREFIX%/aterm-%ATERMVERSION%.tar.gz][aterm-%ATERMVERSION%]]
* [[%SDFPREFIX%/sdf2-bundle-%SDFVERSION%.tar.gz][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/strategoxt-%STRVERSION%.tar.gz][strategoxt-%STRVERSION%]]
* [[%PREFIX%/java-front-%VERSION%.tar.gz][java-front-%VERSION%]]
SuSE Linux RPM
SuSE 11.0:
* [[%ATERMPREFIX%/opensuse103i386/aterm-%ATERMVERSION%-1.i586.rpm][aterm-%ATERMVERSION%]]
* [[%SDFPREFIX%/opensuse103i386/sdf2-bundle-%SDFVERSION%-1.i586.rpm][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/opensuse103i386/strategoxt-%STRVERSION%-1.i586.rpm][strategoxt-%STRVERSION%]]
* [[%PREFIX%/opensuse103i386/java-front-%VERSION%-1.i586.rpm][java-front-%VERSION%]]
SuSE 10.3:
* [[%ATERMPREFIX%/opensuse110i386/aterm-%ATERMVERSION%-1.i586.rpm][aterm-%ATERMVERSION%]]
* [[%SDFPREFIX%/opensuse110i386/sdf2-bundle-%SDFVERSION%-1.i586.rpm][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/opensuse110i386/strategoxt-%STRVERSION%-1.i586.rpm][strategoxt-%STRVERSION%]]
* [[%PREFIX%/opensuse110i386/java-front-%VERSION%-1.i586.rpm][java-front-%VERSION%]]
Fedora Core RPM
Fedora Core 11:
* [[%PREFIX%/fedora11i386/aterm-%ATERMVERSION%-1.i386.rpm][aterm-%ATERMVERSION%]]
* [[%PREFIX%/fedora11i386/sdf2-bundle-%SDFVERSION%-1.i386.rpm][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/fedora11i386/strategoxt-%STRVERSION%-1.i386.rpm][strategoxt-%STRVERSION%]]
* [[%PREFIX%/fedora11i386/java-front-%VERSION%-1.i386.rpm][java-front-%VERSION%]]
Fedora Core 10:
* [[%PREFIX%/fedora10i386/aterm-%ATERMVERSION%-1.i386.rpm][aterm-%ATERMVERSION%]]
* [[%PREFIX%/fedora10i386/sdf2-bundle-%SDFVERSION%-1.i386.rpm][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/fedora10i386/strategoxt-%STRVERSION%-1.i386.rpm][strategoxt-%STRVERSION%]]
* [[%PREFIX%/fedora10i386/java-front-%VERSION%-1.i386.rpm][java-front-%VERSION%]]
Fedora Core 9:
* [[%PREFIX%/fedora9i386/aterm-%ATERMVERSION%-1.i386.rpm][aterm-%ATERMVERSION%]]
* [[%PREFIX%/fedora9i386/sdf2-bundle-%SDFVERSION%-1.i386.rpm][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/fedora9i386/strategoxt-%STRVERSION%-1.i386.rpm][strategoxt-%STRVERSION%]]
* [[%PREFIX%/fedora9i386/java-front-%VERSION%-1.i386.rpm][java-front-%VERSION%]]
Fedora Core 5:
* [[%PREFIX%/fedora5i386/aterm-%ATERMVERSION%-1.i386.rpm][aterm-%ATERMVERSION%]]
* [[%PREFIX%/fedora5i386/sdf2-bundle-%SDFVERSION%-1.i386.rpm][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/fedora5i386/strategoxt-%STRVERSION%-1.i386.rpm][strategoxt-%STRVERSION%]]
* [[%PREFIX%/fedora5i386/java-front-%VERSION%-1.i386.rpm][java-front-%VERSION%]]
Debian DEB
Debian 5.0:
* [[%PREFIX%/debian50i386/aterm_%ATERMVERSION%-1_i386.deb][aterm-%ATERMVERSION%]]
* [[%PREFIX%/debian50i386/sdf2-bundle_%SDFVERSION%-1_i386.deb][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/debian50i386/strategoxt_%STRVERSION%-1_i386.deb][strategoxt-%STRVERSION%]]
* [[%PREFIX%/debian50i386/java-front_%VERSION%-1_i386.deb][java-front-%VERSION%]]
Debian 4.0:
* [[%PREFIX%/debian40i386/aterm_%ATERMVERSION%-1_i386.deb][aterm-%ATERMVERSION%]]
* [[%PREFIX%/debian40i386/sdf2-bundle_%SDFVERSION%-1_i386.deb][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/debian40i386/strategoxt_%STRVERSION%-1_i386.deb][strategoxt-%STRVERSION%]]
* [[%PREFIX%/debian40i386/java-front_%VERSION%-1_i386.deb][java-front-%VERSION%]]
Ubuntu DEB
Ubuntu 9.04:
* [[%PREFIX%/ubuntu904i386/aterm_%ATERMVERSION%-1_i386.deb][aterm-%ATERMVERSION%]]
* [[%PREFIX%/ubuntu904i386/sdf2-bundle_%SDFVERSION%-1_i386.deb][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/ubuntu904i386/strategoxt_%STRVERSION%-1_i386.deb][strategoxt-%STRVERSION%]]
* [[%PREFIX%/ubuntu904i386/java-front_%VERSION%-1_i386.deb][java-front-%VERSION%]]
Ubuntu 8.10:
* [[%PREFIX%/ubuntu810i386/aterm_%ATERMVERSION%-1_i386.deb][aterm-%ATERMVERSION%]]
* [[%PREFIX%/ubuntu810i386/sdf2-bundle_%SDFVERSION%-1_i386.deb][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/ubuntu810i386/strategoxt_%STRVERSION%-1_i386.deb][strategoxt-%STRVERSION%]]
* [[%PREFIX%/ubuntu810i386/java-front_%VERSION%-1_i386.deb][java-front-%VERSION%]]
Ubuntu 8.04:
* [[%PREFIX%/ubuntu804i386/aterm_%ATERMVERSION%-1_i386.deb][aterm-%ATERMVERSION%]]
* [[%PREFIX%/ubuntu804i386/sdf2-bundle_%SDFVERSION%-1_i386.deb][sdf2-bundle-%SDFVERSION%]]
* [[%PREFIX%/ubuntu804i386/strategoxt_%STRVERSION%-1_i386.deb][strategoxt-%STRVERSION%]]
* [[%PREFIX%/ubuntu804i386/java-front_%VERSION%-1_i386.deb][java-front-%VERSION%]]
Nix Package
One-click installation using [[http://nixos.org][Nix]], open with =nix-install-package=
* [[http://hydra.nixos.org/job/nixpkgs/trunk/aterm25][aterm-%ATERMVERSION%]]
* [[http://hydra.nixos.org/job/nixpkgs/trunk/strategoPackages.sdf][sdf2-bundle-%SDFVERSION%]]
* [[http://hydra.nixos.org/job/nixpkgs/trunk/strategoPackages.strategoxt][strategoxt-%STRVERSION%]]
* [[http://hydra.nixos.org/job/nixpkgs/trunk/strategoPackages.javaFront][java-front-%VERSION%]]
----++ License
Stratego/XT Utilities 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 minor update of Java-front, a package that provides
the syntax-related support for implementing Java transformation
systems.
----+++ Wrapper strategies for Java to Java transformation tools
Added the long requested wrapper strategies for creating Java to Java
transformation tools.
io-java2java-wrap(s) =
io-java2java-wrap(extra-opts, s) =
io-java2java-wrap(extra-opts, usage, about, s) =
Creating a source to source tool is now as easy as:
module foo
imports libstratego-lib libjava-front
strategies
main =
io-java2java-wrap(foo)
foo =
// some AST transformation
$ strc -i foo.str $(strcflags stratego-lib java-front)
$ ./foo -i Foo.java -o Bar.java
----+++ Pretty printer available as library
The java-front pretty-printer can now be used as a
separately compiled library.
----+++ Java embedding
Renovation of the Java embedding definitions. The preferred embedding is now
no longer using a prefixed version of Java, but a mix version of Java.
The preferred definition for embedding Java is now
EmbeddedJavaMix.def. This module is parameterized with two symbols:
* The context of Java.
* The expression non-terminal of the host language.
If you use StrategoRenamed, then the import can be something like
this:
languages/java/EmbeddedJavaMix[Java StrategoTerm]
The advantage of having EmbeddedJavaMix is that you can easily embed
multiple languages, even if more than one of these languages involve
Java. Suppose that you have a language Foo that extends Java:
module Foo
imports
languages/java/JavaMix[Foo]
exports
...
and Foo is embedded in Stratego:
module StrategoFoo
imports
languages/stratego/StrategoMix[Stratego]
Foo
exports
...
In this situation the composer of the embeddings can decide if he (she
is unlikely) wants to support the variables and anti-quotations in Foo
quotations and if Foo constructs should be supported in Java
quotations.
If this should be allowed, then EmbeddedJavaMix can be imported with
the parameters [Foo Term[[Stratego]]]. If this should not be allowed,
then a different first parameter can be chosen.
----+++ AST changes
There have been some minor changes is the syntax definition that change
the Java AST to previous versions, and therefore might break existing
code.
* Replaced ClassName with TypeName. This changes the representation of:
* Qualified super field access
* Qualified super method invocation
* Qualified this.
* All these constructs are now qualified by a TypeName instead of a
ClassName.
* Change in modifiers: Anno is no longer a Mod
* GenericStaticMethod has been renamed to GenericMethod and the prefix
of the GenericMethod is now an AmbName, not a TypeName. This
represents the syntactical ambiguity better.
Contributors
* Martin Bravenboer
* Eelco Dolstra
* Eelco Visser
* Lennart Kats
* Danny Groenwegen
* Rob Vermaas
Thanks!