#! usr/bin/perl 
#perl bao3_extraire_patron_cordial.pl Sortie_Bao2_Cordial.cnr cordial__patrons.txt
#cd /cygdrive/D/M1Pro/Gi/BAO
#Initialisation
print "attendez svp";
use locale;#pour afficher les caractères accentués 

open(FICSORTIE, ">Sortie_Bao3_Cordial_nom_adj.txt");
open (FICCORDIAL, "$ARGV[0]");#premier argument Sortie_Bao2_Cordial.cnr passé au programme
#$i=0;

#Lecture du text etiqueté
while (<FICCORDIAL>) {#pour chaque ligne 
	#ne lit pas les lignes qui ne contiennent que \r ou " ou &
	#next if ($_ !~/\r/);
	#next if ($_ !~/"/); 
	#next if ($_ !~/&/);
	next if($_ !~ /\t/);
	
	print ".";
	my $ligne = $_;
	chomp $ligne; #enlève la marque de fin de ligne
	#pour chaque triplet token-lemme-terme lexical, s'il ne s'agit pas de ponctuation
	
	if ($ligne !~/PCT/) {
		# met les éléments qui sont séparés de tabulation dans $ligne
		my @decoupeligne=split(/\t/, $ligne); 
		push(@token, $decoupeligne[0]);
		push(@lemme, $decoupeligne[1]); 
		push(@pos, $decoupeligne[2]);
		$i++;#iteration i
	}#if

	else { # pour continuer il faut vider des listes créées précédemment 
		# ------ traitement des listes -------
		open(FICPATRON, "$ARGV[1]");	# lecture du fichier des patrons passé comme deuxième argument
		while (<FICPATRON>) {
			my $le_patron = $_;#lit un patron (une ligne)  du fichier cordial__patrons.txt
			chomp $le_patron;#enlève la marque de fin de ligne
			my $compare="";
			#$compare=join ("\t",@pos);#met des tabulation entre les éléments de part of speech
							  #cela me traîne le token précédent le couple nom+adj correspondant au patron!
			
			#ou ça
			foreach my $element (@pos) { 
				$compare=$compare."\t".$element; #met des tabulations entre les éléments de part of speech
			} #foreach
		
			my $j=0;
			my $k=0;
			while ($compare=~/$le_patron/g) {
				my $avant = $`; #on copie l'élément qui suit
				my $apres = $'; #on copie l'élément qui précède
				while ($avant =~ /\t/g) {$j++};
				while ($apres =~ /\t/g) {$k++};
				print FICSORTIE "@token[$j-1..$i-$k-1]\n"; #écriture des patrons trouvés dans le fichier de la sortie
				$j=0;
				$k=0;
			}#while
		}#while
		close(FICPATRON);
		# ------ fin de traitement des listes -------
		@token=();
		@lemme=();
		@pos=();
		$i=0;
	}#else
}#while
close(FICSORTIE);
close(FICCORDIAL);