# Copyright (C) 2005, The Perl Foundation.
# $Id: README 12958 2006-06-17 10:00:58Z bernhard $

This is an implementation of 'POSIX bc' for Parrot.
'bc' is an arbitrary precision calculator dating back from Unix stone age.
See L<http://en.wikipedia.org/wiki/Bc_%28Unix%29> for details.

Implementation strategy:

Generate PIR that sets up a PAST data structure, that will be transformed to POST
which will be transformed to PIR, which will be  executed by Parrot.
For details set 'languages/punie/punie.pir' and
http://svn.lohutok.net/nam/trunk/parrot/docs/compiler_tools.pod

Requirements:

For maintainance and development ANTLR 2.7.5, and thus Java, is required.
The runtime files for lexer and parsers are in the Parrot repository, thus only
Python is required for running.

Building lexer, parser and treeparser:

'make maintain'

Building:

'make'

Testing:

'make test'. When GNU bc is available, the test suite will be run against GNU bc as well.
For compatability with 'POSIX bc' the flags '--standard' and '--quiet' are used.

Documentation:

Sparse documentation is available in docs/parrot_bc.pod.

Rumblings on ANTLR 3 are in docs/antlr_3.pod.

ANTLR 3 is under development. The easiest backend seems to be Java. So for now there is a 'build_java' and
'test_java' targets. Be sure to set the CLASSPATH as shown in F<docs/antlr_3.pod>.
