#!/usr/bin/perl -w

<<DOC; 
Jachan Nataly, Goryainova Maria

Ce programme traite les fichiers texte produits à l'issue de l'exécution du programme Cordial, il a pour objectif d'extraire des patrons de ces fichiers de sortie et de les mettre dans un fichier texte dont le nom correspond au motif (les patrons choisis)

DOC

# On commence par déclarer les lites qui sont pour l'instant vides.
my (@LISTEDETOKEN, @LISTEDEPOS);


# $ARGV[0] correspond au premier argument qu'on introduit sur la ligne de commande , c'est-à-dire au fichier de sortie de cordial qu'on va parcourir
open(TEXT, $ARGV[0]);

#On parcourt chaque ligne du fichier
while(my $ligne=<TEXT>){
	
	# On supprime les fins de lignes
	$ligne=~s/\r//g; 
	
	#On enlève les sauts de ligne
	chomp($ligne);
	
	# Si la ligne contient: début de ligne, chaine, tabulation, chaine, tabulation, chaine, fin de ligne... 
	if($ligne=~/^[^\t]+\t[^\t]+\t[^\t]+$/)
	{
	
	# ...on découpe le fichier par la tabulation, après quoi on affiche le découpage des parties différentes à l'écran
	my ($token, $lemme, $pos) = split("\t", $ligne);

	print "POS : <$pos> LEMME: <$lemme> FORME : <$token> \n";
	
	# On ajoute les éléments de token et pos qu'on a découpés dans les listes respectivement
	push(@LISTEDETOKEN, $token);
	push(@LISTEDEPOS, $pos);
	}
}
# On ferme le fichier que l'on a parcouru
close(TEXT);

foreach my $element(@LISTEDEPOS){ 

}
#-------------------------------------------
# ARGV[1] correspond au deuxième argument sur la ligne de commande, dans notre cas c'est le fichier qui comporte le motif à rechercher 
open(TERM, $ARGV[1]);

# A partir de notre liste, on crée un scalaire, on doit transformer la liste qu'on parcourt en scalaire, alors on réunit la liste de POS et le scalaire à l'aide de l'espace
my $suitedepos=join(" ", @LISTEDEPOS);

# On parcourt le fichier pour extraire les patrons qui nous intéressent, $term prend pour valeur chaque ligne qu'il parcourt

while (my $term=<TERM>)
{
	chomp($term);
	my $i=0;
	
    my $nompatron=$term;
    $nompatron=~s/ /_/g;

# Les patrons retrouvés sont stockés dans le fichier $nompatron.txt, c'est-à-dire, le fichier prend pour nom le nom des patrons
    open(OUT, ">$nompatron.txt");
    print "$nompatron";
    
# On ajoute dans la liste de pos à chaque fois qu'on retrouve toutes les occurrences des termes
	while ($suitedepos=~/$term/g)
	{
		
		# La variable par défaut pour récupérer ce qu'il y a avant
		my $avant=$`; 
		
		my $nombredeblanc=0;
		
		# On compte le nombre de blancs, en l'incrémentant à chaque fois
		while ($avant=~/ /g)
		  {
			$nombredeblanc++;
		  }
		print "Nombre de blanc avec match: $nombredeblanc\n";
		$i++;
		
		# On découpe la liste de patrons, en remplaçant les blancs par des termes 
		my @listeelementpatron=split(/ /,$term);
		
		# Ainsi, la longueur du patron sera égal à toute la liste avec l'ajout d'un élément à chaque fois
		my $longueurpatron=$#listeelementpatron+1;
		
		# Une fois que la ligne entière est parcourue, on affiche la longueur du patron, en ajoutant 1 à chaque fois
		for (my $k=0;$k<$longueurpatron;$k++)
			{
			  print OUT "$LISTEDETOKEN[$nombredeblanc+$k]";
			  print "$term : MATCH OK $i \n";
			} 
			print OUT "\n";
	}	close (OUT);		
}
# On ferme le deuxième fichier
close(TERM);





