Today I put in the finishing touches to predictive parser, with support for "$x .= foo" and "foo.bar". In both cases, whitespace is now very important:
$x .= foo # $x .= $x.foo
$x .=(foo()) # same thing
$x .=(foo) # same thing
$x.=(foo) # $x.postfix:<=>(foo())
There is no built-in Perl 6 classes with the postfix:<=> method, so the last one is probably an error. Another example:
foo.bar; # foo().bar()
foo.bar(); # same thing
foo .bar; # foo($_.bar())
That is surely the correct behaviour, but my brain (too used to backtracking dwimmy parsing) still need some time to adjust from the change. The test files, too, needs some adjusting: Of the 630 test files, 76 are still failing parsing -- usually, it's a missing whitespace here or there, but there may still be some ambiguities hidden in the corner. Helps welcome to triage those tests! If you'd like to help, look at this smoke test report, grep for " 0.00%" (with the space), run "./pugs -Iblib6/lib t/path/to/test.t", and try to diagnose the error.
In other news, aufrank++ started to re-read S06: Subroutines, in order to start working on a Rules-based parser for the full signature syntax, complete with the not-yet-supported features such as array/hash/structural unpacking. Once that grammar is in place, we can use scw++'s work to use it as part of Pugs's Parsec parser, and also pack it up into a Module::Compile-based bridge to Data::Bind, to provide a modern successor to the highly impressive Perl6::Bindings for Perl 5. Yay!