#!/usr/bin/perl
#--------------------------------------------------------------------
<<DOC;
Format d\'entree : un texte étiqueté et lemmatisé par treetagger + une liste de POS décrivant le patron (ex: NOM ADJ)

perl programme.pl fichierTT patron

Format de sortie : la liste des occurrences du patron s\'affiche dans le fichier de sortie.txt
DOC
#--------------------------------------------------------------------
use utf8;
binmode STDOUT,":utf8";
#--------------------------------------------------------------------
my $fileatraiter=shift @ARGV;  # input
my @PATRON=@ARGV; # patron morphosyntaxique
open my $input, "<:encoding(utf-8)",$fileatraiter;
my @LISTE=<$input>; # mettre fichier dans liste
close($input);
while (my $ligne=shift @LISTE) {
	# si la ligne contenue dans $ligne correspond au premier du patron $PATRON[0]
	my $terme="";
	#on récupère le terme grâce à une expression régulière qui utilise le patron indiqué en 1ere position
	if ($ligne=~/<element><data type="type">$PATRON[0]<\/data><data type="lemma">[^<]+?<\/data><data type="string">([^<]+?)<\/data><\/element>/) {
		$terme=$terme.$1;
		my $longueur=1;
		my $indice=1;
		# alors il faut que je lise autant de ligne qu'il y a dans le patron et tester chaque terme du patron..; on récupère le terme qui correspond patron indiqué en 2eme position.
		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}++; # on ajoute termes à un dictionnaire
			$nbTerme++;
		}
	}	
}
open my $fileResu,">:encoding(UTF-8)","perlIsTheBigOne.txt";
print $fileResu "$nbTerme éléments trouvés\n";
foreach my $patron (sort {$dicoPatron{$b} <=> $dicoPatron{$a} } keys %dicoPatron) {
	print $fileResu "$dicoPatron{$patron}\t$patron\n";
}
close($fileResu);