#1 Le 06/10/2008, à 23:00
- diSha
Quel language pour programmer un parser de fichier ?
Bonjour,
je dois réaliser un parseur de fichier, j'aimerais savoir quoi choisir entre les langages ? (ruby, python, java, C, etc) ?
Et aussi, si l'on ne me laisse le choix entre seulement le C et le C++, dois je preferer le faire en C++ ?
Derniere question, ce parseur peut etre integrer dans un logiciel qui existe deja codé en C++, faut il alors forcément le faire en C++ si l'on veut faire l'intégration ?
Merci !
Bonne soirée
#2 Le 06/10/2008, à 23:50
- nalian34
Re : Quel language pour programmer un parser de fichier ?
Mon avis:
- si parmis les langages que tu cites tu en connais un , utilise le
- si tu n'en connais aucun, essayes Ruby, il a l'air bien pour la manipulation de fichiers, plus simple que Java
Je ne sais pas répondre à la dernière question
On peut intégrer du C/C++ dans du Java, du Ruby aussi
Bonne soirée
Hors ligne
#3 Le 07/10/2008, à 06:23
- diSha
Re : Quel language pour programmer un parser de fichier ?
oui ok pour le sens ruby qui integre du C / C++ mais dans l'autre sens ? le Ruby qui s'integre dans du C / C++ c'est possible ?
Merci d'avoir répondu si tard
#4 Le 07/10/2008, à 07:02
- obiwankennedy
Re : Quel language pour programmer un parser de fichier ?
Le python et le perl sont assez facile à prendre en main pour ce genre de chose: l'utilisation d'expressions régulières est facilitée.
Sinon le top serait d'utiliser Yacc et du C++ mais bon, Yacc demande une certaine connaissance, pas évident de commencer de rien. (c'est un peu la royce des technologies pour faire un parseur, pour un petit projet c'est peut-être pas la peine.)
Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam
Hors ligne
#5 Le 07/10/2008, à 08:13
- jofab
Re : Quel language pour programmer un parser de fichier ?
Bonjour,
En fait tu as lex et yacc (bison et flex?) qui sont effectivement fait pour cela mais tu peux l'ecrire en ce que tu veux.
Cela depend effectivement de plusieurs choses :
* Le format : Sais-tu deja le format de fichier que tu va devoir parser ? As-tu la grammaire ? La grammaire est un element important. Perso, si elle est simple, je n'utiliserai pas lex et yacc.
* L'application : effectivement si l'application est C++, je ferai le parseur plutot en c ou cpp pour rester homogène (mais c'est pas impossible de faire autre chose, il faut juste veiller à ne pas avoir au final un gros patch-work où tout le monde a fait sa sauce de son cote car ca devient difficile à maintenir)
* Ton gout personnel. Il faut aussi que tu sois à l'aise...
Bon courage
bon courage
Hors ligne
#6 Le 07/10/2008, à 08:20
- diSha
Re : Quel language pour programmer un parser de fichier ?
Justement, je ne me sens pas trop a l'aise en C, et je n'ai jamais codé en C++. pour la grammaire elle est plutot simple environ une 15zaines de mots différents.
J'aimerais hésiter le C, C++, apres j'ai peur pour l'integration.
Si elle est impossible autrement autant tout faire en C tout de suite.
#7 Le 07/10/2008, à 08:56
- jofab
Re : Quel language pour programmer un parser de fichier ?
pour l'integration, il y a des choses (comme boostpython ou swig) qui permettent d'appeler depuis python ou ruby ... les codes compiles (ecrit en c/cpp). L'inverse je pense que ca doit etre possible (un peu plus lourd car il faut lancer l'interpreteur ?) mais j'ai jamais fait.
Hors ligne
#8 Le 08/10/2008, à 11:34
- Luc Hermitte
Re : Quel language pour programmer un parser de fichier ?
Pour parser, j'aurais plutôt choisi perl. ruby éventuellement en second choix puisqu'il se revendique descendre entre autres du perl.
Entre C et C++ ...
Personnellement, moins je fais de C, mieux je me porte. Le C++ m'apporte son lot d'abstractions qui me simplifient grandement la vie.
Par contre les IOStream du C++ ne sont vraiment pas adaptés pour ce qui est de parser un fichier.
Souvent, on en revient à la solution rude mais éprouvée qu'est lex/yacc (flex/bison), qui au fond n'est que du C (même si on peut apprécier de le coupler au C++ si la logique à mettre en oeuvre au fur et à mesure du parsage est un tant soit peu complexe).
Dans les alternatives C++, boost offre trois (sous-)bibliothèques qui peuvent aider:
- boost.regex qui suffit tant que l'on n'a que des regex à manipuler et éventuellement des transformations à réaliser
- boost.spirit qui permet d'exprimer simplement des grammaires simples (les grammaires complexes prennent des plombes à être compilées)
- boost.xpressive que je n'ai pas encore pris le temps d'approfondir (j'en parle donc juste pour référence)
Dans les alternatives C++ toujours, il y a ANTLR que je n'ai plus suivi depuis un paquet de temps.
HTH.
#9 Le 08/10/2008, à 15:19
- MrWaloo
Re : Quel language pour programmer un parser de fichier ?
tout dépend de ce que tu dois obtenir au final, mais perl est facile, rapide, portable
"De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent !!" (Desproges)
UNIX is an operating system, OS/2 is half an operating system, Windows is a shell, MS-DOS is a boot sector virus.
Hors ligne
#10 Le 08/10/2008, à 18:00
- Link31
Re : Quel language pour programmer un parser de fichier ?
Justement, je ne me sens pas trop a l'aise en C, et je n'ai jamais codé en C++. pour la grammaire elle est plutot simple environ une 15zaines de mots différents.
Pour ça Boost.Xpressive pourrait convenir. Attention à la syntaxe, elle est très particulière. Lis bien la documentation si tu décides de l'utiliser.
Et il faut noter qu'un programme utilisant Xpressive est encore plus long à compiler qu'avec Spirit.
Le problème, c'est que tu n'as jamais codé en C++... Tu risques d'avoir beaucoup de mal à utiliser Xpressive ou Spirit (c'est déjà relativement ardu quand on connaît le langage...).
Peut-être que Perl serait mieux pour commencer.
Dernière modification par Link31 (Le 08/10/2008, à 18:00)
Hors ligne
#11 Le 09/10/2008, à 08:59
- Bigcake
Re : Quel language pour programmer un parser de fichier ?
Etant un grand adepte(malade?) de C je te dirait de faire du C , t'auras pas vraiment de souci de portablilité avec sa ^^
Mais il est clair que le perl est vraiment plus facile et rapide à mettre en place pour ton cas.
Pour l'intégration du perl, il me semble bien (a vérifier) qu'il existe des possiblités d'utiliser ton script dans du c/c++ mais je ne me rappel plus du tout comment faire par contre.
"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5
Hors ligne
#12 Le 09/10/2008, à 09:04
- rniamo
Re : Quel language pour programmer un parser de fichier ?
en c++ il y a plein de librairies de parsing (surtout pour xml). Au pire tu peux parser à la main en C ou C++ sans soucis.
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#13 Le 09/10/2008, à 10:32
- Aneldix
Re : Quel language pour programmer un parser de fichier ?
+ 1 pour le perl.
Gaffe : tu vas bouffer des expressions régulières.
Java est aussi bien car gere bien le xml.
Je déconseillerais le c / c++
Hors ligne
#14 Le 09/10/2008, à 14:28
- nicolas66
Re : Quel language pour programmer un parser de fichier ?
Hum juste une question : peux-tu qd même nous donner un exemple de fichier à parser ?
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#15 Le 09/10/2008, à 16:31
- rniamo
Re : Quel language pour programmer un parser de fichier ?
c'est pas faux : quel type de fichier et as tu droit aux librairies ? (si oui n'importe quel langage convient).
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#16 Le 09/10/2008, à 22:35
- MrWaloo
Re : Quel language pour programmer un parser de fichier ?
tout dépend de ce que tu dois obtenir au final, mais perl est facile, rapide, portable
oui, donc tout dépend de ce que tu dois obtenir au final...
(je me site ^^)
"De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent !!" (Desproges)
UNIX is an operating system, OS/2 is half an operating system, Windows is a shell, MS-DOS is a boot sector virus.
Hors ligne