#!/usr/bin/perl
use utf8;
binmode STDOUT,":utf8";

# tâche 1 : extraction des patrons
# tâche 2 : extraction des relations dependance

# patrons à extraire
# fichier conll : séparateur=tabulation

# on lit les contenues ligne par ligne et puis s'arrêter dàs qu'il y a des informations qu'on veut
#  deux programmes - udpipe treetagger

# parcourir globalement le ficher - parcourir la liste

my $fifleatraiter=shift @ARGV;

# on a créé un fichier contenant 6 lignes qui correspondent respectivement un patron
open($patron_fichier, 'patrons.txt');
my @patron_list=<$patron_fichier>;
close $patron_fichier;


foreach my $patron (@patron_list){
    print $patron;
    open my $input, '<:encoding(utf-8)', $fileatraiter;
    my @liste=<$input>;
    close $input;
    # tester chaque valeur de la liste pour s'arreter a ce qu'on veut

    # lire la liste en la vidant - traiter chaque element et le suivant sera au debut de la liste
    while (my $ligne=shift @liste){
        # si la ligne contenue dans #ligne correspond au premier du patron
        # premier du patron $patron[0]
        print $ligne;
        my $terme="";
       
        # on s'arrête sur la ligne qui contient le premier élément du patron
        # version udpipe : le seperateur est la tabulation
        # certains patrons sont comme VER:pper
        if ($ligne=~/<element><data type="type">($patron[0](:\w+)?)<\/data><data type="lemma">[^<]+?<\/data><data type="string">([^<]+?)<\/data><\/element>/){
       
            #concatenation
            #$1=[^<]+?
            $terme=$terme.$1;
            my $indice=1;
            # synchroniser la lecture des lignes du fichier et la lecture du patron $longueur + $indice

            my $longueur=1;
            # $#patron 
            # patron est une liste, 
            # scalar @patron renvoie la longueur de la liste
            # my $longueur = scalar @patron;

            # la variable indince commence à 1 et l'indice de la liste commence réellement à 0 
            while (($liste[$indice-1] =~/<element><data type="type">$patron[$indice])<\/data><data type="lemma">[^<]+?<\/data><data type="string">([^<]+?)<\/data><\/element>/) and ($indice <= $#patron)) {
        
                $indice++;
                $terme.=" ".$2;
                $longueur++;
            }
                 
        
            if ($longueur == $#patron +1) {
                $dicopatron{$terme}++;
                $nbTerme++;
                print $terme, "\n";
            }
        
            # alors il faut que je lise autant de ligne qu'il y a dans le patron
        
            # stocker les resultats de patrons dans un fichier
            open my $output_patron, ">:encoding(UTF-8)", "./results/$patron-$fileatraiter.txt";
            print $output_patron "$nbTerme éléments trouvés\n";
            foreach my $patron (sort {$dicopatron{$b} <=> $dicopatron{$a} } keys %dicopatron) {
	            print $output_patron "$dicopatron{$patron}\t$patron\n";

            }
            close output_patron;
        }
    }
}