Slashdot Mirror


Perl 6 Grammars and Regular Expressions

An anonymous reader writes "Perl 6 is finally coming within reach. This article gives you a tour of the grammars and regular expressions of the Perl 6 language, comparing them with the currently available Parse::RecDescent module for Perl 5. Find out what will be new with Perl 6 regular expressions and how to make use of the new, powerful incarnation of the Perl scripting language."

10 of 202 comments (clear)

  1. wow, looks like boost::spirit by Sebastopol · · Score: 3, Interesting

    I'm surprised by the regex grammar. It looks a lot like how I use boost::spirit::rule for parsing regex in C++:

    Perl6---

    # note this is just a language example, not an accurate name matcher
    grammar Names
    {
    rule name :w { };
    rule singlename { + };
    };

    C++::boost::spirit--- // rule for parsing a token string
    rule split = *(*space_p >>
    (+graph_p)[append(tok)] >>
    *space_p);

    msg "Parsing input\n"; // 1. Parse declarations
    while (!header_ok && getline(input, line) && input.good())
    {
    tok.clear();
    parse(line.c_str(), split);

    There are even grammar classes in Spirit.

    I sure hope perl6 is faster! ;-)

    --
    https://www.accountkiller.com/removal-requested
    1. Re:wow, looks like boost::spirit by ajs · · Score: 3, Interesting

      Perl 6 will probably not be faster than boost, but keep in mind that you also gain the power of a fully dynamic programming language in Perl 6's rules. Rules act as closures and can also contain Perl 6 code. Hypothetical variables are really going to blow people's minds (I know they took me a while to grasp, and when I did, I just sat around saying "wow" for a while :-)...)

  2. Re:Ok, start the flame wars under this post by Anonymous Coward · · Score: 3, Interesting

    I've got a fully multithreaded perl script running under Win32. It wasn\'t too bad to write but some parts sucked. One of the things sucked because Win32 doesn't support alarm() calls and you have to manually poll sockets and I hate that shit, or use vec() and that's just insane (how many people understand how vec() works anyway???) The other big thing that sucked was the crappy mechanism for sharing complex data structures between threads. All's honky-dory if you're just sharing a scalar variable, but don't try a HoH or anything like that cause you'll find out that there's no auto-vivification, and you have to manually create the data structure in every thread that needs to access it, and that right there leads to lots of possibilities for "interesting" bugs to show up (it's not very fun to code or pretty to look at or understand once it's done).
    But anyway none of that is really here nor there, but I just wanted to comment that Perl "scripting" isn't just CGI forms and stuff like that. You can really do complex applications in Perl. It's a full-featured language, portable (moreso that even Java, just look at the list of archs in the Configure.sh script), and able to handle most tasks that don't require a tiny memory footprint or direct CPU register manipulation.

  3. Adoption by base_chakra · · Score: 4, Interesting
    Years ago, Eric Raymond wrote:
    "Perl XS is acknowledged to be a nasty mess. My guess is the Perl guys would drop it like a hot rock for our [Python's] stuff -- that would be as clear a win for them as co-opting Perl-style regexps was for us." [emphasis added]
    Maybe I misinterpreted ESR's intended message, but it would be disappointing if hypercompetition prevented Perl's already-influential regex extensions from exerting a positive influence on other platforms. Raymond seems to imply that the Python team only grudgingly included support for Perl-style regex. I understand that developement teams in similar niches each want to make a big splash in the industry, hopefully Python's great increase in popularity has softened the survivalist attitude that seems to characterize this Raymond quote from Python-Dev. Evolving regex can benefit everyone.

    Note to those ready to mod me Troll/Flamebait: I'm not trying to pick on Python, I just happened to be acquainted with this candid quote.
  4. Re:Why would a satisfied Perl5 user migrate? by WWWWolf · · Score: 5, Interesting

    Yeah, Perl 5 hasn't changed that much over time. But it has been around for a while. Perl 6 is just different.

    From what I have seen from the announcements, the Perl 6 syntax looks far cleaner, probably more consistent and less ugly. Some of the new tricks look genuinely handy. For example, if it seems like type checking would be a good idea, you can have it if you want it, even on compile time!

    Especially the regular expressions side seems pretty interesting, as noted in this article. Regular expressions have always been a poor but effective replacement for grammar-based parsing, and now finally Perl is going to have both integrated. There's probably going to be less whining about line noise.

    And then there's something that I find especially interesting, though it hasn't been explained in detail yet: Complete tuning of the object system. In case you haven't noticed, Perl 5's object system is a complete and utter mess that looks and smells like it has been added as an afterthought, and rest assured it's going to be changed radically for better in Perl 6. I'm definitely waiting eagerly to see what Perl 6's take is going to look like - I sure hope it's something like Ruby, only it smells like a camel =)

  5. You're a language bigot by Mr.+Muskrat · · Score: 3, Interesting
    Sounds to me like you prefer PHP and therefore spent more time perfecting your understanding of it. If you know and understand a language (any language) your work will require less time and will (surprise, surprise) be easier for you.

    (I'm a recovering language bigot so I can say this. :-P )

  6. Re:An anecdote and an opinion. by MrBoombasticfantasti · · Score: 3, Interesting
    I tried to absorb the syntax docs one afternoon, but it gave me nightmares. [...] Ever since I've been haunted by perverse unreadbility of it all.

    When I started to learn Perl (coming from a C background) I had quite a different experience. I really felt I had "come home", or something like that. Sure, you can write obscure code, but that's no different from C. But you don't have to, it can be very clear.

    I'll give credit to the fact that perl is compact, terse, to the point and has a reputation for string manipulation.

    I just love it for the short development times, and the fact that you can really use it for just about any environment. Want to do CGI? Sure! Just GUI? No problem! Connect to about every database there is, that's no biggie.

    And what about CPAN? That's a part of Perl too! You get all that ready-to-run code for just about any problem domain.

    IMO, "the right job" for perl is about 2% of all programming tasks out there.

    Maybe you are right, but somehow I get a lot of those 2% jobs... ;-)

    Now you have to excuse me, I have some perl coding to do! ;-)

    --
    !ERR: Signature not found.
  7. Re:Perl goodness by Anonymous Coward · · Score: 5, Interesting
    A web browser? That's:
    perl -MHTML::Strip -MIO::All -e 'print HTML::Strip->new->parse(io($ARGV[0])->scalar )'
    A web server? That's:
    perl -MIO::All -e 'io(":8080")->fork->accept->(sub { $_[0] < io(-x $1 ? "./$1 |" : $1) if /^GET \/(.*) / })'
  8. Let me guess.... the usual Perl backlash by Anonymous Coward · · Score: 5, Interesting
    I get sick of the 'standard' backlash every time a Perl article is posted. Why do people have such a problem with Perl? It's an excellent, high-level general purpose programming language with a huge range of extension modules available. I have personally used Perl for many projects, as do TicketMaster, ValueClick, Morgan Stanley and Ryanair and I've also learnt a lot about software engineering and computing through Perl.

    Yes, it does include a lot of symbols, but there is payback to learning them, and really most programs won't use much beyond $ % # () [] {}. Unlike some languages, Perl is not what I would describe as a 'bondage' language. If you want to program sloppy, you can program sloppy. That's fine by Perl. And this generousity is what gives Perl its bad reputation. This is funny since I and most knowledgeable Perl programmers can write perfectly clear and maintainable code. The way we do this is no secret--it's just by commenting appropriately, using meaningful identifier names and following the Perl style guidelines.

    People can mock Perl all they like, but it is still a widely used powerful programming language and I am more productive in it than any other language. As a parting comment, a Cisco employee once told me (off the record of course!) that "Cisco would fall apart without Perl".

  9. Re:Why would a satisfied Perl5 user migrate? by jonadab · · Score: 3, Interesting

    > What does Perl6 offer a satisfied Perl5 user? Is it faster? Smaller?

    It features better support for key paradigms, including object-oriented
    programming (finally, a real object model), functional programming (we're
    getting continuations), and even some improvements for contextual programming.
    In other words, Perl6 will be a substitute not just for Perl5 but also for
    Scheme and Smalltalk.

    Also, the whole Parrot thingydoo is going to allow software written in one
    language to seamlessly use libraries written in another language, without all
    the ugly messing around you have to do to accomplish that in Perl5. You'll
    be able to construct a complete data structure in Perl code and pass it to
    a library written in Python, for example.

    Read the Apocalypse articles twice. The first time you'll recoil in utter
    horror. (I did.) Then read them again, and you'll be very excited. I am.
    The bummer is that we're still a while off from the release of 6.0

    --
    Cut that out, or I will ship you to Norilsk in a box.