Активный Оберон нормально живет без разделителя ;
Хотя для устранения неоднозначности были внесены небольшие изменения в язык.
Например, можно было написать так:
var o: object; переменная, которой можно присвоить любой объект.
и так:
## Код:
```
var o: object
           var i: integer;
            procedure P; 
            end P;
        end;
```

получалась неоднозначность.
поэтому вместо
var o: object; var a: any;
нужно будет писать
var o: any object;
var p: any pointer;
var r: any record;
сейчас режим Lax( в котором разделители ; необязательны )  используется только в интерпрнтаторе АО.
Но и при компиляции тоже можно использовать - язык позволяет.
Теперь это разошлось по другим версиями оберона, но упомянуть источник заимстований ( включая заимствование шаблонов модулей и т.д) как всегда "забыли".