I think your example is a little too much. Whitespace isn't significant in C. When talking about programming languages, I don't think whitespace refers to spaces between tokens. It's mostly a reference to indentation.
> When talking about programming languages, I don't think whitespace refers to spaces between tokens.
But that makes no sense, it is whitespace, and it has semantic significance (hence being significant). Whitespace was not significant in older versions of Fortran, and that allowed you to write
DO30I=10,100
which was interpreted as
DO 30 I = 10, 100
that is non-significant whitespace.
Ruby has long struggled with how it interpreted its whitespace, for a long time
But that makes no sense, it is whitespace, and it has semantic significance (hence being significant). Whitespace was not significant in older versions of Fortran, and that allowed you to write
DO30I=10,100
which was interpreted as
DO 30 I = 10, 100
An amusing bug I saw in Expert C Programming mentioned how somebody once typed e dot instead of a comma, and
He has a point. Whitespace is definitely significant to C's lexer, if not it's parser. When people say "significant whitespace" they're implicitly talking about "implicitly significant to the parser as well as the lexer."
Whitespace does not control program flow in C. It only is used to separate tokens. It is not used to control program flow(like coffeescript and python).