On Fri, 14 Sep 2001, Martin von Loewis wrote: (In response to Samuele Pedroni)
- if it's purpose is to offer a framework for small languages support, there are already modules around that support that (SPARK, PLY ...), the only advantage of PEP 269 being speed wrt to the pure python solutions, because of the use of the internal CPython parser, OTOH the other solutions are more flexible...
I agree. I'd like to see (or perhaps write myself) a proposal for adding one or two of these packages to the Python core (two are probably better, since there is no one-size-fits-all parser framework, and adding two avoids the impression that there is a single "blessed" parser).
I would like to note that integration with these other systems are in the plans for my Basil project (http://wildideas.org/basil/). I just felt that a pgen integration would be better suited to the native code base rather than copying the code over to another project and building it as an extension module (which was a route being explored by Mobius Python.)
It should be considered that Jython does not contain a parser similar to CPython one. Because of this jython does not offer parser module support. So implementing the PEP for Jython would require writing a Java or pure python equivalent of the CPython parser.
I am all for writing a pgen implementation in pure Python. The reason I am not going this route from the get go is to do what is easy before we do what is less easy. If, for example, a reference implementation of a Python type system was to be adopted as standard, I would think that making the new system easy to add to Jython would be a prerequisite. Hence, we would need to develop a Jython parser that uses the grammar from CPython.
If the goal is to play with extensions to the Python grammar, I think this is less of an issue. Of course, anybody wanting to extend the C grammar could easily modify the Python interpreter itself.
So I think I'm -1 on this PEP, on the basis that this is code bloat (i.e. new functionality used too rarely).
As stated in the PEP, one of the primary motiviations for the proposal is to allow grammar extensions to be prototyped in Python (esp. optional static typing.) I would argue that making actual changes to CPython is much more expensive than writing a front end in Python. By adding a pgen module to Python, I feel that we are not bloating Python so much as we are exposing funtionality already built into Python. Thanks, -Jon
As stated in the PEP, one of the primary motiviations for the proposal is to allow grammar extensions to be prototyped in Python (esp. optional static typing.) I would argue that making actual changes to CPython is much more expensive than writing a front end in Python. By adding a pgen module to Python, I feel that we are not bloating Python so much as we are exposing funtionality already built into Python.
The potential problem is that this new module must then be supported for a long time. People will propose extensions to it, which must be evaluated, and every change must be reviewed carefully for incompatibilities. I'm not opposed to changes. However, I fail to see the value of prototyping the grammar, since you'll need subsequent changes as well, to the byte code generation, and perhaps evaluation. Also, I still doubt anybody interested in changing the grammar couldn't easily recompile Python. Regards, Martin
participants (2)
-
Jonathan Riehl
-
Martin von Loewis