Declarations are separate entities to statements, because declarations do not translate to a machine code instruction
Labels only make sense when attached to statements because they need to point to a particular machine code instruction <-- This should have been changed at least when declarations were allowed to be mixed with statements in compound statements
Definitions are declarations plus an assignment, let’s make them a subset of a declaration <-- I think this is the biggest mistake of them all
“Well, it’s already been that way for 40 years, too late to change it now!”
I think it evolved like that: