#! /usr/bin/perl


###############      PT_2_1    ####################################
#                                                                 #
# Project Acronym:     PaGAL                                      #
# Document ID:                                                    #
# Date:                30/4/01                                    #
# Author:              Jutta Jäger                                #
# WP/Task              T                                          #
# Abstract:            mainfunction of the first prototype, PT1   #
# Distribution:        public                                     #

# Version      Date     Author  Notes                             #
# 01           30/4/01  J       parts of the function listcreation#
#                               are used, for example for going   #
#                               through the text substance and    #
#                               finding the lemma                 #

# 1_1          04/6/01  G, J    statistics new                    #
#                                                                 #
# 1_2          12/6/01  J       printen mit select, write,        #
#                               $pagalversion, Einlesegranularität#
#                               eintragsweise                     #
# 1_3          29/6/01  J       verschiedene Listen drucken       #
#                                                                 #
# 1_4          07/7/01  G, J    debugged: Abkuerzungsverzeichnis, #
#                               printen doch wieder mit printf    #
###################################################################
# 2_0          05/11/01 G, J    Einbindung eines linguistischen   # 
#                               Moduls                            #            
###################################################################


use Lemma;     # Funktionen: lemma_abkuerzen, bereinigen, 
               #             analysieren (intern)

use Adjektiv;  # Funktion:   adjeab

use Abverz;    # Funktionen: abk_ab abkklein stringlen

use Statistik; # Funktionen: print_mistakes, print_statistics
               #             print_header, mistake_control (intern)
               # Stellt einen Hash bereit: %statistics

use Lingu;     # Funktion:   flekab

$pagalversion=2.1; # diese Variable wurde in die Ergebnislisten übernommen.



#open (F, "<../../../B15.001206.AbisS.exp") || die ("cant open"); # Textsubstanz
open (F, "auszug.txt") || die ("cant open");

print ("Was fuer eine Ausgabe: nur Fehler oder Alles (F/A)? ");
$printmode = <STDIN>;
chomp $printmode;
if ($printmode eq "F") {
  open (MISTLIST, ">mistakelist".$pagalversion.".txt") || die ("cant open"); 
}elsif($printmode eq "A"){
  open (MISTLIST, ">list".$pagalversion.".txt") || die ("cant open"); 
}else{
  die("Keine korrekte Antwort");}

open (STAT, ">statistik".$pagalversion.".txt") || die ("cant open");

$save=select (MISTLIST); # ab jetzt wird in mistlist geprintet, defaultfilevariable aber gespeichert


&print_header($pagalversion, $printmode); #Funktion aus Statistik.pm



$altegranularitaet = $/; #Einlesegranularität nicht mehr zeilenweise, sondern
$/ = </b5>;              #eintragsweise, Trennzeichen ist der End-Tag </b5>

while ($eintrag = <F>) {
 
  # pattern matcht den Anfang eines Artikels und speichert
  # das Lemma 

  if ($eintrag =~ /<lem><t>(.+)<\/t><\/lem>/ )
    {
      $lemma = $1; # aktuelles Lemma speichern
      
      $lemma = &bereinigen($lemma); #Funktion, die SGML-tags u.ae. entfernt
    }     
  
  
  #zeilen mit ak-tag raussuchen und splitten
  
  if ($eintrag =~ /<ak>/) {
   
    @ak = split (/<ak>/, $eintrag);
    
    
    #einzelne ak-tags  speichern
    
    for ($i =1; $i<@ak; $i++) {
      $ak[$i] =~ /(.+)<\/ak>/; 

     
      
      $kf_lf = $1; # enthaelt jetzt z.B. <kf>engl.</kf><lf>englischen</lf>
      
      if ($kf_lf) {
	$kf_lf =~ /<kf>(.+)<\/kf><lf>(.+)<\/lf>/; #Langform matchen
	
	$langform = $2;
	$langform = &bereinigen($langform);  # dieser Aufruf ist eigentlich nur nötig,
                                             # falls die Substanz am beliebigen Stellen
                                             # Tags enthält, z.B. <Pub Caret>
	$kurzform = $1;
      }
      
      if($langform && $kurzform){
	#Abkürzungs-Funktionen aufrufen
	
	$abk_art = "notpossible"; 
	
	@kuvolahi = &lemma_abkuerzen($lemma, $langform); # erste Abkürzungsart: Lemma
	
	#@kuvolahi enthaelt: Kurzform, vorne, Langform und hinten, d.h. alles, was in der Langform
	# davor und dahinter gefunden wurde
	
	$abk_generiert = $kuvolahi[0];
	$vorne =$kuvolahi[1];
	$lang = $kuvolahi[2];
	$hinten = $kuvolahi[3];
	  
	if ($abk_generiert){ 
	  $hinten = &flekab($lang, $hinten, $langform); #der hintere Rest wird in Lingu.pm analysiert
	  # und eventuell geloescht.

	  $abk_generiert = $vorne.$abk_generiert.$hinten; # die endgueltige Abkürzung wird hier zusammen-
	  # gesetzt

	  $abk_art = "lemma";
	  
	}else { # wenn es bei Lemma nicht gematcht hat, wird das gleiche bei Abkürzungsverzeichnis getestet
	  
	  @kuvolahi= &abk_ab($langform);
	  $abk_generiert = $kuvolahi[0];
	  $vorne =$kuvolahi[1];
	  $lang = $kuvolahi[2];
	  $hinten = $kuvolahi[3];
	
	  
	  if ($abk_generiert) {
	    $hinten = &flekab($lang, $hinten, $langform);
	    $abk_generiert = $vorne.$abk_generiert.$hinten;
	    
	    $abk_art = "abverz";

	} else { # das zweite, kleine Abkürzungsverzeichnis wird getestet, hier muss die
	  #Langform komplett übereinstimmen, deshalb kann man sich kuvolahi sparen.
	    
	   $abk_generiert = &abkklein($langform);

	   if ($abk_generiert){

	       $abk_art = "abverz";
	   }
	    
	  else {

	    
	    $abk_generiert = &adjeab($langform); #letzter Versuch: Adjektivabkürzung?

	    #Auch hier ist nur komplettes matchen zugelassen, nichts wird zusammengesetzt
	    
	    if ($abk_generiert){
	      
	      $abk_art = "adjektiv";       # Abkürzungsart ist vorbelegt mit notpossible
	      
	      #und wird entsprechend geändert, wenn eine Abkürzung gefunden wurde, dies

	      #wird an Statistik mitgegeben
	    }
	  }
}	
}
	
	&print_mistakes($lemma, $abk_generiert, $kurzform, $langform, $abk_art); # Das Statistik-Modul

	# zaehlt mit und schreibt alles in die Listen
      }
     
    }
    
  }
 
}

$/=$altegranularitaet; # Einlesegranularität wieder zeilenweise

select (STAT); # jetzt wird in die Statistik-Datei geschrieben

&print_statistics; 

select($save); # Defaultfilevariable wiederhergestellt



























































