Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: Re: Apocalypse 3

by MrNobo1024 (Hermit)
on Oct 04, 2001 at 02:53 UTC ( [id://116597]=note: print w/replies, xml ) Need Help??


in reply to Re: Apocalypse 3
in thread Apocalypse 3

What if you want to divide by a regex? That could also have two slashes after a term.

Replies are listed 'Best First'.
Re: Re: Re: Apocalypse 3
by japhy (Canon) on Oct 04, 2001 at 05:11 UTC
    Perl might try to correct the parsing of:
    $x = $y //foo/;
    from
    $x = $y // foo/;
    to
    $x = $y / /foo/;

    _____________________________________________________
    Jeff[japhy]Pinyan: Perl, regex, and perl hacker.
    s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;

      Perl might try to correct the parsing of:

      $x = $y //foo/;

      That will depend on how the Perl 6 parser works. If it pre-tokenizes (like Perl 5 does) then we shall almost certainly still have a "longest interpretation possible" tokenizing rule. So:

      $x = $y //foo/;

      will have to be interpreted as:

      $x = $y // foo/;

      But if (as I hope) we tokenize on-the-fly, then the parser will be able to backtrack this incorrect interpretation and re-parse it as:

      $x = $y / /foo/;

      instead.

      Indeed, if that is the parsing strategy, the issue here would never even arise, since the higher precedence of / over // would see that interpretation considered first. (Of course, there would be backtracking when compiling:

      $x = $y //foo;

      in that case, since the higher precedence interpretation doesn't work.)

      Personally, I think JIT tokenization will be the only feasible approach for Perl 6, given how mutable the language will be (e.g. user-defined operators).

      And, almost as a happy by-product, that is likely to inject the maximum degree of DWIMity into the language.

      Damian

        Excellent. I would have only assumed JIT tokenization was the course to be taken, after reading Larry's third Apocolypse. I'm looking forward to seeing some of your applications of these new ideas in your exegesis.

        By the way, what is the purpose of a my sub? Is it just a way to have a "lexically scoped" function? That is, is it a way around the current my $func = sub { ... }; $func->(...); approach?

        _____________________________________________________
        Jeff[japhy]Pinyan: Perl, regex, and perl hacker.
        s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;

Re: Re: Re: Apocalypse 3
by Anonymous Monk on Oct 04, 2001 at 05:03 UTC
    /// or // should be more like s/// or m//

    but what is $foo // or $brr /// (nothing if i remember correctly)

     $foo // expr has nothing to do with regex

    oh "divide" by a regex, mmmkay, maybe something like

    $_ = "2k4"; print ( 49 / /\d/); #?

    (i can't see how what you're suggesting can occur, or i'm misunderstanding)

Re:x2 Apocalypse 3
by grinder (Bishop) on Oct 04, 2001 at 19:47 UTC

    Can you give one example where dividing by a regexp is not hopelessly obfuscatory? If I saw someone trying to do that in production code, I would hesitate between shooting them first and then throwing them out the window, or doing it the other way around :)

    Although I would be slightly more worried about the ambiguity between // "that unless defined this" and // "rematch according to the last successfully compiled regexp" (although maybe that's going away in Perl 6, I've lost track). And anyway, I'll let Larry and Damian worry about that for the time being.

    --
    g r i n d e r

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://116597]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2024-04-16 14:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found