Jonathan M Davis:

> Except that it's not a bug. It's an issue that crops up in grammars for 
> programming languages.

Right, I have just seen I was wrong :-)


> There is classic solution to the problem which D 
> follows. So, there is no ambiguity, and there is no bug. It's very much by 
> design.

There is no ambiguity for the compiler, because in C/C++/D the else is 
associated to the nearest if. But programmers are mammals, they aren't 
compilers. So they sometimes err, despite there is no formal ambiguity.


>  Bugs caused by mis-handling if statements related to dangling elses are 
> _very_ rare in C-based languages. I really think that the only reason that 
> you're running into this at all is because you've been translating python 
> code 
> to D without adding braces.

It's not a very common bug, but in past it has happened to me not just in 
translating Python code. Ada, Python, Pascal and other languages have specific 
means to avoid this bug. It's a bug easy to avoid, and style guides often 
suggest to add braces in this situation anyway.

See also for more practical considerations:
http://code.google.com/p/copute/issues/detail?id=21

Bye,
bearophile

Reply via email to