The point is that the diagrams you linked to don't tell you anything about the semantics. For example, according to the python diagram, there is absolutely no difference except for the parameter definition between what is allowed in a normal function definition and a lambda expression. The subtlety that a lambda can only be a single line is lurking in some surprising and dark corner of the language semantics. That is what makes a language difficult: arbitrary and subtle differences between things that should be the same.
Not that the three sligthly different types of callable objects/blocks/watchamaycallits in ruby are a shining example of elegant design. I don't know if ruby or python is simpler (I don't care, scala is even more baroque around the corners than both and I still prefer it), it is just that your syntax diagramms add nothing to a discussion about semantics.
"according to the python diagram, there is absolutely no difference except for the parameter definition between what is allowed in a normal function definition and a lambda expression"
They both point to the parameter definition, but lambda sits under "test" and refers back to "test" while the normal function definition sits under "compound_stmt" and also points to "suite."
Those are rather big differences, and reflect rather well that while perhaps semantically they are similar, syntactically speaking they are very different.
The point is that the diagrams you linked to don't tell you anything about the semantics
Well, I'd say they do provide a strong indication at least.
arbitrary and subtle differences between things that should be the same
It seems Python would need quite a truckload of such subtleties to make up for the complexity difference reflected in the graphs alone. And since one of its core design-goals is to avoid subtleties like that I think the graphs were a valid vehicle to illustrate my point.
Lambda is ofcourse a well-known wart in Python, but honestly, if we start wart-counting here then I think the comparison would end even worse for Ruby.
For the record: I'm obviously a python guy but have also used rails and sinatra before. I'm by no means a ruby-hater. It's just that I couldn't let the statement "Python more complex than ruby" pass without speaking up. Because, as I tried to illustrate, I can not imagine a metric by which that would be true.
Not that the three sligthly different types of callable objects/blocks/watchamaycallits in ruby are a shining example of elegant design. I don't know if ruby or python is simpler (I don't care, scala is even more baroque around the corners than both and I still prefer it), it is just that your syntax diagramms add nothing to a discussion about semantics.