On day 4 of Pugs, it turns out Perl6 really requires a monadic parser combinator that can lex and parse in a single pass, and able to switch parts of the grammar at middle of a lexeme stream. Fortunately, Parsec is exactly such a monster, so I'll probably stick with it. :-)
In other news, I'm finishing up user-defined Sub/Block expressions right now, so hopefully Pugs will reach turing completeness tonight.
Update: Turns out I got sidetracked into implementing the primitive operators -- currently covering 90% from the operator table. That means we can parse and evaluate most of simple expressions in perl6 now. Yay!