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
j'utilise le deboggeur gdb
quelqu'un a une idée?
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()); }
Partager