[Perl] Module pour parser des parenthèses imbriquées
Stéphane Gigandet
biz at joueb.com
Lun 18 Déc 10:41:27 CET 2017
Bonjour,
Pour Open Food Facts j'essaie de parser des listes d'ingrédients qui
ressemblent à ça :
"farine (12%), chocolat (beurre de cacao (15%), sucre [10%], protéines
de lait, oeuf 1%) - émulsifiants : E463, E432 et E472 - correcteurs
d'acidité : E322/E333 E474-E475, acidifiant (acide citrique, acide
phosphorique) - sel"
Que j'essaie de transformer en arbre comme :
[
{ingredient=>'farine', percent => 12},
[ingredient=>'chocolat', ingredients => [
{ingredient:'beurre de cacao', percent=>15},
{ingredient:'sucre', percent=>10},
{ingredient:'protéines de lait'},
{ingredient:'oeuf', percent=>1},
]},
{ingredient=>'émulsifiants', ingredients => [
{ingredient=>'E463'},
{ingredient=>'E432'},
{ingredient=>'E472'},
]},
...
Pour l'instant j'ai du code à base de regexp avec une fonction
récursive, mais c'est très laid et ça marche pas très bien :
https://github.com/openfoodfacts/openfoodfacts-server/blob/master/lib/ProductOpener/Ingredients.pm#L251
Je suis sûr qu'il y a des modules qui peuvent faire ce genre de trucs
très bien, vous en connaissez ?
Merci beaucoup,
Stéphane
Plus d'informations sur la liste de diffusion Perl