Perl 6 Grammars – not only for parsing
ttjjss.wordpress.com
ttjjss.wordpress.com
Once upon a time, Perl was the de facto language for web development. Then there was a bit of falling out between the web-centric folks and the server-centric folks; resulting in PHP. Perl, as a language for web-development, never really recovered.
I find it kind of sad that it took over a decade and a half-hearted attempt at rewriting the language before the server-centric folks are even beginning to understand what the web-centric folks were talking about. :-/
(I approve of Python's named captures, though even Perl 5 has had those for almost three years now.)
... over a decade and a half-hearted attempt at rewriting the language...
In truth, the Perl 6 redesign began a few months after Python 3000, in July 2000.
If you want others to see the utility of these Perl 6 features, they're going to need side-by-side syntax-highlighted clear-as-day examples. Otherwise it's just, "must be some weird Perl 6 feature -- the way I'm doing it in blub works fine for me".
Any parsing operation which needs to keep in mind state.
My current language is already fairly useful for "Any parsing operation which needs to keep in mind state" ... if you want users to look at Perl 6, then it's going to take concrete written-out examples. No in-jokes or historical anecdotes; just actually show how Perl 6 does it better. Over and over, until it sinks in.
People who don't already know Perl 6 are not going to just take your word for it. They need to be shown easy-to-follow examples of Perl 6 solving problems that are more difficult to solve in their current language.
I can say about Perl 5 - check out Catalyst framework. I am pretty sure (if you throw away all prejudices) you will like it. Especially, check their chained actions.
This is web side. Can't say anything about server side, since I am using perl for web projects.
It doesn't NOW have anything to do with Perl... but it's pretty easy to see some of that history in the code.
You're right of course that there are some things that were borrowed.
The grammar is something new in Perl 6, but it looks like there are a bunch of regexes that match different tokens. That makes me wonder how well it handles a buggy, ambiguous grammar, where the regexes overlap and something could be parsed as a token of two or more types. First rule wins?
Guess I should read some of chromatic's book over Thanksgiving so I'd understand more of this...
Mysite.parse($req, :actions(Mysite::Actions.new))
says "Parse $req using grammar Mysite and actions Mysite::Actions.new." When a token is found, the action method with the same name is called. As I understand it, the idea with separating token and action like that is one grammar can be associated with more than one set of actions.