Bonsoir tout le monde

pour cette grammaire je veux calculer les premiers et les suivant de chaque Vn
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
S -> a|A|B|e
A -> S|bc|j|b
B -> d
grâce a l'aide d'un cher amis j'ai pu détecter les Vn et les Vt
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
26
27
28
29
30
31
 
Matcher matcher = Pattern.compile("(.+)->(.+)").matcher(chaine);
 
        List<String> listVn = new ArrayList<>();
        List<String> listVtpro = new ArrayList<>();
        while( matcher.find() ) { 
           listVn.add( matcher.group(1).trim() ); 
           listVtpro.add( matcher.group(2).trim() );
        }
 
        List<String> listVt = new ArrayList<>();
 
           for(String Vtpro : listVtpro) {
 
           for(String vt :  Vtpro.split("")) {
      if(( !listVn.contains(vt)) &&( !listVt.contains(vt))&&  (!vt.equals("|"))      ){
	   listVt.add(vt);
      }
           }
 
        }
           System.out.println( " les Vn sont ");
  		 for( int i  = 0; i < listVn.size(); i++)
  		    {
  		    System.out.println( listVn.get(i));
  		    } 	
  		 System.out.println( " les Vt sont ");
  		  for( int i  = 0; i < listVt.size(); i++)
  		    {
  		    System.out.println( listVt.get(i));
  		    }
quelqu'un a une idée !?