Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: Re: Apocalypse 3

by MrNobo1024 (Hermit)
on Oct 04, 2001 at 02:53 UTC ( #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/;
    $x = $y // foo/;
    $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/;


      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.


        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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://116597]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2017-11-21 06:44 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (296 votes). Check out past polls.