#! /usr/bin/perl -w

use Getopt::Long;
use strict;

#================================================================
# cde
# ttg2line.pl -file lesdiabetiques.ttg > lesdiabetiques.line
#================================================================
sub usage {
    warn "Usage :
   -file      #
   \n"
}

#================================================================
# traitement des options

my $file = "";

#================================================================
unless (&GetOptions(
	     "file=s", \$file,
	)) 
{
    warn "Problème d'options\n";
    &usage;
    die;
}

#================================================================
# variables globales

#================================================================

# une fonction
sub ReadFile {
    # récupérer le nom du fichier
    my $f = $_[0];
    # déclaration du tableau contenant la phrase
    my @sent = ();
    # créer un handle qui permet d'ouvrir le fichier
    open (FILE, $f) || die "no such file '$f'\n";
    # ouverture du fichier avec le handle
    while (<FILE>) {
	# dans ce contexte, la variable par defaut $_ 
	# contient la ligne courante du fichier
	# on crée une variable dédiée $l qui contient une ligne
	my $l = $_;
	# on enleve le dernier caractère (saut à la ligne)
	chop($l);
	# on ne traite pas les lignes qui contiennent ====== ou _____ 
	#  ou commence par <
	next if ($l =~ /==========/);
	next if ($l =~ /____/);
	next if ($l =~ /^</);
	# on segmente la ligne sur le caractère "tabulation" 
	# et on met tout dans un tableau
	my @t = split (/\t/, $l);
	# on initialise la variable $fle
	my $fle = "";
	# si le lemme (champs 3) comporte le motif <unknown>
	if ($t[2] =~ /<unknown>/) {
	    # alors on utilise la forme à la place du lemme
	    $fle = "$t[0]/$t[0]/$t[1]";
	}
	# sinon
	else {
	    # on utilise le lemme
	    $fle = "$t[0]/$t[2]/$t[1]";
	}
	# si l'étiquette est de type SENT (fin de phrase)
	if ($t[1] =~ /SENT/) {
	    # alors on continue de remplir le tableau avec les mots de la phrase
	    push (@sent, $fle);
	    # et on imprime le phrase
	    print "@sent\n";
	    # on vide ensuite le tableau 
	    #  pour libérer la place pour la phrase suivante
	    #  et pour ne pas imprimer la même phrase plusieurs fois
	    @sent = ();
	}
	# si l'étiquette n'est pas de type SENT
	else {
	    # on remplit le tableau avec les mots de la phrase
	    push (@sent, $fle);
	}
    }
}

sub main {
    # appel de la fonction
    &ReadFile($file);
}

# appel de la fonction principale
&main;
