Я думаю, что при разрешении чередовать секции можно и, скорее всего, и нужно оставить в силе все ограничения на "сущность должна быть объявлена до её использования", вводимые ранее.

А просмотра в компиляторе с промежуточным представлением никакого нет. Проверка на основную часть ошибок начинается, когда дерево уже полностью построено. И всё уже собрано и известно.

Касательно "можно в несколько мест" - если мы хотим реального развития в сторону каких-то высокоуровневых описаний, то такое дробление - сильный тормоз.

Вот я выше приводил пример деклараций. На самом деле, кроме типов и переменных, есть ещё и процедура инициализации модуля, где часто выставляется какая-то дополнительная метаинформация. Например, если токены задают структуру для БД.
И это хотелось бы описать, например, таблично, а код получить автоматом. Но ткоены у меня в задачах сейчас почти в каждом модуле, т.е. вошло в обиход. Значит, я не эпизодически, а всюду хочу использовать какое-то надъязыковое задание в этой части. Но дальше в части какого-то модуля я хочу ещё и конечно-автоматную логику нарисовать другим инструментом.

Технологически это просто и изящно вписывается в концепцию ББ: да хоть пусть будет прямо вьюшка специальная в коде, где что-то редактируется, из которой порождается код. И даже несколько разнородных вьюшек в одном модуле - вполне понятная технически схема.

Но стоит представить, что каждая из таких вьюшек даёт продукт-код в 2 точки, которые надо как-то явно указать и поддержать... Как это уже превращается в какую-то вермишель.

Т.е. мы можем иметь элегантный и простой прорыв, в рамках того, что у нас уже не плоскотекстовые исходники. А вот этим ограничением на порядок имеем тормоз.