Program transformation systems for Java programs (that is, Java is the object language) usually operate on an abstract syntax representation of the Java source code. Java has no standardized or de facto standard for its abstract syntax. ---++ Eclipse JDT Core 3.x The [[http://www.eclipse.org/jdt/index.html][JDT Core]] component of Eclipse provides a 'Java Document Model' in the package =org.eclipse.jdt.core.dom=. This API can be used for manipulating a structured Java source document. ---++ Eclipse JDT Core before 3.0 Milestone 8 The [[http://www.eclipse.org/jdt/index.html][JDT Core]] component of Eclipse provides a 'Java Document Model' in the package =org.eclipse.jdt.core.dom=. This API can be used for manipulating a structured Java source document. ---++ OpenJava More on this soon ... ---++ JavaCC/JRefactory The [[http://jrefactory.sourceforge.net/][JRefactory]] refactoring tool for Java uses an abstract syntax tree generated by JavaCC/JJTree. JRefactory contains a configurable pretty printer for this abstract syntax tree. Mike Atkinson has taken over the development from Chris Seguin and is working on the extensions of the j2sdk 1.5. ---++ SableCC SableCC is a compiler compiler producing Java. It generates strictly typed abstract syntax tree classes for the object language. There is a Java 1.4 grammar for SableCC, which therefore defines an abstract syntax for Java. As far as I know that is no pretty printer for this AST. ---++ Stratego/XT and java-front Stratego/XT's [[Stratego.JavaFront][java-front]] defines the concrete syntax for Java in [[Sdf.WebHome][SDF]] and generates abstract syntax tree definitions from this concrete syntax definition. [[Stratego.JavaFront][java-front]] contains a pretty-printer implemented in Stratego for this Java abstract syntax. ---++ Java Compiler API A future goal of [[http://www.jcp.org/en/jsr/detail?id=199][JSR 199: Java Compiler API]] is to standardize the structured representation of Java source code in an abstract syntax tree. ---+++ Maintainer This page is maintained by [[Main.MartinBravenboer][Martin Bravenboer]]. This is Wiki, so you can contribute if you want to provide additional information. Of course you can also just send me your comments by e-mail.