C++
2010-04-30 13:00:44 UTC
Bonjour à tous,
J'ai une question concernant Parse::Rescent. Je veux construire un
tableau les associations mot, valeur d'une ligne. Voici mon
programme :
#! /usr/bin/perl
use strict;
use warnings;
use Parse::RecDescent;
use Data::Dumper;
$::RD_TRACE = 1;
$::RD_HINT = 1;
our $ligne;
my $grammaire = <<'EOT';
startrule: <rulevar: local @Valeurs>
startrule: infos
{ { valeurs => [ @Valeurs ] } }
infos: info 'et' infos | info
{ print 'Infos\n'; }
info: mot',' nombre
{ push @Valeurs, { mot => $item{ mot }, nombre =>
$item{ nombre } }; }
mot: /\w+/
nombre: /\d+/
EOT
my $parseur = new Parse::RecDescent( $grammaire ) or die "Erreur\n";
my $valeurs = $parseur->startrule( "mot1, 10 et mot2, 11 et mot3,
13" ) or die "Erreur\n";
print Dumper( $valeurs ) . "\n";
La dernière association est dupliquée dans mon tableau. Pourquoi ?
Merci.
Jean-Michel
J'ai une question concernant Parse::Rescent. Je veux construire un
tableau les associations mot, valeur d'une ligne. Voici mon
programme :
#! /usr/bin/perl
use strict;
use warnings;
use Parse::RecDescent;
use Data::Dumper;
$::RD_TRACE = 1;
$::RD_HINT = 1;
our $ligne;
my $grammaire = <<'EOT';
startrule: <rulevar: local @Valeurs>
startrule: infos
{ { valeurs => [ @Valeurs ] } }
infos: info 'et' infos | info
{ print 'Infos\n'; }
info: mot',' nombre
{ push @Valeurs, { mot => $item{ mot }, nombre =>
$item{ nombre } }; }
mot: /\w+/
nombre: /\d+/
EOT
my $parseur = new Parse::RecDescent( $grammaire ) or die "Erreur\n";
my $valeurs = $parseur->startrule( "mot1, 10 et mot2, 11 et mot3,
13" ) or die "Erreur\n";
print Dumper( $valeurs ) . "\n";
La dernière association est dupliquée dans mon tableau. Pourquoi ?
Merci.
Jean-Michel