Bonjour,

sur la capture d'écran, on voit p[1]="epsilon" et l'instruction de la ligne 273 du if se fait quand-même alors que la condition n'est pas vérifiée
Nom : ecran.jpg
Affichages : 337
Taille : 60,5 Ko
j'utilise le deboggeur gdb
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
32
33
34
35
36
void grammaire::recursdirecte(std::string A){
  std::vector<std::vector<std::string>>retour;
  std::vector<std::string> X,Y;
  bool premieralpha=true;
  size_t indice=0;
  for(auto &p:grammaire_s)
    if(p[0]==A){
      if(p[1]==A)
	if( ! annulable(A) && premieralpha){
	  Y.push_back(A+"prim");
	  Y.push_back("epsilon");
	  retour.push_back(Y);
	  Y.clear();
	  premieralpha=false;
	}
	X.push_back(A+"prim");
	X.insert(X.end(),p.begin()+2,p.end());//alpha_n
	X.push_back(A+"prim");
	retour.push_back(X);
	X.clear();
      }
      else{
	X.push_back(A);
	if(p[1] != "epsilon")
	  X.insert(X.end(),p.begin()+1,p.end());//beta_n
	X.push_back(A+"prim");
	retour.push_back(X);
	X.clear();
      }
  for(size_t i=0;i<grammaire_s.size();i++)
    if(grammaire_s[i][0]==A){
      grammaire_s.erase(grammaire_s.begin()+i);
      i--;
    }
  grammaire_s.insert(grammaire_s.end(),retour.begin(),retour.end());
}
quelqu'un a une idée?