Parenthesis around if/for/while condition is not necessary

aedt adnansignsup at gmail.com
Sat Jun 23 05:09:13 UTC 2018


On Saturday, 23 June 2018 at 04:45:07 UTC, user1234 wrote:
> On Saturday, 23 June 2018 at 01:27:30 UTC, aedt wrote:
>> for line in stdin.lines() {}
>>
>> if condition {}
>>
>> while condition {}
>>
>> for init; condition; op {}
>>
>>
>> What's the rationale of keeping the requirement that the 
>> condition of if/for/while must be wrapped with a parenthesis 
>> (other than keeping parser simple)? Modern languages have 
>> already dropped this requirement (i.e. Rust, Nim) and I don't 
>> see any reason not to do so.
>
> There is this case that requires parens:
>
>     if a && b c;
>
> Is there a missing && or not ? It seems obvious for a human but 
> compiler parsers are "apparatchiks", i.e rules are rules. That 
> being said this would work by allowing parens for 
> disambiguation.

Same thing as the following"
return a && b;

I'm not saying to drop parens completely, I'm saying why is it 
not optional. D seems to have no problem with x.to!string or 
std.lines


More information about the Digitalmars-d mailing list