I've sometimes wished for a while ... else combination in C.
-But I never got around to proposing my suggestion to whoever or whatever committee is in charge of the C language.

But since D is a language that has much more freedom regarding implementation, I'd like to suggest it here. :)

This is my usual code:
if(c >= '0' && c <= '9')
{
    /* number */
    while(c >= '0' && c <= '9')
    {
        c = *s++;
        ... do something with c ...
    }
}
else if((c >= 'A' && c <= 'Z') || (c >='a' && c <= 'z') || c == '_')
{
    /* token */
while((c >= 'A' && c <= 'Z') || (c >='a' && c <= 'z') || c == '_')
    {
        c = *s++;
    }
}
else if(debug)
{
    /* error */
}

... The arguments for 'if' and 'while' are the same, and the initial test could be reduced to a single test instead of multiple tests...

while(c >= '0' && c <= '9')
{
    /* number */
    c = *s++;
    ... do something with c ...
}
else while((c >= 'A' && c <= 'Z') || (c >='a' && c <= 'z') || c == '_')
{
    /* token */
    c = *s++;
}
else if(debug)
{
    /* error */
}

... Ah, much more readable.
This makes it possible to repeat actions, in case a statement is true, generalizing the while statement slightly.

Thus... If we for instance enter the first while(...), then we will not enter any of the 'else' statements.

Reply via email to