Parseur de code source avec des regex
	
	
		Bonjour
Je souhaite optimiser un parseur de fichier que j'avais déjà mis en place. L'idée est de parser toutes les fonctions appelés dans un fichier source .c
Je souhaite réecrire le parseur en utilisant les regex via la librairie regex de java. Après brève lecture, j'ai pondu un premier code pour tester que voici:
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   |  
public void parserFonction(String file){
 
 
		String regexFct = "^[\\w]+[\\s]*\\([\\s]*[\\w]*[\\s]*(,[\\s]*[\\w]*)*[\\s]*\\)" +
				"[\\s]*;[\\s]*$";
 
		//compilation de l'expression
		Pattern fonction = Pattern.compile(regexFct);
 
		//objet effectuant la recherche
		Matcher match = fonction.matcher(file);
 
		//Verification
		if(!match.matches()) 
		      System.out.println("Pas de fonction !");
 
		//match.reset();
		while(match.matches()){
			System.out.println(match.group(0));
		}
	} | 
 L'expression regulière :
	Code:
	
"^[\\w]+[\\s]*\\([\\s]*[\\w]*[\\s]*(,[\\s]*[\\w]*)*[\\s]*\\)[\\s]*;[\\s]*$";
 me permet de matcher les fonctions. Expression que j'ai testé avec le plugin regexutil d'Eclipse.
En testant sur une chaine de caractère comme celle ci:
	Code:
	
"enuLocalGDUGetStDgo = GDU_tenuGetStDgo(u16LocalIndex);"
 J'ai le résultat:
	Code:
	
Fonction pas trouve
 Preuve que la fonction n'est pas matchée. Savez vous pourquoi? J'ai cru comprendre que l'objet matcher permettait de matcher toutes les occurences des chaines qui correspondent au pattern(regex), présentes dans la chaine.
Cordialement