#!/usr/local/bin/perl

my($transfile) = $ARGV[0];

$transfile =~ m/([^\/]+)$/;

my $hypfile = $1 . ".hyps";
my $scorefile = $1 . ".scores";

my($line, $transline, $sentcount, $ncount, $trans, $scores, $meteor, $totalsents);

#print "#sentcount ncount prob rule fragpen lenpen meteor\n";


if ($transfile =~ m/\.gz$/) {
    open(NBEST, "gunzip -c $transfile |") or die $!;
} else {
    open(NBEST, "$transfile") or die $!;
}

open(SCORE, "> $scorefile") or die $!;
open(HYP, "> $hypfile") or die $!;

$sentcount = -1;
while (!eof(NBEST)) {
    while ($line = <NBEST>) {
	last if $line !~ m/^\s*$/;
    }
    #print "First line: $line\n";
	
    if ($line =~ m/^SrcSent/i) {
	print STDERR ".";
	$transline = <NBEST>;
	#print SCORE "\n" if $sentcount != -1;
    } else {
	$transline = $line;
    }

    next if $transline =~ m/^\s*$/;
    
    #print "Trans line $transline\n";
    chomp($transline);
    ($sentcount, $ncount, $trans) = ($transline =~ m/^(\d+) (\d+)\t(.*)$/);

    print HYP ($sentcount+1) . " " . ($ncount+1) . "\t$trans\n";


    #print SCORE lc($trans), "\n";

    
    $scores = <NBEST>; chomp($scores);
# Overall: -8.57367, Prob: -168.426, Rules: 2.69743, Frag: 0.291667, Length: 0.605446, Words: 12,24
    $transscore = 0;

    $prob = $1 if $scores =~ m/Prob: ([^,]+)/;
    $rulescore = $1 if $scores =~ m/Rules: ([^,]+)/;
    $transsgtscore = $1 if $scores =~ m/TransSGT: ([^,]+)/;
    $transtgsscore = $1 if $scores =~ m/TransTGS: ([^,]+)/;
    $fragpen = $1 if $scores =~ m/Frag: ([^,]+)/;
    $lenpen = $1 if $scores =~ m/Length: ([^,]+)/;
    $scores =~ m/Words: (\d+),(\d+)/;
    $srclen = $1; $tgtlen = $2;

    $transscore = 0 if $transscore =~ m/e/;

    print SCORE ($sentcount+1) . " ". ($ncount+1) . "\t" . ($prob/$tgtlen) . " $transsgtscore $transtgsscore $fragpen $lenpen\n"; #  $srclen $tgtlen\n";
    #print SCORE ($prob/$tgtlen) . " $fragpen $lenpen\n"; #  $srclen $tgtlen\n";
    # Try also with non-normalized $prob
    
    if ($sentcount > $totalsents) {
	$totalsents = $sentcount;
    }
    
    
    # Overall: -4.27181, Prob: -4.27181, Frag: 0.485714, Length: 0.590909
    
    # Read in trace, arc by arc
    $trace = <NBEST>; chomp($trace);
    $src = "";
    while ($trace !~ m/^\s*$/) {
	#print "Trace $trace\n";
	$trace =~ m/: ([^\(]+) \(/;
	$src .= " " . $1;
	$trace = <NBEST>;
    }
    $line = <NBEST>;
    
    $src =~ s/^\s//;
    $src =~ s/\s$//;
    $src =~ s/\s\s/ /g;
    
}
close(SCORE);
close(HYP);




print STDERR "\n";
