Visual C++ g�re aussi les regex depuis plusieurs ann�es. Globalement, ce compilateur � tendance � �tre assez lent pour le support du langage, mais rapide pour le support des biblioth�ques.
Visual C++ g�re aussi les regex depuis plusieurs ann�es. Globalement, ce compilateur � tendance � �tre assez lent pour le support du langage, mais rapide pour le support des biblioth�ques.
Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.
Oui, enfin � l'heure actuelle les regex, ce n'est plus une affaire de biblioth�que mais une partie int�grante du langage. M�me si certains compilateurs tardent encore un peu � int�grer cet aspect de la nouvelle norme C++11, c'est en cours, et cela ne devrait plus gu�re tarder, sachant que pour l'instant Clang dame le pion aux autres compilateurs pour cet aspect des choses.
Je parlais de la gestion des regex en tant qu'�l�ments de la biblioth�que standard. Je ne sais pas trop ce que tu appelles partie int�grante du langage, mais les regex restent et resteront une affaire de la biblitoh�que standard. Elle ne demandent aucune modification au "core language" lui-m�me.
Les regex ont �t� introduites dans TR1 (publi� en 2007 officiellement, bien que n'�tant pas un standard en tant que tel). Visual C++ les as support�es � partir de visual C++2008 SP1. Elles ont ensuite �t� confirm�es en C++11 (et bascul�es de std::tr1:: vers std:: ), et visual C++ les a imm�diatement support�es.
Et donc Clang ne dame le pion � personne pour cet aspect (je ne dis pas qu'il n'est pas bon, loin de l�, c'est juste que je n'aime pas entendre encens� un compilateur sur les aspects o� il n'a rien de remarquable, et que ce soient Clang ou gcc, aucun des deux n'est particuli�rement remarquable sur les aspects support de la biblioth�que standard, ce qui est d'autant plus surprenant que ce sont g�n�ralement des aspects simples � int�grer... ).
Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.
Si le but �tait effectivement d'analyser du code C ou C++ quelconque, les regex ne suffiraient effectivement pas (et faire un parseur pour du C++ reste une t�che non triviale).
Mais l�, il semblerait que le but soit de reconnaitre des motifs dans du code sp�cifique �crit d'une mani�re bien pr�cise. Dans ce cadre, les regex me semblent appropri�es.
Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.
Un conseil, pour les regex, � moins d'�tre maso, il est plus que tr�s recommand� d'utiliser les raw string (http://cpp.developpez.com/redaction/...s/cpp11/#LIV-C).
Hello guys
Si vous voulez analyser du code source C++, le mieux est quand m�me d'utiliser l'api C++ de LLVM/Clang. Vous aurez un v�ritable AST C++ analysable sur tous les aspects voulus.
C'est un peu overkill au vu du sujet de base car il y a un co�t d'apprentissage, mais la solution une fois mise en place est � mon avis tr�s simple.
Par experience, je suis mefiant du cas ou on veut chercher des motifs dans du code. Generalement il est impossible definir ces motifs correctement simplement parceque si il sagit de semantique du langage, il ne sagit plus de motifs. Ici on parle de noms de variables, ce qui m'apparait just suffisamment complexe pour que les regex soient un piege (qui ne se voit qu'apres avoir passe trop de temps ici).
(une legere note humoristique plus ou moins a ce sujet, voir la reponse la: http://stackoverflow.com/questions/1...contained-tags )
Disons que c'�tait juste la phrase "toujours � gauche de la fonction "load_bitmap"." qui me laisse penser qu'on est peut-�tre dans un cas assez cadr� pour que �a passe. Et la diff�rence de temps entre les deux impl�mentation m�rite peut-�tre de le tenter.
Ce qui est clair, c'est que je ne ferais �a que pour du code "local", pas forc�ment du code livr� � un client ayant pour but d'�tre utilis� de longues ann�es...
Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.
J'aurais plut�t conseiller Flex(++) et Bison(++) qui sont les outils les plus puissants que je connaisse dans le domaine de l'analyse lexicale (automate � �tat fini, regex) et syntaxique (analyse LR ou plut�t LALR) - sinon, il y a l'OCaml avec ocamllex et menhir, encore plus puissant mais bon le choix a d�j� �t� fait.
Apr�s, tout ceci semble un peu bourrin pour la petite probl�matique que tu veux faire. � savoir si tu veux faire �a proprement (cf. les outils plus hauts) ou de fa�on tricky. Sinon, la documentation est tr�s bien faite sur ces deux outils qui sont largement r�pandus. et �a m'�tonnerait pas de voir d�j� sur internet les fichiers correspondant � un lexer/parser C et C++ (j'ai bien trouv� PHP).
Je pense aussi que c'est 100x plus simple. M�me s'il y a un co�t �a sera toujours moindre que d'essayer de faire des regex ou d'apprendre la syntaxe moisie de Bison/Flex.
Et les fonctions de parsing/ast/compilation de clang sont disponibles avec des bindings python en plus de l'API C et C++.
Partager