Salut, je développe un analyseur lexical pour mon cours de compilation, et j'ai un problème...
Pour mon analyseur, j'utilise lex et une liste chaînée pour conserver les tokens, et le problème c'est que la valeur du token est modifée par lex !
Voici une partie du code dans mon main :
yylex() va reconnaître les expressions réguilières que je lui donne et exécuter le code correspondant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
Code : Sélectionner tout - Visualiser dans une fenêtre à part [expression_reguliere] printf("2 -> %s\n", tete->value); ajoute(&teteTable, yytext); return;
Et si je prend comme exemple le code suivant : int main (...)
Alors j'aurais à l'affichage :
1 -> int
2 -> int main
Pour ce qui concerne la méthode ajoute(), voilà le code (je me suis inspiré du tutoriel sur les listes chaînées de developpez.com) :
Je pense que le problème vient de là : element->value = val; car val pointe vers yytext qui va être modifié à la boucle suivante... J'ai essayé de remplacer cette ligne par un strcpy mais j'ai du mal m'y prendre car alors tous les éléments de la liste chaînée étaient remplacés par le token en cours (et donc à la fin du fichier, j'avais une liste avec uniquement le dernier token...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
Quelqu'un a une idée ?
Merci d'avance !!

 

 
		
		 
         
  
			
			


 
   


 Problème pour conserver une valeur dans ma liste chainée
 Problème pour conserver une valeur dans ma liste chainée
				 Répondre avec citation
  Répondre avec citation


 
  
  
  
 
 
			 
  Envoyé par zarbiman
 Envoyé par zarbiman
					
Partager