#!/usr/bin/perl
#-------------------------------------------------
# PROGRAMME PRINCIPAL
#-------------------------------------------------
my @LISTETOKEN=();
my @LISTELEMME=();
my @LISTEETIQUETTE=();
#--------------------------------------------------
# lecture du fichier PATRON
open(PATRON,"$ARGV[1]");
my @LISTEPATRON=<PATRON>; # lecture globale du fichier dans une liste
close(PATRON);
#--------------------------------------------------
# le fichier cordial est le premier argument du programme
open(CORDIAL,"$ARGV[0]");  # visiblement pas de pb d'encodage...
while (my $ligne=<CORDIAL>) {
    $ligne=~s/\r//;
    chomp($ligne);
    if ($ligne=~/^([^\t]+)\t([^\t]+)\t([^\t]+)$/) {
        my ($token,$lemme,$etiquette)=($1,$2,$3);
        if ($etiquette!~/PCTF/) {
            push(@LISTETOKEN,$token);
            push(@LISTELEMME,$lemme);
            push(@LISTEETIQUETTE,$etiquette);
        }
        else {
            &compare(\@LISTETOKEN,\@LISTEETIQUETTE);
            # creation d'un reference vers une liste
            @LISTETOKEN=();
            @LISTEETIQUETTE=();
            @LISTELEMME=();
        }
    }
}
# -----------------------------------------------------
# SOUS - PROGRAMMES
#------------------------------------------------------
sub compare {
    # TRAITEMENT...
    my ($first,$second)=@_;
    my @LISTETOKEN=@$first;
    my @LISTEETIQUETTE=@$second;
    foreach my $patron (@LISTEPATRON) {
        $patron=~s/\r//;
        chomp $patron;
        #print "$patron\n"; 
        my $texte_des_pos=join(" ",@LISTEETIQUETTE);
        while ($texte_des_pos=~/$patron/g) {
            my $contextebefore=$`;
            my $compteurblanc=0;
            while ($contextebefore=~/ /g) {
                $compteurblanc++;
            }
            my @MONPATRONENCOURS=split(/ /, $patron);
            my $longueurpatron=$#MONPATRONENCOURS;
            my $bornesup = $compteurblanc + $longueurpatron;
            print "@LISTETOKEN[$compteurblanc..$bornesup] \n";
        } 
    }
}
