#!/usr/bin/perl

#
# Conversor de afixos ispell -> myspell, por Ricardo Ueda.
#

#
# Cabealho.
#
# Obs. a linha "TRY" usa as freqncias aeosrindtmuclpvghqbfzjx
# indicadas no livro "Teoria Lingstica" p. 47 (M. T. C. Biderman,
# Martins Fontes 2001), temperadas com outras contagens. Inclu
# tambm caracteres acentuados que no ocorrem no Portugus porque
# o myspell no sugere palavras que usem caracteres no listados
# na linha TRY, e talvez algum que no conhea isso necessite
# adicionar ao dicionrio nomes ou palavras estrangeiras.
#
print "SET ISO8859-1\n";
print "TRY aeosrindtmuclpvghqbfzjxAEBDMCSRPLGVFTNIJHUkwyZOQKYWX\n";

# prepara
open(F,"br.aff");
$mode = '?';
$in = 0;

# converso
while (<F>) {

    # prepara
    chomp;
    #tr/\t/ /;
    $l = $_;

    # incio da seo de prefixos
    if (/^prefixes/) {
        $mode = 'PFX';
    }

    # incio da seo de sufixos
    elsif (/^suffixes/) {
        $mode = 'SFX';
    }

    # incio de bloco de regras
    elsif (/^flag/) {

        if (($in) && ($nr > 0)) {
            print "$mode $f $c $nr\n";
            print $R;
        }

        if (($c,$f) = ($l =~ /^flag (\*|)([A-Za-z]):.*$/)) {
            $c = ($c eq '*') ? 'Y' : 'N';
            $in = 1;
            $nr = 0;
            $R = '';
        }
        else {
            print "falha no parse de $l\n";
            exit 1;
        }
    }

    # comentrio ou linha em branco
    elsif (/^ *(#.*|)$/) {
        #print "desprezei $l\n";
    }

    # regra
    elsif ($in) {
        $l =~ s/#.*$//;
        $l =~ s/[ -]//g;
        $l =~ tr/A-Z/a-z/;
        ($cond,$a) = ($l =~ /^(.*)>(.*)$/);
        if ($a =~ /,/) {
            ($rem,$adc) = ($a =~ /^(.*),(.*)$/);
        }
        else {
            $rem = '0';
            $adc = $a;
        }
        $R .= sprintf("$mode $f $rem $adc $cond\n");
        ++$nr;
    }

    # outros
    else {
    }
}

