Now, the reason Pascal doesn't require it in that case is because the semicolon is not a terminator
Now that is where I disagree.
I believe if that you if you take all Pascal definitions exactly as the are. And only change that ; is a terminator => then (in Pascal) there would still
not be a ; in front of the else.
Because if there was, it would terminate the IF statement (that is how "IF" IMHO is defined). So there cannot be a terminator.
You (seem to ) believe that "if" is defined in such a way that it would not be terminated by a terminator in that Place. I do not see how to derive that from "if then else"
is one single statement.
But this is where we disagree.
The separator/terminator disagreement, IMHO stems from that different view.
the inner ";" terminates the inner statement not the outer one which is the "if", that statement will be terminated by the ";" that ends the statement in the "else" part. If there was no "else" part then the semicolon would terminate the "if" as well.
You said that before. That may be true for C.
I do not see that this would be a given in Pascal. Of course currently it is not defined for Pascal, because Pascal has no terminators.
But then, if you switched Pascal to terminators, you would need to add this sort of inner/outer definition.
You would thereby change the definition of "IF".
Because, currently the embedded statement become part of the outer IF. So they are no longer statements on their own. (and not requiring a terminator) Otherwise the "IF" would not truely be
one statement, but that is how it is defined in Pascal.
That can be compared to the following C: "if ( (a=b) ==0) {}". "a=b" is/was a statement, but is now part of the expression. It no longer gets a terminator.