Во-первых, я не думаю, что это действительно так: во многих компиляторах большая часть времени не тратится на лексирование исходного кода. Например, в компиляторах C ++ (например, g ++) большая часть времени тратится на семантический анализ, в частности на разрешение перегрузки (пытаясь выяснить, какие неявные реализации шаблона следует выполнять). Кроме того, в C и C ++ большая часть времени часто тратится на оптимизацию (создание представлений графов для отдельных функций или всей единицы перевода, а затем выполнение длинных алгоритмов на этих графах).
При сравнении лексического и синтаксического анализа действительно может быть так, что лексический анализ является более дорогим. Это связано с тем, что оба используют конечные автоматы, то есть существует фиксированное количество действий на элемент, но количество элементов в лексическом анализе (символы) намного больше, чем в синтаксическом анализе (токены).