line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Lingua::EN::Infinitive; |
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
# Name: |
4
|
|
|
|
|
|
|
# Lingua::EN::Infinitive. |
5
|
|
|
|
|
|
|
# |
6
|
|
|
|
|
|
|
# Documentation: |
7
|
|
|
|
|
|
|
# POD-style documentation is at the end. Extract it with pod2html.*. |
8
|
|
|
|
|
|
|
# |
9
|
|
|
|
|
|
|
# Tabs: |
10
|
|
|
|
|
|
|
# 4 spaces || die. |
11
|
|
|
|
|
|
|
# |
12
|
|
|
|
|
|
|
# Author: |
13
|
|
|
|
|
|
|
# Ron Savage |
14
|
|
|
|
|
|
|
# Home page: http://savage.net.au/index.html |
15
|
|
|
|
|
|
|
# |
16
|
|
|
|
|
|
|
# Licence: |
17
|
|
|
|
|
|
|
# Australian copyright (c) 1999-2002 Ron Savage. |
18
|
|
|
|
|
|
|
# |
19
|
|
|
|
|
|
|
# All Programs of mine are 'OSI Certified Open Source Software'; |
20
|
|
|
|
|
|
|
# you can redistribute them and/or modify them under the terms of |
21
|
|
|
|
|
|
|
# The Artistic License, a copy of which is available at: |
22
|
|
|
|
|
|
|
# http://www.opensource.org/licenses/index.html |
23
|
|
|
|
|
|
|
|
24
|
1
|
|
|
1
|
|
24524
|
use strict; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
47
|
|
25
|
1
|
|
|
1
|
|
5
|
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
4238
|
|
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
require Exporter; |
28
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
@ISA = qw(Exporter); |
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
# Items to export into callers namespace by default. Note: do not export |
32
|
|
|
|
|
|
|
# names by default without a very good reason. Use EXPORT_OK instead. |
33
|
|
|
|
|
|
|
# Do not simply export all your public functions/methods/constants. |
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
@EXPORT = qw(); |
36
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
@EXPORT_OK = qw(); |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
our $VERSION = '1.11'; |
40
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
# Preloaded methods go here. |
42
|
|
|
|
|
|
|
# ------------------------------------------------------------------- |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
sub new |
45
|
|
|
|
|
|
|
{ |
46
|
0
|
|
|
0
|
0
|
|
my($class) = @_; |
47
|
0
|
|
0
|
|
|
|
$class = ref($class) || $class; |
48
|
0
|
|
|
|
|
|
my($self) = {}; |
49
|
0
|
|
|
|
|
|
$self -> {'word1'} = ''; |
50
|
0
|
|
|
|
|
|
$self -> {'word2'} = ''; |
51
|
0
|
|
|
|
|
|
$self -> {'suffix'} = ''; |
52
|
0
|
|
|
|
|
|
$self -> {'rule'} = ''; |
53
|
0
|
|
|
|
|
|
$self -> {'irregular2infinitive'} = |
54
|
|
|
|
|
|
|
{ |
55
|
|
|
|
|
|
|
'abided' => 'abide', |
56
|
|
|
|
|
|
|
'abode' => 'abide', |
57
|
|
|
|
|
|
|
'am' => 'be', |
58
|
|
|
|
|
|
|
'are' => 'be', |
59
|
|
|
|
|
|
|
'arisen' => 'arise', |
60
|
|
|
|
|
|
|
'arose' => 'arise', |
61
|
|
|
|
|
|
|
'ate' => 'eat', |
62
|
|
|
|
|
|
|
'awaked' => 'awake', |
63
|
|
|
|
|
|
|
'awoke' => 'awake', |
64
|
|
|
|
|
|
|
'bade' => 'bid', |
65
|
|
|
|
|
|
|
'beaten' => 'beat', |
66
|
|
|
|
|
|
|
'became' => 'become', |
67
|
|
|
|
|
|
|
'been' => 'be', |
68
|
|
|
|
|
|
|
'befallen' => 'befall', |
69
|
|
|
|
|
|
|
'befell' => 'befall', |
70
|
|
|
|
|
|
|
'began' => 'begin', |
71
|
|
|
|
|
|
|
'begat' => 'beget', |
72
|
|
|
|
|
|
|
'begot' => 'beget', |
73
|
|
|
|
|
|
|
'begotten' => 'beget', |
74
|
|
|
|
|
|
|
'begun' => 'begin', |
75
|
|
|
|
|
|
|
'beheld' => 'behold', |
76
|
|
|
|
|
|
|
'bent' => 'bend', |
77
|
|
|
|
|
|
|
'bereaved' => 'bereave', |
78
|
|
|
|
|
|
|
'bereft' => 'bereave', |
79
|
|
|
|
|
|
|
'beseeched' => 'beseech', |
80
|
|
|
|
|
|
|
'besought' => 'beseech', |
81
|
|
|
|
|
|
|
'bespoke' => 'bespeak', |
82
|
|
|
|
|
|
|
'bespoken' => 'bespeak', |
83
|
|
|
|
|
|
|
'bestrewed' => 'bestrew', |
84
|
|
|
|
|
|
|
'bestrewn' => 'bestrew', |
85
|
|
|
|
|
|
|
'bestrid' => 'bestride', |
86
|
|
|
|
|
|
|
'bestridden' => 'bestride', |
87
|
|
|
|
|
|
|
'bestrode' => 'bestride', |
88
|
|
|
|
|
|
|
'betaken' => 'betake', |
89
|
|
|
|
|
|
|
'bethought' => 'bethink', |
90
|
|
|
|
|
|
|
'betook' => 'betake', |
91
|
|
|
|
|
|
|
'betted' => 'bet', |
92
|
|
|
|
|
|
|
'bidden' => 'bid', |
93
|
|
|
|
|
|
|
'bided' => 'bide', |
94
|
|
|
|
|
|
|
'bit' => 'bite', |
95
|
|
|
|
|
|
|
'bitten' => 'bite', |
96
|
|
|
|
|
|
|
'bled' => 'bleed', |
97
|
|
|
|
|
|
|
'blended' => 'blend', |
98
|
|
|
|
|
|
|
'blent' => 'blend', |
99
|
|
|
|
|
|
|
'blessed' => 'bless', |
100
|
|
|
|
|
|
|
'blest' => 'bless', |
101
|
|
|
|
|
|
|
'blew' => 'blow', |
102
|
|
|
|
|
|
|
'blown' => 'blow', |
103
|
|
|
|
|
|
|
'bode' => 'bide', |
104
|
|
|
|
|
|
|
'bore' => 'bear', |
105
|
|
|
|
|
|
|
'born' => 'bear', |
106
|
|
|
|
|
|
|
'borne' => 'bear', |
107
|
|
|
|
|
|
|
'bought' => 'buy', |
108
|
|
|
|
|
|
|
'bound' => 'bind', |
109
|
|
|
|
|
|
|
'bred' => 'breed', |
110
|
|
|
|
|
|
|
'broadcasted' => 'broadcast', |
111
|
|
|
|
|
|
|
'broke' => 'break', |
112
|
|
|
|
|
|
|
'broken' => 'break', |
113
|
|
|
|
|
|
|
'brought' => 'bring', |
114
|
|
|
|
|
|
|
'browbeaten' => 'browbeat', |
115
|
|
|
|
|
|
|
'built' => 'build', |
116
|
|
|
|
|
|
|
'burned' => 'burn', |
117
|
|
|
|
|
|
|
'burnt' => 'burn', |
118
|
|
|
|
|
|
|
'came' => 'come', |
119
|
|
|
|
|
|
|
'caught' => 'catch', |
120
|
|
|
|
|
|
|
'chid' => 'chide', |
121
|
|
|
|
|
|
|
'chidden' => 'chide', |
122
|
|
|
|
|
|
|
'chided' => 'chide', |
123
|
|
|
|
|
|
|
'chose' => 'choose', |
124
|
|
|
|
|
|
|
'chosen' => 'choose', |
125
|
|
|
|
|
|
|
'clad' => 'clothe', |
126
|
|
|
|
|
|
|
'clave' => 'cleave', |
127
|
|
|
|
|
|
|
'cleaved' => 'cleave', |
128
|
|
|
|
|
|
|
'cleft' => 'cleave', |
129
|
|
|
|
|
|
|
'clothed' => 'clothe', |
130
|
|
|
|
|
|
|
'clove' => 'cleave', |
131
|
|
|
|
|
|
|
'cloven' => 'cleave', |
132
|
|
|
|
|
|
|
'clung' => 'cling', |
133
|
|
|
|
|
|
|
'costed' => 'cost', |
134
|
|
|
|
|
|
|
'could' => 'can', |
135
|
|
|
|
|
|
|
'crept' => 'creep', |
136
|
|
|
|
|
|
|
'crew' => 'crow', |
137
|
|
|
|
|
|
|
'crowed' => 'crow', |
138
|
|
|
|
|
|
|
'dealt' => 'deal', |
139
|
|
|
|
|
|
|
'did' => 'do', |
140
|
|
|
|
|
|
|
'done' => 'do', |
141
|
|
|
|
|
|
|
'dove' => 'dive', |
142
|
|
|
|
|
|
|
'drank' => 'drink', |
143
|
|
|
|
|
|
|
'drawn' => 'draw', |
144
|
|
|
|
|
|
|
'dreamed' => 'dream', |
145
|
|
|
|
|
|
|
'dreamt' => 'dream', |
146
|
|
|
|
|
|
|
'drew' => 'draw', |
147
|
|
|
|
|
|
|
'driven' => 'drive', |
148
|
|
|
|
|
|
|
'drove' => 'drive', |
149
|
|
|
|
|
|
|
'drunk' => 'drink', |
150
|
|
|
|
|
|
|
'dug' => 'dig', |
151
|
|
|
|
|
|
|
'dwelled' => 'dwell', |
152
|
|
|
|
|
|
|
'dwelt' => 'dwell', |
153
|
|
|
|
|
|
|
'eaten' => 'eat', |
154
|
|
|
|
|
|
|
'fallen' => 'fall', |
155
|
|
|
|
|
|
|
'fed' => 'feed', |
156
|
|
|
|
|
|
|
'fell' => 'fall', |
157
|
|
|
|
|
|
|
'felt' => 'feel', |
158
|
|
|
|
|
|
|
'fled' => 'flee', |
159
|
|
|
|
|
|
|
'flew' => 'fly', |
160
|
|
|
|
|
|
|
'flown' => 'fly', |
161
|
|
|
|
|
|
|
'flung' => 'fling', |
162
|
|
|
|
|
|
|
'forbad' => 'forbid', |
163
|
|
|
|
|
|
|
'forbade' => 'forbid', |
164
|
|
|
|
|
|
|
'forbidden' => 'forbid', |
165
|
|
|
|
|
|
|
'forbore' => 'forbear', |
166
|
|
|
|
|
|
|
'forborne' => 'forbear', |
167
|
|
|
|
|
|
|
'fordid' => 'fordo', |
168
|
|
|
|
|
|
|
'fordone' => 'fordo', |
169
|
|
|
|
|
|
|
'forecasted' => 'forecast', |
170
|
|
|
|
|
|
|
'foregone' => 'forego', |
171
|
|
|
|
|
|
|
'foreknew' => 'foreknow', |
172
|
|
|
|
|
|
|
'foreknown' => 'foreknow', |
173
|
|
|
|
|
|
|
'foreran' => 'forerun', |
174
|
|
|
|
|
|
|
'foresaw' => 'foresee', |
175
|
|
|
|
|
|
|
'foreshowed' => 'foreshow', |
176
|
|
|
|
|
|
|
'foreshown' => 'foreshow', |
177
|
|
|
|
|
|
|
'foretold' => 'foretell', |
178
|
|
|
|
|
|
|
'forewent' => 'forego', |
179
|
|
|
|
|
|
|
'forgave' => 'forgive', |
180
|
|
|
|
|
|
|
'forgiven' => 'forgive', |
181
|
|
|
|
|
|
|
'forgot' => 'forget', |
182
|
|
|
|
|
|
|
'forgotten' => 'forget', |
183
|
|
|
|
|
|
|
'forsaken' => 'forsake', |
184
|
|
|
|
|
|
|
'forseen' => 'foresee', |
185
|
|
|
|
|
|
|
'forsook' => 'forsake', |
186
|
|
|
|
|
|
|
'forswore' => 'forswear', |
187
|
|
|
|
|
|
|
'forsworn' => 'forswear', |
188
|
|
|
|
|
|
|
'fought' => 'fight', |
189
|
|
|
|
|
|
|
'found' => 'find', |
190
|
|
|
|
|
|
|
'froze' => 'freeze', |
191
|
|
|
|
|
|
|
'frozen' => 'freeze', |
192
|
|
|
|
|
|
|
'gainsaid' => 'gainsay', |
193
|
|
|
|
|
|
|
'gave' => 'give', |
194
|
|
|
|
|
|
|
'gilded' => 'gild', |
195
|
|
|
|
|
|
|
'gilt' => 'gild', |
196
|
|
|
|
|
|
|
'girded' => 'gird', |
197
|
|
|
|
|
|
|
'girt' => 'gird', |
198
|
|
|
|
|
|
|
'given' => 'give', |
199
|
|
|
|
|
|
|
'gone' => 'go', |
200
|
|
|
|
|
|
|
'got' => 'get', |
201
|
|
|
|
|
|
|
'gotten' => 'get', |
202
|
|
|
|
|
|
|
'graved' => 'grave', |
203
|
|
|
|
|
|
|
'graven' => 'grave', |
204
|
|
|
|
|
|
|
'grew' => 'grow', |
205
|
|
|
|
|
|
|
'ground' => 'grind', |
206
|
|
|
|
|
|
|
'grown' => 'grow', |
207
|
|
|
|
|
|
|
'had' => 'have', |
208
|
|
|
|
|
|
|
'hamstringed' => 'hamstring', |
209
|
|
|
|
|
|
|
'hamstrung' => 'hamstring', |
210
|
|
|
|
|
|
|
'hanged' => 'hang', |
211
|
|
|
|
|
|
|
'heard' => 'hear', |
212
|
|
|
|
|
|
|
'heaved' => 'heave', |
213
|
|
|
|
|
|
|
'held' => 'hold', |
214
|
|
|
|
|
|
|
'hewed' => 'hew', |
215
|
|
|
|
|
|
|
'hewn' => 'hew', |
216
|
|
|
|
|
|
|
'hid' => 'hide', |
217
|
|
|
|
|
|
|
'hidden' => 'hide', |
218
|
|
|
|
|
|
|
'hove' => 'heave', |
219
|
|
|
|
|
|
|
'hung' => 'hang', |
220
|
|
|
|
|
|
|
'inlaid' => 'inlay', |
221
|
|
|
|
|
|
|
'is' => 'be', |
222
|
|
|
|
|
|
|
'kept' => 'keep', |
223
|
|
|
|
|
|
|
'kneeled' => 'kneel', |
224
|
|
|
|
|
|
|
'knelt' => 'kneel', |
225
|
|
|
|
|
|
|
'knew' => 'know', |
226
|
|
|
|
|
|
|
'knitted' => 'knit', |
227
|
|
|
|
|
|
|
'known' => 'know', |
228
|
|
|
|
|
|
|
'laded' => 'lade', |
229
|
|
|
|
|
|
|
'laden' => 'lade', |
230
|
|
|
|
|
|
|
'laid' => 'lay', |
231
|
|
|
|
|
|
|
'lain' => 'lie', |
232
|
|
|
|
|
|
|
'lay' => 'lie', |
233
|
|
|
|
|
|
|
'leaned' => 'lean', |
234
|
|
|
|
|
|
|
'leant' => 'lean', |
235
|
|
|
|
|
|
|
'leaped' => 'leap', |
236
|
|
|
|
|
|
|
'leapt' => 'leap', |
237
|
|
|
|
|
|
|
'learned' => 'learn', |
238
|
|
|
|
|
|
|
'learnt' => 'learn', |
239
|
|
|
|
|
|
|
'led' => 'lead', |
240
|
|
|
|
|
|
|
'left' => 'leave', |
241
|
|
|
|
|
|
|
'lent' => 'lend', |
242
|
|
|
|
|
|
|
'lighted' => 'light', |
243
|
|
|
|
|
|
|
'lit' => 'light', |
244
|
|
|
|
|
|
|
'lost' => 'lose', |
245
|
|
|
|
|
|
|
'made' => 'make', |
246
|
|
|
|
|
|
|
'meant' => 'mean', |
247
|
|
|
|
|
|
|
'melted' => 'melt', |
248
|
|
|
|
|
|
|
'met' => 'meet', |
249
|
|
|
|
|
|
|
'might' => 'may', |
250
|
|
|
|
|
|
|
'misdealt' => 'misdeal', |
251
|
|
|
|
|
|
|
'misgave' => 'misgive', |
252
|
|
|
|
|
|
|
'misgiven' => 'misgive', |
253
|
|
|
|
|
|
|
'mislaid' => 'mislay', |
254
|
|
|
|
|
|
|
'misled' => 'mislead', |
255
|
|
|
|
|
|
|
'mistaken' => 'mistake', |
256
|
|
|
|
|
|
|
'mistook' => 'mistake', |
257
|
|
|
|
|
|
|
'misunderstood' => 'misunderstand', |
258
|
|
|
|
|
|
|
'molten' => 'melt', |
259
|
|
|
|
|
|
|
'mowed' => 'mow', |
260
|
|
|
|
|
|
|
'mown' => 'mow', |
261
|
|
|
|
|
|
|
'outate' => 'outeat', |
262
|
|
|
|
|
|
|
'outbade' => 'outbid', |
263
|
|
|
|
|
|
|
'outbidden' => 'outbid', |
264
|
|
|
|
|
|
|
'outbred' => 'outbreed', |
265
|
|
|
|
|
|
|
'outdid' => 'outdo', |
266
|
|
|
|
|
|
|
'outdone' => 'outdo', |
267
|
|
|
|
|
|
|
'outeaten' => 'outeat', |
268
|
|
|
|
|
|
|
'outfought' => 'outfight', |
269
|
|
|
|
|
|
|
'outgone' => 'outgo', |
270
|
|
|
|
|
|
|
'outgrew' => 'outgrow', |
271
|
|
|
|
|
|
|
'outgrown' => 'outgrow', |
272
|
|
|
|
|
|
|
'outlaid' => 'outlay', |
273
|
|
|
|
|
|
|
'outran' => 'outrun', |
274
|
|
|
|
|
|
|
'outridden' => 'outride', |
275
|
|
|
|
|
|
|
'outrode' => 'outride', |
276
|
|
|
|
|
|
|
'outsat' => 'outsit', |
277
|
|
|
|
|
|
|
'outshone' => 'outshine', |
278
|
|
|
|
|
|
|
'outshot' => 'outshoot', |
279
|
|
|
|
|
|
|
'outsold' => 'outsell', |
280
|
|
|
|
|
|
|
'outspent' => 'outspend', |
281
|
|
|
|
|
|
|
'outthrew' => 'outthrow', |
282
|
|
|
|
|
|
|
'outthrown' => 'outthrow', |
283
|
|
|
|
|
|
|
'outwent' => 'outgo', |
284
|
|
|
|
|
|
|
'outwore' => 'outwear', |
285
|
|
|
|
|
|
|
'outworn' => 'outwear', |
286
|
|
|
|
|
|
|
'overate' => 'overeat', |
287
|
|
|
|
|
|
|
'overbade' => 'overbid', |
288
|
|
|
|
|
|
|
'overbidden' => 'overbid', |
289
|
|
|
|
|
|
|
'overblew' => 'overblow', |
290
|
|
|
|
|
|
|
'overblown' => 'overblow', |
291
|
|
|
|
|
|
|
'overbore' => 'overbear', |
292
|
|
|
|
|
|
|
'overborn' => 'overbear', |
293
|
|
|
|
|
|
|
'overborne' => 'overbear', |
294
|
|
|
|
|
|
|
'overbought' => 'overbuy', |
295
|
|
|
|
|
|
|
'overbuilt' => 'overbuild', |
296
|
|
|
|
|
|
|
'overcame' => 'overcome', |
297
|
|
|
|
|
|
|
'overdid' => 'overdo', |
298
|
|
|
|
|
|
|
'overdone' => 'overdo', |
299
|
|
|
|
|
|
|
'overdrawn' => 'overdraw', |
300
|
|
|
|
|
|
|
'overdrew' => 'overdraw', |
301
|
|
|
|
|
|
|
'overdriven' => 'overdrive', |
302
|
|
|
|
|
|
|
'overdrove' => 'overdrive', |
303
|
|
|
|
|
|
|
'overeaten' => 'overeat', |
304
|
|
|
|
|
|
|
'overfed' => 'overfeed', |
305
|
|
|
|
|
|
|
'overflew' => 'overfly', |
306
|
|
|
|
|
|
|
'overflown' => 'overfly', |
307
|
|
|
|
|
|
|
'overgrew' => 'overgrow', |
308
|
|
|
|
|
|
|
'overgrown' => 'overgrow', |
309
|
|
|
|
|
|
|
'overhanged' => 'overhang', |
310
|
|
|
|
|
|
|
'overheard' => 'overhear', |
311
|
|
|
|
|
|
|
'overhung' => 'overhang', |
312
|
|
|
|
|
|
|
'overladed' => 'overlade', |
313
|
|
|
|
|
|
|
'overladen' => 'overlade', |
314
|
|
|
|
|
|
|
'overlaid' => 'overlay', |
315
|
|
|
|
|
|
|
'overlain' => 'overlie', |
316
|
|
|
|
|
|
|
'overlay' => 'overlie', |
317
|
|
|
|
|
|
|
'overleaped' => 'overleap', |
318
|
|
|
|
|
|
|
'overleapt' => 'overleap', |
319
|
|
|
|
|
|
|
'overpaid' => 'overpay', |
320
|
|
|
|
|
|
|
'overran' => 'overrun', |
321
|
|
|
|
|
|
|
'overridden' => 'override', |
322
|
|
|
|
|
|
|
'overrode' => 'override', |
323
|
|
|
|
|
|
|
'oversaw' => 'oversee', |
324
|
|
|
|
|
|
|
'overseen' => 'oversee', |
325
|
|
|
|
|
|
|
'oversewed' => 'oversew', |
326
|
|
|
|
|
|
|
'oversewn' => 'oversew', |
327
|
|
|
|
|
|
|
'overshot' => 'overshoot', |
328
|
|
|
|
|
|
|
'overslept' => 'oversleep', |
329
|
|
|
|
|
|
|
'overspent' => 'overspend', |
330
|
|
|
|
|
|
|
'overtaken' => 'overtake', |
331
|
|
|
|
|
|
|
'overthrew' => 'overthrow', |
332
|
|
|
|
|
|
|
'overthrown' => 'overthrow', |
333
|
|
|
|
|
|
|
'overtook' => 'overtake', |
334
|
|
|
|
|
|
|
'overwinded' => 'overwind', |
335
|
|
|
|
|
|
|
'overwound' => 'overwind', |
336
|
|
|
|
|
|
|
'overwritten' => 'overwrite', |
337
|
|
|
|
|
|
|
'overwrote' => 'overwrite', |
338
|
|
|
|
|
|
|
'paid' => 'pay', |
339
|
|
|
|
|
|
|
'partaken' => 'partake', |
340
|
|
|
|
|
|
|
'partook' => 'partake', |
341
|
|
|
|
|
|
|
'prechose' => 'prechoose', |
342
|
|
|
|
|
|
|
'prechosen' => 'prechoose', |
343
|
|
|
|
|
|
|
'proved' => 'prove', |
344
|
|
|
|
|
|
|
'proven' => 'prove', |
345
|
|
|
|
|
|
|
'quitted' => 'quit', |
346
|
|
|
|
|
|
|
'ran' => 'run', |
347
|
|
|
|
|
|
|
'rang' => 'ring', |
348
|
|
|
|
|
|
|
'reaved' => 'reave', |
349
|
|
|
|
|
|
|
'rebuilt' => 'rebuild', |
350
|
|
|
|
|
|
|
'reeved' => 'reeve', |
351
|
|
|
|
|
|
|
'reft' => 'reave', |
352
|
|
|
|
|
|
|
'relaid' => 'relay', |
353
|
|
|
|
|
|
|
'rent' => 'rend', |
354
|
|
|
|
|
|
|
'repaid' => 'repay', |
355
|
|
|
|
|
|
|
'retold' => 'retell', |
356
|
|
|
|
|
|
|
'ridded' => 'rid', |
357
|
|
|
|
|
|
|
'ridden' => 'ride', |
358
|
|
|
|
|
|
|
'risen' => 'rise', |
359
|
|
|
|
|
|
|
'rived' => 'rive', |
360
|
|
|
|
|
|
|
'riven' => 'rive', |
361
|
|
|
|
|
|
|
'rode' => 'ride', |
362
|
|
|
|
|
|
|
'rose' => 'rise', |
363
|
|
|
|
|
|
|
'rove' => 'reeve', |
364
|
|
|
|
|
|
|
'rung' => 'ring', |
365
|
|
|
|
|
|
|
'said' => 'say', |
366
|
|
|
|
|
|
|
'sang' => 'sing', |
367
|
|
|
|
|
|
|
'sank' => 'sink', |
368
|
|
|
|
|
|
|
'sat' => 'sit', |
369
|
|
|
|
|
|
|
'saw' => 'see', |
370
|
|
|
|
|
|
|
'sawed' => 'saw', |
371
|
|
|
|
|
|
|
'sawn' => 'saw', |
372
|
|
|
|
|
|
|
'seen' => 'see', |
373
|
|
|
|
|
|
|
'sent' => 'send', |
374
|
|
|
|
|
|
|
'sewed' => 'sew', |
375
|
|
|
|
|
|
|
'sewn' => 'sew', |
376
|
|
|
|
|
|
|
'shaken' => 'shake', |
377
|
|
|
|
|
|
|
'shaved' => 'shave', |
378
|
|
|
|
|
|
|
'shaven' => 'shave', |
379
|
|
|
|
|
|
|
'sheared' => 'shear', |
380
|
|
|
|
|
|
|
'shined' => 'shine', |
381
|
|
|
|
|
|
|
'shod' => 'shoe', |
382
|
|
|
|
|
|
|
'shoed' => 'shoe', |
383
|
|
|
|
|
|
|
'shone' => 'shine', |
384
|
|
|
|
|
|
|
'shook' => 'shake', |
385
|
|
|
|
|
|
|
'shorn' => 'shear', |
386
|
|
|
|
|
|
|
'shot' => 'shoot', |
387
|
|
|
|
|
|
|
'showed' => 'show', |
388
|
|
|
|
|
|
|
'shown' => 'show', |
389
|
|
|
|
|
|
|
'shrank' => 'shrink', |
390
|
|
|
|
|
|
|
'shredded' => 'shred', |
391
|
|
|
|
|
|
|
'shrived' => 'shrive', |
392
|
|
|
|
|
|
|
'shriven' => 'shrive', |
393
|
|
|
|
|
|
|
'shrove' => 'shrive', |
394
|
|
|
|
|
|
|
'shrunk' => 'shrink', |
395
|
|
|
|
|
|
|
'shrunken' => 'shrink', |
396
|
|
|
|
|
|
|
'slain' => 'slay', |
397
|
|
|
|
|
|
|
'slept' => 'sleep', |
398
|
|
|
|
|
|
|
'slew' => 'slay', |
399
|
|
|
|
|
|
|
'slid' => 'slide', |
400
|
|
|
|
|
|
|
'slidden' => 'slide', |
401
|
|
|
|
|
|
|
'slung' => 'sling', |
402
|
|
|
|
|
|
|
'slunk' => 'slink', |
403
|
|
|
|
|
|
|
'smelled' => 'smell', |
404
|
|
|
|
|
|
|
'smelt' => 'smell', |
405
|
|
|
|
|
|
|
'smitten' => 'smite', |
406
|
|
|
|
|
|
|
'smote' => 'smite', |
407
|
|
|
|
|
|
|
'snuck' => 'sneak', |
408
|
|
|
|
|
|
|
'sold' => 'sell', |
409
|
|
|
|
|
|
|
'sought' => 'seek', |
410
|
|
|
|
|
|
|
'sowed' => 'sow', |
411
|
|
|
|
|
|
|
'sown' => 'sow', |
412
|
|
|
|
|
|
|
'span' => 'spin', |
413
|
|
|
|
|
|
|
'spat' => 'spit', |
414
|
|
|
|
|
|
|
'sped' => 'speed', |
415
|
|
|
|
|
|
|
'speeded' => 'speed', |
416
|
|
|
|
|
|
|
'spelled' => 'spell', |
417
|
|
|
|
|
|
|
'spelt' => 'spell', |
418
|
|
|
|
|
|
|
'spent' => 'spend', |
419
|
|
|
|
|
|
|
'spilled' => 'spill', |
420
|
|
|
|
|
|
|
'spilt' => 'spill', |
421
|
|
|
|
|
|
|
'spoiled' => 'spoil', |
422
|
|
|
|
|
|
|
'spoilt' => 'spoil', |
423
|
|
|
|
|
|
|
'spoke' => 'speak', |
424
|
|
|
|
|
|
|
'spoken' => 'speak', |
425
|
|
|
|
|
|
|
'sprang' => 'spring', |
426
|
|
|
|
|
|
|
'sprung' => 'spring', |
427
|
|
|
|
|
|
|
'spun' => 'spin', |
428
|
|
|
|
|
|
|
'stank' => 'stink', |
429
|
|
|
|
|
|
|
'staved' => 'stave', |
430
|
|
|
|
|
|
|
'stole' => 'steal', |
431
|
|
|
|
|
|
|
'stolen' => 'steal', |
432
|
|
|
|
|
|
|
'stood' => 'stand', |
433
|
|
|
|
|
|
|
'stove' => 'stave', |
434
|
|
|
|
|
|
|
'strewed' => 'strew', |
435
|
|
|
|
|
|
|
'strewn' => 'strew', |
436
|
|
|
|
|
|
|
'stricken' => 'strike', |
437
|
|
|
|
|
|
|
'strid' => 'stride', |
438
|
|
|
|
|
|
|
'stridden' => 'stride', |
439
|
|
|
|
|
|
|
'strived' => 'strive', |
440
|
|
|
|
|
|
|
'striven' => 'strive', |
441
|
|
|
|
|
|
|
'strode' => 'stride', |
442
|
|
|
|
|
|
|
'strove' => 'strive', |
443
|
|
|
|
|
|
|
'struck' => 'strike', |
444
|
|
|
|
|
|
|
'strung' => 'string', |
445
|
|
|
|
|
|
|
'stuck' => 'stick', |
446
|
|
|
|
|
|
|
'stung' => 'sting', |
447
|
|
|
|
|
|
|
'stunk' => 'stink', |
448
|
|
|
|
|
|
|
'sung' => 'sing', |
449
|
|
|
|
|
|
|
'sunk' => 'sink', |
450
|
|
|
|
|
|
|
'sunken' => 'sink', |
451
|
|
|
|
|
|
|
'swam' => 'swim', |
452
|
|
|
|
|
|
|
'sweated' => 'sweat', |
453
|
|
|
|
|
|
|
'swelled' => 'swell', |
454
|
|
|
|
|
|
|
'swept' => 'sweep', |
455
|
|
|
|
|
|
|
'swollen' => 'swell', |
456
|
|
|
|
|
|
|
'swore' => 'swear', |
457
|
|
|
|
|
|
|
'sworn' => 'swear', |
458
|
|
|
|
|
|
|
'swum' => 'swim', |
459
|
|
|
|
|
|
|
'swung' => 'swing', |
460
|
|
|
|
|
|
|
'taken' => 'take', |
461
|
|
|
|
|
|
|
'taught' => 'teach', |
462
|
|
|
|
|
|
|
'thought' => 'think', |
463
|
|
|
|
|
|
|
'threw' => 'throw', |
464
|
|
|
|
|
|
|
'thrived' => 'thrive', |
465
|
|
|
|
|
|
|
'thriven' => 'thrive', |
466
|
|
|
|
|
|
|
'throve' => 'thrive', |
467
|
|
|
|
|
|
|
'thrown' => 'throw', |
468
|
|
|
|
|
|
|
'told' => 'tell', |
469
|
|
|
|
|
|
|
'took' => 'take', |
470
|
|
|
|
|
|
|
'tore' => 'tear', |
471
|
|
|
|
|
|
|
'torn' => 'tear', |
472
|
|
|
|
|
|
|
'trod' => 'tread', |
473
|
|
|
|
|
|
|
'trodden' => 'tread', |
474
|
|
|
|
|
|
|
'unbent' => 'unbend', |
475
|
|
|
|
|
|
|
'unbound' => 'unbind', |
476
|
|
|
|
|
|
|
'unbuilt' => 'unbuild', |
477
|
|
|
|
|
|
|
'underbought' => 'underbuy', |
478
|
|
|
|
|
|
|
'underfed' => 'underfeed', |
479
|
|
|
|
|
|
|
'undergone' => 'undergo', |
480
|
|
|
|
|
|
|
'underlaid' => 'underlay', |
481
|
|
|
|
|
|
|
'underlain' => 'underlie', |
482
|
|
|
|
|
|
|
'underlay' => 'underlie', |
483
|
|
|
|
|
|
|
'underpaid' => 'underpay', |
484
|
|
|
|
|
|
|
'underran' => 'underrun', |
485
|
|
|
|
|
|
|
'undershot' => 'undershoot', |
486
|
|
|
|
|
|
|
'undersold' => 'undersell', |
487
|
|
|
|
|
|
|
'understood' => 'understand', |
488
|
|
|
|
|
|
|
'undertaken' => 'undertake', |
489
|
|
|
|
|
|
|
'undertook' => 'undertake', |
490
|
|
|
|
|
|
|
'underwent' => 'undergo', |
491
|
|
|
|
|
|
|
'underwritten' => 'underwrite', |
492
|
|
|
|
|
|
|
'underwrote' => 'underwrite', |
493
|
|
|
|
|
|
|
'undid' => 'undo', |
494
|
|
|
|
|
|
|
'undone' => 'undo', |
495
|
|
|
|
|
|
|
'undrawn' => 'undraw', |
496
|
|
|
|
|
|
|
'undrew' => 'undraw', |
497
|
|
|
|
|
|
|
'unfroze' => 'unfreeze', |
498
|
|
|
|
|
|
|
'unfrozen' => 'unfreeze', |
499
|
|
|
|
|
|
|
'ungirded' => 'ungird', |
500
|
|
|
|
|
|
|
'ungirt' => 'ungird', |
501
|
|
|
|
|
|
|
'unhanged' => 'unhang', |
502
|
|
|
|
|
|
|
'unhung' => 'unhang', |
503
|
|
|
|
|
|
|
'unknitted' => 'unknit', |
504
|
|
|
|
|
|
|
'unladed' => 'unlade', |
505
|
|
|
|
|
|
|
'unladen' => 'unlade', |
506
|
|
|
|
|
|
|
'unlaid' => 'unlay', |
507
|
|
|
|
|
|
|
'unlearned' => 'unlearn', |
508
|
|
|
|
|
|
|
'unlearnt' => 'unlearn', |
509
|
|
|
|
|
|
|
'unmade' => 'unmake', |
510
|
|
|
|
|
|
|
'unreeved' => 'unreeve', |
511
|
|
|
|
|
|
|
'unrove' => 'unreeve', |
512
|
|
|
|
|
|
|
'unsaid' => 'unsay', |
513
|
|
|
|
|
|
|
'unslung' => 'unsling', |
514
|
|
|
|
|
|
|
'unspoke' => 'unspeak', |
515
|
|
|
|
|
|
|
'unspoken' => 'unspeak', |
516
|
|
|
|
|
|
|
'unstrung' => 'unstring', |
517
|
|
|
|
|
|
|
'unstuck' => 'unstick', |
518
|
|
|
|
|
|
|
'unswore' => 'unswear', |
519
|
|
|
|
|
|
|
'unsworn' => 'unswear', |
520
|
|
|
|
|
|
|
'untaught' => 'unteach', |
521
|
|
|
|
|
|
|
'unthought' => 'unthink', |
522
|
|
|
|
|
|
|
'untrod' => 'untread', |
523
|
|
|
|
|
|
|
'untrodden' => 'untread', |
524
|
|
|
|
|
|
|
'unwinded' => 'unwind', |
525
|
|
|
|
|
|
|
'unwound' => 'unwind', |
526
|
|
|
|
|
|
|
'unwove' => 'unweave', |
527
|
|
|
|
|
|
|
'unwoven' => 'unweave', |
528
|
|
|
|
|
|
|
'upbuilt' => 'upbuild', |
529
|
|
|
|
|
|
|
'upheld' => 'uphold', |
530
|
|
|
|
|
|
|
'uprisen' => 'uprise', |
531
|
|
|
|
|
|
|
'uprose' => 'uprise', |
532
|
|
|
|
|
|
|
'upswept' => 'upsweep', |
533
|
|
|
|
|
|
|
'upswung' => 'upswing', |
534
|
|
|
|
|
|
|
'waked' => 'wake', |
535
|
|
|
|
|
|
|
'was' => 'be', |
536
|
|
|
|
|
|
|
'waylaid' => 'waylay', |
537
|
|
|
|
|
|
|
'wedded' => 'wed', |
538
|
|
|
|
|
|
|
'went' => 'go', |
539
|
|
|
|
|
|
|
'wept' => 'weep', |
540
|
|
|
|
|
|
|
'were' => 'be', |
541
|
|
|
|
|
|
|
'wetted' => 'wet', |
542
|
|
|
|
|
|
|
'winded' => 'wind', |
543
|
|
|
|
|
|
|
'wist' => 'wit', |
544
|
|
|
|
|
|
|
'wot' => 'wit', |
545
|
|
|
|
|
|
|
'withdrawn' => 'withdraw', |
546
|
|
|
|
|
|
|
'withdrew' => 'withdraw', |
547
|
|
|
|
|
|
|
'withheld' => 'withhold', |
548
|
|
|
|
|
|
|
'withstood' => 'withstand', |
549
|
|
|
|
|
|
|
'woke' => 'wake', |
550
|
|
|
|
|
|
|
'woken' => 'wake', |
551
|
|
|
|
|
|
|
'won' => 'win', |
552
|
|
|
|
|
|
|
'wore' => 'wear', |
553
|
|
|
|
|
|
|
'worked' => 'work', |
554
|
|
|
|
|
|
|
'worn' => 'wear', |
555
|
|
|
|
|
|
|
'wound' => 'wind', |
556
|
|
|
|
|
|
|
'wove' => 'weave', |
557
|
|
|
|
|
|
|
'woven' => 'weave', |
558
|
|
|
|
|
|
|
'written' => 'write', |
559
|
|
|
|
|
|
|
'wrote' => 'write', |
560
|
|
|
|
|
|
|
'wrought' => 'work', |
561
|
|
|
|
|
|
|
'wrung' => 'wring', |
562
|
|
|
|
|
|
|
}; |
563
|
0
|
|
|
|
|
|
$self -> {'suffix2Rule'} = |
564
|
|
|
|
|
|
|
{ |
565
|
|
|
|
|
|
|
'hes' => |
566
|
|
|
|
|
|
|
{ # 'hes' is the suffix. |
567
|
|
|
|
|
|
|
# 'order' is the sort order. |
568
|
|
|
|
|
|
|
# 'rule' is the rule number. |
569
|
|
|
|
|
|
|
|
570
|
|
|
|
|
|
|
# 'word1' == 0 => Use 0, the index of the longest prefix |
571
|
|
|
|
|
|
|
# within @{$prefix{$self->{'suffix'} } }, below. |
572
|
|
|
|
|
|
|
|
573
|
|
|
|
|
|
|
# 'word1' == 1 => Use 1, the index of the 2nd longest prefix |
574
|
|
|
|
|
|
|
# within @{$prefix{$self->{'suffix'} } }, below. |
575
|
|
|
|
|
|
|
|
576
|
|
|
|
|
|
|
# 'word1' == -1 => Use the index of the shortest prefix |
577
|
|
|
|
|
|
|
# within @{$prefix{$self->{'suffix'} } }, below + a letter. |
578
|
|
|
|
|
|
|
|
579
|
|
|
|
|
|
|
# 'word1' == -2 => Use the index of the shortest prefix |
580
|
|
|
|
|
|
|
# within @{$prefix{$self->{'suffix'} } }, below + a letter, |
581
|
|
|
|
|
|
|
# and use the shortest prefix as well. |
582
|
|
|
|
|
|
|
|
583
|
|
|
|
|
|
|
# 'word1' == -3 => Use the index of the shortest prefix |
584
|
|
|
|
|
|
|
# within @{$prefix{$self->{'suffix'} } }, below + meter, |
585
|
|
|
|
|
|
|
# and use the shortest prefix + metre as well. |
586
|
|
|
|
|
|
|
|
587
|
|
|
|
|
|
|
# 'word1' == -4 => Use the original string. |
588
|
|
|
|
|
|
|
|
589
|
|
|
|
|
|
|
'order' => 1011, |
590
|
|
|
|
|
|
|
'rule' => '1', |
591
|
|
|
|
|
|
|
'word1' => 0, # Longest prefix. |
592
|
|
|
|
|
|
|
'suffix1' => '', |
593
|
|
|
|
|
|
|
'suffix2' => '', |
594
|
|
|
|
|
|
|
}, |
595
|
|
|
|
|
|
|
'ses' => |
596
|
|
|
|
|
|
|
{ |
597
|
|
|
|
|
|
|
'order' => 1021, |
598
|
|
|
|
|
|
|
'rule' => '2', |
599
|
|
|
|
|
|
|
'word1' => 0, # Longest prefix. |
600
|
|
|
|
|
|
|
'suffix1' => '', |
601
|
|
|
|
|
|
|
'suffix2' => '', |
602
|
|
|
|
|
|
|
}, |
603
|
|
|
|
|
|
|
'xes' => |
604
|
|
|
|
|
|
|
{ |
605
|
|
|
|
|
|
|
'order' => 1031, |
606
|
|
|
|
|
|
|
'rule' => '3', |
607
|
|
|
|
|
|
|
'word1' => 0, # Longest prefix. |
608
|
|
|
|
|
|
|
'suffix1' => '', |
609
|
|
|
|
|
|
|
'suffix2' => '', |
610
|
|
|
|
|
|
|
}, |
611
|
|
|
|
|
|
|
'zes' => |
612
|
|
|
|
|
|
|
{ |
613
|
|
|
|
|
|
|
'order' => 1041, |
614
|
|
|
|
|
|
|
'rule' => '4', |
615
|
|
|
|
|
|
|
'word1' => 0, # Longest prefix. |
616
|
|
|
|
|
|
|
'suffix1' => '', |
617
|
|
|
|
|
|
|
'suffix2' => '', |
618
|
|
|
|
|
|
|
}, |
619
|
|
|
|
|
|
|
'iless' => |
620
|
|
|
|
|
|
|
{ |
621
|
|
|
|
|
|
|
'order' => 1051, |
622
|
|
|
|
|
|
|
'rule' => '43a', |
623
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
624
|
|
|
|
|
|
|
'suffix1' => 'y', |
625
|
|
|
|
|
|
|
'suffix2' => '', |
626
|
|
|
|
|
|
|
}, |
627
|
|
|
|
|
|
|
'less' => |
628
|
|
|
|
|
|
|
{ |
629
|
|
|
|
|
|
|
'order' => 1052, |
630
|
|
|
|
|
|
|
'rule' => '43b', |
631
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
632
|
|
|
|
|
|
|
'suffix1' => '', |
633
|
|
|
|
|
|
|
'suffix2' => '', |
634
|
|
|
|
|
|
|
}, |
635
|
|
|
|
|
|
|
'iness' => |
636
|
|
|
|
|
|
|
{ |
637
|
|
|
|
|
|
|
'order' => 1053, |
638
|
|
|
|
|
|
|
'rule' => '44a', |
639
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
640
|
|
|
|
|
|
|
'suffix1' => 'y', |
641
|
|
|
|
|
|
|
'suffix2' => '', |
642
|
|
|
|
|
|
|
}, |
643
|
|
|
|
|
|
|
'ness' => |
644
|
|
|
|
|
|
|
{ |
645
|
|
|
|
|
|
|
'order' => 1054, |
646
|
|
|
|
|
|
|
'rule' => '44b', |
647
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
648
|
|
|
|
|
|
|
'suffix1' => '', |
649
|
|
|
|
|
|
|
'suffix2' => '', |
650
|
|
|
|
|
|
|
}, |
651
|
|
|
|
|
|
|
"'s" => |
652
|
|
|
|
|
|
|
{ |
653
|
|
|
|
|
|
|
'order' => 1055, |
654
|
|
|
|
|
|
|
'rule' => '7', |
655
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
656
|
|
|
|
|
|
|
'suffix1' => '', |
657
|
|
|
|
|
|
|
'suffix2' => '', |
658
|
|
|
|
|
|
|
}, |
659
|
|
|
|
|
|
|
'ies' => |
660
|
|
|
|
|
|
|
{ |
661
|
|
|
|
|
|
|
'order' => 1056, |
662
|
|
|
|
|
|
|
'rule' => '13a', |
663
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
664
|
|
|
|
|
|
|
'suffix1' => 'y', |
665
|
|
|
|
|
|
|
'suffix2' => '', |
666
|
|
|
|
|
|
|
}, |
667
|
|
|
|
|
|
|
'es' => |
668
|
|
|
|
|
|
|
{ |
669
|
|
|
|
|
|
|
'order' => 1057, |
670
|
|
|
|
|
|
|
'rule' => '13b', |
671
|
|
|
|
|
|
|
'word1' => 0, # Longest prefix. |
672
|
|
|
|
|
|
|
'suffix1' => '', |
673
|
|
|
|
|
|
|
'suffix2' => '', |
674
|
|
|
|
|
|
|
}, |
675
|
|
|
|
|
|
|
'ss' => |
676
|
|
|
|
|
|
|
{ |
677
|
|
|
|
|
|
|
'order' => 1061, |
678
|
|
|
|
|
|
|
'rule' => '6a', |
679
|
|
|
|
|
|
|
'word1' => -4, # Original string. |
680
|
|
|
|
|
|
|
'suffix1' => '', |
681
|
|
|
|
|
|
|
'suffix2' => '', |
682
|
|
|
|
|
|
|
}, |
683
|
|
|
|
|
|
|
's' => |
684
|
|
|
|
|
|
|
{ |
685
|
|
|
|
|
|
|
'order' => 1062, |
686
|
|
|
|
|
|
|
'rule' => '6b', |
687
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
688
|
|
|
|
|
|
|
'suffix1' => '', |
689
|
|
|
|
|
|
|
'suffix2' => '', |
690
|
|
|
|
|
|
|
}, |
691
|
|
|
|
|
|
|
'ater' => |
692
|
|
|
|
|
|
|
{ |
693
|
|
|
|
|
|
|
'order' => 1081, |
694
|
|
|
|
|
|
|
'rule' => '8', |
695
|
|
|
|
|
|
|
'word1' => -4, # Original string. |
696
|
|
|
|
|
|
|
'suffix1' => '', |
697
|
|
|
|
|
|
|
'suffix2' => '', |
698
|
|
|
|
|
|
|
}, |
699
|
|
|
|
|
|
|
'cter' => |
700
|
|
|
|
|
|
|
{ |
701
|
|
|
|
|
|
|
'order' => 1091, |
702
|
|
|
|
|
|
|
'rule' => '9', |
703
|
|
|
|
|
|
|
'word1' => -4, # Original string. |
704
|
|
|
|
|
|
|
'suffix1' => '', |
705
|
|
|
|
|
|
|
'suffix2' => '', |
706
|
|
|
|
|
|
|
}, |
707
|
|
|
|
|
|
|
'ier' => |
708
|
|
|
|
|
|
|
{ |
709
|
|
|
|
|
|
|
'order' => 1101, |
710
|
|
|
|
|
|
|
'rule' => '10', |
711
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
712
|
|
|
|
|
|
|
'suffix1' => 'y', |
713
|
|
|
|
|
|
|
'suffix2' => '', |
714
|
|
|
|
|
|
|
}, |
715
|
|
|
|
|
|
|
'er' => |
716
|
|
|
|
|
|
|
{ |
717
|
|
|
|
|
|
|
'order' => 1111, |
718
|
|
|
|
|
|
|
'rule' => '11', |
719
|
|
|
|
|
|
|
'word1' => 0, # Longest prefix. |
720
|
|
|
|
|
|
|
'suffix1' => '', |
721
|
|
|
|
|
|
|
'suffix2' => '', |
722
|
|
|
|
|
|
|
}, |
723
|
|
|
|
|
|
|
'ied' => |
724
|
|
|
|
|
|
|
{ |
725
|
|
|
|
|
|
|
'order' => 1121, |
726
|
|
|
|
|
|
|
'rule' => '12a', |
727
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
728
|
|
|
|
|
|
|
'suffix1' => 'y', |
729
|
|
|
|
|
|
|
'suffix2' => '', |
730
|
|
|
|
|
|
|
}, |
731
|
|
|
|
|
|
|
'ed' => |
732
|
|
|
|
|
|
|
{ |
733
|
|
|
|
|
|
|
'order' => 1122, |
734
|
|
|
|
|
|
|
'rule' => '12b', # There is extra code for 12b below. |
735
|
|
|
|
|
|
|
'word1' => 0, # Longest prefix. |
736
|
|
|
|
|
|
|
'suffix1' => '', |
737
|
|
|
|
|
|
|
'suffix2' => '', |
738
|
|
|
|
|
|
|
}, |
739
|
|
|
|
|
|
|
'iest' => |
740
|
|
|
|
|
|
|
{ |
741
|
|
|
|
|
|
|
'order' => 1141, |
742
|
|
|
|
|
|
|
'rule' => '14a', |
743
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
744
|
|
|
|
|
|
|
'suffix1' => 'y', |
745
|
|
|
|
|
|
|
'suffix2' => '', |
746
|
|
|
|
|
|
|
}, |
747
|
|
|
|
|
|
|
'est' => |
748
|
|
|
|
|
|
|
{ |
749
|
|
|
|
|
|
|
'order' => 1142, |
750
|
|
|
|
|
|
|
'rule' => '14b', |
751
|
|
|
|
|
|
|
'word1' => -2, # Shortest prefix + a letter, and shortest prefix. |
752
|
|
|
|
|
|
|
'suffix1' => 'e', |
753
|
|
|
|
|
|
|
'suffix2' => '', |
754
|
|
|
|
|
|
|
}, |
755
|
|
|
|
|
|
|
'blity' => |
756
|
|
|
|
|
|
|
{ |
757
|
|
|
|
|
|
|
'order' => 1143, |
758
|
|
|
|
|
|
|
'rule' => '21', |
759
|
|
|
|
|
|
|
'word1' => -4, # Original string. |
760
|
|
|
|
|
|
|
'suffix1' => '', |
761
|
|
|
|
|
|
|
'suffix2' => '', |
762
|
|
|
|
|
|
|
}, |
763
|
|
|
|
|
|
|
'bility' => |
764
|
|
|
|
|
|
|
{ |
765
|
|
|
|
|
|
|
'order' => 1144, |
766
|
|
|
|
|
|
|
'rule' => '22', |
767
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
768
|
|
|
|
|
|
|
'suffix1' => 'ble', |
769
|
|
|
|
|
|
|
'suffix2' => '', |
770
|
|
|
|
|
|
|
}, |
771
|
|
|
|
|
|
|
'fiable' => |
772
|
|
|
|
|
|
|
{ |
773
|
|
|
|
|
|
|
'order' => 1145, |
774
|
|
|
|
|
|
|
'rule' => '23', |
775
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
776
|
|
|
|
|
|
|
'suffix1' => 'fy', |
777
|
|
|
|
|
|
|
'suffix2' => '', |
778
|
|
|
|
|
|
|
}, |
779
|
|
|
|
|
|
|
'logist' => |
780
|
|
|
|
|
|
|
{ |
781
|
|
|
|
|
|
|
'order' => 1146, |
782
|
|
|
|
|
|
|
'rule' => '24', |
783
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
784
|
|
|
|
|
|
|
'suffix1' => 'logy', |
785
|
|
|
|
|
|
|
'suffix2' => '', |
786
|
|
|
|
|
|
|
}, |
787
|
|
|
|
|
|
|
'ing' => |
788
|
|
|
|
|
|
|
{ |
789
|
|
|
|
|
|
|
'order' => 1151, |
790
|
|
|
|
|
|
|
'rule' => '15', # There is extra code for 15 below. |
791
|
|
|
|
|
|
|
'word1' => -2, # Shortest prefix + a letter, and shortest prefix. |
792
|
|
|
|
|
|
|
'suffix1' => 'e', |
793
|
|
|
|
|
|
|
'suffix2' => '', |
794
|
|
|
|
|
|
|
}, |
795
|
|
|
|
|
|
|
'ist' => |
796
|
|
|
|
|
|
|
{ |
797
|
|
|
|
|
|
|
'order' => 1161, |
798
|
|
|
|
|
|
|
'rule' => '16', |
799
|
|
|
|
|
|
|
'word1' => -2, # Shortest prefix + a letter, and shortest prefix. |
800
|
|
|
|
|
|
|
'suffix1' => 'e', |
801
|
|
|
|
|
|
|
'suffix2' => '', |
802
|
|
|
|
|
|
|
}, |
803
|
|
|
|
|
|
|
'ism' => |
804
|
|
|
|
|
|
|
{ |
805
|
|
|
|
|
|
|
'order' => 1171, |
806
|
|
|
|
|
|
|
'rule' => '17', |
807
|
|
|
|
|
|
|
'word1' => -2, # Shortest prefix + a letter, and shortest prefix. |
808
|
|
|
|
|
|
|
'suffix1' => 'e', |
809
|
|
|
|
|
|
|
'suffix2' => '', |
810
|
|
|
|
|
|
|
}, |
811
|
|
|
|
|
|
|
'ity' => |
812
|
|
|
|
|
|
|
{ |
813
|
|
|
|
|
|
|
'order' => 1181, |
814
|
|
|
|
|
|
|
'rule' => '18', |
815
|
|
|
|
|
|
|
'word1' => -2, # Shortest prefix + a letter, and shortest prefix. |
816
|
|
|
|
|
|
|
'suffix1' => 'e', |
817
|
|
|
|
|
|
|
'suffix2' => '', |
818
|
|
|
|
|
|
|
}, |
819
|
|
|
|
|
|
|
'ize' => |
820
|
|
|
|
|
|
|
{ |
821
|
|
|
|
|
|
|
'order' => 1191, |
822
|
|
|
|
|
|
|
'rule' => '19', |
823
|
|
|
|
|
|
|
'word1' => -2, # Shortest prefix + a letter, and shortest prefix. |
824
|
|
|
|
|
|
|
'suffix1' => 'e', |
825
|
|
|
|
|
|
|
'suffix2' => '', |
826
|
|
|
|
|
|
|
}, |
827
|
|
|
|
|
|
|
'cable' => |
828
|
|
|
|
|
|
|
{ |
829
|
|
|
|
|
|
|
'order' => 1201, |
830
|
|
|
|
|
|
|
'rule' => '20a', |
831
|
|
|
|
|
|
|
'word1' => -4, # Original string. |
832
|
|
|
|
|
|
|
'suffix1' => '', |
833
|
|
|
|
|
|
|
'suffix2' => '', |
834
|
|
|
|
|
|
|
}, |
835
|
|
|
|
|
|
|
'gable' => |
836
|
|
|
|
|
|
|
{ |
837
|
|
|
|
|
|
|
'order' => 1202, |
838
|
|
|
|
|
|
|
'rule' => '20b', |
839
|
|
|
|
|
|
|
'word1' => -4, # Original string. |
840
|
|
|
|
|
|
|
'suffix1' => '', |
841
|
|
|
|
|
|
|
'suffix2' => '', |
842
|
|
|
|
|
|
|
}, |
843
|
|
|
|
|
|
|
'able' => |
844
|
|
|
|
|
|
|
{ |
845
|
|
|
|
|
|
|
'order' => 1203, |
846
|
|
|
|
|
|
|
'rule' => '20c', |
847
|
|
|
|
|
|
|
'word1' => -2, # Shortest prefix + a letter, and shortest prefix. |
848
|
|
|
|
|
|
|
'suffix1' => 'e', |
849
|
|
|
|
|
|
|
'suffix2' => '', |
850
|
|
|
|
|
|
|
}, |
851
|
|
|
|
|
|
|
'graphic' => |
852
|
|
|
|
|
|
|
{ |
853
|
|
|
|
|
|
|
'order' => 1251, |
854
|
|
|
|
|
|
|
'rule' => '25', |
855
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
856
|
|
|
|
|
|
|
'suffix1' => 'graphy', |
857
|
|
|
|
|
|
|
'suffix2' => '', |
858
|
|
|
|
|
|
|
}, |
859
|
|
|
|
|
|
|
'istic' => |
860
|
|
|
|
|
|
|
{ |
861
|
|
|
|
|
|
|
'order' => 1261, |
862
|
|
|
|
|
|
|
'rule' => '26', |
863
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
864
|
|
|
|
|
|
|
'suffix1' => 'ist', |
865
|
|
|
|
|
|
|
'suffix2' => '', |
866
|
|
|
|
|
|
|
}, |
867
|
|
|
|
|
|
|
'itic' => |
868
|
|
|
|
|
|
|
{ |
869
|
|
|
|
|
|
|
'order' => 1271, |
870
|
|
|
|
|
|
|
'rule' => '27', |
871
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
872
|
|
|
|
|
|
|
'suffix1' => 'ite', |
873
|
|
|
|
|
|
|
'suffix2' => '', |
874
|
|
|
|
|
|
|
}, |
875
|
|
|
|
|
|
|
'like' => |
876
|
|
|
|
|
|
|
{ |
877
|
|
|
|
|
|
|
'order' => 1281, |
878
|
|
|
|
|
|
|
'rule' => '28', |
879
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
880
|
|
|
|
|
|
|
'suffix1' => '', |
881
|
|
|
|
|
|
|
'suffix2' => '', |
882
|
|
|
|
|
|
|
}, |
883
|
|
|
|
|
|
|
'logic' => |
884
|
|
|
|
|
|
|
{ |
885
|
|
|
|
|
|
|
'order' => 1291, |
886
|
|
|
|
|
|
|
'rule' => '29', |
887
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
888
|
|
|
|
|
|
|
'suffix1' => 'logy', |
889
|
|
|
|
|
|
|
'suffix2' => '', |
890
|
|
|
|
|
|
|
}, |
891
|
|
|
|
|
|
|
'ment' => |
892
|
|
|
|
|
|
|
{ |
893
|
|
|
|
|
|
|
'order' => 1301, |
894
|
|
|
|
|
|
|
'rule' => '30', |
895
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
896
|
|
|
|
|
|
|
'suffix1' => '', |
897
|
|
|
|
|
|
|
'suffix2' => '', |
898
|
|
|
|
|
|
|
}, |
899
|
|
|
|
|
|
|
'mental' => |
900
|
|
|
|
|
|
|
{ |
901
|
|
|
|
|
|
|
'order' => 1311, |
902
|
|
|
|
|
|
|
'rule' => '31', |
903
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
904
|
|
|
|
|
|
|
'suffix1' => 'ment', |
905
|
|
|
|
|
|
|
'suffix2' => '', |
906
|
|
|
|
|
|
|
}, |
907
|
|
|
|
|
|
|
'metry' => |
908
|
|
|
|
|
|
|
{ |
909
|
|
|
|
|
|
|
'order' => 1321, |
910
|
|
|
|
|
|
|
'rule' => '32', |
911
|
|
|
|
|
|
|
'word1' => -3, # Shortest prefix + meter, and shortest perfix + metre. |
912
|
|
|
|
|
|
|
'suffix1' => 'meter', |
913
|
|
|
|
|
|
|
'suffix2' => 'metre', |
914
|
|
|
|
|
|
|
}, |
915
|
|
|
|
|
|
|
'nce' => |
916
|
|
|
|
|
|
|
{ |
917
|
|
|
|
|
|
|
'order' => 1331, |
918
|
|
|
|
|
|
|
'rule' => '33', |
919
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
920
|
|
|
|
|
|
|
'suffix1' => 'nt', |
921
|
|
|
|
|
|
|
'suffix2' => '', |
922
|
|
|
|
|
|
|
}, |
923
|
|
|
|
|
|
|
'ncy' => |
924
|
|
|
|
|
|
|
{ |
925
|
|
|
|
|
|
|
'order' => 1341, |
926
|
|
|
|
|
|
|
'rule' => '34', |
927
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
928
|
|
|
|
|
|
|
'suffix1' => 'nt', |
929
|
|
|
|
|
|
|
'suffix2' => '', |
930
|
|
|
|
|
|
|
}, |
931
|
|
|
|
|
|
|
'ship' => |
932
|
|
|
|
|
|
|
{ |
933
|
|
|
|
|
|
|
'order' => 1351, |
934
|
|
|
|
|
|
|
'rule' => '35', |
935
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
936
|
|
|
|
|
|
|
'suffix1' => '', |
937
|
|
|
|
|
|
|
'suffix2' => '', |
938
|
|
|
|
|
|
|
}, |
939
|
|
|
|
|
|
|
'ical' => |
940
|
|
|
|
|
|
|
{ |
941
|
|
|
|
|
|
|
'order' => 1361, |
942
|
|
|
|
|
|
|
'rule' => '36', |
943
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
944
|
|
|
|
|
|
|
'suffix1' => 'ic', |
945
|
|
|
|
|
|
|
'suffix2' => '', |
946
|
|
|
|
|
|
|
}, |
947
|
|
|
|
|
|
|
'ional' => |
948
|
|
|
|
|
|
|
{ |
949
|
|
|
|
|
|
|
'order' => 1371, |
950
|
|
|
|
|
|
|
'rule' => '37', |
951
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
952
|
|
|
|
|
|
|
'suffix1' => 'ion', |
953
|
|
|
|
|
|
|
'suffix2' => '', |
954
|
|
|
|
|
|
|
}, |
955
|
|
|
|
|
|
|
'bly' => |
956
|
|
|
|
|
|
|
{ |
957
|
|
|
|
|
|
|
'order' => 1381, |
958
|
|
|
|
|
|
|
'rule' => '38', |
959
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
960
|
|
|
|
|
|
|
'suffix1' => 'ble', |
961
|
|
|
|
|
|
|
'suffix2' => '', |
962
|
|
|
|
|
|
|
}, |
963
|
|
|
|
|
|
|
'ily' => |
964
|
|
|
|
|
|
|
{ |
965
|
|
|
|
|
|
|
'order' => 1391, |
966
|
|
|
|
|
|
|
'rule' => '39', |
967
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
968
|
|
|
|
|
|
|
'suffix1' => 'y', |
969
|
|
|
|
|
|
|
'suffix2' => '', |
970
|
|
|
|
|
|
|
}, |
971
|
|
|
|
|
|
|
'ly' => |
972
|
|
|
|
|
|
|
{ |
973
|
|
|
|
|
|
|
'order' => 1401, |
974
|
|
|
|
|
|
|
'rule' => '40', |
975
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
976
|
|
|
|
|
|
|
'suffix1' => '', |
977
|
|
|
|
|
|
|
'suffix2' => '', |
978
|
|
|
|
|
|
|
}, |
979
|
|
|
|
|
|
|
'iful' => |
980
|
|
|
|
|
|
|
{ |
981
|
|
|
|
|
|
|
'order' => 1411, |
982
|
|
|
|
|
|
|
'rule' => '41a', |
983
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
984
|
|
|
|
|
|
|
'suffix1' => 'y', |
985
|
|
|
|
|
|
|
'suffix2' => '', |
986
|
|
|
|
|
|
|
}, |
987
|
|
|
|
|
|
|
'ful' => |
988
|
|
|
|
|
|
|
{ |
989
|
|
|
|
|
|
|
'order' => 1412, |
990
|
|
|
|
|
|
|
'rule' => '41b', |
991
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
992
|
|
|
|
|
|
|
'suffix1' => '', |
993
|
|
|
|
|
|
|
'suffix2' => '', |
994
|
|
|
|
|
|
|
}, |
995
|
|
|
|
|
|
|
'ihood' => |
996
|
|
|
|
|
|
|
{ |
997
|
|
|
|
|
|
|
'order' => 1421, |
998
|
|
|
|
|
|
|
'rule' => '42a', |
999
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1000
|
|
|
|
|
|
|
'suffix1' => 'y', |
1001
|
|
|
|
|
|
|
'suffix2' => '', |
1002
|
|
|
|
|
|
|
}, |
1003
|
|
|
|
|
|
|
'hood' => |
1004
|
|
|
|
|
|
|
{ |
1005
|
|
|
|
|
|
|
'order' => 1422, |
1006
|
|
|
|
|
|
|
'rule' => '42b', |
1007
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1008
|
|
|
|
|
|
|
'suffix1' => '', |
1009
|
|
|
|
|
|
|
'suffix2' => '', |
1010
|
|
|
|
|
|
|
}, |
1011
|
|
|
|
|
|
|
'ification' => |
1012
|
|
|
|
|
|
|
{ |
1013
|
|
|
|
|
|
|
'order' => 1451, |
1014
|
|
|
|
|
|
|
'rule' => '45', |
1015
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1016
|
|
|
|
|
|
|
'suffix1' => 'ify', |
1017
|
|
|
|
|
|
|
'suffix2' => '', |
1018
|
|
|
|
|
|
|
}, |
1019
|
|
|
|
|
|
|
'ization' => |
1020
|
|
|
|
|
|
|
{ |
1021
|
|
|
|
|
|
|
'order' => 1461, |
1022
|
|
|
|
|
|
|
'rule' => '46', |
1023
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1024
|
|
|
|
|
|
|
'suffix1' => 'ize', |
1025
|
|
|
|
|
|
|
'suffix2' => '', |
1026
|
|
|
|
|
|
|
}, |
1027
|
|
|
|
|
|
|
'ction' => |
1028
|
|
|
|
|
|
|
{ |
1029
|
|
|
|
|
|
|
'order' => 1471, |
1030
|
|
|
|
|
|
|
'rule' => '47', |
1031
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1032
|
|
|
|
|
|
|
'suffix1' => 'ct', |
1033
|
|
|
|
|
|
|
'suffix2' => '', |
1034
|
|
|
|
|
|
|
}, |
1035
|
|
|
|
|
|
|
'rtion' => |
1036
|
|
|
|
|
|
|
{ |
1037
|
|
|
|
|
|
|
'order' => 1481, |
1038
|
|
|
|
|
|
|
'rule' => '48', |
1039
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1040
|
|
|
|
|
|
|
'suffix1' => 'rt', |
1041
|
|
|
|
|
|
|
'suffix2' => '', |
1042
|
|
|
|
|
|
|
}, |
1043
|
|
|
|
|
|
|
'ation' => |
1044
|
|
|
|
|
|
|
{ |
1045
|
|
|
|
|
|
|
'order' => 1491, |
1046
|
|
|
|
|
|
|
'rule' => '49', |
1047
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1048
|
|
|
|
|
|
|
'suffix1' => 'ate', |
1049
|
|
|
|
|
|
|
'suffix2' => '', |
1050
|
|
|
|
|
|
|
}, |
1051
|
|
|
|
|
|
|
'ator' => |
1052
|
|
|
|
|
|
|
{ |
1053
|
|
|
|
|
|
|
'order' => 1501, |
1054
|
|
|
|
|
|
|
'rule' => '50', |
1055
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1056
|
|
|
|
|
|
|
'suffix1' => 'ate', |
1057
|
|
|
|
|
|
|
'suffix2' => '', |
1058
|
|
|
|
|
|
|
}, |
1059
|
|
|
|
|
|
|
'ctor' => |
1060
|
|
|
|
|
|
|
{ |
1061
|
|
|
|
|
|
|
'order' => 1511, |
1062
|
|
|
|
|
|
|
'rule' => '51', |
1063
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1064
|
|
|
|
|
|
|
'suffix1' => 'ct', |
1065
|
|
|
|
|
|
|
'suffix2' => '', |
1066
|
|
|
|
|
|
|
}, |
1067
|
|
|
|
|
|
|
'ive' => |
1068
|
|
|
|
|
|
|
{ |
1069
|
|
|
|
|
|
|
'order' => 1521, |
1070
|
|
|
|
|
|
|
'rule' => '52', |
1071
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1072
|
|
|
|
|
|
|
'suffix1' => 'ion', |
1073
|
|
|
|
|
|
|
'suffix2' => '', |
1074
|
|
|
|
|
|
|
}, |
1075
|
|
|
|
|
|
|
'onian' => |
1076
|
|
|
|
|
|
|
{ |
1077
|
|
|
|
|
|
|
'order' => 1530, |
1078
|
|
|
|
|
|
|
'rule' => '54', |
1079
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1080
|
|
|
|
|
|
|
'suffix1' => 'on', |
1081
|
|
|
|
|
|
|
'suffix2' => '', |
1082
|
|
|
|
|
|
|
}, |
1083
|
|
|
|
|
|
|
'an' => |
1084
|
|
|
|
|
|
|
{ |
1085
|
|
|
|
|
|
|
'order' => 1531, |
1086
|
|
|
|
|
|
|
'rule' => '53', |
1087
|
|
|
|
|
|
|
'word1' => -1, # Shortest prefix. |
1088
|
|
|
|
|
|
|
'suffix1' => 'a', |
1089
|
|
|
|
|
|
|
'suffix2' => '', |
1090
|
|
|
|
|
|
|
}, |
1091
|
|
|
|
|
|
|
}; |
1092
|
|
|
|
|
|
|
|
1093
|
0
|
|
|
|
|
|
return bless $self, $class; |
1094
|
|
|
|
|
|
|
|
1095
|
|
|
|
|
|
|
} # End of new. |
1096
|
|
|
|
|
|
|
|
1097
|
|
|
|
|
|
|
# ------------------------------------------------------------------- |
1098
|
|
|
|
|
|
|
|
1099
|
|
|
|
|
|
|
sub stem |
1100
|
|
|
|
|
|
|
{ |
1101
|
0
|
|
|
0
|
0
|
|
my($self, $string) = @_; |
1102
|
|
|
|
|
|
|
|
1103
|
0
|
|
|
|
|
|
$self -> {'word1'} = ''; |
1104
|
0
|
|
|
|
|
|
$self -> {'word2'} = ''; |
1105
|
0
|
|
|
|
|
|
$self -> {'suffix'} = ''; |
1106
|
0
|
|
|
|
|
|
$self -> {'rule'} = ''; |
1107
|
|
|
|
|
|
|
|
1108
|
0
|
0
|
|
|
|
|
if (defined($self -> {'irregular2infinitive'}{$string}) ) |
1109
|
|
|
|
|
|
|
{ |
1110
|
0
|
|
|
|
|
|
$self -> {'word1'} = $self -> {'irregular2infinitive'}{$string}; |
1111
|
0
|
|
|
|
|
|
$self -> {'rule'} = 'irregular'; |
1112
|
|
|
|
|
|
|
|
1113
|
0
|
|
|
|
|
|
return ($self -> {'word1'}, '', '', $self -> {'rule'}); |
1114
|
|
|
|
|
|
|
} |
1115
|
|
|
|
|
|
|
|
1116
|
0
|
|
|
|
|
|
my($prefix, $suffix) = ('', ''); |
1117
|
0
|
|
|
|
|
|
my($i, $j, $word, %prefix); |
1118
|
|
|
|
|
|
|
|
1119
|
|
|
|
|
|
|
# Build up $prefix{$suffix} as an array of prefixes, from longest to shortest. |
1120
|
0
|
|
|
|
|
|
for ($i = 1; $i < length($string); $i++) |
1121
|
|
|
|
|
|
|
{ |
1122
|
0
|
|
|
|
|
|
$prefix = substr($string, 0, $i); |
1123
|
0
|
|
|
|
|
|
$suffix = substr($string, $i); |
1124
|
0
|
|
|
|
|
|
$prefix{$suffix} = []; |
1125
|
|
|
|
|
|
|
|
1126
|
0
|
|
|
|
|
|
for ($j = (length($suffix) - 1); $j >= 0; $j--) |
1127
|
|
|
|
|
|
|
{ |
1128
|
0
|
|
|
|
|
|
$word = $prefix . substr($suffix, 0, $j); |
1129
|
0
|
|
|
|
|
|
push(@{$prefix{$suffix} }, $word); |
|
0
|
|
|
|
|
|
|
1130
|
|
|
|
|
|
|
} |
1131
|
|
|
|
|
|
|
} |
1132
|
|
|
|
|
|
|
|
1133
|
|
|
|
|
|
|
# for $i (sort keys %prefix) |
1134
|
|
|
|
|
|
|
# { |
1135
|
|
|
|
|
|
|
# print "\tSuffix: $i. Prefixes: ", join(' | ', sort @{$prefix{$i} }), ". \n"; |
1136
|
|
|
|
|
|
|
# } |
1137
|
|
|
|
|
|
|
|
1138
|
0
|
|
|
|
|
|
my($lastIndex); |
1139
|
|
|
|
|
|
|
|
1140
|
0
|
|
|
|
|
|
for $suffix ( |
|
0
|
|
|
|
|
|
|
1141
|
|
|
|
|
|
|
sort |
1142
|
0
|
|
|
|
|
|
{ $self -> {'suffix2Rule'}{$a}{'order'} <=> $self -> {'suffix2Rule'}{$b}{'order'} } |
1143
|
|
|
|
|
|
|
keys(%{$self -> {'suffix2Rule'} }) ) |
1144
|
|
|
|
|
|
|
{ |
1145
|
0
|
0
|
|
|
|
|
if (defined($prefix{$suffix}) ) |
1146
|
|
|
|
|
|
|
{ |
1147
|
0
|
|
|
|
|
|
$self -> {'suffix'} = $suffix; |
1148
|
0
|
|
|
|
|
|
$self -> {'rule'} = $self -> {'suffix2Rule'}{$suffix}{'rule'}; |
1149
|
0
|
|
|
|
|
|
$i = $self -> {'suffix2Rule'}{$suffix}{'word1'}; |
1150
|
|
|
|
|
|
|
|
1151
|
0
|
0
|
|
|
|
|
if ($i == 0) |
1152
|
|
|
|
|
|
|
{ |
1153
|
0
|
|
|
|
|
|
$self -> {'word1'} = $prefix{$suffix}[0]; |
1154
|
0
|
|
|
|
|
|
$self -> {'word2'} = $prefix{$suffix}[1]; |
1155
|
|
|
|
|
|
|
} |
1156
|
|
|
|
|
|
|
|
1157
|
0
|
0
|
|
|
|
|
if ($i == -1) |
1158
|
|
|
|
|
|
|
{ |
1159
|
0
|
|
|
|
|
|
$i = $#{$prefix{$suffix} }; |
|
0
|
|
|
|
|
|
|
1160
|
0
|
|
|
|
|
|
$self -> {'word1'} = $prefix{$suffix}[$i] . |
1161
|
|
|
|
|
|
|
$self -> {'suffix2Rule'}{$suffix}{'suffix1'}; |
1162
|
0
|
|
|
|
|
|
$self -> {'word2'} = ''; |
1163
|
|
|
|
|
|
|
} |
1164
|
|
|
|
|
|
|
|
1165
|
0
|
0
|
|
|
|
|
if ($i == -2) |
1166
|
|
|
|
|
|
|
{ |
1167
|
0
|
|
|
|
|
|
$i = $#{$prefix{$suffix} }; |
|
0
|
|
|
|
|
|
|
1168
|
0
|
|
|
|
|
|
$self -> {'word1'} = $prefix{$suffix}[$i] . |
1169
|
|
|
|
|
|
|
$self -> {'suffix2Rule'}{$suffix}{'suffix1'}; |
1170
|
0
|
|
|
|
|
|
$self -> {'word2'} = $prefix{$suffix}[$i]; |
1171
|
|
|
|
|
|
|
} |
1172
|
|
|
|
|
|
|
|
1173
|
0
|
0
|
|
|
|
|
if ($i == -3) |
1174
|
|
|
|
|
|
|
{ |
1175
|
0
|
|
|
|
|
|
$i = $#{$prefix{$suffix} }; |
|
0
|
|
|
|
|
|
|
1176
|
0
|
|
|
|
|
|
$self -> {'word1'} = $prefix{$suffix}[$i] . |
1177
|
|
|
|
|
|
|
$self -> {'suffix2Rule'}{$suffix}{'suffix1'}; |
1178
|
0
|
|
|
|
|
|
$self -> {'word2'} = $prefix{$suffix}[$i] . |
1179
|
|
|
|
|
|
|
$self -> {'suffix2Rule'}{$suffix}{'suffix2'}; |
1180
|
|
|
|
|
|
|
} |
1181
|
|
|
|
|
|
|
|
1182
|
0
|
0
|
|
|
|
|
if ($i == -4) |
1183
|
|
|
|
|
|
|
{ |
1184
|
0
|
|
|
|
|
|
$self -> {'word1'} = $string; |
1185
|
0
|
|
|
|
|
|
$self -> {'word2'} = '' |
1186
|
|
|
|
|
|
|
} |
1187
|
|
|
|
|
|
|
|
1188
|
|
|
|
|
|
|
# Rules 12b and 15: Strip off 'ed' or 'ing'. |
1189
|
|
|
|
|
|
|
|
1190
|
0
|
0
|
0
|
|
|
|
if ( ($self -> {'rule'} eq '12b') || ($self -> {'rule'} eq '15') ) |
1191
|
|
|
|
|
|
|
{ |
1192
|
|
|
|
|
|
|
# Do we have a monosyllable of this form: |
1193
|
|
|
|
|
|
|
# o 0+ Consonants |
1194
|
|
|
|
|
|
|
# o 1+ Vowel |
1195
|
|
|
|
|
|
|
# o 2 Non-wx |
1196
|
|
|
|
|
|
|
# Eg: tipped => tipp? |
1197
|
|
|
|
|
|
|
# Then return tip and tipp. |
1198
|
|
|
|
|
|
|
# Eg: swimming => swimm? |
1199
|
|
|
|
|
|
|
# Then return tipswim and swimm. |
1200
|
|
|
|
|
|
|
|
1201
|
0
|
0
|
|
|
|
|
if ($self -> {'word2'} =~ /^([^aeiou]*[aeiou]+)([^wx])\2$/) |
1202
|
|
|
|
|
|
|
{ |
1203
|
0
|
|
|
|
|
|
$self -> {'word1'} = "$1$2"; |
1204
|
0
|
|
|
|
|
|
$self -> {'word2'} = "$1$2$2"; |
1205
|
|
|
|
|
|
|
} |
1206
|
|
|
|
|
|
|
} |
1207
|
|
|
|
|
|
|
|
1208
|
0
|
|
|
|
|
|
return ($self -> {'word1'}, $self -> {'word2'}, $suffix, $self -> {'rule'}); |
1209
|
|
|
|
|
|
|
} |
1210
|
|
|
|
|
|
|
} |
1211
|
|
|
|
|
|
|
|
1212
|
0
|
|
|
|
|
|
return ('', '', '', ''); |
1213
|
|
|
|
|
|
|
|
1214
|
|
|
|
|
|
|
} # End of stem. |
1215
|
|
|
|
|
|
|
|
1216
|
|
|
|
|
|
|
#------------------------------------------------------------------- |
1217
|
|
|
|
|
|
|
|
1218
|
|
|
|
|
|
|
# Autoload methods go after =cut, and are processed by the autosplit program. |
1219
|
|
|
|
|
|
|
|
1220
|
|
|
|
|
|
|
1; |
1221
|
|
|
|
|
|
|
|
1222
|
|
|
|
|
|
|
__END__ |