Semicolon can be left out after do-while

Steven Schveighoffer schveiguy at yahoo.com
Tue Apr 12 14:51:26 PDT 2011


On Tue, 12 Apr 2011 17:21:57 -0400, spir <denis.spir at gmail.com> wrote:

> On 04/12/2011 09:21 PM, Steven Schveighoffer wrote:
>
>> int main(){
>>     int a,b;
>>     do{
>>         scanf("%d %d",&a,&b);
>>     }while(a<b) //note missing semicolon here
>>     return 0;
>> }
>>
>> The grammar specifies this correctly, but then again, the example uses  
>> the
>> semicolon. (http://www.digitalmars.com/d/2.0/statement.html#DoStatement)
>> [...]
>> I think the grammar should be changed...
>
> yop!
>
>> This is almost as bad as go's
>> requirement for if statement opening block to be on the same line...
>
> why? I like Go's syntactuc diffs. (except for its "multi-for")

in Go, this:

if(x)
{
    gosWriteRoutineThatIDontKnowTheSyntaxOf("hello")
}

is equivalent to this in D:

if(x)
{
}

writeln("hello");

This is frankly unforgivable IMO.

Of course it's fixable, but the attitude that "the coder should know  
better" doesn't really make me comfortable with it.  And I hate the "brace  
on the same line" format (but this of course is not a real argument  
against it).

-Steve


More information about the Digitalmars-d-learn mailing list