cara, mexo com compiladores, analisadores lexicos, sintaticos entre algumas outras coisas, para vc fazer isso, o correto é vc construir, nessa ordem:
1 - transformar cada letra do seu codigo em um char e incluir esse char em uma lista
2 - construir um analisador lexico, onde vc vai pegar cada char que foi feito no passo 1 e juntalos em tokens que façam sentido para a linguagem, por exemplo, se vc tem o conjunto de char ‘n’, ‘e’, ‘w’, vc sabe que na linguagem Java isso é uma palavra reservada, vc deve pegar esses 3 chars e transformar em 1 token “new” e incluila em uma List
3 - depois que o passo 1 e 2 estiverem concluidos, vc deve construir um “filtro” para percorrer essa sua List de tokens e verificar depois dos tokens do tipo “import” qual é a dependencia direta, o proximo passo é pegar as classes que estão no mesmo pacote, que não necessitam serem importadas, verificar o que existe depois do token “extends”, e por ai vai…
acho que não fui muito claro, mas esse assunto é um pouco complicado para explicar somente escrevendo em poucas linhas.
qualquer coisa estamos ai.
abraços!!