1#!/usr/bin/perl -w 2 3require "PrefixBits.pl"; 4 5sub find_prefixes { 6 my $INQUISITIVE_HE=shift; 7 8 my ($mask,$prefix); 9 my %prefixes; 10 11 foreach $W ('','�'){ 12 foreach $S ('','�','�'){ 13 foreach $K ('','��','��','���'){ 14 foreach $k ('','�'){ 15 foreach $B ('','�','�','�','�','�','��'){ 16 next if (!$INQUISITIVE_HE && $S eq '�'); 17 next if ($k eq '�' && $B eq '�'); 18 $prefix = "$W$S$K$k$B"; 19 $mask = $PS_MISC; 20 $mask |= $PS_L if $B =~ m/[����]$/; 21 $mask |= $PS_B if $prefix =~ m/^�?�?�$/; 22 $mask |= $PS_VERB if ($k eq "" && $B eq ""); 23 $mask |= $PS_NONDEF if $B !~ m/�$/; 24 $prefixes{$prefix} = 0 if !defined $prefixes{$prefix}; 25 $prefixes{$prefix} |= $mask; 26 } 27 } 28 } 29 } 30 } 31 foreach $W ('','�'){ 32 foreach $S ('','�','�'){ 33 foreach $K ('','��','��','���'){ 34 foreach $B ('','�','�','�'){ 35 foreach $k ('','�'){ 36 next if (!$INQUISITIVE_HE && $S eq '�'); 37 $prefix = "$W$S$K$B$k"; 38 $mask = $PS_MISC; 39 $mask |= $PS_L if $B =~ m/[����]$/; 40 $mask |= $PS_B if $prefix =~ m/^�?�?�$/; 41 $mask |= $PS_VERB if ($k eq "" && $B eq ""); 42 $mask |= $PS_NONDEF if $B !~ m/�$/; 43 $prefixes{$prefix} = 0 if !defined $prefixes{$prefix}; 44 $prefixes{$prefix} |= $mask; 45 } 46 } 47 } 48 } 49 } 50 foreach $B ('�','�'){ 51 $prefix = "�$B"; 52 $mask = $PS_MISC; 53 $mask |= $PS_L if $B =~ m/[����]$/; 54 $mask |= $PS_B if $prefix =~ m/^�?�?�$/; 55 $mask |= $PS_NONDEF if $B !~ m/�$/; 56 $prefixes{$prefix} = 0 if !defined $prefixes{$prefix}; 57 $prefixes{$prefix} |= $mask; 58 } 59 60 $prefixes{""} |= $PS_IMPER; 61 $prefixes{"�"} |= $PS_IMPER; 62 63 return %prefixes; 64} 65 66print "/* This file is automatically generated by genprefixes.pl.\n"; 67print " DO NOT EDIT THIS FILE DIRECTLY!\n */\n\n"; 68 69# Prefix list without He Ha-She'ela (but with He Ha-Yedi`a, of course) 70 71my %prefixes = find_prefixes(0); 72 73print "static char *prefixes_noH[]={"; 74foreach (sort keys %prefixes) {print "\"$_\",\n"} 75print "0};\n"; 76 77print "static int masks_noH[]={"; 78foreach (sort keys %prefixes) {print "$prefixes{$_},\n"} 79print "-1};\n"; 80 81# Output the same thing, but with He Ha-She'ela... 82 83%prefixes = find_prefixes(1); 84 85print "static char *prefixes_H[]={"; 86foreach (sort keys %prefixes) {print "\"$_\",\n"} 87print "0};\n"; 88 89print "static int masks_H[]={"; 90foreach (sort keys %prefixes) {print "$prefixes{$_},\n"} 91print "-1};\n"; 92