[ Japanese ]

The extensible Java pre-processor EPP

National Institute of Advanced Industrial Science and Technology(AIST)

Sorry, I have stopped development of EPP.

EPP is a powerful framework which supports implementation of the following tools: EPP has extensible parser and type-checker. Its architecture is powerful but simple and easy to understand, especially, if you have basic knowledge of lisp and compilers.


English documents(preliminary version)

README of EPP 1.1.2

Explanation of EPP 1.0 plug-ins

Presentation slide

Download the newest version of EPP


What's new ?

2002-12-11 (EPP 1.1.5)
Shell scripts were slightly modified.
Type-checking of expressions like T.this, T.super.f, T.super.m(), exp.super() are now supported.

2002-04-23 (EPP 1.1.4)
Supports new classfile version of J2SE 1.4 . (patch for JavaClass3.3.2 )

2001-12-20 (EPP 1.1.3)
Now, " byte b = 'c'; " passes the EPP type-checking pass.

2001-12-19 (EPP 1.1.2)
Built-in type NullOr<T> and ifNull statement was added to Collection plug-in.

2001-07-31 (EPP 1.1.1)
JDK14assert plug-in was added. Using this plug-in, EPP accepts JDK 1.4 assert statements.
Shell scripts now support cygwin1.3.2 . The older versions of cygwin are no longer supported.
Output encoding bug was fixed.

2001-05-14 (EPP 1.1.0)
EPP 1.1.0 became non-beta version.
Shell scripts were slightly modified.

2001-04-11 (EPP 1.1.0 beta 15)
Collection plug-in was added.

2000-09-03 (EPP 1.1.0 beta 14)
JavaClass included in epp.jar is updated to version 3.3.2 .

2000-06-09 (EPP 1.1.0 beta 13)
Small bugs were fixed.

2000-02-29 (EPP 1.1.0 beta 12)
Small bugs were fixed.

1999-11-20 (EPP 1.1.0 beta 11)
-encoding and -target-classpath options were added.
From this version, you do not have to add rt.jar to your CLASSPATH explicitly if you are using JDK1.2 .

1999-11-05 (EPP 1.1.0 beta 10)
Error recovery in type-checking pass was implemented.
MultipleInheritance plug-in and AssociationArray plug-in bugs were fixed. Generic plug-in is not fixed yet.
Shell scripts such as tryplugin support Windows Cygwin b20.1 .

1999-08-01 (EPP 1.1.0 beta 9)
Small bugs were fixed.

1999-07-04 (EPP 1.1.0 beta 8)
This version works on Linux JDK1.2 pre-release-v2.

1999-07-01 (EPP 1.1.0 beta 7)

1999-06-01 (EPP 1.1.0 beta 6)
Bug fixed version of beta 5.

1999-04-03 (EPP 1.1.0 beta 5)
ParseParen, ParseComment plug-in are added. -tree-with-string, -tree-with-property options are added. beginningPoint, endPoint methods of Tree are implemented.

English documents(preliminary version) is provided.

1999-01-20 (EPP 1.1.0 beta 4)
Generic plug-in (small subset of GJ) and TransStringEqual plug-in (an example of global source code translation) are added.

1998-11-04 (EPP 1.1.0 beta 3)
Plug-ins using type checking feature is added, such as MultipleInheritance, OperatorOverloading, typedef, AssociationArray.

1998-10-01 (EPP 1.1.0 beta 2)
-global option is added.

1998-08-01 (EPP 1.1.0 beta 1)
EPP and all plug-in's package name is changed.
How to install is changed.
RenamePackage, SharpPlus plug-in is added.
Type checking feature is partly implemented.

1998-06-01 (EPP 1.0.1)
Error recovery is implemented.
-v, -comment-colon, -D options are added.
This is a test program of -comment-colon option.
"ifdef" plug-in is updated .
epp/plugins/src/test/Testifdef.txt is a test program.

1998-05-02 (EPP 1.0.0)
EPP became non-beta version.
All JDK1.1 syntax are supported.

"ifdef" plug-in was added to epplib.jar .

Distribution of EPP (Java version) was started.


EPP internally uses the package "JavaClass" . JavaClass is a LGPL class library for byte-code engineering, developed by Markus Dahm. To obtain full-set of class files, source files and documents of JavaClass, please visit the following URLs.


Patch for JavaClass3.3.2 which passes J2SE 1.4 classfiles:



Extensible Java systems:

This software is written by Yuuji ICHISUGI as a duty at the AIST (formerly known as Electrotechnical Laboratory, ETL) that is a national research institute in Japan. (The management number of this software is 1998-ETL-E9301-01 .)

This software is provided on an "AS IS" basis, without warranty of any kind.
Commercial license will be available for use in commercial products. Please contact to the author for more details.

To the Home Page of Yuuji Ichisugi.