Когда я писал компилятор, то написание лексического анализатора заняло примерно 1 день, написание синтаксического анализатора заняло тоже примерно 1 день. По грамматике языке написать синтаксический анализатор довольно легко. Другие части компилятора заняли гораздо больше времени: генерация машинного кода, генерация PE формата и т.д..
Если же использовать какой-нибудь ANTLR, то, во-первых, это как из пушки по воробьям, так как они расчитаны на парсинг сложных LR грамматик, а язык Оберон специально был создан таким, чтобы его грамматика была LL(1). Для парсинга C++ может быть и рационально использовать эти утилиты. Во-вторых, цель этих утилит сгенерировать очень быстрый код, который основывается на конечном автомате. Вручную понять, что делает, такой код бывает очень сложно, зато он быстрый. И скачать утилиту, понять как её вызывать, написать грамматику в формате, который утилита принимает, использовать сгенерированные исходники тоже занимает время. И для языка Оберон время на использование подобных утилит будет больше, чем ручное написание парсера.