Salut, salut,
je suis à la recherche d'un parser efficace basé sur des templates, si possible en c/c++, java ou python.
Si quelqu'un a déjà utilisé un truc pratique...
Merki.
Salut, salut,
je suis à la recherche d'un parser efficace basé sur des templates, si possible en c/c++, java ou python.
Si quelqu'un a déjà utilisé un truc pratique...
Merki.
Un parser, c'est vague... Que veux-tu "parser" (xml, html, csv, etc.)? Donne-nous plus de précision.
Thierry
P.S. Le langage C/C++ n'existe pas. C'est l'un ou l'autre!
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Pour un log, un fichier xml, html... Je dirais Perl
Ca dépend de la compexité du parsing et du type de fichier bien entendu...
En fait je pensais vraiment à un parser le plus générique possible,
je n'ai jamais utilisé des trucs comme antlr ou simpleparse (python), et il y en a bien d'autres, donc si quelqu'un à déjà utilisé de tels outils.
(sinon
# un langage de programmation => flex/bison
je l'ai déjà pas mal utilisé mais je le trouve généralement trop complexe à utiliser
# un fichier xml => xerces
effectivement il marche bien mais il est très spécifique xml, et pas vraiment basé sur les templates (à moins de considérer les dtd/schemas comme des templates)
# un truc bien spécifique => la lib appropriée
vraiment spécifique, et il me semble bien difficile de trouver une librairie spécifique à un fichier que l'on défini soit même)
Je suis complètement d'accord mais un compilateur est encore un cas très spécifique.Envoyé par Mucho Voir le message
# un langage de programmation => flex/bison
je l'ai déjà pas mal utilisé mais je le trouve généralement trop complexe à utiliser
perso, je trouve que c'est super utile pour les front-end de compilateurs
Idem pour les fichiers ini qui sont des fichiers dans un format bien spécifique.
Personne n'a donc utilisé de parser générique par template ? (un peu dans le style Velocity mais dans un but de lecture et non d'écriture)
oui je suis encore tout à fait d'accord,
c'est pour ça que je disais dans mon premier message que je trouvait un parser type lex/yacc trop complexe à utiliser. C'est très bien pour un compilateur puisque par essence complexe, mais ma question est juste d'avoir des pistes pour des parsers plus simples basés sur des templates(et donc simples à écrire, à mettre en place et à modifier).
Par exemple : si je décrit un fichier type ini auquel je veux ajouter quelques concepts comme par exemple un type de données
=> utiliser flex/bison me semble trop complexe pour un besoin si simple
=> la lib. spécifique pour les .ini ne fonctionne plus
Il me semble que c'est vraiment un concept très proche de velocity (mais pour la lecture)
Merci
je ne connaissais pas ce parser (Boost.Spirit) il a l'air de correspondre à ce que je cherche,
du coup je me demandais si tu l'as déjà utilisé et ce que tu en penses
tu as awk sur unixoide aussi...
tester et approuvé pour tout type de grammaire/parsing pas trop complexe. Si jamais la grammaire deviens trop grosse, il faut mieux passer par du flex/bison, mais pour un petit langage, c'est du tout bon (je fais régulièrement des petits langages de description hyper spécifiques avec en quelques heures (voir moins avec de l'experience et des helper tout fait))
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Dans le genre Boost.Spirit en mieux (peut-être), vous avez Parsec en Haskell, ça a une philosophie proche de Spirit, mais avec l'inférence de type et l'approche fonctionnelle, il est plus facile de l'utiliser et de l'étendre.
Et Haskell est tout simplement un langage de plus haut niveau que C++, ce qui en fait un choix plus logique pour un petit parser et un petit logiciel pour l'utiliser.
--
Jedaï
Partager