As @Kays pointed out, semicolon in Pascal is a statement separator (with one exception in Delphi and FPC), this means that "else" cannot be preceded by a semicolon because "else" is not a statement.
this compile, even if it looks strange
repeat
if condition1 then
until condition2;
no statement after then (or better hidden no-statement without ";").
the "repeat until" pair also includes the compound statement functionality (that's why it does not require a "begin/end" pair to apply to multiple statements.) Because of this, the following also compiles:
repeat
if condition1 then ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
until condition2;
where each semicolon separates an empty statement (there is an empty statement after the "then".) The example could have also been written as:
repeat
if condition1 then begin end
until condition2;
and adding semicolons after the "end" would have the same effect (which is none) as in the previous example.
I find terminators instead of separators easier to understand.