For those who have not been following along closely in the Parrot repository, the languages/perl6/ directory contains the fledgling beginnings of an entirely Parrot-based compiler for Perl 6. It's able to parse and execute most expressions and some simple statements, and will likely expand rapidly in the coming days and weeks. The previous version was able to do simple lexicals, but I'm in the process of re-working that logic at the moment.
For those who have been following along, I've just checked in some changes (r12488) that cause the compilation sequence to more closely follow the expected plan -- i.e.: source -> parse tree -> PAST -> POST -> PIR -> bytecode -> execution The PAST and POST representations are currently held in lib/PAST.pir and lib/POST.pir . Unfortunately, these aren't exactly the same as what punie/pheme have been using for their PAST and POST representations (currently in compilers/past/ and compilers/post), but they're very close, and Allison, chromatic, and I are working to come to a common framework fairly soon. The command for executing the compiler is basically: $ parrot perl6.pbc source.p6 which compiles and executes the statements in the 'source.p6' file. If the source file is omitted, then statements are read from the standard input and executed immediately. There is also a --target option available which can display the results after various phases of compilation: $ parrot perl6.pbc --target=parse # show parse tree $ parrot perl6.pbc --target=PAST # show PAST $ parrot perl6.pbc --target=POST # show POST $ parrot perl6.pbc --target=PIR # show PIR Right now we're in the process of building towards executing as much of the Pugs test suite as we can, which will undoubtedly take a little time. The initial target is to get things "working", and deal with optimization issues a bit later. The key files for parsing Perl 6 are in lib/grammar_rules.pg and lib/grammar_optok.pg. The "grammar_rules" file describes the top-down rules used to parse programs -- generally things that aren't expressions. The "grammar_optok" file defines the tokens for the operator-precedence parser for bottom-up parsing of expressions. Although these two files are using a very Perl 6-like syntax for specifying the rules and operator tokens, it's not intended that these be able to accommodate arbitrary Perl 6, or that the grammar can assume a working Perl 6 implementation beneath it. (In fact, Audrey and others are working on a "minimal Perl" syntax that may be considered available from any regex engine.) The README file in languages/perl6/README has more details of the design, and further details will be posted to perl6-compiler in the days and weeks ahead. The STATUS file tends to identify the areas of focus at any given time. More soon, Pm