13 comments

[ 2.7 ms ] story [ 38.4 ms ] thread
It would be wonderful if someone more familiar with Perl 6 could give a code break-down of what is going on.
I only know Perl 5, but I can figure out enough of it to give an educated guess. It seems like he's using the token returned by the grammar to select a method of the same name. So when he gets the token e404, he'll call the method e404 which does a make "404: Not found"

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...

Yes, using

    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.
Congratulations, Perl 6 developers. You are beginning to catch up with Django. (See http://docs.djangoproject.com/en/dev/intro/tutorial03/ if you think I'm being sarcastic.)

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 can't say anything about Perl 6, I never really used it yet.

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.

Assume I'm barely competent at both Perl and Python. Can you explain how looping over repeated regular expressions is more powerful and useful than core language support for grammars and arbitrary tree transformations?

(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.

Oh, Python 3000 is now around ten years old? How time flies by..
Perhaps you could provide an example of a situation where grammars and arbitrary tree transformations are more useful than looping over repeated regular expressions?

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".

Perhaps you could provide an example of a situation where grammars and arbitrary tree transformations are more useful than looping over repeated regular expressions?

Any parsing operation which needs to keep in mind state.

That sounds like a good brief description of an example, but like I said, for people to get that "a ha" moment, it's got to be written up so it can be presented right there in front of them.

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.

PHP was its own, independent effort. It doesn't really have anything to do with Perl. People migrated to it because it was easier to deploy (just put it on the web server), and probably easier to write for many people.
PHP was originally a layer over Perl. It's in the first paragraph of the history.

It doesn't NOW have anything to do with Perl... but it's pretty easy to see some of that history in the code.

The post I was responding too makes it sound like PHP was some sort of fork of Perl, which is most certainly not the case.

You're right of course that there are some things that were borrowed.