Salut a tous
je suis entrain de programmer un analyseur lexical sous java, j'ai un texte que je le découpe avec la méthode Split et je mets tous le mots dans un tableau tabmot
j'ai 5 liste (mots clé , separateur operateur identificateur et constante), il cherche chaque mots du tableau dans les 5 liste si il le trouve il me donne le mot le nom de la liste et sa positon
par exemple Texte : public static void main
il me donne : public mot clé position 0
seulement je veux qu'il prend compter des majuscule si il trouve Public il doit m'afficher une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Map<String, List<String>> listes = new HashMap<>(); listes.put("mot clé",a1); listes.put("spérateurs",a2); listes.put("operateurs",a3); listes.put("constante",a7); listes.put("identificateur",a5);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public class ListePosition { private final String nom; private final int index; public ListePosition(String nom, int index) { this.nom=nom; this.index=index; } public String getNomListe() { return nom; } public int getIndexDansLaListe() { return index; } public static Optional<ListePosition> chercher(Map<String, List<String>> map, String mot) { return map.entrySet() .stream() .filter(e-> e.getValue().contains(mot)) .map(e-> new ListePosition(e.getKey(), e.getValue().indexOf(mot))) .findFirst(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for(String mot : tabmot ) { Optional<ListePosition> position = ListePosition.chercher(listes, mot); if ( position.isPresent() ) { position.ifPresent(e-> System.out.printf("Mot %s trouvé dans la liste %s en position %d%n", mot, e.getNomListe(), e.getIndexDansLaListe()+1)); } else { System.out.println(mot+ " : mot introuvable " ); }}
Partager