line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Lingua::Zompist::Barakhinei; |
2
|
|
|
|
|
|
|
# vim:set sw=2 cin cinkeys-=0#: |
3
|
|
|
|
|
|
|
|
4
|
11
|
|
|
11
|
|
356299
|
use 5.005; |
|
11
|
|
|
|
|
48
|
|
|
11
|
|
|
|
|
520
|
|
5
|
11
|
|
|
11
|
|
81
|
use strict; |
|
11
|
|
|
|
|
30
|
|
|
11
|
|
|
|
|
771
|
|
6
|
|
|
|
|
|
|
# use re 'debug'; |
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
require Exporter; |
9
|
11
|
|
|
11
|
|
71
|
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
|
11
|
|
|
|
|
25
|
|
|
11
|
|
|
|
|
1244
|
|
10
|
11
|
|
|
11
|
|
75
|
use vars qw($gendertab $pluraltab $rootconstab $subjtab); |
|
11
|
|
|
|
|
36
|
|
|
11
|
|
|
|
|
886
|
|
11
|
11
|
|
|
11
|
|
58
|
use vars qw($cadhctab $cadhgtab $cadhutab); |
|
11
|
|
|
|
|
31
|
|
|
11
|
|
|
|
|
619
|
|
12
|
11
|
|
|
11
|
|
56
|
use vars qw($classtab); |
|
11
|
|
|
|
|
20
|
|
|
11
|
|
|
|
|
108899
|
|
13
|
|
|
|
|
|
|
@ISA = qw(Exporter); |
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
# Items to export into callers namespace by default. Note: do not export |
16
|
|
|
|
|
|
|
# names by default without a very good reason. Use EXPORT_OK instead. |
17
|
|
|
|
|
|
|
# Do not simply export all your public functions/methods/constants. |
18
|
|
|
|
|
|
|
|
19
|
|
|
|
|
|
|
# This allows declaration use Lingua::Zompist::Barakhinei ':all'; |
20
|
|
|
|
|
|
|
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK |
21
|
|
|
|
|
|
|
# will save memory. |
22
|
|
|
|
|
|
|
%EXPORT_TAGS = ( |
23
|
|
|
|
|
|
|
'tabs' => [ qw( |
24
|
|
|
|
|
|
|
$gendertab |
25
|
|
|
|
|
|
|
$pluraltab |
26
|
|
|
|
|
|
|
$rootconstab |
27
|
|
|
|
|
|
|
$subjtab |
28
|
|
|
|
|
|
|
$cadhutab |
29
|
|
|
|
|
|
|
$cadhgtab |
30
|
|
|
|
|
|
|
$cadhctab |
31
|
|
|
|
|
|
|
) ], |
32
|
|
|
|
|
|
|
'all' => [ qw( |
33
|
|
|
|
|
|
|
demeric |
34
|
|
|
|
|
|
|
scrifel |
35
|
|
|
|
|
|
|
izhcrifel |
36
|
|
|
|
|
|
|
budemeric |
37
|
|
|
|
|
|
|
buscrifel |
38
|
|
|
|
|
|
|
befel |
39
|
|
|
|
|
|
|
part |
40
|
|
|
|
|
|
|
noun |
41
|
|
|
|
|
|
|
adj |
42
|
|
|
|
|
|
|
) ], |
43
|
|
|
|
|
|
|
); |
44
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
push @{$EXPORT_TAGS{'all'}}, @{$EXPORT_TAGS{'tabs'}}; |
46
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
@EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); |
48
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
@EXPORT = qw( |
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
); |
52
|
|
|
|
|
|
|
$VERSION = '0.02'; |
53
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
my %verb = (demeric => \&demeric, |
55
|
|
|
|
|
|
|
scrifel => \&scrifel, |
56
|
|
|
|
|
|
|
izhcrifel => \&izhcrifel, |
57
|
|
|
|
|
|
|
budemeric => \&budemeric, |
58
|
|
|
|
|
|
|
buscrifel => \&buscrifel, |
59
|
|
|
|
|
|
|
befel => \&befel, |
60
|
|
|
|
|
|
|
part => \&part, |
61
|
|
|
|
|
|
|
); |
62
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
my @persons = qw(sû lê ât ta mukh kâ); |
64
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
my @cases = qw(nom gen acc dat); |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
my @numbers = qw(sing pl); |
68
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
# Some handy things for -i- insertion and moving stress |
70
|
|
|
|
|
|
|
my $cons = qr/(?:[ctdsknlr]h|[pbtdkgfvszhmnlr])/; |
71
|
|
|
|
|
|
|
my $consend = qr/[hpbtdkgfvszhmnlr]$/; |
72
|
|
|
|
|
|
|
my $vow = qr/[aeiouâêîôûAEIOUÂÊÎÔÛ]/; |
73
|
|
|
|
|
|
|
|
74
|
|
|
|
|
|
|
# spirant forms |
75
|
|
|
|
|
|
|
my %spir = ( |
76
|
|
|
|
|
|
|
d => 'dh', |
77
|
|
|
|
|
|
|
t => 'th', |
78
|
|
|
|
|
|
|
p => 'v', |
79
|
|
|
|
|
|
|
); |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
|
82
|
|
|
|
|
|
|
# Verbs with stems ending in -c in Cadhinor |
83
|
|
|
|
|
|
|
$cadhctab = { |
84
|
|
|
|
|
|
|
'dichi' => 'DUCIR', |
85
|
|
|
|
|
|
|
'faichi' => 'FAUCIR', |
86
|
|
|
|
|
|
|
'farki' => 'FARCIR', |
87
|
|
|
|
|
|
|
'fênki' => 'VENCIR', |
88
|
|
|
|
|
|
|
'foka' => 'VOCAN', |
89
|
|
|
|
|
|
|
'hashki' => 'HASCIR', |
90
|
|
|
|
|
|
|
'hêshki' => 'HESCIR', |
91
|
|
|
|
|
|
|
'kaoka' => 'CAUCAN', |
92
|
|
|
|
|
|
|
'kashki' => 'KASCIR', |
93
|
|
|
|
|
|
|
'kêshkê' => 'KESCEN', |
94
|
|
|
|
|
|
|
'krêshki' => 'CRESCIR', |
95
|
|
|
|
|
|
|
'lachê' => 'LACEN', |
96
|
|
|
|
|
|
|
'lêshkê' => 'LESCEN', |
97
|
|
|
|
|
|
|
'manka' => 'MANCAN', |
98
|
|
|
|
|
|
|
'oloka' => 'OLOCAN', |
99
|
|
|
|
|
|
|
'prechê' => 'PRECER', |
100
|
|
|
|
|
|
|
'rashki' => 'RASCIR', |
101
|
|
|
|
|
|
|
'shkolichê' => 'SCOLICER', |
102
|
|
|
|
|
|
|
'snuka' => 'SNUCAN', |
103
|
|
|
|
|
|
|
'tôshkê' => 'TOSCEN', |
104
|
|
|
|
|
|
|
'trankê' => 'TRANCEN', |
105
|
|
|
|
|
|
|
}; |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
# Verbs with stems ending in -g in Cadhinor |
108
|
|
|
|
|
|
|
$cadhgtab = { |
109
|
|
|
|
|
|
|
'benhi' => 'BENGIR', |
110
|
|
|
|
|
|
|
'briga' => 'BRIGAN', |
111
|
|
|
|
|
|
|
'fachi' => 'VAGIR', |
112
|
|
|
|
|
|
|
'glonhê' => 'GLONGEC', |
113
|
|
|
|
|
|
|
'grochê' => 'GROGEC', |
114
|
|
|
|
|
|
|
'hachê' => 'IAGEN', |
115
|
|
|
|
|
|
|
'ilhê' => 'ULGEC', |
116
|
|
|
|
|
|
|
'klachê' => 'CLAGER', |
117
|
|
|
|
|
|
|
'kochi' => 'COGIR', |
118
|
|
|
|
|
|
|
'krechê' => 'CREGEN', |
119
|
|
|
|
|
|
|
'lega' => 'LEGAN', |
120
|
|
|
|
|
|
|
'mêrgê' => 'MERGEN', |
121
|
|
|
|
|
|
|
'nochê' => 'NOGEN', |
122
|
|
|
|
|
|
|
'puga' => 'PUGAN', |
123
|
|
|
|
|
|
|
'trachê' => 'TRAGEN', |
124
|
|
|
|
|
|
|
'troga' => 'TROGAN', |
125
|
|
|
|
|
|
|
}; |
126
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
# Verbs with stems ending in -uC in Cadhinor |
128
|
|
|
|
|
|
|
$cadhutab = { |
129
|
|
|
|
|
|
|
'burukha' => 'BURUKHAN', |
130
|
|
|
|
|
|
|
'chidê' => 'CIUDER', |
131
|
|
|
|
|
|
|
'chura' => 'TURAN', |
132
|
|
|
|
|
|
|
'dhirê' => 'DHUREC', |
133
|
|
|
|
|
|
|
'dichi' => 'DUCIR', |
134
|
|
|
|
|
|
|
'dimê' => 'DUMEC', |
135
|
|
|
|
|
|
|
'faichi' => 'FAUCIR', |
136
|
|
|
|
|
|
|
'faoba' => 'FAUBAN', |
137
|
|
|
|
|
|
|
'fedhura' => 'VETHURAN', |
138
|
|
|
|
|
|
|
'fura' => 'FURAN', |
139
|
|
|
|
|
|
|
'glunti' => 'GLUNTIR', |
140
|
|
|
|
|
|
|
'gushta' => 'GUSTAN', |
141
|
|
|
|
|
|
|
'hizi' => 'IUSIR', |
142
|
|
|
|
|
|
|
'idura' => 'IDURAN', |
143
|
|
|
|
|
|
|
'ilhê' => 'ULGEC', |
144
|
|
|
|
|
|
|
'ilubra' => 'ILUBRAN', |
145
|
|
|
|
|
|
|
'ishkuza' => 'ISKUSAN', |
146
|
|
|
|
|
|
|
'izubrê' => 'ISUBREN', |
147
|
|
|
|
|
|
|
'kaoka' => 'CAUCAN', |
148
|
|
|
|
|
|
|
'kitê' => 'CUTEC', |
149
|
|
|
|
|
|
|
'kupi' => 'CULPIR', |
150
|
|
|
|
|
|
|
'kurê' => 'CURREC', |
151
|
|
|
|
|
|
|
'laoda' => 'LAUDAN', |
152
|
|
|
|
|
|
|
'laota' => 'LAUTAN', |
153
|
|
|
|
|
|
|
'liri' => 'LURIR', |
154
|
|
|
|
|
|
|
'lôndura' => 'LONDURAN', |
155
|
|
|
|
|
|
|
'meundê' => 'MEHUNDEN', |
156
|
|
|
|
|
|
|
'niri' => 'NURIR', |
157
|
|
|
|
|
|
|
'plii' => 'PLUHIR', |
158
|
|
|
|
|
|
|
'pua' => 'PUHAN', |
159
|
|
|
|
|
|
|
'puga' => 'PUGAN', |
160
|
|
|
|
|
|
|
'raola' => 'RAULAN', |
161
|
|
|
|
|
|
|
'rênlaoda' => 'RENLAUDAN', |
162
|
|
|
|
|
|
|
'rêshkuli' => 'RESCULLIR', |
163
|
|
|
|
|
|
|
'ridhê' => 'RUTHER', |
164
|
|
|
|
|
|
|
'rizundê' => 'RISUNDEN', |
165
|
|
|
|
|
|
|
'shkechubrê' => 'SCEIUBREN', |
166
|
|
|
|
|
|
|
'shpiri' => 'SPURIR', |
167
|
|
|
|
|
|
|
'sidi' => 'SUDIR', |
168
|
|
|
|
|
|
|
'snuka' => 'SNUCAN', |
169
|
|
|
|
|
|
|
'subra' => 'SUBRAN', |
170
|
|
|
|
|
|
|
'sudri' => 'SUDRIR', |
171
|
|
|
|
|
|
|
'taobrê' => 'TAUBREN', |
172
|
|
|
|
|
|
|
'traoda' => 'TRAUDAN', |
173
|
|
|
|
|
|
|
'ubri' => 'UBRIR', |
174
|
|
|
|
|
|
|
}; |
175
|
|
|
|
|
|
|
|
176
|
|
|
|
|
|
|
# Verb classes |
177
|
|
|
|
|
|
|
$classtab = { |
178
|
|
|
|
|
|
|
}; # %class |
179
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
# Separate subjunctive stems |
181
|
|
|
|
|
|
|
$subjtab = { |
182
|
|
|
|
|
|
|
'achupua' => 'achupoa', |
183
|
|
|
|
|
|
|
'da' => 'dona', |
184
|
|
|
|
|
|
|
'dichi' => 'doki', |
185
|
|
|
|
|
|
|
'feriê' => 'fêrsê', |
186
|
|
|
|
|
|
|
'fôtê' => 'fêlsê', |
187
|
|
|
|
|
|
|
'hizi' => 'hôrsi', |
188
|
|
|
|
|
|
|
'ihmêta' => 'ihmêrsa', |
189
|
|
|
|
|
|
|
'kêshkê' => 'kêsê', |
190
|
|
|
|
|
|
|
'kolaoda' => 'koloda', |
191
|
|
|
|
|
|
|
'kudichi' => 'kudoki', |
192
|
|
|
|
|
|
|
'laoda' => 'loda', |
193
|
|
|
|
|
|
|
'lega' => 'loga', |
194
|
|
|
|
|
|
|
'lêshkê' => 'lêsê', |
195
|
|
|
|
|
|
|
'mêta' => 'mêrsa', |
196
|
|
|
|
|
|
|
'noê' => 'nozê', |
197
|
|
|
|
|
|
|
'pua' => 'poa', |
198
|
|
|
|
|
|
|
'puga' => 'poga', |
199
|
|
|
|
|
|
|
'rênlaoda' => 'rênloda', |
200
|
|
|
|
|
|
|
'rênlelê' => 'rênlêlsê', |
201
|
|
|
|
|
|
|
'shterê' => 'shtêrsê', |
202
|
|
|
|
|
|
|
'sôtê' => 'sêlsê', |
203
|
|
|
|
|
|
|
'subra' => 'sôbra', |
204
|
|
|
|
|
|
|
'tôshkê' => 'tôsê', |
205
|
|
|
|
|
|
|
}; # $subjtab |
206
|
|
|
|
|
|
|
|
207
|
|
|
|
|
|
|
|
208
|
|
|
|
|
|
|
my %demeric = ( |
209
|
|
|
|
|
|
|
'epeza' => [ qw( ûzâ ûzê epê epeza epezu ûzôn ) ], |
210
|
|
|
|
|
|
|
'eza' => [ qw( sâ sê ê eza ezu sôn ) ], |
211
|
|
|
|
|
|
|
'fâli' => [ qw( fâl fêl fêl fâlu fâlu fâlîn ) ], |
212
|
|
|
|
|
|
|
'foli' => [ qw( ful ful fut folu folu folîn ) ], |
213
|
|
|
|
|
|
|
'hizi' => [ qw( huz hu hut hizu hizu hizîn ) ], |
214
|
|
|
|
|
|
|
'kedhê' => [ qw( kedhâ kedhê kedhu kedha kedhu kên ) ], |
215
|
|
|
|
|
|
|
'lhibê' => [ qw( lhua lhû lhu lhubu lhubu lôn ) ], |
216
|
|
|
|
|
|
|
'nhê' => [ qw( nhe ni ni nheza nhezu nhên ) ], |
217
|
|
|
|
|
|
|
'oi' => [ qw( oh fi fit ou ou oîn ) ], |
218
|
|
|
|
|
|
|
'shkrivê' => [ qw( shkriva shkri shkri shkrivu shkrivu shkrivôn ) ], |
219
|
|
|
|
|
|
|
'shtanê' => [ qw( shtâ shtê shtê shtana shtanu shtôn ) ], |
220
|
|
|
|
|
|
|
'rênshtanê' => [ qw( rênshtâ rênshtê rênshtê rênshtana rênshtanu rênshtôn ) ], |
221
|
|
|
|
|
|
|
); |
222
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
sub demeric { |
224
|
23
|
|
|
23
|
1
|
67
|
my $verb = shift; |
225
|
23
|
|
|
|
|
41
|
my $class = shift; |
226
|
23
|
|
|
|
|
40
|
my $stem = $verb; |
227
|
23
|
|
|
|
|
119
|
my $table; |
228
|
|
|
|
|
|
|
|
229
|
23
|
100
|
|
|
|
167
|
return $demeric{$verb} if exists $demeric{$verb}; |
230
|
|
|
|
|
|
|
|
231
|
12
|
50
|
33
|
|
|
48
|
if(! defined($class) && exists $classtab->{$verb}) { |
232
|
0
|
|
|
|
|
0
|
$class = $classtab->{$verb}; |
233
|
|
|
|
|
|
|
} |
234
|
|
|
|
|
|
|
|
235
|
12
|
50
|
33
|
|
|
60
|
$class = 2 if !defined($class) && $verb =~ /a$/; |
236
|
12
|
50
|
33
|
|
|
40
|
$class = 3 if !defined($class) && $verb =~ /ê$/; |
237
|
12
|
50
|
33
|
|
|
37
|
$class = 4 if !defined($class) && $verb =~ /i$/; |
238
|
12
|
50
|
|
|
|
31
|
$class = 0 unless defined $class; |
239
|
|
|
|
|
|
|
|
240
|
12
|
100
|
66
|
|
|
166
|
if($class == 1 && $stem =~ s/ê$//) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
241
|
2
|
|
|
|
|
26
|
$table = [ map "$stem$_", qw( a û ê u u ôn ) ]; |
242
|
|
|
|
|
|
|
} elsif($stem =~ s/a$//) { |
243
|
3
|
|
|
|
|
33
|
$table = [ map "$stem$_", qw( â ê ê a u ôn ) ]; |
244
|
|
|
|
|
|
|
} elsif($class == 3 && $stem =~ s/ê$//) { |
245
|
2
|
|
|
|
|
18
|
$table = [ map "$stem$_", qw( â ê ê a u ên ) ]; |
246
|
|
|
|
|
|
|
} elsif($stem =~ s/i$//) { |
247
|
2
|
|
|
|
|
19
|
$table = [ map "$stem$_", '', qw( û i u u în ) ]; |
248
|
|
|
|
|
|
|
} elsif($class == 5 && $stem =~ s/ê$//) { |
249
|
3
|
|
|
|
|
30
|
$table = [ map "$stem$_", '', qw( û ê u u un ) ]; |
250
|
|
|
|
|
|
|
} else { |
251
|
0
|
|
|
|
|
0
|
return; |
252
|
|
|
|
|
|
|
} |
253
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
# Cadhinor verbs in -c- and -g- |
255
|
12
|
100
|
100
|
|
|
137
|
if($class == 1 || $class == 4 || $class == 5) { |
|
|
50
|
100
|
|
|
|
|
|
|
|
66
|
|
|
|
|
256
|
7
|
|
|
|
|
13
|
for(@{$table}[0,3,4,5]) { |
|
7
|
|
|
|
|
22
|
|
257
|
28
|
100
|
|
|
|
104
|
if(exists $cadhctab->{$verb}) { |
|
|
100
|
|
|
|
|
|
258
|
4
|
|
|
|
|
25
|
s/ch([auoâô]?n?)$/k$1/; |
259
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
260
|
8
|
|
|
|
|
54
|
s/ch([auoâô]?n?)$/g$1/; |
261
|
|
|
|
|
|
|
} |
262
|
|
|
|
|
|
|
} |
263
|
7
|
|
|
|
|
16
|
for(@{$table}[1,2]) { |
|
7
|
|
|
|
|
189
|
|
264
|
14
|
100
|
|
|
|
56
|
if(exists $cadhctab->{$verb}) { |
|
|
100
|
|
|
|
|
|
265
|
2
|
|
|
|
|
6
|
s/k([eiêîû]n?)$/ch$1/; |
266
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
267
|
4
|
|
|
|
|
13
|
s/g([eiêîû]n?)$/ch$1/; |
268
|
|
|
|
|
|
|
} |
269
|
|
|
|
|
|
|
} |
270
|
|
|
|
|
|
|
} elsif($class == 2 || $class == 3) { |
271
|
5
|
|
|
|
|
11
|
for(@{$table}[0]) { |
|
5
|
|
|
|
|
17
|
|
272
|
5
|
100
|
|
|
|
37
|
if(exists $cadhctab->{$verb}) { |
|
|
100
|
|
|
|
|
|
273
|
1
|
|
|
|
|
5
|
s/ch([auoâô]?n?)$/k$1/; |
274
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
275
|
1
|
|
|
|
|
10
|
s/ch([auoâô]?n?)$/g$1/; |
276
|
|
|
|
|
|
|
} |
277
|
|
|
|
|
|
|
} |
278
|
5
|
|
|
|
|
12
|
for(@{$table}[1,2]) { |
|
5
|
|
|
|
|
14
|
|
279
|
10
|
100
|
|
|
|
40
|
if(exists $cadhctab->{$verb}) { |
|
|
100
|
|
|
|
|
|
280
|
2
|
|
|
|
|
17
|
s/k([eiêîû]n?)$/ch$1/; |
281
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
282
|
2
|
|
|
|
|
5
|
s/g([eiêîû]n?)$/ch$1/; |
283
|
|
|
|
|
|
|
} |
284
|
|
|
|
|
|
|
} |
285
|
|
|
|
|
|
|
} |
286
|
|
|
|
|
|
|
|
287
|
12
|
|
|
|
|
29
|
for(@$table) { |
288
|
72
|
|
|
|
|
168
|
s/shtu$/kchu/; |
289
|
72
|
|
|
|
|
84
|
s/sht$/ch/; |
290
|
72
|
|
|
|
|
1145
|
s/g$/k/; |
291
|
72
|
|
|
|
|
118
|
s/b$/p/; |
292
|
|
|
|
|
|
|
} |
293
|
|
|
|
|
|
|
|
294
|
|
|
|
|
|
|
# spirantise -d -t -p in 4th and 5th conjugation |
295
|
12
|
100
|
100
|
|
|
148
|
if(($class == 4 || $class == 5) && $verb =~ /$vow[dtp][êai]$/o) { |
|
|
|
100
|
|
|
|
|
296
|
1
|
|
|
|
|
2
|
for($table->[0]) { |
297
|
1
|
|
|
|
|
14
|
s/d$/dh/; |
298
|
1
|
|
|
|
|
3
|
s/t$/th/; |
299
|
1
|
|
|
|
|
3
|
s/p$/f/; |
300
|
|
|
|
|
|
|
} |
301
|
|
|
|
|
|
|
|
302
|
1
|
|
|
|
|
4
|
for(@{$table}[3,4,5]) { |
|
1
|
|
|
|
|
3
|
|
303
|
3
|
|
|
|
|
21
|
s/d(un?|în)$/dh$1/; |
304
|
3
|
|
|
|
|
7
|
s/t(un?|în)$/th$1/; |
305
|
3
|
|
|
|
|
6
|
s/p(un?|în)$/v$1/; |
306
|
|
|
|
|
|
|
} |
307
|
|
|
|
|
|
|
} |
308
|
|
|
|
|
|
|
|
309
|
|
|
|
|
|
|
# front and back vowel alternations for Cadhinor verbs in -u- |
310
|
12
|
100
|
|
|
|
47
|
if(exists $cadhutab->{$verb}) { |
311
|
2
|
|
|
|
|
6
|
for(@$table) { |
312
|
12
|
|
|
|
|
262
|
s/i($cons+[aouâôû]?)$/o$1/; |
313
|
12
|
|
|
|
|
107
|
s/u($cons+[êiî]n?)$/i$1/; |
314
|
|
|
|
|
|
|
} |
315
|
|
|
|
|
|
|
} |
316
|
|
|
|
|
|
|
|
317
|
12
|
|
|
|
|
294
|
return $table; |
318
|
|
|
|
|
|
|
} # demeric |
319
|
|
|
|
|
|
|
|
320
|
|
|
|
|
|
|
my %scrifel = ( |
321
|
|
|
|
|
|
|
'epeza' => [ qw( ûzi ûzi epâ ûzu ûzê ûzîn ) ], |
322
|
|
|
|
|
|
|
'eza' => [ qw( fuch fuch fâ fu fuê fûn ) ], |
323
|
|
|
|
|
|
|
'kedhê' => [ qw( kedhi kedhi kiâ kedhu kedhê kedhîn ) ], |
324
|
|
|
|
|
|
|
); |
325
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
sub scrifel { |
327
|
15
|
|
|
15
|
1
|
43
|
my $verb = shift; |
328
|
15
|
|
|
|
|
27
|
my $class = shift; |
329
|
15
|
|
|
|
|
25
|
my $stem = $verb; |
330
|
15
|
|
|
|
|
18
|
my $table; |
331
|
|
|
|
|
|
|
|
332
|
15
|
100
|
|
|
|
73
|
return $scrifel{$verb} if exists $scrifel{$verb}; |
333
|
|
|
|
|
|
|
|
334
|
12
|
50
|
33
|
|
|
43
|
if(! defined($class) && exists $classtab->{$verb}) { |
335
|
0
|
|
|
|
|
0
|
$class = $classtab->{$verb}; |
336
|
|
|
|
|
|
|
} |
337
|
|
|
|
|
|
|
|
338
|
12
|
50
|
33
|
|
|
59
|
$class = 2 if !defined($class) && $verb =~ /a$/; |
339
|
12
|
50
|
33
|
|
|
36
|
$class = 3 if !defined($class) && $verb =~ /ê$/; |
340
|
12
|
50
|
33
|
|
|
33
|
$class = 4 if !defined($class) && $verb =~ /i$/; |
341
|
12
|
50
|
|
|
|
30
|
$class = 0 unless defined $class; |
342
|
|
|
|
|
|
|
|
343
|
12
|
100
|
66
|
|
|
156
|
if($class == 1 && $stem =~ s/ê$//) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
344
|
4
|
|
|
|
|
30
|
$table = [ map "$stem$_", qw( i î ), '', qw( ê ê în ) ]; |
345
|
|
|
|
|
|
|
} elsif($stem =~ s/a$//) { |
346
|
2
|
|
|
|
|
16
|
$table = [ map "$stem$_", qw( i i â u ê în ) ]; |
347
|
|
|
|
|
|
|
} elsif($class == 3 && $stem =~ s/ê$//) { |
348
|
2
|
|
|
|
|
24
|
$table = [ map "$stem$_", qw( i i â u ê în ) ]; |
349
|
|
|
|
|
|
|
} elsif($stem =~ s/i$//) { |
350
|
2
|
|
|
|
|
22
|
$table = [ map "$stem$_", qw( i ê â ê ê ên ) ]; |
351
|
|
|
|
|
|
|
} elsif($class == 5 && $stem =~ s/ê$//) { |
352
|
2
|
|
|
|
|
15
|
$table = [ map "$stem$_", qw( i ê ), '', qw( ê ê ên ) ]; |
353
|
|
|
|
|
|
|
} else { |
354
|
0
|
|
|
|
|
0
|
return; |
355
|
|
|
|
|
|
|
} |
356
|
|
|
|
|
|
|
|
357
|
|
|
|
|
|
|
# Cadhinor verbs in -c- and -g- |
358
|
12
|
100
|
100
|
|
|
101
|
if($class == 1 || $class == 2 || $class == 3) { |
|
|
100
|
100
|
|
|
|
|
359
|
8
|
|
|
|
|
19
|
for(@$table) { |
360
|
48
|
100
|
|
|
|
286
|
if(exists $cadhctab->{$verb}) { |
|
|
100
|
|
|
|
|
|
361
|
6
|
|
|
|
|
6
|
s/ch([êâu]?)$/k$1/; |
362
|
6
|
|
|
|
|
20
|
s/k([iî]n?)$/ch$1/; |
363
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
364
|
12
|
|
|
|
|
51
|
s/ch([êâu]?)$/g$1/; |
365
|
12
|
|
|
|
|
29
|
s/g([iî]n?)$/ch$1/; |
366
|
|
|
|
|
|
|
} |
367
|
|
|
|
|
|
|
} |
368
|
|
|
|
|
|
|
} elsif($class == 4) { |
369
|
2
|
|
|
|
|
5
|
for(@{$table}[2]) { |
|
2
|
|
|
|
|
8
|
|
370
|
2
|
100
|
|
|
|
15
|
if(exists $cadhctab->{$verb}) { |
|
|
50
|
|
|
|
|
|
371
|
1
|
|
|
|
|
8
|
s/ch(â)$/k$1/; |
372
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
373
|
0
|
|
|
|
|
0
|
s/ch(â)$/g$1/; |
374
|
|
|
|
|
|
|
} |
375
|
|
|
|
|
|
|
} |
376
|
|
|
|
|
|
|
} |
377
|
|
|
|
|
|
|
|
378
|
12
|
|
|
|
|
25
|
for(@$table) { |
379
|
72
|
|
|
|
|
76
|
s/shtu$/kchu/; |
380
|
72
|
|
|
|
|
78
|
s/g$/k/; |
381
|
72
|
|
|
|
|
96
|
s/b$/p/; |
382
|
|
|
|
|
|
|
} |
383
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
# -sht --> -ch in III.sg for 1st conjugation |
385
|
|
|
|
|
|
|
# spirantise -d -t -p in 1st conjugation |
386
|
12
|
100
|
|
|
|
32
|
if($class == 1) { |
387
|
4
|
|
|
|
|
9
|
for($table->[2]) { |
388
|
4
|
|
|
|
|
8
|
s/sht$/ch/; |
389
|
|
|
|
|
|
|
|
390
|
4
|
100
|
|
|
|
56
|
if($verb =~ /$vow[dtp][êai]$/o) { |
391
|
1
|
|
|
|
|
5
|
s/d$/dh/; |
392
|
1
|
|
|
|
|
3
|
s/t$/th/; |
393
|
1
|
|
|
|
|
3
|
s/p$/f/; |
394
|
|
|
|
|
|
|
} |
395
|
|
|
|
|
|
|
} |
396
|
|
|
|
|
|
|
} |
397
|
|
|
|
|
|
|
|
398
|
|
|
|
|
|
|
# front and back vowel alternations for Cadhinor verbs in -u- |
399
|
12
|
100
|
|
|
|
41
|
if(exists $cadhutab->{$verb}) { |
400
|
1
|
|
|
|
|
3
|
for(@$table) { |
401
|
6
|
|
|
|
|
87
|
s/i($cons+[uâ]?)$/o$1/; |
402
|
6
|
|
|
|
|
52
|
s/u($cons+[êiî]n?)$/i$1/; |
403
|
|
|
|
|
|
|
} |
404
|
|
|
|
|
|
|
} |
405
|
|
|
|
|
|
|
|
406
|
12
|
|
|
|
|
84
|
return $table; |
407
|
|
|
|
|
|
|
} # scrifel |
408
|
|
|
|
|
|
|
|
409
|
|
|
|
|
|
|
my %izhcrifel = ( |
410
|
|
|
|
|
|
|
'eza' => [ qw( firi firi furâ furu furê firiôn ) ], |
411
|
|
|
|
|
|
|
); |
412
|
|
|
|
|
|
|
|
413
|
|
|
|
|
|
|
sub izhcrifel { |
414
|
6
|
|
|
6
|
1
|
26
|
my $verb = shift; |
415
|
6
|
|
|
|
|
12
|
my $class = shift; |
416
|
6
|
|
|
|
|
11
|
my $stem = $verb; |
417
|
6
|
|
|
|
|
10
|
my $table; |
418
|
|
|
|
|
|
|
|
419
|
6
|
100
|
|
|
|
35
|
return $izhcrifel{$verb} if exists $izhcrifel{$verb}; |
420
|
|
|
|
|
|
|
|
421
|
5
|
50
|
33
|
|
|
39
|
if(! defined($class) && exists $classtab->{$verb}) { |
422
|
0
|
|
|
|
|
0
|
$class = $classtab->{$verb}; |
423
|
|
|
|
|
|
|
} |
424
|
|
|
|
|
|
|
|
425
|
5
|
50
|
33
|
|
|
47
|
$class = 2 if !defined($class) && $verb =~ /a$/; |
426
|
5
|
50
|
33
|
|
|
21
|
$class = 3 if !defined($class) && $verb =~ /ê$/; |
427
|
5
|
50
|
33
|
|
|
14
|
$class = 4 if !defined($class) && $verb =~ /i$/; |
428
|
5
|
50
|
|
|
|
13
|
$class = 0 unless defined $class; |
429
|
|
|
|
|
|
|
|
430
|
5
|
100
|
66
|
|
|
79
|
if($class == 1 && $stem =~ s/ê$//) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
431
|
1
|
|
|
|
|
25
|
$table = [ map "$stem$_", qw( ri rî êr rê rê rîn ) ]; |
432
|
|
|
|
|
|
|
} elsif($stem =~ s/a$//) { |
433
|
1
|
|
|
|
|
7
|
$table = [ map "$stem$_", qw( ri ri râ ru rê rîn ) ]; |
434
|
|
|
|
|
|
|
} elsif($class == 3 && $stem =~ s/ê$//) { |
435
|
1
|
|
|
|
|
10
|
$table = [ map "$stem$_", qw( ri ri râ ru rê rîn ) ]; |
436
|
|
|
|
|
|
|
} elsif($stem =~ s/i$//) { |
437
|
1
|
|
|
|
|
9
|
$table = [ map "$stem$_", qw( ri rê râ rê rê rên ) ]; |
438
|
|
|
|
|
|
|
} elsif($class == 5 && $stem =~ s/ê$//) { |
439
|
1
|
|
|
|
|
10
|
$table = [ map "$stem$_", qw( ri rê êr rê rê rên ) ]; |
440
|
|
|
|
|
|
|
} else { |
441
|
0
|
|
|
|
|
0
|
return; |
442
|
|
|
|
|
|
|
} |
443
|
|
|
|
|
|
|
|
444
|
5
|
|
|
|
|
41
|
return $table; |
445
|
|
|
|
|
|
|
} # izhcrifel |
446
|
|
|
|
|
|
|
|
447
|
|
|
|
|
|
|
my %budemeric = ( |
448
|
|
|
|
|
|
|
'eza' => [ qw( êshta êshtê êshtê êshta êshtu êshtôn ) ], |
449
|
|
|
|
|
|
|
); |
450
|
|
|
|
|
|
|
|
451
|
|
|
|
|
|
|
sub budemeric { |
452
|
6
|
|
|
6
|
1
|
24
|
my $verb = shift; |
453
|
6
|
|
|
|
|
15
|
my $class = shift; |
454
|
6
|
|
|
|
|
13
|
my $stem = $verb; |
455
|
6
|
|
|
|
|
9
|
my $table; |
456
|
|
|
|
|
|
|
|
457
|
6
|
100
|
|
|
|
31
|
return $budemeric{$verb} if exists $budemeric{$verb}; |
458
|
|
|
|
|
|
|
|
459
|
5
|
50
|
|
|
|
17
|
return demeric($subjtab->{$verb}, $class) if exists $subjtab->{$verb}; |
460
|
|
|
|
|
|
|
|
461
|
5
|
50
|
33
|
|
|
45
|
if(! defined($class) && exists $classtab->{$verb}) { |
462
|
0
|
|
|
|
|
0
|
$class = $classtab->{$verb}; |
463
|
|
|
|
|
|
|
} |
464
|
|
|
|
|
|
|
|
465
|
5
|
50
|
33
|
|
|
18
|
$class = 2 if !defined($class) && $verb =~ /a$/; |
466
|
5
|
50
|
33
|
|
|
14
|
$class = 3 if !defined($class) && $verb =~ /ê$/; |
467
|
5
|
50
|
33
|
|
|
19
|
$class = 4 if !defined($class) && $verb =~ /i$/; |
468
|
5
|
50
|
|
|
|
13
|
$class = 0 unless defined $class; |
469
|
|
|
|
|
|
|
|
470
|
5
|
100
|
66
|
|
|
85
|
if($class == 1 && $stem =~ s/ê$/t/) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
471
|
1
|
|
|
|
|
32
|
$table = [ map "$stem$_", qw( a ê ê u u ôn ) ]; |
472
|
|
|
|
|
|
|
} elsif($stem =~ s/a$/m/) { |
473
|
1
|
|
|
|
|
10
|
$table = [ map "$stem$_", qw( â ê ê a u ôn ) ]; |
474
|
|
|
|
|
|
|
} elsif($class == 3 && $stem =~ s/ê$/m/) { |
475
|
1
|
|
|
|
|
9
|
$table = [ map "$stem$_", qw( â ê ê a u ên ) ]; |
476
|
|
|
|
|
|
|
} elsif($stem =~ s/i$/t/) { |
477
|
1
|
|
|
|
|
42
|
$table = [ map "$stem$_", '', '', qw( i u u în ) ]; |
478
|
1
|
|
|
|
|
4
|
for(@$table) { |
479
|
6
|
|
|
|
|
12
|
s/t$/ech/; |
480
|
6
|
|
|
|
|
11
|
s/tu$/chu/; |
481
|
6
|
|
|
|
|
26
|
s/t(ti|chu|tîn)$/$1/; # for beshti |
482
|
|
|
|
|
|
|
} |
483
|
|
|
|
|
|
|
} elsif($class == 5 && $stem =~ s/ê$/t/) { |
484
|
1
|
|
|
|
|
11
|
$table = [ map "$stem$_", '', '', qw( i u u în ) ]; |
485
|
1
|
|
|
|
|
4
|
for(@$table) { |
486
|
6
|
|
|
|
|
12
|
s/t$/ech/; |
487
|
6
|
|
|
|
|
13
|
s/tu$/chu/; |
488
|
|
|
|
|
|
|
} |
489
|
|
|
|
|
|
|
} else { |
490
|
0
|
|
|
|
|
0
|
return; |
491
|
|
|
|
|
|
|
} |
492
|
|
|
|
|
|
|
|
493
|
5
|
|
|
|
|
44
|
return $table; |
494
|
|
|
|
|
|
|
} # budemeric |
495
|
|
|
|
|
|
|
|
496
|
|
|
|
|
|
|
|
497
|
|
|
|
|
|
|
my %buscrifel = ( |
498
|
|
|
|
|
|
|
'eza' => [ qw( êshka êshkê êshkê êshka êshku êshkôn ) ], |
499
|
|
|
|
|
|
|
); |
500
|
|
|
|
|
|
|
|
501
|
|
|
|
|
|
|
sub buscrifel { |
502
|
6
|
|
|
6
|
1
|
25
|
my $verb = shift; |
503
|
6
|
|
|
|
|
14
|
my $class = shift; |
504
|
6
|
|
|
|
|
13
|
my $stem = $verb; |
505
|
6
|
|
|
|
|
9
|
my $table; |
506
|
|
|
|
|
|
|
|
507
|
6
|
100
|
|
|
|
37
|
return $buscrifel{$verb} if exists $buscrifel{$verb}; |
508
|
|
|
|
|
|
|
|
509
|
5
|
50
|
|
|
|
21
|
return scrifel($subjtab->{$verb}, $class) if exists $subjtab->{$verb}; |
510
|
|
|
|
|
|
|
|
511
|
5
|
50
|
33
|
|
|
49
|
if(! defined($class) && exists $classtab->{$verb}) { |
512
|
0
|
|
|
|
|
0
|
$class = $classtab->{$verb}; |
513
|
|
|
|
|
|
|
} |
514
|
|
|
|
|
|
|
|
515
|
5
|
50
|
33
|
|
|
20
|
$class = 2 if !defined($class) && $verb =~ /a$/; |
516
|
5
|
50
|
33
|
|
|
18
|
$class = 3 if !defined($class) && $verb =~ /ê$/; |
517
|
5
|
50
|
33
|
|
|
18
|
$class = 4 if !defined($class) && $verb =~ /i$/; |
518
|
5
|
50
|
|
|
|
12
|
$class = 0 unless defined $class; |
519
|
|
|
|
|
|
|
|
520
|
5
|
100
|
66
|
|
|
83
|
if($class == 1 && $stem =~ s/ê$/k/) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
521
|
1
|
|
|
|
|
25
|
$table = [ map "$stem$_", qw( a ê ê u u ôn ) ]; |
522
|
1
|
|
|
|
|
3
|
for(@$table) { |
523
|
6
|
|
|
|
|
15
|
s/kê$/chê/; |
524
|
|
|
|
|
|
|
} |
525
|
|
|
|
|
|
|
} elsif($stem =~ s/a$/n/) { |
526
|
1
|
|
|
|
|
11
|
$table = [ map "$stem$_", qw( â ê ê a u ôn ) ]; |
527
|
|
|
|
|
|
|
} elsif($class == 3 && $stem =~ s/ê$/n/) { |
528
|
1
|
|
|
|
|
11
|
$table = [ map "$stem$_", qw( â ê ê a u ên ) ]; |
529
|
|
|
|
|
|
|
} elsif($stem =~ s/i$/r/) { |
530
|
1
|
|
|
|
|
10
|
$table = [ map "$stem$_", '', '', qw( i u u în ) ]; |
531
|
1
|
|
|
|
|
5
|
for(@$table) { |
532
|
6
|
|
|
|
|
16
|
s/r$/ir/; |
533
|
|
|
|
|
|
|
} |
534
|
|
|
|
|
|
|
} elsif($class == 5 && $stem =~ s/ê$/r/) { |
535
|
1
|
|
|
|
|
10
|
$table = [ map "$stem$_", '', '', qw( i u u în ) ]; |
536
|
1
|
|
|
|
|
6
|
for(@$table) { |
537
|
6
|
|
|
|
|
16
|
s/r$/ir/; |
538
|
|
|
|
|
|
|
} |
539
|
|
|
|
|
|
|
} else { |
540
|
0
|
|
|
|
|
0
|
return; |
541
|
|
|
|
|
|
|
} |
542
|
|
|
|
|
|
|
|
543
|
5
|
|
|
|
|
45
|
return $table; |
544
|
|
|
|
|
|
|
} # bucrifel |
545
|
|
|
|
|
|
|
|
546
|
|
|
|
|
|
|
|
547
|
|
|
|
|
|
|
my %befel = ( |
548
|
|
|
|
|
|
|
); |
549
|
|
|
|
|
|
|
|
550
|
|
|
|
|
|
|
sub befel { |
551
|
6
|
|
|
6
|
1
|
21
|
my $verb = shift; |
552
|
6
|
|
|
|
|
12
|
my $class = shift; |
553
|
6
|
|
|
|
|
11
|
my $stem = $verb; |
554
|
6
|
|
|
|
|
11
|
my $table; |
555
|
|
|
|
|
|
|
|
556
|
6
|
50
|
|
|
|
26
|
return $befel{$verb} if exists $befel{$verb}; |
557
|
|
|
|
|
|
|
|
558
|
6
|
50
|
33
|
|
|
24
|
if(! defined($class) && exists $classtab->{$verb}) { |
559
|
0
|
|
|
|
|
0
|
$class = $classtab->{$verb}; |
560
|
|
|
|
|
|
|
} |
561
|
|
|
|
|
|
|
|
562
|
6
|
50
|
33
|
|
|
44
|
$class = 2 if !defined($class) && $verb =~ /a$/; |
563
|
6
|
50
|
33
|
|
|
18
|
$class = 3 if !defined($class) && $verb =~ /ê$/; |
564
|
6
|
50
|
33
|
|
|
15
|
$class = 4 if !defined($class) && $verb =~ /i$/; |
565
|
6
|
50
|
|
|
|
15
|
$class = 0 unless defined $class; |
566
|
|
|
|
|
|
|
|
567
|
6
|
100
|
66
|
|
|
83
|
if($class == 1 && $stem =~ s/ê$//) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
568
|
1
|
|
|
|
|
11
|
$table = [ map "$stem$_", '', '', 'a', '', 'êl', 'an' ]; |
569
|
|
|
|
|
|
|
} elsif($stem =~ s/a$//) { |
570
|
2
|
|
|
|
|
18
|
$table = [ map "$stem$_", '', '', 'a', '', 'el', 'an' ]; |
571
|
|
|
|
|
|
|
} elsif($class == 3 && $stem =~ s/ê$//) { |
572
|
1
|
|
|
|
|
9
|
$table = [ map "$stem$_", '', '', 'a', '', 'el', 'an' ]; |
573
|
|
|
|
|
|
|
} elsif($stem =~ s/i$//) { |
574
|
1
|
|
|
|
|
9
|
$table = [ map "$stem$_", '', '', 'a', '', 'u', 'an' ]; |
575
|
|
|
|
|
|
|
} elsif($class == 5 && $stem =~ s/ê$//) { |
576
|
1
|
|
|
|
|
12
|
$table = [ map "$stem$_", '', '', 'a', '', 'u', 'an' ]; |
577
|
|
|
|
|
|
|
} else { |
578
|
0
|
|
|
|
|
0
|
return; |
579
|
|
|
|
|
|
|
} |
580
|
|
|
|
|
|
|
|
581
|
6
|
|
|
|
|
24
|
for(@$table) { |
582
|
|
|
|
|
|
|
# Cadhinor verbs in -c- and -g- |
583
|
36
|
50
|
|
|
|
110
|
if(exists $cadhctab->{$verb}) { |
|
|
50
|
|
|
|
|
|
584
|
0
|
|
|
|
|
0
|
s/k([eiêîû]?)$/ch/; |
585
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
586
|
0
|
|
|
|
|
0
|
s/g([eiêîû]?)$/ch/; |
587
|
|
|
|
|
|
|
} |
588
|
|
|
|
|
|
|
|
589
|
36
|
|
|
|
|
45
|
s/shtu$/kchu/; |
590
|
36
|
|
|
|
|
58
|
s/sht(an?)$/kch$1/; |
591
|
36
|
|
|
|
|
45
|
s/sht$/ch/; |
592
|
36
|
|
|
|
|
57
|
s/g$/k/; |
593
|
36
|
|
|
|
|
64
|
s/b$/p/; |
594
|
|
|
|
|
|
|
} |
595
|
|
|
|
|
|
|
|
596
|
|
|
|
|
|
|
# front and back vowel alternation in II.sg of 2nd and 3rd conjugation |
597
|
6
|
100
|
100
|
|
|
36
|
if($verb =~ /a$/ || $class == 3) { |
598
|
3
|
|
|
|
|
7
|
for($table->[1]) { |
599
|
3
|
|
|
|
|
71
|
s/u($cons+)$/i$1/; |
600
|
|
|
|
|
|
|
} |
601
|
|
|
|
|
|
|
} |
602
|
|
|
|
|
|
|
|
603
|
|
|
|
|
|
|
# front and back vowel alternations in III.sg + III.pl |
604
|
|
|
|
|
|
|
# and spirantisation |
605
|
6
|
|
|
|
|
10
|
for(@{$table}[2,5]) { |
|
6
|
|
|
|
|
14
|
|
606
|
12
|
|
|
|
|
23
|
s/([dtp])(an?)$/$spir{$1}$2/; |
607
|
12
|
|
|
|
|
105
|
s/u($cons+an?)$/i$1/; |
608
|
|
|
|
|
|
|
} |
609
|
|
|
|
|
|
|
|
610
|
|
|
|
|
|
|
# I.sg and I.pl don't exist |
611
|
6
|
|
|
|
|
13
|
@{$table}[0,3] = (undef, undef); |
|
6
|
|
|
|
|
12
|
|
612
|
|
|
|
|
|
|
|
613
|
6
|
|
|
|
|
39
|
return $table; |
614
|
|
|
|
|
|
|
} # befel |
615
|
|
|
|
|
|
|
|
616
|
|
|
|
|
|
|
|
617
|
|
|
|
|
|
|
my %part = ( |
618
|
|
|
|
|
|
|
); |
619
|
|
|
|
|
|
|
|
620
|
|
|
|
|
|
|
# Participles |
621
|
|
|
|
|
|
|
sub part { |
622
|
10
|
|
|
10
|
1
|
32
|
my $verb = shift; |
623
|
10
|
|
|
|
|
16
|
my $class = shift; |
624
|
10
|
|
|
|
|
18
|
my $stem = $verb; |
625
|
|
|
|
|
|
|
|
626
|
10
|
|
|
|
|
15
|
my($present, $past); |
627
|
|
|
|
|
|
|
|
628
|
10
|
50
|
|
|
|
37
|
if(exists $part{$verb}) { |
629
|
0
|
|
|
|
|
0
|
($present, $past) = @{ $part{$verb} }; |
|
0
|
|
|
|
|
0
|
|
630
|
|
|
|
|
|
|
} else { |
631
|
10
|
50
|
33
|
|
|
41
|
if(! defined($class) && exists $classtab->{$verb}) { |
632
|
0
|
|
|
|
|
0
|
$class = $classtab->{$verb}; |
633
|
|
|
|
|
|
|
} |
634
|
|
|
|
|
|
|
|
635
|
10
|
50
|
33
|
|
|
53
|
$class = 2 if !defined($class) && $verb =~ /a$/; |
636
|
10
|
50
|
33
|
|
|
31
|
$class = 3 if !defined($class) && $verb =~ /ê$/; |
637
|
10
|
50
|
33
|
|
|
26
|
$class = 4 if !defined($class) && $verb =~ /i$/; |
638
|
10
|
50
|
|
|
|
23
|
$class = 0 unless defined $class; |
639
|
|
|
|
|
|
|
|
640
|
10
|
100
|
66
|
|
|
138
|
if($class == 1 && $stem =~ s/ê$//) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
641
|
2
|
|
|
|
|
14
|
($past, $present) = map "$stem$_", 'êl', 'il'; |
642
|
|
|
|
|
|
|
} elsif($stem =~ s/a$//) { |
643
|
2
|
|
|
|
|
13
|
($past, $present) = map "$stem$_", 'u', 'ê'; |
644
|
|
|
|
|
|
|
} elsif($class == 3 && $stem =~ s/ê$//) { |
645
|
2
|
|
|
|
|
15
|
($past, $present) = map "$stem$_", 'u', 'ê'; |
646
|
|
|
|
|
|
|
} elsif($stem =~ s/i$//) { |
647
|
2
|
|
|
|
|
14
|
($past, $present) = map "$stem$_", 'u', 'i'; |
648
|
|
|
|
|
|
|
} elsif($class == 5 && $stem =~ s/ê$//) { |
649
|
2
|
|
|
|
|
15
|
($past, $present) = map "$stem$_", 'êl', 'ê'; |
650
|
|
|
|
|
|
|
} else { |
651
|
0
|
|
|
|
|
0
|
return; |
652
|
|
|
|
|
|
|
} |
653
|
|
|
|
|
|
|
} |
654
|
|
|
|
|
|
|
|
655
|
10
|
|
|
|
|
30
|
for($past, $present) { |
656
|
|
|
|
|
|
|
# Cadhinor verbs in -c- and -g- |
657
|
20
|
50
|
|
|
|
77
|
if(exists $cadhctab->{$verb}) { |
|
|
50
|
|
|
|
|
|
658
|
0
|
|
|
|
|
0
|
s/ch([auoâô])$/k/; |
659
|
0
|
|
|
|
|
0
|
s/k([eiêîû])$/ch/; |
660
|
|
|
|
|
|
|
} elsif(exists $cadhgtab->{$verb}) { |
661
|
0
|
|
|
|
|
0
|
s/ch([auoâô]?)$/g/; |
662
|
0
|
|
|
|
|
0
|
s/g([eiêîû])$/ch/; |
663
|
|
|
|
|
|
|
} |
664
|
|
|
|
|
|
|
|
665
|
20
|
|
|
|
|
54
|
s/shtu$/kchu/; |
666
|
|
|
|
|
|
|
} |
667
|
|
|
|
|
|
|
|
668
|
10
|
100
|
|
|
|
77
|
return wantarray ? ($present, $past) : [ $present, $past ]; |
669
|
|
|
|
|
|
|
} |
670
|
|
|
|
|
|
|
|
671
|
|
|
|
|
|
|
|
672
|
|
|
|
|
|
|
|
673
|
|
|
|
|
|
|
$gendertab = { |
674
|
|
|
|
|
|
|
'âshta' => 'masc', |
675
|
|
|
|
|
|
|
'eli' => 'masc', |
676
|
|
|
|
|
|
|
'lônd' => 'masc', |
677
|
|
|
|
|
|
|
|
678
|
|
|
|
|
|
|
'kal' => 'neut', |
679
|
|
|
|
|
|
|
'manu' => 'neut', |
680
|
|
|
|
|
|
|
'nôshti' => 'neut', |
681
|
|
|
|
|
|
|
'shkor' => 'neut', |
682
|
|
|
|
|
|
|
'shpâ' => 'neut', |
683
|
|
|
|
|
|
|
|
684
|
|
|
|
|
|
|
'chir' => 'fem', |
685
|
|
|
|
|
|
|
'elorê' => 'fem', |
686
|
|
|
|
|
|
|
'kabrâ' => 'fem', |
687
|
|
|
|
|
|
|
'medhi' => 'fem', |
688
|
|
|
|
|
|
|
'nor' => 'fem', |
689
|
|
|
|
|
|
|
|
690
|
|
|
|
|
|
|
'achel' => 'fem', |
691
|
|
|
|
|
|
|
'acher' => 'masc', |
692
|
|
|
|
|
|
|
'Achirê' => 'fem', |
693
|
|
|
|
|
|
|
'âdh' => 'masc', |
694
|
|
|
|
|
|
|
'âdhechu' => 'masc', |
695
|
|
|
|
|
|
|
'adipa' => 'masc', |
696
|
|
|
|
|
|
|
'adlelek' => 'fem', |
697
|
|
|
|
|
|
|
'adlelu' => 'fem', |
698
|
|
|
|
|
|
|
'air' => 'fem', |
699
|
|
|
|
|
|
|
}; # $gendertab |
700
|
|
|
|
|
|
|
|
701
|
|
|
|
|
|
|
$pluraltab = { |
702
|
|
|
|
|
|
|
'âshta' => 'âshtâ', |
703
|
|
|
|
|
|
|
'eli' => 'eliri', |
704
|
|
|
|
|
|
|
'lônd' => 'lôndi', |
705
|
|
|
|
|
|
|
|
706
|
|
|
|
|
|
|
'kal' => 'kalo', |
707
|
|
|
|
|
|
|
'manu' => 'mani', |
708
|
|
|
|
|
|
|
'nôshti' => 'nôkchu', |
709
|
|
|
|
|
|
|
'shkor' => 'shkoru', |
710
|
|
|
|
|
|
|
'shpâ' => 'shpao', |
711
|
|
|
|
|
|
|
|
712
|
|
|
|
|
|
|
'chir' => 'chirâ', |
713
|
|
|
|
|
|
|
'elorê' => 'eloriê', |
714
|
|
|
|
|
|
|
'kabrâ' => 'kabrachâ', |
715
|
|
|
|
|
|
|
'medhi' => 'medhiê', |
716
|
|
|
|
|
|
|
'nor' => 'norê', |
717
|
|
|
|
|
|
|
|
718
|
|
|
|
|
|
|
'âdhechu' => 'âdhechuni', |
719
|
|
|
|
|
|
|
}; # $pluraltab |
720
|
|
|
|
|
|
|
|
721
|
|
|
|
|
|
|
sub noun { |
722
|
64
|
|
|
64
|
1
|
216
|
my $noun = shift; |
723
|
64
|
|
|
|
|
157
|
my $gender = shift; |
724
|
64
|
|
|
|
|
130
|
my $plural = shift; |
725
|
64
|
|
|
|
|
105
|
my $table; |
726
|
|
|
|
|
|
|
|
727
|
|
|
|
|
|
|
# is it a pronoun? |
728
|
|
|
|
|
|
|
# nom acc dat gen nom acc/dat gen |
729
|
64
|
100
|
|
|
|
418
|
return [ qw( sû sêth sû (eri) ta tâ (tandê) ) ] if $noun eq 'sû'; |
730
|
63
|
100
|
|
|
|
252
|
return [ qw( lê êk lê (leri) mukh mî (mundê) ) ] if $noun eq 'lê'; |
731
|
62
|
100
|
|
|
|
191
|
return [ qw( ât âtô âta âti kâ kâ (kandê) ) ] if $noun eq 'ât'; |
732
|
61
|
100
|
|
|
|
194
|
return [ qw( tot tô tota toti kâ kâ (kandê) ) ] if $noun eq 'tot'; |
733
|
60
|
100
|
|
|
|
156
|
return [ qw( kêt kêtô kêta kêti ), (undef) x 3 ] if $noun eq 'kêt'; |
734
|
59
|
100
|
|
|
|
142
|
return [ qw( ta tâ tao (tandê) ), (undef) x 3 ] if $noun eq 'ta'; |
735
|
58
|
100
|
|
|
|
169
|
return [ qw( mukh mî mî (mundê) ), (undef) x 3 ] if $noun eq 'mukh'; |
736
|
57
|
100
|
|
|
|
139
|
return [ qw( kâ kâ kâ (kandê) ), (undef) x 3 ] if $noun eq 'kâ'; |
737
|
56
|
100
|
|
|
|
121
|
return [ '', qw( zêth zeu zei ), '', qw( zaa zai ) ] if $noun eq 'zê'; |
738
|
55
|
100
|
|
|
|
267
|
return [ '', qw( zaa zau zai ), (undef) x 3 ] if $noun eq 'za'; |
739
|
|
|
|
|
|
|
|
740
|
|
|
|
|
|
|
# otherwise it's a noun. |
741
|
|
|
|
|
|
|
|
742
|
|
|
|
|
|
|
# irregular oblique stem |
743
|
54
|
50
|
|
|
|
135
|
return [ qw( pû pû pea peo pei peî peich ) ] if $noun eq 'pû'; |
744
|
|
|
|
|
|
|
|
745
|
54
|
100
|
66
|
|
|
331
|
if(!defined($gender) && exists $gendertab->{$noun}) { |
746
|
26
|
|
|
|
|
68
|
$gender = $gendertab->{$noun}; |
747
|
|
|
|
|
|
|
} |
748
|
|
|
|
|
|
|
|
749
|
54
|
50
|
|
|
|
140
|
if(!defined($gender)) { |
750
|
|
|
|
|
|
|
# try to guess based on the ending |
751
|
0
|
0
|
0
|
|
|
0
|
if($noun =~ /a$/) { |
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
752
|
0
|
|
|
|
|
0
|
$gender = 'masc'; |
753
|
|
|
|
|
|
|
} elsif($noun =~ /ê$/) { |
754
|
0
|
|
|
|
|
0
|
$gender = 'fem'; |
755
|
|
|
|
|
|
|
} elsif($noun =~ /$consend/o && defined $plural && $plural =~ /i$/) { |
756
|
0
|
|
|
|
|
0
|
$gender = 'masc'; # can't detect anisosyllabic nouns as they |
757
|
|
|
|
|
|
|
# could be neuter |
758
|
|
|
|
|
|
|
} elsif($noun =~ /(?:$cons|i)$/o && defined $plural && $plural =~ /[ou]$/) { |
759
|
0
|
|
|
|
|
0
|
$gender = 'neut'; |
760
|
|
|
|
|
|
|
} elsif($noun =~ /â$/ && defined $plural && $plural =~ /ao$/) { |
761
|
0
|
|
|
|
|
0
|
$gender = 'neut'; |
762
|
|
|
|
|
|
|
} elsif($noun =~ /(?:$cons|i)$/o && defined $plural && $plural =~ /[âê]$/) { |
763
|
0
|
|
|
|
|
0
|
$gender = 'fem'; |
764
|
|
|
|
|
|
|
} elsif($noun =~ /â$/ && defined $plural && $plural =~ /ach$/) { |
765
|
0
|
|
|
|
|
0
|
$gender = 'fem'; |
766
|
|
|
|
|
|
|
} else { |
767
|
0
|
|
|
|
|
0
|
return; |
768
|
|
|
|
|
|
|
} |
769
|
|
|
|
|
|
|
} |
770
|
|
|
|
|
|
|
|
771
|
54
|
100
|
66
|
|
|
270
|
if(!defined($plural) && exists $pluraltab->{$noun}) { |
772
|
26
|
|
|
|
|
60
|
$plural = $pluraltab->{$noun}; |
773
|
|
|
|
|
|
|
} |
774
|
|
|
|
|
|
|
|
775
|
54
|
50
|
|
|
|
120
|
if(!defined($plural)) { |
776
|
|
|
|
|
|
|
# try to guess based on the ending |
777
|
0
|
0
|
0
|
|
|
0
|
if($noun =~ /$consend/o && $gender eq 'masc') { |
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
778
|
0
|
|
|
|
|
0
|
$plural = $noun . 'i'; # assume isosyllabic |
779
|
|
|
|
|
|
|
} elsif($noun =~ /a$/ && $gender eq 'masc') { |
780
|
0
|
|
|
|
|
0
|
($plural = $noun) =~ s/a$/â/; |
781
|
|
|
|
|
|
|
} elsif($noun =~ /u$/ && $gender eq 'masc') { |
782
|
0
|
|
|
|
|
0
|
$plural = $noun . 'li'; # assume from -ul |
783
|
|
|
|
|
|
|
} elsif($noun =~ /$consend/o && $gender eq 'neut') { |
784
|
0
|
|
|
|
|
0
|
$plural = $noun . 'o'; # more than twice as comman as -u |
785
|
|
|
|
|
|
|
} elsif($noun =~ /i$/ && $gender eq 'neut') { |
786
|
0
|
|
|
|
|
0
|
($plural = $noun) =~ s/i$/u/; |
787
|
|
|
|
|
|
|
} elsif($noun =~ /u$/ && $gender eq 'neut') { |
788
|
0
|
|
|
|
|
0
|
($plural = $noun) =~ s/u$/i/; |
789
|
|
|
|
|
|
|
} elsif($noun =~ /â$/ && $gender eq 'neut') { |
790
|
0
|
|
|
|
|
0
|
($plural = $noun) =~ s/â$/ao/; |
791
|
|
|
|
|
|
|
} elsif($noun =~ /$consend/o && $gender eq 'fem') { |
792
|
0
|
|
|
|
|
0
|
$plural = $noun . 'â'; # "very common" |
793
|
|
|
|
|
|
|
} elsif($noun =~ /u$/ && $gender eq 'fem') { |
794
|
0
|
|
|
|
|
0
|
$plural = $noun . 'lâ'; # assume from -ul |
795
|
|
|
|
|
|
|
} elsif($noun =~ /i$/ && $gender eq 'fem') { |
796
|
0
|
|
|
|
|
0
|
$plural = $noun . 'ê'; |
797
|
|
|
|
|
|
|
} elsif($noun =~ /ê$/ && $gender eq 'fem') { |
798
|
0
|
|
|
|
|
0
|
($plural = $noun) =~ s/ê/iê/; |
799
|
|
|
|
|
|
|
} elsif($noun =~ /â$/ && $gender eq 'fem') { |
800
|
0
|
|
|
|
|
0
|
($plural = $noun) =~ s/â/achâ/; |
801
|
|
|
|
|
|
|
} else { |
802
|
0
|
|
|
|
|
0
|
return; |
803
|
|
|
|
|
|
|
} |
804
|
|
|
|
|
|
|
} |
805
|
|
|
|
|
|
|
|
806
|
54
|
|
|
|
|
109
|
my $sgstem = $noun; |
807
|
54
|
|
|
|
|
85
|
my $plstem = $plural; |
808
|
|
|
|
|
|
|
|
809
|
54
|
100
|
|
|
|
227
|
if($gender eq 'masc') { |
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
810
|
14
|
50
|
33
|
|
|
188
|
if($sgstem =~ /u$/ && $plstem =~ s/li$//) { |
|
|
100
|
33
|
|
|
|
|
|
|
50
|
|
|
|
|
|
811
|
0
|
|
|
|
|
0
|
$table = [ map("$sgstem$_", '', '', 'la', 'lo'), |
812
|
|
|
|
|
|
|
map("$plstem$_", 'li', 'lî', 'lich') ]; |
813
|
|
|
|
|
|
|
} elsif($plstem =~ s/i$//) { |
814
|
10
|
|
|
|
|
120
|
$table = [ map("$sgstem$_", '', '', 'a', 'o'), |
815
|
|
|
|
|
|
|
map("$plstem$_", 'i', 'î', 'ich') ]; |
816
|
|
|
|
|
|
|
} elsif($sgstem =~ s/a$// && $plstem =~ s/â$//) { |
817
|
4
|
|
|
|
|
46
|
$table = [ map("$sgstem$_", 'a', '', 'a', 'o'), |
818
|
|
|
|
|
|
|
map("$plstem$_", 'â', 'î', 'ach') ]; |
819
|
|
|
|
|
|
|
} else { |
820
|
0
|
|
|
|
|
0
|
return; |
821
|
|
|
|
|
|
|
} |
822
|
|
|
|
|
|
|
} elsif($gender eq 'neut') { |
823
|
20
|
100
|
100
|
|
|
15582
|
if($sgstem =~ /$consend/o && $plstem =~ s/o$//) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
66
|
|
|
|
|
|
|
100
|
66
|
|
|
|
|
|
|
50
|
33
|
|
|
|
|
824
|
4
|
|
|
|
|
67
|
$table = [ map("$sgstem$_", '', 'u', 'u', 'o'), |
825
|
|
|
|
|
|
|
map("$plstem$_", 'o', 'oi', 'och') ]; |
826
|
|
|
|
|
|
|
} elsif($sgstem =~ /$consend/o && $plstem =~ s/u$//) { |
827
|
4
|
|
|
|
|
47
|
$table = [ map("$sgstem$_", '', 'u', 'u', 'o'), |
828
|
|
|
|
|
|
|
map("$plstem$_", 'u', 'î', 'ich') ]; |
829
|
|
|
|
|
|
|
} elsif($sgstem =~ s/i$// && $plstem =~ s/u$//) { |
830
|
4
|
|
|
|
|
561
|
$table = [ map("$sgstem$_", 'i', 'i', 'i', 'io'), |
831
|
|
|
|
|
|
|
map("$plstem$_", 'u', 'î', 'ich') ]; |
832
|
|
|
|
|
|
|
} elsif($sgstem =~ s/u$// && $plstem =~ s/i$//) { |
833
|
4
|
|
|
|
|
46
|
$table = [ map("$sgstem$_", 'u', '', 'u', 'o'), |
834
|
|
|
|
|
|
|
map("$plstem$_", 'i', 'î', 'ich') ]; |
835
|
|
|
|
|
|
|
} elsif($sgstem =~ s/â$// && $plstem =~ s/ao$//) { |
836
|
4
|
|
|
|
|
52
|
$table = [ map("$sgstem$_", 'â', 'â', 'â', 'ach'), |
837
|
|
|
|
|
|
|
map("$plstem$_", 'ao', 'aoi', 'aoch') ]; |
838
|
|
|
|
|
|
|
} else { |
839
|
0
|
|
|
|
|
0
|
return; |
840
|
|
|
|
|
|
|
} |
841
|
|
|
|
|
|
|
} elsif($gender eq 'fem') { |
842
|
20
|
100
|
100
|
|
|
417
|
if($sgstem =~ /$consend/o && $plstem =~ s/â$//) { |
|
|
100
|
66
|
|
|
|
|
|
|
100
|
66
|
|
|
|
|
|
|
100
|
66
|
|
|
|
|
|
|
50
|
33
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
843
|
4
|
|
|
|
|
45
|
$table = [ map("$sgstem$_", '', 'a', 'ê', 'ach'), |
844
|
|
|
|
|
|
|
map("$plstem$_", 'â', 'êi', 'ech') ]; |
845
|
|
|
|
|
|
|
} elsif($sgstem =~ /$consend/o && $plstem =~ s/ê$//) { |
846
|
4
|
|
|
|
|
49
|
$table = [ map("$sgstem$_", '', 'e', 'ê', 'ech'), |
847
|
|
|
|
|
|
|
map("$plstem$_", 'ê', 'êi', 'ech') ]; |
848
|
|
|
|
|
|
|
} elsif($sgstem =~ /i$/ && $plstem =~ s/iê/i/) { |
849
|
4
|
|
|
|
|
46
|
$table = [ map("$sgstem$_", '', '', 'ê', 'ch'), |
850
|
|
|
|
|
|
|
map("$plstem$_", 'ê', 'a', 'ech') ]; |
851
|
|
|
|
|
|
|
} elsif($sgstem =~ s/ê$// && $plstem =~ s/ê$//) { |
852
|
4
|
|
|
|
|
50
|
$table = [ map("$sgstem$_", 'ê', 'e', 'ê', 'ech'), |
853
|
|
|
|
|
|
|
map("$plstem$_", 'ê', 'a', 'ech') ]; |
854
|
|
|
|
|
|
|
} elsif($sgstem =~ s/â$// && $plstem =~ s/â$//) { |
855
|
4
|
|
|
|
|
43
|
$table = [ map("$sgstem$_", 'â', 'a', 'ê', 'ach'), |
856
|
|
|
|
|
|
|
map("$plstem$_", 'â', 'a', 'ech') ]; |
857
|
|
|
|
|
|
|
} elsif($sgstem =~ /u$/ && $plstem =~ s/lâ$//) { |
858
|
0
|
|
|
|
|
0
|
$table = [ map("$sgstem$_", '', 'la', 'lê', 'lach'), |
859
|
|
|
|
|
|
|
map("$plstem$_", 'lâ', 'lêi', 'lech') ]; |
860
|
|
|
|
|
|
|
} elsif($sgstem =~ /u$/ && $plstem =~ s/â$//) { # chizu; others? |
861
|
0
|
|
|
|
|
0
|
$table = [ map("$sgstem$_", '', 'a', 'ê', 'ach'), |
862
|
|
|
|
|
|
|
map("$plstem$_", 'â', 'êi', 'ech') ]; |
863
|
|
|
|
|
|
|
} else { |
864
|
0
|
|
|
|
|
0
|
return; |
865
|
|
|
|
|
|
|
} |
866
|
|
|
|
|
|
|
} else { |
867
|
0
|
|
|
|
|
0
|
return; |
868
|
|
|
|
|
|
|
} |
869
|
|
|
|
|
|
|
|
870
|
54
|
|
|
|
|
479
|
return $table; |
871
|
|
|
|
|
|
|
} |
872
|
|
|
|
|
|
|
|
873
|
|
|
|
|
|
|
|
874
|
|
|
|
|
|
|
# Lost consonants which are restored in all but s.nom. and m.s.acc. |
875
|
|
|
|
|
|
|
|
876
|
|
|
|
|
|
|
$rootconstab = { |
877
|
|
|
|
|
|
|
'andû' => 'r', |
878
|
|
|
|
|
|
|
'aveku' => 'r', |
879
|
|
|
|
|
|
|
'dhu' => 'n', |
880
|
|
|
|
|
|
|
'di' => 'n', |
881
|
|
|
|
|
|
|
'du' => 'r', |
882
|
|
|
|
|
|
|
'glûmu' => 'l', |
883
|
|
|
|
|
|
|
'kê' => 'r', |
884
|
|
|
|
|
|
|
'kônu' => 'l', |
885
|
|
|
|
|
|
|
'kû' => 'r', |
886
|
|
|
|
|
|
|
'melhu' => 'r', |
887
|
|
|
|
|
|
|
'mu' => 'r', |
888
|
|
|
|
|
|
|
'na' => 'n', |
889
|
|
|
|
|
|
|
'osôku' => 'l', |
890
|
|
|
|
|
|
|
'rhu' => 'm', |
891
|
|
|
|
|
|
|
}; # $rootconstab |
892
|
|
|
|
|
|
|
|
893
|
|
|
|
|
|
|
sub adj { |
894
|
8
|
|
|
8
|
1
|
32
|
my $adj = shift; |
895
|
8
|
|
|
|
|
15
|
my $rootcons = shift; |
896
|
8
|
|
|
|
|
18
|
my $stem = $adj; |
897
|
8
|
|
|
|
|
12
|
my $table; |
898
|
|
|
|
|
|
|
|
899
|
8
|
100
|
100
|
|
|
60
|
if(!defined($rootcons) && exists $rootconstab->{$adj}) { |
900
|
1
|
|
|
|
|
3
|
$rootcons = $rootconstab->{$adj}; |
901
|
|
|
|
|
|
|
} |
902
|
|
|
|
|
|
|
|
903
|
8
|
100
|
|
|
|
25
|
$rootcons = '' unless defined $rootcons; |
904
|
|
|
|
|
|
|
|
905
|
8
|
100
|
100
|
|
|
111
|
if($stem =~ /$consend/o || length $rootcons) { |
|
|
100
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
906
|
4
|
|
|
|
|
94
|
$table = [ [ $stem, $stem, map "$stem$rootcons$_", qw( a o i î ich ) ], |
907
|
|
|
|
|
|
|
[ $stem, map "$stem$rootcons$_", qw( u u o o î ich ) ], |
908
|
|
|
|
|
|
|
[ $stem, map "$stem$rootcons$_", qw( a ê ach â êi ech ) ] ]; |
909
|
|
|
|
|
|
|
} elsif($stem =~ s/ê$//) { |
910
|
2
|
|
|
|
|
44
|
$table = [ [ map "$stem$_", qw( ê ê a o ê î êch ) ], |
911
|
|
|
|
|
|
|
[ map "$stem$_", qw( e ê ê o e ê ech ) ], |
912
|
|
|
|
|
|
|
[ map "$stem$_", qw( ê e ê ech ê êi ech ) ] ]; |
913
|
|
|
|
|
|
|
} elsif($stem =~ s/i$//) { |
914
|
2
|
|
|
|
|
46
|
$table = [ [ map "$stem$_", 'i', '', qw( i io i î ich ) ], |
915
|
|
|
|
|
|
|
[ map "$stem$_", qw( i i i io u î ich ) ], |
916
|
|
|
|
|
|
|
[ map "$stem$_", qw( i i iê ich iê ia iech ) ] ]; |
917
|
|
|
|
|
|
|
} elsif($stem =~ s/â$//) { |
918
|
0
|
|
|
|
|
0
|
$table = [ [ map "$stem$_", qw( â â â ach ao aoi aoch ) ], |
919
|
|
|
|
|
|
|
[ map "$stem$_", qw( â â â ach ao aoi aoch ) ], |
920
|
|
|
|
|
|
|
[ map "$stem$_", qw( â a ê ach achâ acha achech ) ] ]; |
921
|
|
|
|
|
|
|
} else { |
922
|
0
|
|
|
|
|
0
|
return; |
923
|
|
|
|
|
|
|
} |
924
|
|
|
|
|
|
|
|
925
|
8
|
|
|
|
|
109
|
return $table; |
926
|
|
|
|
|
|
|
} |
927
|
|
|
|
|
|
|
|
928
|
|
|
|
|
|
|
1; |
929
|
|
|
|
|
|
|
__END__ |