|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 12 ![]() |
Bonjour,
Je recherche un Parser Générique. J'ai besoin d'analyser une dizaine de type de fichiers différents. Ce sont des fichiers de Control permettant le chargement d'objets divers dans des Progiciels. Ils font en général plusieurs dizaines de Mo. Il me semble que dans CPAN j'avais vu quelque chose d'approchant, mais impossible de le retrouver. Le style des fichiers est plutôt comme ceci : Code :
Pour d'autre fichier la valeur suit le paramètre sans pour autant que cette valeur soit obligatoire (donc on se retrouve sur un mot clé). Pas d'indentation, pas de balise de début et/ou de fin. La définition d'un objet et de ses objets fils peut être sur plusieurs lignes. J'ai essayé en traficotant des parser JSON ou YAML sans grande réussite J'ai aussi développé un module qui me rend quelques services, mais il est trop compliqué, torturé, pas assez générique et me fait monter la tension quand je le modifie. Par avance merci de votre aide. DCA |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Vu la tête du fichier, je ne vois pas trop d'autre solution que d'écrire soi-même le parser.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
00
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 12 ![]() |
Citation:
Merci pour ta réponse, mais c'est déjà fait (ci-dessus). Toutefois je relance le sujet sur le parser générique. Je suis sûr d'avoir vu quelque chose de ce type sur CAPN, mais impossible de retrouver comment je suis tombé dessus à l"époque (c'était il y a qq mois). Merci encore de votre contribution. DCA |
|
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 12 ![]() |
Bonjour,
Je reviens à la charge avec mon Parser. Je n'est rien trouvé de mieux que Parse::RecDescent (c'était peut-être bien ce que je cherchai et que j'ai nommé générique...). Toutefois j'ai un peu de mal avec. Je n'arrive pas à tout détecter ![]() Quelqu'un saurait-il m'aider sur ce Parser ou y aurait-il un Tuto (spécial neuneu) en Français quelque part Par avance merci de votre aide. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
J'ai vu un tuto pas mal fait dans le livre "Data Munging with Perl" sur ce super module de Damian Conway, mais c'est en anglais.
A voir si ce livre a été traduit en français, mais je n'en ai pas l'impression.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 12 ![]() |
Je confirme, ce bouquin n'est pas traduit en Français...
Mais effectivement il parait contenir des choses intéressantes. Aller je le prend. Merci pour cette info Lolo78 Je reste toujours en recherche d'aide sur RecDescent, merci d'avance. |
|
|
00
|
|
|
#7 | ||||
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 12 ![]() |
Mon problème est le suivant...
Les lignes du fichier : Code :
Code :
mais je ne récupère pas PARAM3 avec "CC", ainsi que PARAM7 avec "GG". Je ne reçois qu'une référence à un ARRAY dans lequel je trouve (avec DataDumper) : Une idée ??? Une remarque ??? Merci d'avance. |
||||
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Manifestement, tu ne récupères pas les params quand il y en a plus d'un param sur la même ligne.
Je pense que tu as peut-être un problème dans ta définition de ligne dans ta grammaire: Code :
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
||
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 12 ![]() |
Merci Lolo78, tu suis. J'apprécie
Toutefois c'est le but du (s?) dans : Code :
line : getControl(s?) paramAndValue(s?) Code :
line : getControl(s?) paramAndValue paramAndValue |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 12 ![]() |
Bonjour les gens,
Je viens de résoudre mon problème ![]() Il ne faut pas mettre return dans : Code :
{ return main::print_parameterStatement(@item) } Code :
{ main::print_parameterStatement(@item) } .C'était pas super clair dans la doc, mais voilà pour ceux que cela intéresse. Bonne année à tous et plus particulièrement à Lolo78 |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 567 ![]() |
Bonne année à toi aussi.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com