Désolé je ne pouvais pas penser à un meilleur titre, mais merci pour la lecture!Besoin de quelques idées sur la façon d'accomplir cela en Java (chaînes d'analyse)
Mon but ultime est de lire un fichier .java, de l'analyser et d'extraire tous les identifiants. Puis stockez-les tous dans une liste. Deux conditions préalables sont qu'il n'y a aucun commentaire dans le fichier, et tous les identifiants sont composés de lettres seulement.
En ce moment je peux lire le fichier, l'analyser par espaces, et tout stocker dans une liste. Si quelque chose dans la liste est un mot réservé java, il est supprimé. En outre, je supprime tous les symboles détachés qui ne sont attachés à rien (parenthèses et symboles arithmétiques).
Maintenant, je suis parti avec un tas de chaînes étranges, mais au moins, ils n'ont pas d'espaces en eux. Je sais que je vais devoir tout re-analyser avec un. delimiter afin de retirer des identifiants comme System.out.print, mais que sur les chaînes comme cet exemple:.
Logger.getLogger (MyHash.class.getName()) log (Level.SEVERE,
Après . re-analyse syntaxique par je serai parti avec plus de cordes folles comme:
getLogger (MyHash
getName())
log (niveau
SEVERE,
Comment vais-je pouvoir extraire tous les identifiants tout en omettant tous les déchets? Juste continuer à ré-analyser chaque symbole qui pourrait exister dans le code java? Cela semble plutôt boiteux et prend du temps. Je ne suis même pas sûr que cela fonctionnerait complètement. Alors, pouvez-vous suggérer une meilleure façon de faire cela?
Qu'est-ce qu'un identifiant? Je vois votre note qu'ils sont composés de lettres seulement, et que les mots réservés de Java ne sont pas des identifiants, mais: Est-ce que toutes les autres séquences d'identificateurs de lettres sont? Si oui, pourquoi ne faites-vous pas simplement un String.split() en utilisant une regex qui se sépare par une non-lettre, et en mettant les résultats dans un ensemble? – CPerkins