X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fadd-affixes;h=814e35f8e76086ab54a3e5ebb0716ec0e84e02d3;hb=8ace84503eae30ad101165a9bf4c96ac1c87f9b1;hp=a84a8155c993fe8354e452d777340ab90e2808ff;hpb=adbd0c3d3296ead6c49b4f13012aca4a558efc7f;p=deb_pkgs%2Fscowl.git diff --git a/src/add-affixes b/src/add-affixes index a84a815..814e35f 100755 --- a/src/add-affixes +++ b/src/add-affixes @@ -30,17 +30,21 @@ open F, "r/alt12dicts/2of12id.txt" or die; my %lookup; my %remove; my %possessive; +# possessive_cross = additional forms that should be looked up in the +# possessive hash +my %possessive_cross; while () { s/\r?\n$// or die; # (flags, base word, part of speach, infl forms) - my ($d,$w,$p,$a) = /^([-@]?)(\w+) (.).*: ?(.*)$/ or die; + my ($d,$w,$p,$a) = /^([-@\+]?)(\w+) (.).*: ?(.*)$/ or die "Bad line: >$_<"; + $d =~ tr/+//d; $possessive{$w} = "$w\'s\n" if $p eq 'N' && ($d eq '' || $use_all); next if $use_all; - my @a = $a =~ /([-~@\w]+)/g; + my @a = $a =~ /([-~@!\w]+)/g; @a = map {"$d$_"} @a if ($d); my (@a0,@a1); - foreach (@a) {if (s/^[~-]//) {push @a0, $_} else {push @a1, $_}} + foreach (@a) {if (s/^[~!-]//) {push @a0, $_} else {push @a1, $_}} $remove{"$w:$p"} = 1 unless @a1; foreach (@a0) {$remove{"$w:$p:$_"} = 1} } @@ -62,18 +66,28 @@ while () { # AGID things it is a noun and "use-some" or Uppercase # (since 2of12id doesn't include uppercase) # AGIG is guessing it is a noun and "use-all" - $possessive{$w} = "$w\'s\n" if $p eq 'N' && (($q eq '' && ($use_all || $w =~ /^[A-Z]/)) - || $use_all >= 2); + my $add_possessive = $p eq 'N' && (($q eq '' && ($use_all || $w =~ /^[A-Z]/)) + || $use_all >= 2); + $possessive{$w} = "$w\'s\n" if $add_possessive; next if $remove{"$w:$p"}; next unless $q eq '' || $use_all >= 2; my @a = split /, | \| /, $a; - @a = grep {my ($word,$tags,$level) + @a = grep {my ($word,$tags,$level) = /^([A-Za-z\']+)([~) { print; chop; - print $lookup{$_} unless $just_possessive; - print $possessive{$_} unless $no_possessive; + my $w = $_; + print $lookup{$w} unless $just_possessive; + print $possessive{$w} unless $no_possessive; + unless ($just_possessive || $no_possessive) { + foreach (@{$possessive_cross{$w}}) { + print $possessive{$_} + } + } }