# $Id: /mirror/trunk/languages/eclectus/docs/eclectus.pod 27272 2008-05-01T10:08:32.250658Z bernhard  $

=head1 Eclectus

Eclectus aims to be a Scheme to PIR compiler implemented in Scheme.
It is based on Abdulaziz Ghuloums compiler tutorial.

=head1 Design

Scheme code is compiled into a cons representing a Parrot Abstract Syntax Tree.
This compilation is done with the help of riaxpander.
This cons PAST is in the form of a S-XML data structure.
The cons PAST is being emitted as NQP code.
The emitted code is compiled to PIR and is being run with a PIR wrapper.
Library functions are implemented in PIR.

There is a lot of room for improvements.

=head1 Status

Going through the tutorial.

=head1 Testing

Tests are written in Scheme. The test-driver is derived from the tutorial, 
tweaked to emit TAP.
There are Perl 5 wrappers for the scheme test scripts, in order to allow
unified languages testing.

The F<t/*.pl> scripts are used in unified languages testing. They
are executing the respective F<t/*.t> Scheme scripts. In
unified languages testing the Eclectus tests are skipped, when
the is no 'gauche 0.8' around.

Run individual test scripts with e.g.:

   gosh -fcase-fold -I .  -I riaxpander -l gauche/prelude.scm t/unary_primitives.t

=head1 TODO

- Bring Eclectus back to unified languages testing
- support for strings
- support for pairs
- support for 'letrec
- allow test-description per test case
- In the longterm, Eclectus should become self-hosting

=head1 AUTHOR

Bernhard Schmalhofer, Andreas Rottmann

=head1 SEE ALSO

L<http://en.wikipedia.org/wiki/Eclectus>

L<http://www.perlfoundation.org/parrot/index.cgi?eclectus>

L<http://www.cs.indiana.edu/%7Eaghuloum/compilers-tutorial-2006-09-16.pdf>

L<http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf>

L<http://www.cs.indiana.edu/%7Eaghuloum/ikarus/index.html>

L<http://www-pu.informatik.uni-tuebingen.de/users/sperber/info-i-9900/material/konstruktion/konstruktion-10.ps>

L<http://okmij.org/ftp/Scheme/SXML.html>

L<http://www.canonical.org/~kragen/sw/urscheme/>

=cut
