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!