En Python no puede ser ambiguo al respecto. O tienes
if (x > 0):
if (y > 0):
print "hello"
else:
print "world"
o
if (x > 0)
if (y > 0)
print "hello"
else:
print "world"
Los espectáculos de sangría, que "si" coincide con el "otro". [Nota: intente como sea posible, no puedo obtener el "else" en el primer ejemplo para alinear correctamente debajo del primer "si".]
En todos los idiomas que he visto que permiten esta particular ambigüedad, el "else" coincide con el "si" más reciente. Eso puede no ser cierto en todos los idiomas que alguna vez existieron. Por lo general, lo más fácil al escribir el analizador es hacer coincidir el "else" con el "si" más cercano en la pila.
Una pregunta similar: ¿Cuál es el resultado de 5 - 2 + 1? ¿Es 4 o 2? Personalmente, siempre uso paréntesis cuando escribo (x - y) + z o x - (y + z) porque nunca puedo recordar en qué dirección irá el analizador.
Interesante pregunta, pero ¿cuál será la respuesta correcta? – ralphtheninja
Creo que la respuesta podría ser: probablemente no haya un lenguaje que coincida con el otro con el más lejano si. Algunos idiomas hacen que sea obligatorio que lo dejes en claro aplicando llaves o simplemente usa la sangría para indicar cuál concuerda (Python). –