Я думаю, что это побочный эффект парсера.
Обычно компиляторы игнорируют пробелы через блоки SKIP , которые являются токенами, игнорируемыми компилятором, но вызывают ошибки, если они находятся в середине зарезервированного слова. Например, в C: «while» допустимо, «whi le» - нет, хотя пробел - это токен SKIP.
Причина в том, что он упрощает синтаксический анализатор, в противном случае им придется управлять всем пробелом, и это может быть довольно сложно, если вы не установите строгие правила, как это делает Python, но это будет трудно навязать поставщикам, таким как Oracle и сделает SQL более сложным, чем следовало бы.
И это упрощение имеет (непреднамеренный?) Побочный эффект от возможности удалить МОСТ (не все) пробелы. Имейте в виду, что в некоторых случаях удаление пробелов может привести к ошибкам компиляции (невозможно удалить пробел в GROUP BY, поскольку это является частью токена).