--- TestLem2008.pm Mon May 5 11:54:31 2014 +++ TestLem2014.pm Mon May 5 12:04:13 2014 @@ -4,7 +4,7 @@ use BerkeleyDB; use strict; use locale; -use vars qw( %rule %tail %root %add %cat2 ); +use vars qw( %rule %tail %root %mend %add %cat2 ); BEGIN { use Exporter (); @@ -56,6 +56,28 @@ } } } + # unk words + if ( $#res eq -1 ) { + for(my $i=0; $i <= length($s); $i++) { + my ($left, $right) = (substr($s,0,$i), substr($s,$i)); + if(my $d = $mend{$right}) { + my @rules = split(/:/, $d); shift @rules; + foreach my $rule ( @rules ) { + #my $latr = parse($rule); + #print "$right\t$latr\t$rule\n"; + if ( $rule =~ /ÍÒ-ÖÒ/ ) { + $rule =~ s/ÍÒ-ÖÒ/ÍÒ/; + push @res, $rule; + $rule =~ s/ÍÒ/ÖÒ/; + push @res, $rule; + } else { + push @res, $rule; + } + } + } + last if ( $#res > - 1 ); + } + } # ÐÒÏ×ÅÒËÁ ×ÉÎÉÔÅÌØÎÏÇÏ ÏÄÕÛÅ×ÌÅÎÎÏÇÏ for(my $i=0; $i <= $#res; $i++) { if($res[$i] =~ /ð(.*ÍÒ.*)×Î.*/ || $res[$i] =~ /ð(.*ÍÎ.*)×Î.*/) { @@ -156,14 +178,11 @@ close FILE; -tie %rule, "BerkeleyDB::Hash", - -Filename => "rule.db", -Flags => DB_RDONLY or die "Error blin "; -tie %tail, "BerkeleyDB::Hash", - -Filename => "tail.db", -Flags => DB_RDONLY or die "Error blin "; -tie %root, "BerkeleyDB::Hash", - -Filename => "root.db", -Flags => DB_RDONLY or die "Error blin "; -tie %add, "BerkeleyDB::Hash", - -Filename => "add.db", -Flags => DB_RDONLY or die "Error blin "; +tie %rule, "BerkeleyDB::Hash", -Filename => "rule.db", -Flags => DB_RDONLY or die "Error blin "; +tie %tail, "BerkeleyDB::Hash", -Filename => "tail.db", -Flags => DB_RDONLY or die "Error blin "; +tie %root, "BerkeleyDB::Hash", -Filename => "root.db", -Flags => DB_RDONLY or die "Error blin "; +tie %add, "BerkeleyDB::Hash", -Filename => "add.db", -Flags => DB_RDONLY or die "Error blin "; +tie %mend, "BerkeleyDB::Hash", -Filename => "mend.db", -Flags => DB_RDONLY or die "Error blin "; my %words = (); @@ -201,6 +220,7 @@ untie %tail; untie %root; untie %add; +untie %mend; return $out;