#!/usr/bin/perl
#mode d'emploi: perl programme fichierCordial fichierPatron

#ouverture du fichier CORDIAL
open(FICTAG, "<:encoding(iso-8859-1)",$ARGV[0]);

#lecture du fichier: on s'arrete quand on trouve une ponctuation
my @tokens=();
my @lemmes=();
my @pos=();

while(my $ligne =<FICTAG>) {
	if ($ligne!~/PCTFORTE/) {
		#on traite la ligne et on remplit les 3 listes: token, lemme, pos
		#on transforme la chaine $ligne en une liste (le premier element est une forme, le second un lemme etc.)
		#$ligne contient qqch comme "Faiseurs\tfaiseur\tNOM\n"
		chomp($ligne);
		$ligne=~s/\r//g;
		my @listerangee=split(/\t/, $ligne); #@listerangee contient ("Faiseurs", "faiseur", "NOM")
		push(@tokens, $listerangee[0]);
		push(@lemmes, $listerangee[1]); 
		push(@pos, $listerangee[2]); 
	}
	else {
		#traitemenet a faire
		#print "TOKENS contient: @tokens\n";
		#print "LEMMES contient: @lemmes\n";
		#print "POS contient: @pos\n";		
		&TraiteListePos();
		
		#remise a zero les listes
		@tokens=();
		@lemmes=();
		@pos=();
	}
}
close (FICTAG);
#-------------------------------------
sub TraiteListePos {
	#c'est ici qu'on va faire le match des POS 
	#on va commencer a s'interesser au fichier contenant les patrons (second argument du programme)
	open(TERMES, "<:encoding(iso-8859-1)",$ARGV[1]);
	
	#on transforme @pos en une chaine de caracteres
	my $postransformemachaine=join("#", @pos);
	#print "postransformemachaine contient:", $postransformemachaine, "\n";
	
	#lecture du fichier des patrons
	while(my $ligneterme=<TERMES>) {
		# $ligneterme contient par exemple NC[A-Z]+#PREP#NC[A-Z]+
		#on veut comparer $postransformemachaine et $ligneterme
		chomp($ligneterme);
		$ligneterme=~s/\r//g;
		my $compteurdematch=0;
		#print "TRANSFORM = ",$postransformemachaine,"\n";
		#print "ligne de terme= ",$ligneterme,"\n";
		while($postransformemachaine=~/$ligneterme/g) {
			my $avant=$`;
			my $apres=$';
			#print "OK"; 
			#<STDIN>;
			#----------------------
			my $nombredediese=0;
			while($avant=~/\#/g) {
				$nombredediese++;
			}
			#print $nombredediese, "\n";
			#-----------------------
			my $nombredediesedanstermetraite=0;
			while($ligneterme=~/\#/g) {
				$nombredediesedanstermetraite++;
			}
			#print $nombredediesedanstermetraite, "\n";
			#-----------------------
			#il ne reste plus qu'aller chercher les correspondances dans @tokens
			for(my $i=$nombredediese; $i<=$nombredediesedanstermetraite+$nombredediese; $i+=1) {
				print $tokens[$i], " ";
			}
			print "\n";
			#$compteurdematch++
			#print "MATCH, $compteurdematch fois \n"
		}
	}
close(TERMES);
}