#!/usr/bin/perl

##################################################
# DESCRIPTION DU PROGRAMME
# Recherche de patrons syntaxiques dans la version étiquetée du corpus Prématurés 96 (p96.tag).

# On tentera de mettre au jour des structures syntaxiques récurrentes dans le corpus autour de formes pôles.
# 1. Vous choisirez cinq formes graphiques différentes. Vous construirez ensuite un programme perl qui prend en entrée le fichier catégorisé et un nombre donné. 
# Ce nombre définira la longueur de la fenêtre de mots que vous souhaitez extraire autour de la forme pôle.
# 2. Vous appliquerez ce programme sur votre fichier catégorisé.
##################################################


open (FILE, "p96.tag");
open (FILEOUT, ">sortie3.html");
print FILEOUT "<HTML>\n";

print "Quel mot chercher ? (ex: soins bebe douloureux detendu contact pleure)\n";
$mot=<STDIN>;
chomp $mot;

print "Voulez-vous afficher les occurrences seulement (1), les etiquettes seulement (2) ou les deux (3) ?\n";
$rep = <STDIN>;
chomp $rep ;

print "Combien de mots AVANT l'occurrence ?\n";
$nbr1=<STDIN>;
chomp $nbr1 ;
--$nbr1 ;
print "Combien de mots APRES l'occurrence ?\n";
$nbr2=<STDIN>;
chomp $nbr2 ;
--$nbr2 ;

print FILEOUT "<HEAD><TITLE>Concordancier de :: $mot</TITLE></HEAD>\n";
print FILEOUT "<BODY>\n";
print FILEOUT "<TABLE width=\"50%\" align=\"center\">\n";
print FILEOUT "<TR><TD align=\"right\"><b>Contexte gauche</b></TD><TD align=\"center\"><b>Forme pole</b></TD><TD align=\"left\"><b>Contexte droit</b></TD></TR>";

while ($ligne = <FILE>)
{
	if ($rep =~ /3/) #tag et tokens
	{
		if ($ligne=~/($mot\/[A-Z]+[0-9]*[A-Z]+) /) #si rencontre telle forme suivi de sa catég
		{
			$gauche = $` ;
			$droite = $' ;
			$pole =$1; #au lieu de $& : on évite de récupérer les espaces (qui sont cherchés par le motif)
			chomp($droite) ;	
			@g = split (/ /, $gauche) ;
			@d = split (/ /, $droite) ;
			$t=$#g-$nbr1;
			print FILEOUT "<TR>	<TD align=\"right\">@g[$t..$#g]</TD>
								<TD align=\"center\"><font color=\"blue\"><b>$pole</b></font></TD>
								<TD align=\"left\">@d[0..$nbr2]</TD></TR>";
		}
	}
	elsif ($rep =~ /2/) # tags slmt
	{
		if ($ligne=~/($mot\/[A-Z]+[0-9]*[A-Z]+) /)
		{
			$gauche = $` ;
			$droite = $' ;
			$pole =$1;
			chomp($droite);
			$gauche=~s/[a-zéèàâç]//g;		# on élimine les mots
			$gauche=~s/[,.;'+()]//g;		# on élimine les ponctuations
			$gauche=~s/\///g;				# on élimine les slashs
			$droite=~s/[a-zéèàâç]//g;
			$droite=~s/[,.;'+()]//g;
			$droite=~s/\///g;
			@g = split (/ /, $gauche) ;
			@d = split (/ /, $droite) ;
			$t=$#g-$nbr1;
			print FILEOUT "<TR>	<TD align=\"right\">@g[$t..$#g]</TD>
								<TD align=\"center\"><font color=\"blue\"><b>$pole</b></font></TD>
								<TD align=\"left\">@d[0..$nbr2]</TD></TR>";
		}
	}
	elsif ($rep =~ /1/){
		if ($ligne=~/($mot)/){
			$gauche = $` ;
			$droite = $' ;
			$pole =$1;
			$gauche=~s/\/([A-Z]+[0-9]*[A-Z]+)//g;	# on élimine les étiquettes
			$droite=~s/\/([A-Z]+[0-9]*[A-Z]+)//g;
			chomp($droite) ;	
			@g = split (/ /, $gauche) ;
			@d = split (/ /, $droite) ;
			$t=$#g-$nbr1;
			print FILEOUT "<TR>	<TD align=\"right\">@g[$t..$#g]</TD>
								<TD align=\"center\"><font color=\"blue\"><b>$pole</b></font></TD>
								<TD align=\"left\">@d[0..$nbr2]</TD></TR>";
		}
	}
}
print FILEOUT "</BODY></TABLE></HTML>\n";
close (FILE);
close (FILEOUT);