Roadmap
=======

prd-perl6.pl		old interactive and batch interface
perl6			new compiler interface
P6C/Addcontext.pm	Context propagation.
P6C/Builtins.pm		"built-in" function code and prototypes
P6C/Context.pm		evaluation context structure
P6C/IMCC.pm		code generation utilities; generation for
			common types
P6C/IMCC/*.pm		code generation for less common types
P6C/Nodes.pm		parse tree node types
P6C/Parser.pm		the grammar
P6C/Tree.pm		functions translating parser output to tree
P6C/Util.pm		miscellaneous utility functions
t/compiler		compiler tests
t/parser		parser tests (unmaintained)
t/rx			regex tests

Notes
=====

Before you begin, make sure that imcc (../imcc) is compiled.  Typing
"make" should do this.  Also, if you have updated from CVS (rather
than doing a fresh checkout), you should remove Perl6grammar.pm to
force the compiler to re-compile the grammar file.

All the compiler test cases pass on my machine (except where noted in
ChangeLog), and compile in less than five seconds each.

Take a look at t/*/*.t for an idea of the kinds of operations
currently supported.  For more internal details, see the POD
documentation in P6C/*.pm, especially P6C/Nodes.pm.

Overview
========

The compiler currently operates in four passes.  The first (Parser.pm)
takes the source and produces a very raw parse tree.  The second
(Tree.pm) turns this data structure into a more manageable parse tree.
The third pass (Addcontext.pm) figures out context information,
storing it in the parse tree nodes.  The final pass (IMCC.pm) uses
this context to emit IMCC code (higher-level than assembler).

The resulting code is then run through imcc (parrot/languages/imcc), which
handles register allocation and spilling, and then finally assembled
by the parrot assembler (parrot/assembler.pl).

If you want to get started in parser development, you should probably
start by reading overview.pod.  If you're not sure where to go from
there, you can look for "XXX:" in the code, which I use to mark things
that need fixing.  If you're interested in getting involved, drop me
an email.

Sean O'Rourke
seano@cpan.org

Contributors
============

John Kingsley		Numerous bug fixes to the parser, parser
			tests, parse error messages.

Leopold Toetsch		5.005_03 compatibility fixes, test driver
			cleanup, new driver program, many bug fixes

Joseph Ryan		Compiler overview doc
