Тут вот Вирта ругали, а я немного похвалю: у Вирта формальное описание грамматики уже приведено к такому виду, который удобен для реализации парсера (в том числе посредством ручного рекурсивного спуска, или через парсер-комбинаторы, тот же парсек например), в частности из грамматики убраны левые рекурсии. Это дико удобно, не нужно переформулировать грамматику перед реализацией, можно реализовывать сразу. Скажем если взять для сравнения грамматику языка Lua (которая меньше чем обероновская), то перед реализацией парсера придется пройтись по всей грамматике руками вылавливая левую рекурсию и заменяя её на правую (вводя дополнительные нетерминалы там и так далее). Вообще, у меня ощущение сложилось, что грамматика Lua ни разу не LL(k).
Таким образом грамматика языка Оберон ценна не тем, что она маленькая, а тем что она проектировалась с учетом того, что потом еще парсер писать надо будет. То есть она, по моему, даже LL(1), и при этом без левых рекурсий.
Замечу, что для прикладного программиста это конечно все не важно, более того, язык Оберон не изменился бы если бы в грамматике была левая рекурсия (при этом "арифметика синтаксиса" сталa бы лучше чем есть сейчас). Просто изменилась бы трудоемкость реализации утилит работающих с исходниками на Обероне.