Источник парсеров для языков программирования?

Я вычищаю свой старый проект, который вычисляет ряд простых метрик для крупных программных проектов. Одним из показателей является длина файлов / классов / методов. В настоящее время мой код «угадывает», где границы класса / метода основаны на очень грубом алгоритме (просмотрите файл, сохраняя «текущую глубину» и корректируя его всякий раз, когда вы встречаете скобки без кавычек; когда вы возвращаетесь к уровню, на котором начался класс или метод) Считайте, что это вышло). Однако существует много проблем с этой процедурой, и «простой» способ определить, когда ваша глубина изменилась, не всегда эффективен.

Чтобы это дало точные результаты, мне нужно использовать канонический способ (на каждом языке) обнаружения определений функций, определений классов и изменений глубины. Это равносильно написанию простого синтаксического анализатора для генерации деревьев разбора, содержащих по крайней мере эти элементы для каждого языка, к которому мой проект применим.

Очевидно, парсеры были написаны для всех этих языков раньше, так что, похоже, мне не нужно было дублировать эти усилия (хотя написание парсеров - это весело).Есть ли какой-нибудь проект с открытым исходным кодом, который собирает готовые библиотеки синтаксического анализатора для нескольких исходных языков? Или я должен просто использовать ANTLR, чтобы сделать свой собственный с нуля? (Примечание: я был бы рад перенести проект на другой язык, чтобы использовать отличный существующий ресурс, поэтому, если вы знаете один, не имеет значения, на каком языке он написан.)