"The semicolon at the end isn't terminating the "qux" statement, it's creating a new empty statement."
I don't understand that interpretation. If the last semicolon is its own statement, where's the semicolon that separates it from the previous statement?
You might be thinking of Pascal, where semicolons separate statements but there's a zero-character empty statement. It seems like Pascal vs. C always comes up when semicolons are involved, and the semicolon business is one of the first differences highlighted at http://en.wikipedia.org/wiki/Comparison_of_Pascal_and_C.
The last semicolon is the separator. The "thing" to the right that it's separating is an implicit empty statement. So yes, I am exactly describing Pascal. And that's the difference between a language where ";" is a separator and where it's a terminator.