in reply to Re: Re: Re: Appropriate CPAN namespace for perl parser
in thread Appropriate CPAN namespace for perl parser

Does your list of issues you think people need to worry about include things like the (soon to be core) Switch module?

As soon as you open up the gates to code that uses things like Filter::Simple, it becomes utterly impossible for anything without a working interpreter to figure out how to parse Perl. And that is an idea which looks to be used more and more aggressively as time goes by.

  • Comment on Re (tilly) 4: Appropriate CPAN namespace for perl parser

Replies are listed 'Best First'.
Re: Re (tilly) 4: Appropriate CPAN namespace for perl parser
by adamk (Chaplain) on Feb 13, 2002 at 15:05 UTC
    I agree.

    And this is my primary reason for thinking that a "guessy" perl parser would be enough. You eventually reach the point where you are loading a perl interpreter, firing up B:: to do a bunch of analysis, and then start a perl parsing process. I'm not convinced it can EVER be fully done.

    And I'm starting to think it more as this thread goes on...

    It also brings up questions like how to parse Win32:: code on a Unix box...? How could you parse any arbitrary piece of code without having everything it lists as a requirement installed, or at least on the machine

    What if you are using some form of run-time module loading...
      The issue of how to account for the effects of execution of code done at compile time is a deep one, with serious consequences for parsing Perl, compiling it, etc. The decision to allow that functionality imposes implicit limitations on Perl.

      However my thinking is that since these techniques are becoming more widely used on CPAN, support for doing them are moving into Perl's core, and the plans for Perl 6 are to improve Perl's support for this kind of functionality, I think that trying to ignore this issue is not wise, and will become increasingly not wise as time goes on.

      The moral is that you can only get 2 out of 3 of the following desirable features:

      1. Easy external parsing and manipulation of code.
      2. Support for macros.
      3. Syntactic sugar.
      Lisp has 1 and 2. TCL 1 and 3. Perl is in the process of adding 2 to 3.