PEP-308 a "simplicity-first" alternative
Christian Tismer
tismer at tismer.com
Tue Feb 11 21:15:52 EST 2003
holger krekel wrote:
> Christian Tismer wrote:
>
>>holger krekel wrote:
>>
>>>Andrew Koenig wrote:
>>>
>>>
>>>>holger> Inspired by "do the simplest thing that can possibly work" i
>>>>holger> now think that
>>>>
>>>>holger> x and y else z
>>>>
>>>>holger> might just do it and avoid the need for a new construct.
>>>>
>>>>I thought so too when I first saw it, but now I'm less sure.
>>>>For example, what is the meaning of
>>>
>>>Damn, you get to the point where i was too lazy to think it out :-)
>>>
>>>
>>>> w and x and y else z
>>>
>>> (w and x) and y else z
>>>
>>>should be the meaning.
>>
>>Wrong.
>> w and (x and y else z)
>
>
> In fact, i don't care too much either way. The main requirement
> is that precedence and grouping rules need to be consistent.
Please don't forget easy LtoR parsing.
> But i think i'd like
>
> obj and obj.method() and "yes" else "no"
>
> to return "no" instead of AttributeError on None :-)
(obj and obj.method()) and "yes" else "no"
does the job.
You cannot be minimalistic and requiring a huge
look-ahead at the same time, methinks.
>>>Or in Grammar speek:
>>>
>>> and_test: not_test ('and' not_test ['else' not_test])*
>>
>>I don't have the grammar, yet.
>>But this one doesn't do what I mean.
>
>
> I think it would work for your case. You need to sort it out in
> the compiler with some look-ahead. This is because when seeing
>
> w and x and y else z
> ^^^^^^^
Be careful not to break the thin ice
of agreement that you achived. Introducing
complexity through a backdoor might kill
your nice approach easily.
> the first part you don't know that 'x' in fact belongs to a ternary.
> If you try to code it into the parser you might again need look-ahead
> which does not work there. That's why i thought it's better to just
> recognize the "and y else z" part and not care about what came earlier.
Let's talk about that on the Sprint.
> chaining ternary operators without parens is
> a-bit-insane-anyway-ly y'rs,
Ternary operators are insane at all, so we have to
make them as simple as possible (b.n.s. -- ly y'rs - chris)
--
Christian Tismer :^) <mailto:tismer at tismer.com>
Mission Impossible 5oftware : Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/
14109 Berlin : PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776
PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04
whom do you want to sponsor today? http://www.stackless.com/
More information about the Python-list
mailing list