J'ai une question concernant Parse::Rescent. Je veux construire un tableau les associations mot, valeur d'une ligne. Voici mon programme :
[... exemple...]
La dernière association est dupliquée dans mon tableau. Pourquoi ?
Parc qu'il n'y a pas de backtrack sur le résultat des actions sémantiques. Donc lorsque 'info' est reconnu la dernière fois, c'est pour tester s'il est suivi de 'et' et comme il ne l'est pas, il est parsé une deuxième fois (mais seul cette fois). Mais on est quand même passé deux fois dans 'info' donc l'information est dupliquée.
Je n'utilise pas Parse::RecDescent mais plutôt Parse::Yapp que je trouve plus simple et puissant. Mais je pense que la solution est la même. Il faut utiliser une récursivité à gauche :
infos : infos 'et' info | info;
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
J'ai une question concernant Parse::Rescent. Je veux construire un
tableau les associations mot, valeur d'une ligne. Voici mon
programme :
[... exemple...]
La dernière association est dupliquée dans mon tableau. Pourquoi ?
Parc qu'il n'y a pas de backtrack sur le résultat des actions
sémantiques. Donc lorsque 'info' est reconnu la dernière fois, c'est
pour tester s'il est suivi de 'et' et comme il ne l'est pas, il est
parsé une deuxième fois (mais seul cette fois). Mais on est quand même
passé deux fois dans 'info' donc l'information est dupliquée.
Je n'utilise pas Parse::RecDescent mais plutôt Parse::Yapp que je trouve
plus simple et puissant. Mais je pense que la solution est la même. Il
faut utiliser une récursivité à gauche :
infos : infos 'et' info | info;
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
J'ai une question concernant Parse::Rescent. Je veux construire un tableau les associations mot, valeur d'une ligne. Voici mon programme :
[... exemple...]
La dernière association est dupliquée dans mon tableau. Pourquoi ?
Parc qu'il n'y a pas de backtrack sur le résultat des actions sémantiques. Donc lorsque 'info' est reconnu la dernière fois, c'est pour tester s'il est suivi de 'et' et comme il ne l'est pas, il est parsé une deuxième fois (mais seul cette fois). Mais on est quand même passé deux fois dans 'info' donc l'information est dupliquée.
Je n'utilise pas Parse::RecDescent mais plutôt Parse::Yapp que je trouve plus simple et puissant. Mais je pense que la solution est la même. Il faut utiliser une récursivité à gauche :
infos : infos 'et' info | info;
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>