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:
	
	| 12
 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 :
	
	"^[\\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:
	
	"enuLocalGDUGetStDgo = GDU_tenuGetStDgo(u16LocalIndex);"
 J'ai le résultat:
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
						
					
Partager