Fonte de analisadores para linguagens de programação?
Estou tirando o pó de um projeto antigo que calcula várias métricas simples sobre grandes projetos de software. Uma das métricas é o tamanho dos arquivos / classes / métodos. Atualmente, meu código "adivinha" onde os limites de classe / método se baseiam em um algoritmo muito rudimentar (percorre o arquivo, mantém uma "profundidade atual" e ajusta-o sempre que encontrar colchetes sem aspas; quando você retorna ao nível em que uma classe ou método começou) , considere encerrado). No entanto, existem muitos problemas com esse procedimento, e uma maneira "simples" de detectar quando sua profundidade mudou nem sempre é eficaz.
Para que isso dê resultados precisos, preciso usar a maneira canônica (em cada idioma) de detectar definições de funções, definições de classe e alterações de profundidade. Isso equivale a escrever um analisador simples para gerar árvores de análise que contenham pelo menos esses elementos para todos os idiomas aos quais quero que meu projeto seja aplicável.
Obviamente, os analisadores foram escritos para todos esses idiomas antes, então parece que eu não deveria ter que duplicar esse esforço (mesmo que escrever analisadores seja divertido).Existe algum projeto de código aberto que coleta bibliotecas de analisador prontas para uso para vários idiomas de origem? Ou devo apenas usar o ANTLR para criar meu próprio zero? (Observação: ficaria muito satisfeito em portar o projeto para outro idioma para usar um ótimo recurso existente; portanto, se você souber de um, não importa em que idioma está escrito.)