LINUX.ORG.RU

История изменений

Исправление 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.