Acme-OneHundredNotOut

 view release on metacpan or  search on metacpan

OneHundredNotOut.pm  view on Meta::CPAN

fine now, at least.

I was still interested in how they're going to make the Perl 6 parser
work, (I still am, but don't have enough time to throw at the problem)
and with my linguistic background I've always been interested in writing
parsers in general. So early on I started trying to write a
L<Perl6::Tokener>, which is now unfortunately quite obsolete, with the
intention of writing a parser later on. For most of 2002, my whiteboard
at home was covered with sketches of the Perl 6 grammar. 

Then I found out that the parser is actually going to be dynamic - you
can reconfigure the grammar at runtime. Hey, I thought, that's going to
be fun. At this point, you can't use an ordinary state-table parser like
C<yacc>, as Perl has done so far, because that pre-computes the
transitions up front. Instead, you have to use a proper state machine
without pre-computed tables. But I couldn't find any parsers which
worked on that basis, so I wrote one, L<shishi>, prototyping it in Perl
with L<Shishi::Prototype> first. 

This work has been largely ignored, unfortunately, but that's because
mainly I haven't had the time to do interesting user-facing stuff on top
of it so that it can be shown off. I tried porting C<Parse::RecDescent>
to it (using L<Parse::RecDescent::Deparse> to figure out what C<P::RD>
was doing) to produce a much faster recursive descent parser, but when I
heard that Damian Conway was funded to work on C<Parse::FastDescent> and
C<Parse::Perl>, (yes, I have a prototype of that too) I decided to leave
him to it. After all, why should I do the work and have other people get
paid for it? These modules did not materialise, but then, a failure on
his part does not constitute necessity on mine.

While I was messing with Parrot, I wanted to get other languages running
on the VM too, including Python, so I wrote L<Python::Bytecode> to take
apart the Python bytecode format so that it can be reassembled as Parrot
IMCC. Thankfully, Dan's taken this over, updated it for the latest
version of Python, and seems to be making good use of it converting
Python libraries to Parrot.

=head2 And the final joke...

I'm fond of a good joke, the Parrot April Fool's Joke being my pinnacle,
but I have mixed feelings about the C<Acme::> namespace on CPAN. I don't
know why. The thing is that I'd prefer modules which are funny because
they're clever, rather than modules which claim to be funny because
they're copies of other modules that claim to be funny. So my
contributions to C<Acme::*> have been deadly serious.

L<Acme::Dot>, for instance, is another example of how much you can warp
Perl's syntax without resorting to source filters. You can call methods
Ruby-style with the dot operator. But it's still the dot operator. You
work that one out. 

And my other contribution to C<Acme::*> - and my hundredth module? Well,
you've just finished reading it.

=head1 AUTHOR

Simon Cozens, C<simon@cpan.org>.

=cut

"Thanks and blessings to you all. 
Goodbye, baby, and amen.";



( run in 1.587 second using v1.01-cache-2.11-cpan-39bf76dae61 )