1) ABOUT
========

This is the Python package 'antlr3', which is required to use parsers created
by the ANTLR3 tool. See <http://www.antlr.org/> for more information about
ANTLR3.


2) STATUS
=========

The Python target for ANTLR3 is still in beta. Documentation is lacking, some
bits of the code is not yet done, some functionality has not been tested yet.
Also the API might change a bit - it currently mimics the Java implementation,
but it may be made a bit more pythonic here and there.

WARNING: Currently the runtime library for V3.1 is not compatible with
recognizers generated by ANTLR V3.0.x. If you are an application developer,
then the suggested way to solve this is to package the correct runtime with
your application. Installing the runtime in the global site-packages directory
may not be a good idea.
It is still undetermined, if a future release of the V3.1 runtime will be
compatible with V3.0.x recognizers or if future runtimes V3.2+ will be
compatible with V3.1 recognizers.
Sorry for the inconvenience.


3) DOWNLOAD
===========

This runtime is part of the ANTLR distribution. The latest version can be found
at <http://www.antlr.org/download.html>.

If you are interested in the latest, most bleeding edge version, have a look at
the perforce depot at <http://fisheye2.cenqua.com/browse/antlr>. There are
tarballs ready to download, so you don't have to install the perforce client.


4) INSTALLATION
===============

Just like any other Python package:
$ python setup.py install

See <http://docs.python.org/inst/> for more information.


5) DOCUMENTATION
================

Documentation (as far as it exists) can be found in the wiki
<http://www.antlr.org/wiki/display/ANTLR3/Antlr3PythonTarget>


6) REPORTING BUGS
=================

Please send bug reports to the ANTLR mailing list 
<http://www.antlr.org:8080/mailman/listinfo/antlr-interest> or
<pink@odahoda.de>.

Existing bugs may appear someday in the bugtracker:
<http://www.antlr.org:8888/browse/ANTLR>


7) HACKING
==========

Only the runtime package can be found here. There are also some StringTemplate
files in 'src/org/antlr/codegen/templates/Python/' and some Java code in
'src/org/antlr/codegen/PythonTarget.java' (of the main ANTLR3 source
distribution).

If there are no directories 'tests' and 'unittests' in 'runtime/Python', you
should fetch the latest ANTLR3 version from the perforce depot. See section
DOWNLOAD.
You'll need java and ant in order to compile and use the tool.
Be sure to properly setup your CLASSPATH.
(FIXME: is there some generic information, how to build it yourself? I should
point to it to avoid duplication.)

You can then use the commands
$ python setup.py unittest
$ python setup.py functest
to ensure that changes do not break existing behaviour.

Please send patches to <pink@odahoda.de>. For larger code contributions you'll
have to sign the "Developer's Certificate of Origin", which can be found on
<http://www.antlr.org/license.html> or use the feedback form at
<http://www.antlr.org/misc/feedback>.
