Это попытались сделать в FreePascal. Ничего хорошего из этого не вышло. Язык должен быть один. В PascalABC.NET можно программировать в “традиционном” стиле и в современном. А предупреждения компилятора помогают встать на путь истинный и объявлять переменные как положено, как принято в промышленных языках, внутри блока.
Вот этого точно не понимаю! Язык и есть один, но какие-то его возможности просто подключаются/отключаются. Почему не резать запрещенные опции на уровне синтаксического/семантического анализа текста программы? Я, конечно, не знаю, как тут компилятор реализован, возможно даже у меня “доисторические” представления о компилятора, но ведь фактически нужно только решить задачу анализа исходного текста на соответствие некоторому описанию и при первом несоответствии выдать соответствующее сообщение.Дать паре студентов-дипломников работу - сделать синтаксический анализатор ISO-версии, ведь постановка задачи практически готова. Если надо “старый паскаль”, запускается анализатор. Не нашел ошибок - управление получает нынешний компилятор.
Конечно, кое в чем от ISO придется отступить, учитывая требования среды .NET,
Это не так просто как может показаться на первый взгляд. Это - много труда сделать и, самое главное, это затрудняет поддержку. Кроме того, тот учитель всё равно бы запретил.