On Mon, 2002-04-22 at 21:53, Larry Wall wrote:

>     * Parens always capture.
>     * Braces are always closures.
>     * Square brackets are always character classes.
>     * Angle brackets are always metasyntax (along with backslash).
> 
> So a first whack at the differences might be:
[...]
>     space             <sp> (or \h for "horizontal"?)
>     {n,m}             <n,m>
> 
>     \t                        also <tab>

I want to know how he does this!! We sit around scratching out heads
looking for a syntax that fits and refines and he jumps in with
something that redefines and simplifies. Larry is wasted on Perl. He
needs to run for office ;-)

>     \Lstring\E                \L<string>
>     \Ustring\E                \U<string>

This one boggles me. Wouldn't that be something like:

    <tolower string> or <tolower>string</tolower> # ;-)

Seriously, it seems that "\L<prior>" would be confusing.

>     \Q$var\E          $var    always assumed literal, so $1 is literal backref
>     $var              <$var>  assumed to be regex

Very nice. I can get behind this, and a lot of people will thank you who
have to maintain code.

>     =~ $re            =~ /<$re>/   ouch?

If $re is a regexp, wouldn't "$str =~ $re" turn into "$re.match($str)"?
Perhaps "$re.m $str" which is no more typing and pretty clear to me.

> Obviously the <word> and <word:...> syntaxes will be user extensible.
> We have to be able to support full grammars.  I consider it a feature
> that <foo> looks like a non-terminal in standard BNF notation.  I do
> not consider it a misfeature that <foo> resembles an HTML or XML tag,
> since most of those languages need to be matched with a fancy rule
> named <tag> anyway.

It's too bad that </tag> would be messy with standard Perl //-enclosed
regexes, as it would be a nice way to pass parameters to user-defined
tags. It would also allow XML-like propagation of results:

        <foo>x<bar>y</bar>z</foo>



Reply via email to