#!/usr/bin/perl -w

use jspell;
use Lingua::PT::PLN;
use locale;
use strict;

my $pt_dict = jspell::new("port");
my $en_dict = jspell::new("eng");

my %pnlist=();
my %pnlistD=();

my $file = shift;
my $tab = do("tagPnTable"); die("$!$@\n") if ($! or $@);

forPN({in=>$file, sep=>'>', out=>"_.out", t=>"double"}, \&procPn,\&procPn2);

sub procPn{my $a=shift;
    if($a =~ /(\w+)/){
         my $f=$1;
         my @a=$pt_dict->fea($f);
         my %b = onethat({CAT => "np"}, @a);
         if(%b){if (defined $b{SEM}){"<pn t='$b{SEM}'>$a</pn>"}
                else                {"<pn t='np??'>$a</pn>"}}
         elsif(defined $tab->{$f})  {"<pn t='$tab->{$f}'>$a</pn>"}
         else {
            @a = $en_dict->fea($f);
            %b = onethat({CAT => "np"}, @a);
            if(%b){if (defined $b{SEM}){"<pn L='en' t='$b{SEM}'>$a</pn>"}
                   else {print STDERR "?? $a -- english but no SEM\n";
                         "<pn t='np??'>$a</pn>"}}
            else { print STDERR "?? $a is undefined\n";
               "<pn t='?'>$a</p>"}}}
    else {"<pn t='??'>$a</p>"}
}

sub procPn2{my $a=shift;
    if($a =~ /(\w+)/){
         my @a=$pt_dict->fea($1);
         my %b = onethat({CAT => "np"}, @a);
         if(%b || scalar @a == 0){procPn($a)}
         else{ undef ;}}
    else {"<pn t='???'>$a</p>"}
}
