A replacement for lambda

Christopher Subich spam.csubich+block at block.subich.spam.com
Sat Jul 30 22:23:42 EDT 2005


Scott David Daniels wrote:

> What kind of shenanigans must a parser go through to translate:
>     <x**2 with(x)><<x**3 with(x)>
> 
> this is the comparison of two functions, but it looks like a left-
> shift on a function until the second with is encountered.  Then
> you need to backtrack to the shift and convert it to a pair of
> less-thans before you can successfully translate it.

I hadn't thought of that, but after much diving into the Python grammar, 
the grammar would still work with a greedy tokenizer if "<<" (and also 
">>", for identical reasons) were replaced in 'shift_expr" with "<" "<" 
and ">" ">".

That, of course, introduces some weirdness of '''a = 5 < < 3''' being 
valid.  I'm not sure whether that is a wart big enough to justify a 
special-case rule regarding '>>' and '<<' tokens.  We do allow
'def      f    ()     :'
as-is, so I'm not sure this is too big of a problem.



More information about the Python-list mailing list