#!/usr/bin/perl
# on veut chercher des patrons morphosyntaxiques
# dans le fichier taggé par Cordial
# comment on va faire ?
# simple et rustique !!!!
#-------------------------------------------------
# PROGRAMME PRINCIPAL

# perl leprogrammedejm.pl 3208_iso.cnr patrons.txt 
#-------------------------------------------------
my @LISTETOKEN=();
my @LISTELEMME=();
my @LISTEETIQUETTE=();
#--------------------------------------------------
# lecture du fichier PATRON
open(PATRON,"$ARGV[1]");
#open(OUT, "sortie_3208.txt");
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;
    #print "Liste des tokens: @LISTETOKEN  \n";
    #print "Liste des tags:  @LISTEETIQUETTE  \n";
    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 = $`;	# $` ==> 
            # print "CB = ", $contextebefore, "\n";
            my $compteurblanc=0;
            while ($contextebefore=~m/ /g){
            	$compteurblanc++;
            }
            my @MONPATRONENCOURS = split(/ /, $patron);
            my $longueurpatron = $#MONPATRONENCOURS;
            my $bornesup = $compteurblanc + $longueurpatron ;
            print  "@LISTETOKEN[$compteurblanc..$bornesup] \n";

            #print "Tapez sur une touche pour continuer...\n";
        	#my $rep=<STDIN>;
        }
  
        
    }
}
