[Python-ideas] parser in stdlib

Aaron Brady castironpi at comcast.net
Fri May 11 01:23:50 CEST 2007


> -----Original Message-----
> From: Collin Winter [mailto:collinw at gmail.com]
> Sent: Thursday, May 10, 2007 6:08 PM
> 
> 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

Huge bag of worms, I see now.  I was tinkering for hobby Python use.  I
hadn't proposed a syntax change, not there yet.  I was wanting to intercept
parser somewhere after it's started parsing source, but before it gets to
the rules.  The particular change I'm tinkering with was replacing an equal
sign with a natural word.

1, 2 to a, c
-and-
to a, c 1, 2

map to:

a, c = 1, 2

Like I said, trivial, but I was hoping a small change to parser would work.
(It's not always unambiguous either.)  But here's the idea.




More information about the Python-ideas mailing list