[Python-ideas] parser in stdlib

Collin Winter collinw at gmail.com
Fri May 11 01:07:56 CEST 2007


On 5/10/07, Aaron Brady <castironpi at comcast.net> wrote:
> > -----Original Message-----
> > From: Collin Winter [mailto:collinw at gmail.com]
> > Sent: Thursday, May 10, 2007 5:57 PM
> >
> > On 5/10/07, Aaron Brady <castironpi at comcast.net> wrote:
> > > > -----Original Message-----
> > > > From: python-ideas-bounces at python.org [mailto:python-ideas-
> > > > bounces at python.org] On Behalf Of Adam Atlas
> > > > Sent: Thursday, May 10, 2007 5:47 PM
> > > >
> > > > On 10 May 2007, at 18.39, Aaron Brady wrote:
> > > > > There is, but I want access to it.
> > > > >>>> import parser
> > > > >>>> parser.__file__
> > > > > Traceback (most recent call last):
> > > > >   File "<stdin>", line 1, in <module>
> > > > > AttributeError: 'module' object has no attribute '__file__'
> > > >
> > > > That's because it's a builtin module, written in C. It's Python/
> > > > parsermodule.c in the source distributions.
> > > >
> > > > What exactly are you suggesting should be possible? Are you trying to
> > > > programmatically change the parser?
> > >
> > > Yes.  The relevant code snippet:
> > >
> > > class Transformer:
> > >     <snip>
> > >     def parsesuite(self, text):
> > >         """Return a modified parse tree for the given suite text."""
> > >         return self.transform(parser.suite(text))
> > >
> > > Hence to allusion to Van Rossum's note, for the record.
> >
> > That is not and will not be possible using Python's built-in parser.
> >
> > Collin Winter
>
> I'm 25, FTR, heavy experience.

I have no idea why that's relevant.

> Why not?  PEP or FAQ if there is one.

Because programmable syntax isn't something we want in Python; you
yourself quoted an email from Guido explaining why. If you like the
idea of allowing every module to define its own syntactic constructs
-- at runtime or otherwise -- Perl 6, Haskell and others are more than
happy to help you.

Collin Winter



More information about the Python-ideas mailing list