История изменений
Исправление wandrien, (текущая версия) :
Ну поясни тогда, в чём там обязательность и ясная видимость операторных скобок. Я что-то запутался.
Тем, что у тебя не может быть вот такой херни:
cleanup:
if FError and Assigned(FOnError) and (ParseDepth=1) then
FOnError(Self, ErrorHead, ErrorMessage);
FreeAndNil(Words);
Head:=SaveHead;
Ты обязан написать
if FError and Assigned(FOnError) and (ParseDepth=1) then
FOnError(Self, ErrorHead, ErrorMessage)
end if
FreeAndNil(Words)
Head=SaveHead
(Если же ты захочешь написать это в одну строку, теоретически это возможно, используя двоеточие вместо новой строки для разделителя statements, но на практике настолько неудобно, что никто так не делает.)
Составные операторы всегда включают в себя не «оператор» (которым является begin… end), а список операторов, и список операторов всегда зарывается отдельным ключевым словом.
Это то, что придумали в Algol 68 и то, что Вирт не успел перетянуть в свой Паскаль.
Аналогично в Ada, аналогично в bash:
if ...then
...
end if;
while ... loop
...
end loop;
if ...then
...
fi
while ... do
...
done
if fi
в баше это прямое копирование с Algol 68.
Исходная версия wandrien, :
Ну поясни тогда, в чём там обязательность и ясная видимость операторных скобок. Я что-то запутался.
Тем, что у тебя не может быть вот такой херни:
cleanup:
if FError and Assigned(FOnError) and (ParseDepth=1) then
FOnError(Self, ErrorHead, ErrorMessage);
FreeAndNil(Words);
Head:=SaveHead;
Ты обязан написать
if FError and Assigned(FOnError) and (ParseDepth=1) then
FOnError(Self, ErrorHead, ErrorMessage)
end if
FreeAndNil(Words);
Head=SaveHead;
(Если же ты захочешь написать это в одну строку, теоретически это возможно, используя двоеточие вместо новой строки для разделителя statements, но на практике настолько неудобно, что никто так не делает.)
Составные операторы всегда включают в себя не «оператор» (которым является begin… end), а список операторов, и список операторов всегда зарывается отдельным ключевым словом.
Это то, что придумали в Algol 68 и то, что Вирт не успел перетянуть в свой Паскаль.
Аналогично в Ada, аналогично в bash:
if ...then
...
end if;
while ... loop
...
end loop;
if ...then
...
fi
while ... do
...
done
if fi
в баше это прямое копирование с Algol 68.