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