mittens 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3 -0
  3. data/Gemfile +7 -0
  4. data/LICENSE.txt +30 -0
  5. data/README.md +62 -0
  6. data/Rakefile +21 -0
  7. data/ext/mittens/ext.c +96 -0
  8. data/ext/mittens/extconf.rb +12 -0
  9. data/lib/mittens/version.rb +3 -0
  10. data/lib/mittens.rb +7 -0
  11. data/mittens.gemspec +22 -0
  12. data/vendor/snowball/.gitignore +26 -0
  13. data/vendor/snowball/.travis.yml +112 -0
  14. data/vendor/snowball/AUTHORS +27 -0
  15. data/vendor/snowball/CONTRIBUTING.rst +216 -0
  16. data/vendor/snowball/COPYING +29 -0
  17. data/vendor/snowball/GNUmakefile +742 -0
  18. data/vendor/snowball/NEWS +754 -0
  19. data/vendor/snowball/README.rst +37 -0
  20. data/vendor/snowball/ada/README.md +74 -0
  21. data/vendor/snowball/ada/generate/generate.adb +83 -0
  22. data/vendor/snowball/ada/generate.gpr +21 -0
  23. data/vendor/snowball/ada/src/stemmer.adb +620 -0
  24. data/vendor/snowball/ada/src/stemmer.ads +219 -0
  25. data/vendor/snowball/ada/src/stemwords.adb +70 -0
  26. data/vendor/snowball/ada/stemmer_config.gpr +83 -0
  27. data/vendor/snowball/ada/stemwords.gpr +21 -0
  28. data/vendor/snowball/algorithms/arabic.sbl +558 -0
  29. data/vendor/snowball/algorithms/armenian.sbl +301 -0
  30. data/vendor/snowball/algorithms/basque.sbl +149 -0
  31. data/vendor/snowball/algorithms/catalan.sbl +202 -0
  32. data/vendor/snowball/algorithms/danish.sbl +93 -0
  33. data/vendor/snowball/algorithms/dutch.sbl +164 -0
  34. data/vendor/snowball/algorithms/english.sbl +229 -0
  35. data/vendor/snowball/algorithms/finnish.sbl +197 -0
  36. data/vendor/snowball/algorithms/french.sbl +254 -0
  37. data/vendor/snowball/algorithms/german.sbl +139 -0
  38. data/vendor/snowball/algorithms/german2.sbl +145 -0
  39. data/vendor/snowball/algorithms/greek.sbl +701 -0
  40. data/vendor/snowball/algorithms/hindi.sbl +323 -0
  41. data/vendor/snowball/algorithms/hungarian.sbl +241 -0
  42. data/vendor/snowball/algorithms/indonesian.sbl +192 -0
  43. data/vendor/snowball/algorithms/irish.sbl +149 -0
  44. data/vendor/snowball/algorithms/italian.sbl +202 -0
  45. data/vendor/snowball/algorithms/kraaij_pohlmann.sbl +240 -0
  46. data/vendor/snowball/algorithms/lithuanian.sbl +373 -0
  47. data/vendor/snowball/algorithms/lovins.sbl +208 -0
  48. data/vendor/snowball/algorithms/nepali.sbl +92 -0
  49. data/vendor/snowball/algorithms/norwegian.sbl +80 -0
  50. data/vendor/snowball/algorithms/porter.sbl +139 -0
  51. data/vendor/snowball/algorithms/portuguese.sbl +218 -0
  52. data/vendor/snowball/algorithms/romanian.sbl +236 -0
  53. data/vendor/snowball/algorithms/russian.sbl +221 -0
  54. data/vendor/snowball/algorithms/serbian.sbl +2379 -0
  55. data/vendor/snowball/algorithms/spanish.sbl +230 -0
  56. data/vendor/snowball/algorithms/swedish.sbl +72 -0
  57. data/vendor/snowball/algorithms/tamil.sbl +405 -0
  58. data/vendor/snowball/algorithms/turkish.sbl +470 -0
  59. data/vendor/snowball/algorithms/yiddish.sbl +460 -0
  60. data/vendor/snowball/charsets/ISO-8859-2.sbl +98 -0
  61. data/vendor/snowball/charsets/KOI8-R.sbl +74 -0
  62. data/vendor/snowball/charsets/cp850.sbl +130 -0
  63. data/vendor/snowball/compiler/analyser.c +1547 -0
  64. data/vendor/snowball/compiler/driver.c +615 -0
  65. data/vendor/snowball/compiler/generator.c +1748 -0
  66. data/vendor/snowball/compiler/generator_ada.c +1702 -0
  67. data/vendor/snowball/compiler/generator_csharp.c +1322 -0
  68. data/vendor/snowball/compiler/generator_go.c +1278 -0
  69. data/vendor/snowball/compiler/generator_java.c +1313 -0
  70. data/vendor/snowball/compiler/generator_js.c +1316 -0
  71. data/vendor/snowball/compiler/generator_pascal.c +1387 -0
  72. data/vendor/snowball/compiler/generator_python.c +1337 -0
  73. data/vendor/snowball/compiler/generator_rust.c +1295 -0
  74. data/vendor/snowball/compiler/header.h +418 -0
  75. data/vendor/snowball/compiler/space.c +286 -0
  76. data/vendor/snowball/compiler/syswords.h +86 -0
  77. data/vendor/snowball/compiler/syswords2.h +13 -0
  78. data/vendor/snowball/compiler/tokeniser.c +567 -0
  79. data/vendor/snowball/csharp/.gitignore +8 -0
  80. data/vendor/snowball/csharp/Snowball/Algorithms/.gitignore +1 -0
  81. data/vendor/snowball/csharp/Snowball/Among.cs +108 -0
  82. data/vendor/snowball/csharp/Snowball/AssemblyInfo.cs +36 -0
  83. data/vendor/snowball/csharp/Snowball/Stemmer.cs +660 -0
  84. data/vendor/snowball/csharp/Stemwords/App.config +6 -0
  85. data/vendor/snowball/csharp/Stemwords/Program.cs +114 -0
  86. data/vendor/snowball/doc/TODO +12 -0
  87. data/vendor/snowball/doc/libstemmer_c_README +148 -0
  88. data/vendor/snowball/doc/libstemmer_csharp_README +53 -0
  89. data/vendor/snowball/doc/libstemmer_java_README +67 -0
  90. data/vendor/snowball/doc/libstemmer_js_README +48 -0
  91. data/vendor/snowball/doc/libstemmer_python_README +113 -0
  92. data/vendor/snowball/examples/stemwords.c +204 -0
  93. data/vendor/snowball/go/README.md +55 -0
  94. data/vendor/snowball/go/among.go +16 -0
  95. data/vendor/snowball/go/env.go +403 -0
  96. data/vendor/snowball/go/stemwords/generate.go +68 -0
  97. data/vendor/snowball/go/stemwords/main.go +68 -0
  98. data/vendor/snowball/go/util.go +34 -0
  99. data/vendor/snowball/iconv.py +50 -0
  100. data/vendor/snowball/include/libstemmer.h +78 -0
  101. data/vendor/snowball/java/org/tartarus/snowball/Among.java +29 -0
  102. data/vendor/snowball/java/org/tartarus/snowball/SnowballProgram.java +381 -0
  103. data/vendor/snowball/java/org/tartarus/snowball/SnowballStemmer.java +8 -0
  104. data/vendor/snowball/java/org/tartarus/snowball/TestApp.java +75 -0
  105. data/vendor/snowball/javascript/base-stemmer.js +294 -0
  106. data/vendor/snowball/javascript/stemwords.js +106 -0
  107. data/vendor/snowball/libstemmer/libstemmer_c.in +96 -0
  108. data/vendor/snowball/libstemmer/mkalgorithms.pl +90 -0
  109. data/vendor/snowball/libstemmer/mkmodules.pl +267 -0
  110. data/vendor/snowball/libstemmer/modules.txt +63 -0
  111. data/vendor/snowball/libstemmer/test.c +34 -0
  112. data/vendor/snowball/pascal/.gitignore +4 -0
  113. data/vendor/snowball/pascal/SnowballProgram.pas +430 -0
  114. data/vendor/snowball/pascal/generate.pl +23 -0
  115. data/vendor/snowball/pascal/stemwords-template.dpr +78 -0
  116. data/vendor/snowball/python/MANIFEST.in +7 -0
  117. data/vendor/snowball/python/create_init.py +54 -0
  118. data/vendor/snowball/python/setup.cfg +6 -0
  119. data/vendor/snowball/python/setup.py +81 -0
  120. data/vendor/snowball/python/snowballstemmer/among.py +13 -0
  121. data/vendor/snowball/python/snowballstemmer/basestemmer.py +323 -0
  122. data/vendor/snowball/python/stemwords.py +101 -0
  123. data/vendor/snowball/python/testapp.py +28 -0
  124. data/vendor/snowball/runtime/api.c +58 -0
  125. data/vendor/snowball/runtime/api.h +32 -0
  126. data/vendor/snowball/runtime/header.h +61 -0
  127. data/vendor/snowball/runtime/utilities.c +513 -0
  128. data/vendor/snowball/rust/Cargo.toml +7 -0
  129. data/vendor/snowball/rust/build.rs +55 -0
  130. data/vendor/snowball/rust/rust-pre-1.27-compat.patch +30 -0
  131. data/vendor/snowball/rust/src/main.rs +102 -0
  132. data/vendor/snowball/rust/src/snowball/algorithms/mod.rs +2 -0
  133. data/vendor/snowball/rust/src/snowball/among.rs +6 -0
  134. data/vendor/snowball/rust/src/snowball/mod.rs +6 -0
  135. data/vendor/snowball/rust/src/snowball/snowball_env.rs +421 -0
  136. data/vendor/snowball/tests/stemtest.c +95 -0
  137. metadata +178 -0
@@ -0,0 +1,701 @@
1
+ // A stemmer for Modern Greek language, based on:
2
+ //
3
+ // Ntais, Georgios. Development of a Stemmer for the Greek
4
+ // Language. Diss. Royal Institute of Technology, 2006.
5
+ // https://sais.se/mthprize/2007/ntais2007.pdf
6
+ //
7
+ // Saroukos, Spyridon. Enhancing a Greek language stemmer.
8
+ // University of Tampere, 2008.
9
+ // https://tampub.uta.fi/bitstream/handle/10024/80480/gradu03463.pdf
10
+
11
+ stringescapes {}
12
+
13
+ stringdef a '{U+03B1}' // alpha
14
+ stringdef v '{U+03B2}' // beta
15
+ stringdef g '{U+03B3}' // gamma
16
+ stringdef d '{U+03B4}' // delta
17
+ stringdef e '{U+03B5}' // epsilon
18
+ stringdef z '{U+03B6}' // zeta
19
+ stringdef i '{U+03B7}' // eta
20
+ stringdef th '{U+03B8}' // theta
21
+ stringdef y '{U+03B9}' // iota
22
+ stringdef k '{U+03BA}' // kappa
23
+ stringdef l '{U+03BB}' // lamda
24
+ stringdef m '{U+03BC}' // mu
25
+ stringdef n '{U+03BD}' // nu
26
+ stringdef x '{U+03BE}' // xi
27
+ stringdef o '{U+03BF}' // omicron
28
+ stringdef p '{U+03C0}' // pi
29
+ stringdef r '{U+03C1}' // rho
30
+ stringdef ss '{U+03C2}' // sigma final
31
+ stringdef s '{U+03C3}' // sigma
32
+ stringdef t '{U+03C4}' // tau
33
+ stringdef u '{U+03C5}' // upsilon
34
+ stringdef f '{U+03C6}' // phi
35
+ stringdef ch '{U+03C7}' // chi
36
+ stringdef ps '{U+03C8}' // psi
37
+ stringdef oo '{U+03C9}' // omega
38
+
39
+ stringdef A '{U+0391}' // Alpha
40
+ stringdef V '{U+0392}' // Beta
41
+ stringdef G '{U+0393}' // Gamma
42
+ stringdef D '{U+0394}' // Delta
43
+ stringdef E '{U+0395}' // Epsilon
44
+ stringdef Z '{U+0396}' // Zeta
45
+ stringdef I '{U+0397}' // Eta
46
+ stringdef Th '{U+0398}' // Theta
47
+ stringdef Y '{U+0399}' // Iota
48
+ stringdef K '{U+039A}' // Kappa
49
+ stringdef L '{U+039B}' // Lamda
50
+ stringdef M '{U+039C}' // Mu
51
+ stringdef N '{U+039D}' // Nu
52
+ stringdef X '{U+039E}' // Xi
53
+ stringdef O '{U+039F}' // Omicron
54
+ stringdef P '{U+03A0}' // Pi
55
+ stringdef R '{U+03A1}' // Rho
56
+ stringdef S '{U+03A3}' // Sigma
57
+ stringdef T '{U+03A4}' // Tau
58
+ stringdef U '{U+03A5}' // Upsilon
59
+ stringdef F '{U+03A6}' // Phi
60
+ stringdef Ch '{U+03A7}' // Chi
61
+ stringdef Ps '{U+03A8}' // Psi
62
+ stringdef Oo '{U+03A9}' // Omega
63
+
64
+ stringdef Y: '{U+03AA}' // Iota with dialytika
65
+ stringdef U: '{U+03AB}' // Upsilon with dialytika
66
+
67
+ stringdef a' '{U+03AC}' // alpha with tonos
68
+ stringdef e' '{U+03AD}' // epsilon with tonos
69
+ stringdef i' '{U+03AE}' // eta with tonos
70
+ stringdef y' '{U+03AF}' // iota with tonos
71
+ stringdef o' '{U+03CC}' // omicron with tonos
72
+ stringdef u' '{U+03CD}' // upsilon with tonos
73
+ stringdef oo' '{U+03CE}' // omega with tonos
74
+
75
+ stringdef i:' '{U+0390}' // iota with dialytika and tonos
76
+ stringdef u:' '{U+03B0}' // upsilon with dialytika and tonos
77
+
78
+ stringdef i: '{U+03CA}' // iota with dialytika
79
+ stringdef u: '{U+03CB}' // upsilon with dialytika
80
+
81
+ stringdef A' '{U+0386}' // Alpha with tonos
82
+ stringdef E' '{U+0388}' // Epsilon with tonos
83
+ stringdef I' '{U+0389}' // Eta with tonos
84
+ stringdef Y' '{U+038A}' // Iota with tonos
85
+ stringdef O' '{U+038C}' // Omicron with tonos
86
+ stringdef U' '{U+038E}' // Upsilon with tonos
87
+ stringdef OO' '{U+038F}' // Omega with tonos
88
+
89
+ externals ( stem )
90
+
91
+ booleans ( test1 )
92
+
93
+ groupings ( v v2 )
94
+
95
+ routines ( tolower has_min_length
96
+ steps1 steps2 steps3 steps4 steps5 steps6 steps7
97
+ steps8 steps9 steps10
98
+ step1 step2a step2b step2c step2d step3 step4
99
+ step5a step5b step5c step5d step5e step5f
100
+ step5g step5h step5i
101
+ step5j step5k step5l step5m
102
+ step6 step7 )
103
+
104
+ define v '{a}{e}{i}{y}{o}{u}{oo}'
105
+ define v2 '{a}{e}{i}{y}{o}{oo}'
106
+
107
+ backwardmode (
108
+ define has_min_length as (
109
+ $(len >= 3)
110
+ )
111
+
112
+ define tolower as (
113
+ repeat (
114
+ [substring] among (
115
+ '{A}' (<- '{a}')
116
+ '{V}' (<- '{v}')
117
+ '{G}' (<- '{g}')
118
+ '{D}' (<- '{d}')
119
+ '{E}' (<- '{e}')
120
+ '{Z}' (<- '{z}')
121
+ '{I}' (<- '{i}')
122
+ '{Th}' (<- '{th}')
123
+ '{Y}' (<- '{y}')
124
+ '{K}' (<- '{k}')
125
+ '{L}' (<- '{l}')
126
+ '{M}' (<- '{m}')
127
+ '{N}' (<- '{n}')
128
+ '{X}' (<- '{x}')
129
+ '{O}' (<- '{o}')
130
+ '{P}' (<- '{p}')
131
+ '{R}' (<- '{r}')
132
+ '{S}' (<- '{s}')
133
+ '{T}' (<- '{t}')
134
+ '{U}' (<- '{u}')
135
+ '{F}' (<- '{f}')
136
+ '{Ch}' (<- '{ch}')
137
+ '{Ps}' (<- '{ps}')
138
+ '{Oo}' (<- '{oo}')
139
+ '{Y:}' (<- '{y}')
140
+ '{U:}' (<- '{u}')
141
+ '{a'}' (<- '{a}')
142
+ '{e'}' (<- '{e}')
143
+ '{i'}' (<- '{i}')
144
+ '{y'}' (<- '{y}')
145
+ '{o'}' (<- '{o}')
146
+ '{u'}' (<- '{u}')
147
+ '{oo'}' (<- '{oo}')
148
+ '{i:'}' (<- '{i}')
149
+ '{u:'}' (<- '{u}')
150
+ '{i:}' (<- '{i}')
151
+ '{u:}' (<- '{u}')
152
+ '{A'}' (<- '{a}')
153
+ '{E'}' (<- '{e}')
154
+ '{I'}' (<- '{i}')
155
+ '{Y'}' (<- '{y}')
156
+ '{O'}' (<- '{o}')
157
+ '{U'}' (<- '{u}')
158
+ '{OO'}' (<- '{oo}')
159
+ '{ss}' (<- '{s}')
160
+ '' (next)
161
+ )
162
+ )
163
+ )
164
+
165
+ define step1 as (
166
+ [substring] among (
167
+ '{f}{a}{g}{y}{a}' '{f}{a}{g}{y}{o}{u}' '{f}{a}{g}{y}{oo}{n}' (<- '{f}{a}')
168
+ '{s}{k}{a}{g}{y}{a}' '{s}{k}{a}{g}{y}{o}{u}' '{s}{k}{a}{g}{y}{oo}{n}' (<- '{s}{k}{a}')
169
+ '{o}{l}{o}{g}{y}{o}{u}' '{o}{l}{o}{g}{y}{a}' '{o}{l}{o}{g}{y}{oo}{n}' (<- '{o}{l}{o}')
170
+ '{s}{o}{g}{y}{o}{u}' '{s}{o}{g}{y}{a}' '{s}{o}{g}{y}{oo}{n}' (<- '{s}{o}')
171
+ '{t}{a}{t}{o}{g}{y}{a}' '{t}{a}{t}{o}{g}{y}{o}{u}' '{t}{a}{t}{o}{g}{y}{oo}{n}' (<- '{t}{a}{t}{o}')
172
+ '{k}{r}{e}{a}{s}' '{k}{r}{e}{a}{t}{o}{s}' '{k}{r}{e}{a}{t}{a}' '{k}{r}{e}{a}{t}{oo}{n}' (<- '{k}{r}{e}')
173
+ '{p}{e}{r}{a}{s}' '{p}{e}{r}{a}{t}{o}{s}' '{p}{e}{r}{a}{t}{i}' '{p}{e}{r}{a}{t}{a}' '{p}{e}{r}{a}{t}{oo}{n}' (<- '{p}{e}{r}')
174
+ '{t}{e}{r}{a}{s}' '{t}{e}{r}{a}{t}{o}{s}' '{t}{e}{r}{a}{t}{a}' '{t}{e}{r}{a}{t}{oo}{n}' (<- '{t}{e}{r}')
175
+ '{f}{oo}{s}' '{f}{oo}{t}{o}{s}' '{f}{oo}{t}{a}' '{f}{oo}{t}{oo}{n}' (<- '{f}{oo}')
176
+ '{k}{a}{th}{e}{s}{t}{oo}{s}' '{k}{a}{th}{e}{s}{t}{oo}{t}{o}{s}' '{k}{a}{th}{e}{s}{t}{oo}{t}{a}' '{k}{a}{th}{e}{s}{t}{oo}{t}{oo}{n}' (<- '{k}{a}{th}{e}{s}{t}')
177
+ '{g}{e}{g}{o}{n}{o}{s}' '{g}{e}{g}{o}{n}{o}{t}{o}{s}' '{g}{e}{g}{o}{n}{o}{t}{a}' '{g}{e}{g}{o}{n}{o}{t}{oo}{n}' (<- '{g}{e}{g}{o}{n}')
178
+ )
179
+ unset test1
180
+ )
181
+
182
+ define steps1 as (
183
+ [substring] among (
184
+ '{y}{z}{a}' '{y}{z}{e}{s}' '{y}{z}{e}' '{y}{z}{a}{m}{e}' '{y}{z}{a}{t}{e}' '{y}{z}{a}{n}' '{y}{z}{a}{n}{e}' '{y}{z}{oo}' '{y}{z}{e}{y}{s}' '{y}{z}{e}{y}'
185
+ '{y}{z}{o}{u}{m}{e}' '{y}{z}{e}{t}{e}' '{y}{z}{o}{u}{n}' '{y}{z}{o}{u}{n}{e}' (
186
+ delete
187
+ unset test1
188
+ ([] substring atlimit among (
189
+ '{a}{n}{a}{m}{p}{a}' '{e}{m}{p}{a}' '{e}{p}{a}' '{x}{a}{n}{a}{p}{a}' '{p}{a}' '{p}{e}{r}{y}{p}{a}' '{a}{th}{r}{o}' '{s}{u}{n}{a}{th}{r}{o}' '{d}{a}{n}{e}'
190
+ (<- '{y}')
191
+ '{m}{a}{r}{k}' '{k}{o}{r}{n}' '{a}{m}{p}{a}{r}' '{a}{r}{r}' '{v}{a}{th}{u}{r}{y}' '{v}{a}{r}{k}' '{v}' '{v}{o}{l}{v}{o}{r}' '{g}{k}{r}'
192
+ '{g}{l}{u}{k}{o}{r}' '{g}{l}{u}{k}{u}{r}' '{y}{m}{p}' '{l}' '{l}{o}{u}' '{m}{a}{r}' '{m}' '{p}{r}' '{m}{p}{r}' '{p}{o}{l}{u}{r}' '{p}'
193
+ '{r}' '{p}{y}{p}{e}{r}{o}{r}'
194
+ (<- '{y}{z}')
195
+ ))
196
+ )
197
+ )
198
+ )
199
+
200
+ define steps2 as (
201
+ [substring] among (
202
+ '{oo}{th}{i}{k}{a}' '{oo}{th}{i}{k}{e}{s}' '{oo}{th}{i}{k}{e}' '{oo}{th}{i}{k}{a}{m}{e}' '{oo}{th}{i}{k}{a}{t}{e}' '{oo}{th}{i}{k}{a}{n}' '{oo}{th}{i}{k}{a}{n}{e}' (
203
+ delete
204
+ unset test1
205
+ [] substring atlimit among (
206
+ '{a}{l}' '{v}{y}' '{e}{n}' '{u}{ps}' '{l}{y}' '{z}{oo}' '{s}' '{ch}' (<- '{oo}{n}')
207
+ )
208
+ )
209
+ )
210
+ )
211
+
212
+ define steps3 as (
213
+ [substring] among (
214
+ '{y}{s}{a}' '{y}{s}{e}{s}' '{y}{s}{e}' '{y}{s}{a}{m}{e}' '{y}{s}{a}{t}{e}' '{y}{s}{a}{n}' '{y}{s}{a}{n}{e}' (
215
+ delete
216
+ unset test1
217
+ ('{y}{s}{a}' atlimit <- '{y}{s}') or
218
+ ([] substring atlimit among (
219
+ '{a}{n}{a}{m}{p}{a}' '{a}{th}{r}{o}' '{e}{m}{p}{a}' '{e}{s}{e}' '{e}{s}{oo}{k}{l}{e}' '{e}{p}{a}' '{x}{a}{n}{a}{p}{a}' '{e}{p}{e}' '{p}{e}{r}{y}{p}{a}'
220
+ '{s}{u}{n}{a}{th}{r}{o}' '{d}{a}{n}{e}' '{k}{l}{e}' '{ch}{a}{r}{t}{o}{p}{a}' '{e}{x}{a}{r}{ch}{a}' '{m}{e}{t}{e}{p}{e}' '{a}{p}{o}{k}{l}{e}'
221
+ '{a}{p}{e}{k}{l}{e}' '{e}{k}{l}{e}' '{p}{e}'
222
+ (<- '{y}')
223
+ '{a}{n}' '{a}{f}' '{g}{e}' '{g}{y}{g}{a}{n}{t}{o}{a}{f}' '{g}{k}{e}' '{d}{i}{m}{o}{k}{r}{a}{t}' '{k}{o}{m}' '{g}{k}' '{m}' '{p}'
224
+ '{p}{o}{u}{k}{a}{m}' '{o}{l}{o}' '{l}{a}{r}'
225
+ (<- '{y}{s}')
226
+ ))
227
+ )
228
+ )
229
+ )
230
+
231
+ define steps4 as (
232
+ [substring] among (
233
+ '{y}{s}{oo}' '{y}{s}{e}{y}{s}' '{y}{s}{e}{y}' '{y}{s}{o}{u}{m}{e}' '{y}{s}{e}{t}{e}' '{y}{s}{o}{u}{n}' '{y}{s}{o}{u}{n}{e}' (
234
+ delete
235
+ unset test1
236
+ [] substring atlimit among (
237
+ '{a}{n}{a}{m}{p}{a}' '{e}{m}{p}{a}' '{e}{s}{e}' '{e}{s}{oo}{k}{l}{e}' '{e}{p}{a}' '{x}{a}{n}{a}{p}{a}' '{e}{p}{e}' '{p}{e}{r}{y}{p}{a}' '{a}{th}{r}{o}'
238
+ '{s}{u}{n}{a}{th}{r}{o}' '{d}{a}{n}{e}' '{k}{l}{e}' '{ch}{a}{r}{t}{o}{p}{a}' '{e}{x}{a}{r}{ch}{a}' '{m}{e}{t}{e}{p}{e}' '{a}{p}{o}{k}{l}{e}' '{a}{p}{e}{k}{l}{e}'
239
+ '{e}{k}{l}{e}' '{p}{e}'
240
+ (<- '{y}')
241
+ )
242
+ )
243
+ )
244
+ )
245
+
246
+ define steps5 as (
247
+ [substring] among (
248
+ '{y}{s}{t}{o}{s}' '{y}{s}{t}{o}{u}' '{y}{s}{t}{o}' '{y}{s}{t}{e}' '{y}{s}{t}{o}{y}' '{y}{s}{t}{oo}{n}' '{y}{s}{t}{o}{u}{s}' '{y}{s}{t}{i}' '{y}{s}{t}{i}{s}'
249
+ '{y}{s}{t}{a}' '{y}{s}{t}{e}{s}' (
250
+ delete
251
+ unset test1
252
+ ([] substring atlimit among (
253
+ '{d}{a}{n}{e}' '{s}{u}{n}{a}{th}{r}{o}' '{k}{l}{e}' '{s}{e}' '{e}{s}{oo}{k}{l}{e}' '{a}{s}{e}' '{p}{l}{e}'
254
+ (<- '{y}')
255
+ '{m}' '{p}' '{a}{p}' '{a}{r}' '{i}{d}' '{k}{t}' '{s}{k}' '{s}{ch}' '{u}{ps}' '{f}{a}' '{ch}{r}' '{ch}{t}' '{a}{k}{t}'
256
+ '{a}{o}{r}' '{a}{s}{ch}' '{a}{t}{a}' '{a}{ch}{n}' '{a}{ch}{t}' '{g}{e}{m}' '{g}{u}{r}' '{e}{m}{p}' '{e}{u}{p}' '{e}{ch}{th}' '{i}{f}{a}'
257
+ '{k}{a}{th}' '{k}{a}{k}' '{k}{u}{l}' '{l}{u}{g}' '{m}{a}{k}' '{m}{e}{g}' '{t}{a}{ch}' '{f}{y}{l}' '{ch}{oo}{r}'
258
+ (<- '{y}{s}{t}')
259
+ ))
260
+ )
261
+ )
262
+ )
263
+
264
+ define steps6 as (
265
+ [substring] among (
266
+ '{y}{s}{m}{o}' '{y}{s}{m}{o}{y}' '{y}{s}{m}{o}{s}' '{y}{s}{m}{o}{u}' '{y}{s}{m}{o}{u}{s}' '{y}{s}{m}{oo}{n}' (
267
+ delete
268
+ unset test1
269
+ ([] substring atlimit among (
270
+ '{s}{e}' '{m}{e}{t}{a}{s}{e}' '{m}{y}{k}{r}{o}{s}{e}' '{e}{g}{k}{l}{e}' '{a}{p}{o}{k}{l}{e}'
271
+ (<- '{y}{s}{m}')
272
+ '{d}{a}{n}{e}' '{a}{n}{t}{y}{d}{a}{n}{e}'
273
+ (<- '{y}')
274
+ )) or
275
+ ([substring] among (
276
+ '{a}{g}{n}{oo}{s}{t}{y}{k}' (<- '{a}{g}{n}{oo}{s}{t}')
277
+ '{a}{t}{o}{m}{y}{k}' (<- '{a}{t}{o}{m}')
278
+ '{g}{n}{oo}{s}{t}{y}{k}' (<- '{g}{n}{oo}{s}{t}')
279
+ '{e}{th}{n}{y}{k}' (<- '{e}{th}{n}')
280
+ '{e}{k}{l}{e}{k}{t}{y}{k}' (<- '{e}{k}{l}{e}{k}{t}')
281
+ '{s}{k}{e}{p}{t}{y}{k}' (<- '{s}{k}{e}{p}{t}')
282
+ '{t}{o}{p}{y}{k}' (<- '{t}{o}{p}')
283
+ '{a}{l}{e}{x}{a}{n}{d}{r}{y}{n}' (<- '{a}{l}{e}{x}{a}{n}{d}{r}')
284
+ '{v}{u}{z}{a}{n}{t}{y}{n}' (<- '{v}{u}{z}{a}{n}{t}')
285
+ '{th}{e}{a}{t}{r}{y}{n}' (<- '{th}{e}{a}{t}{r}')
286
+ ))
287
+ )
288
+ )
289
+ )
290
+
291
+ define steps7 as (
292
+ [substring] among (
293
+ '{a}{r}{a}{k}{y}' '{a}{r}{a}{k}{y}{a}' '{o}{u}{d}{a}{k}{y}' '{o}{u}{d}{a}{k}{y}{a}' (
294
+ delete
295
+ unset test1
296
+ [] substring atlimit among (
297
+ '{s}' '{ch}'
298
+ (<- '{a}{r}{a}{k}')
299
+ )
300
+ )
301
+ )
302
+ )
303
+
304
+ define steps8 as (
305
+ [substring] among (
306
+ '{a}{k}{y}' '{a}{k}{y}{a}' '{y}{t}{s}{a}' '{y}{t}{s}{a}{s}' '{y}{t}{s}{e}{s}' '{y}{t}{s}{oo}{n}' '{a}{r}{a}{k}{y}' '{a}{r}{a}{k}{y}{a}' (
307
+ delete
308
+ unset test1
309
+ ([] substring atlimit among (
310
+ '{v}{a}{m}{v}' '{v}{r}' '{k}{a}{y}{m}' '{k}{o}{n}' '{k}{o}{r}' '{l}{a}{v}{r}' '{l}{o}{u}{l}' '{m}{e}{r}' '{m}{o}{u}{s}{t}'
311
+ '{n}{a}{g}{k}{a}{s}' '{p}{l}' '{r}' '{r}{u}' '{s}' '{s}{k}' '{s}{o}{k}' '{s}{p}{a}{n}' '{t}{z}' '{f}{a}{r}{m}' '{ch}' '{k}{a}{p}{a}{k}'
312
+ '{a}{l}{y}{s}{f}' '{a}{m}{v}{r}' '{a}{n}{th}{r}' '{k}' '{f}{u}{l}' '{k}{a}{t}{r}{a}{p}' '{k}{l}{y}{m}' '{m}{a}{l}' '{s}{l}{o}{v}' '{f}'
313
+ '{s}{f}' '{t}{s}{e}{ch}{o}{s}{l}{o}{v}'
314
+ (<- '{a}{k}')
315
+ '{v}' '{v}{a}{l}' '{g}{y}{a}{n}' '{g}{l}' '{z}' '{i}{g}{o}{u}{m}{e}{n}' '{k}{a}{r}{d}' '{m}{a}{k}{r}{u}{n}' '{n}{u}{f}'
316
+ '{p}{a}{t}{e}{r}' '{p}' '{t}{o}{s}' '{t}{r}{y}{p}{o}{l}'
317
+ // We're implementing the revised algorithm from the Saroukos paper
318
+ // which also lists '{k}{o}{n}' and '{s}{k}' here, but these are
319
+ // also listed just above in the `Add {a}{k} in the end` exception.
320
+ // It seems they're redundant here, so we omit them (otherwise the
321
+ // Snowball compiler would report an error).
322
+ (<- '{y}{t}{s}')
323
+ )) or
324
+ ([] '{k}{o}{r}' <- '{y}{t}{s}')
325
+ )
326
+ )
327
+ )
328
+
329
+ define steps9 as (
330
+ [substring] among (
331
+ '{y}{d}{y}{o}' '{y}{d}{y}{a}' '{y}{d}{y}{oo}{n}' (
332
+ delete
333
+ unset test1
334
+ ([] substring atlimit among (
335
+ '{a}{y}{f}{n}' '{y}{r}' '{o}{l}{o}' '{ps}{a}{l}' (<- '{y}{d}')
336
+ )) or
337
+ ([] substring among (
338
+ '{e}' '{p}{a}{y}{ch}{n}' (<- '{y}{d}')
339
+ ))
340
+ )
341
+ )
342
+ )
343
+
344
+ define steps10 as (
345
+ [substring] among (
346
+ '{y}{s}{k}{o}{s}' '{y}{s}{k}{o}{u}' '{y}{s}{k}{o}' '{y}{s}{k}{e}' (
347
+ delete
348
+ unset test1
349
+ [] substring atlimit among (
350
+ '{d}' '{y}{v}' '{m}{i}{n}' '{r}' '{f}{r}{a}{g}{k}' '{l}{u}{k}' '{o}{v}{e}{l}'
351
+ (<- '{y}{s}{k}')
352
+ )
353
+ )
354
+ )
355
+ )
356
+
357
+ define step2a as (
358
+ [substring] among (
359
+ '{a}{d}{e}{s}' '{a}{d}{oo}{n}' (delete)
360
+ )
361
+ not (substring among (
362
+ '{o}{k}' '{m}{a}{m}' '{m}{a}{n}' '{m}{p}{a}{m}{p}' '{p}{a}{t}{e}{r}' '{g}{y}{a}{g}{y}' '{n}{t}{a}{n}{t}' '{k}{u}{r}' '{th}{e}{y}' '{p}{e}{th}{e}{r}'
363
+ ))
364
+ insert '{a}{d}'
365
+ )
366
+
367
+ define step2b as (
368
+ [substring] among (
369
+ '{e}{d}{e}{s}' '{e}{d}{oo}{n}' (delete)
370
+ )
371
+ [] substring among (
372
+ '{o}{p}' '{y}{p}' '{e}{m}{p}' '{u}{p}' '{g}{i}{p}' '{d}{a}{p}' '{k}{r}{a}{s}{p}' '{m}{y}{l}' (<- '{e}{d}')
373
+ )
374
+ )
375
+
376
+ define step2c as (
377
+ [substring] among (
378
+ '{o}{u}{d}{e}{s}' '{o}{u}{d}{oo}{n}' (delete)
379
+ )
380
+ [] substring among (
381
+ '{a}{r}{k}' '{k}{a}{l}{y}{a}{k}' '{p}{e}{t}{a}{l}' '{l}{y}{ch}' '{p}{l}{e}{x}' '{s}{k}' '{s}' '{f}{l}' '{f}{r}' '{v}{e}{l}' '{l}{o}{u}{l}' '{ch}{n}'
382
+ '{s}{p}' '{t}{r}{a}{g}' '{f}{e}' (<- '{o}{u}{d}')
383
+ )
384
+ )
385
+
386
+ define step2d as (
387
+ [substring] among (
388
+ '{e}{oo}{s}' '{e}{oo}{n}' (delete unset test1)
389
+ )
390
+ [] substring atlimit among (
391
+ '{th}' '{d}' '{e}{l}' '{g}{a}{l}' '{n}' '{p}' '{y}{d}' '{p}{a}{r}' (<- '{e}')
392
+ )
393
+ )
394
+
395
+ define step3 as (
396
+ [substring] among (
397
+ '{y}{a}' '{y}{o}{u}' '{y}{oo}{n}' (delete unset test1)
398
+ )
399
+ ([] v <- '{y}')
400
+ )
401
+
402
+ define step4 as (
403
+ [substring] among (
404
+ '{y}{k}{a}' '{y}{k}{o}' '{y}{k}{o}{u}' '{y}{k}{oo}{n}' (delete unset test1)
405
+ )
406
+ ([] v <- '{y}{k}') or
407
+ [] substring atlimit among (
408
+ '{a}{l}' '{a}{d}' '{e}{n}{d}' '{a}{m}{a}{n}' '{a}{m}{m}{o}{ch}{a}{l}' '{i}{th}' '{a}{n}{i}{th}' '{a}{n}{t}{y}{d}' '{f}{u}{s}' '{v}{r}{oo}{m}' '{g}{e}{r}'
409
+ '{e}{x}{oo}{d}' '{k}{a}{l}{p}' '{k}{a}{l}{l}{y}{n}' '{k}{a}{t}{a}{d}' '{m}{o}{u}{l}' '{m}{p}{a}{n}' '{m}{p}{a}{g}{y}{a}{t}' '{m}{p}{o}{l}' '{m}{p}{o}{s}'
410
+ '{n}{y}{t}' '{x}{y}{k}' '{s}{u}{n}{o}{m}{i}{l}' '{p}{e}{t}{s}' '{p}{y}{t}{s}' '{p}{y}{k}{a}{n}{t}' '{p}{l}{y}{a}{t}{s}' '{p}{o}{s}{t}{e}{l}{n}' '{p}{r}{oo}{t}{o}{d}'
411
+ '{s}{e}{r}{t}' '{s}{u}{n}{a}{d}' '{t}{s}{a}{m}' '{u}{p}{o}{d}' '{f}{y}{l}{o}{n}' '{f}{u}{l}{o}{d}' '{ch}{a}{s}'
412
+ (<- '{y}{k}')
413
+ )
414
+ )
415
+
416
+ define step5a as (
417
+ do ('{a}{g}{a}{m}{e}' atlimit <- '{a}{g}{a}{m}')
418
+ do (
419
+ [substring] among (
420
+ '{a}{g}{a}{m}{e}' '{i}{s}{a}{m}{e}' '{o}{u}{s}{a}{m}{e}' '{i}{k}{a}{m}{e}' '{i}{th}{i}{k}{a}{m}{e}' (delete unset test1)
421
+ )
422
+ )
423
+ ['{a}{m}{e}']
424
+ delete
425
+ unset test1
426
+ [] substring atlimit among (
427
+ '{a}{n}{a}{p}' '{a}{p}{o}{th}' '{a}{p}{o}{k}' '{a}{p}{o}{s}{t}' '{v}{o}{u}{v}' '{x}{e}{th}' '{o}{u}{l}' '{p}{e}{th}' '{p}{y}{k}{r}' '{p}{o}{t}' '{s}{y}{ch}' '{ch}'
428
+ (<- '{a}{m}')
429
+ )
430
+ )
431
+
432
+ define step5b as (
433
+ do (
434
+ [substring] among (
435
+ '{a}{g}{a}{n}{e}' '{i}{s}{a}{n}{e}' '{o}{u}{s}{a}{n}{e}' '{y}{o}{n}{t}{a}{n}{e}' '{y}{o}{t}{a}{n}{e}' '{y}{o}{u}{n}{t}{a}{n}{e}' '{o}{n}{t}{a}{n}{e}' '{o}{t}{a}{n}{e}'
436
+ '{o}{u}{n}{t}{a}{n}{e}' '{i}{k}{a}{n}{e}' '{i}{th}{i}{k}{a}{n}{e}' (
437
+ delete
438
+ unset test1
439
+ [] substring atlimit among (
440
+ '{t}{r}' '{t}{s}' (<- '{a}{g}{a}{n}')
441
+ )
442
+ )
443
+ )
444
+ )
445
+ ['{a}{n}{e}']
446
+ delete
447
+ unset test1
448
+ ([] v2 <- '{a}{n}') or
449
+ [] substring atlimit among (
450
+ '{v}{e}{t}{e}{r}' '{v}{o}{u}{l}{k}' '{v}{r}{a}{ch}{m}' '{g}' '{d}{r}{a}{d}{o}{u}{m}'
451
+ '{th}' '{k}{a}{l}{p}{o}{u}{z}' '{k}{a}{s}{t}{e}{l}' '{k}{o}{r}{m}{o}{r}' '{l}{a}{o}{p}{l}' '{m}{oo}{a}{m}{e}{th}'
452
+ '{m}' '{m}{o}{u}{s}{o}{u}{l}{m}' '{n}' '{o}{u}{l}' '{p}' '{p}{e}{l}{e}{k}' '{p}{l}' '{p}{o}{l}{y}{s}'
453
+ '{p}{o}{r}{t}{o}{l}' '{s}{a}{r}{a}{k}{a}{t}{s}' '{s}{o}{u}{l}{t}' '{t}{s}{a}{r}{l}{a}{t}' '{o}{r}{f}'
454
+ '{t}{s}{y}{g}{g}' '{t}{s}{o}{p}' '{f}{oo}{t}{o}{s}{t}{e}{f}' '{ch}' '{ps}{u}{ch}{o}{p}{l}' '{a}{g}'
455
+ '{g}{a}{l}' '{g}{e}{r}' '{d}{e}{k}' '{d}{y}{p}{l}' '{a}{m}{e}{r}{y}{k}{a}{n}' '{o}{u}{r}' '{p}{y}{th}'
456
+ '{p}{o}{u}{r}{y}{t}' '{s}' '{z}{oo}{n}{t}' '{y}{k}' '{k}{a}{s}{t}' '{k}{o}{p}' '{l}{y}{ch}'
457
+ '{l}{o}{u}{th}{i}{r}' '{m}{a}{y}{n}{t}' '{m}{e}{l}' '{s}{y}{g}' '{s}{p}' '{s}{t}{e}{g}' '{t}{r}{a}{g}'
458
+ '{t}{s}{a}{g}' '{f}' '{e}{r}' '{a}{d}{a}{p}' '{a}{th}{y}{g}{g}' '{a}{m}{i}{ch}' '{a}{n}{y}{k}'
459
+ '{a}{n}{o}{r}{g}' '{a}{p}{i}{g}' '{a}{p}{y}{th}' '{a}{t}{s}{y}{g}{g}' '{v}{a}{s}' '{v}{a}{s}{k}'
460
+ '{v}{a}{th}{u}{g}{a}{l}' '{v}{y}{o}{m}{i}{ch}' '{v}{r}{a}{ch}{u}{k}' '{d}{y}{a}{t}' '{d}{y}{a}{f}' '{e}{n}{o}{r}{g}'
461
+ '{th}{u}{s}' '{k}{a}{p}{n}{o}{v}{y}{o}{m}{i}{ch}' '{k}{a}{t}{a}{g}{a}{l}' '{k}{l}{y}{v}' '{k}{o}{y}{l}{a}{r}{f}'
462
+ '{l}{y}{v}' '{m}{e}{g}{l}{o}{v}{y}{o}{m}{i}{ch}' '{m}{y}{k}{r}{o}{v}{y}{o}{m}{i}{ch}' '{n}{t}{a}{v}'
463
+ '{x}{i}{r}{o}{k}{l}{y}{v}' '{o}{l}{y}{g}{o}{d}{a}{m}' '{o}{l}{o}{g}{a}{l}' '{p}{e}{n}{t}{a}{r}{f}' '{p}{e}{r}{i}{f}'
464
+ '{p}{e}{r}{y}{t}{r}' '{p}{l}{a}{t}' '{p}{o}{l}{u}{d}{a}{p}' '{p}{o}{l}{u}{m}{i}{ch}' '{s}{t}{e}{f}' '{t}{a}{v}'
465
+ '{t}{e}{t}' '{u}{p}{e}{r}{i}{f}' '{u}{p}{o}{k}{o}{p}' '{ch}{a}{m}{i}{l}{o}{d}{a}{p}' '{ps}{i}{l}{o}{t}{a}{v}'
466
+ (<- '{a}{n}')
467
+ )
468
+ )
469
+
470
+ define step5c as (
471
+ do (
472
+ [substring] among (
473
+ '{i}{s}{e}{t}{e}' (delete unset test1)
474
+ )
475
+ )
476
+ ['{e}{t}{e}']
477
+ delete
478
+ unset test1
479
+ ([] v2 <- '{e}{t}') or
480
+ ([] substring among (
481
+ '{o}{d}' '{a}{y}{r}' '{f}{o}{r}' '{t}{a}{th}' '{d}{y}{a}{th}' '{s}{ch}' '{e}{n}{d}' '{e}{u}{r}' '{t}{y}{th}' '{u}{p}{e}{r}{th}'
482
+ '{r}{a}{th}' '{e}{n}{th}' '{r}{o}{th}' '{s}{th}' '{p}{u}{r}' '{a}{y}{n}' '{s}{u}{n}{d}' '{s}{u}{n}' '{s}{u}{n}{th}' '{ch}{oo}{r}'
483
+ '{p}{o}{n}' '{v}{r}' '{k}{a}{th}' '{e}{u}{th}' '{e}{k}{th}' '{n}{e}{t}' '{r}{o}{n}' '{a}{r}{k}' '{v}{a}{r}' '{v}{o}{l}' '{oo}{f}{e}{l}'
484
+ (<- '{e}{t}')
485
+ )) or
486
+ [] substring atlimit among (
487
+ '{a}{v}{a}{r}' '{v}{e}{n}' '{e}{n}{a}{r}' '{a}{v}{r}' '{a}{d}' '{a}{th}' '{a}{n}' '{a}{p}{l}' '{v}{a}{r}{o}{n}' '{n}{t}{r}' '{s}{k}' '{k}{o}{p}'
488
+ '{m}{p}{o}{r}' '{n}{y}{f}' '{p}{a}{g}' '{p}{a}{r}{a}{k}{a}{l}' '{s}{e}{r}{p}' '{s}{k}{e}{l}' '{s}{u}{r}{f}' '{t}{o}{k}' '{u}' '{d}' '{e}{m}'
489
+ '{th}{a}{r}{r}' '{th}'
490
+ (<- '{e}{t}')
491
+ )
492
+ )
493
+
494
+ define step5d as (
495
+ [substring] among (
496
+ '{o}{n}{t}{a}{s}' '{oo}{n}{t}{a}{s}' (
497
+ delete
498
+ unset test1
499
+ ([] '{a}{r}{ch}' atlimit <- '{o}{n}{t}') or
500
+ ([] '{k}{r}{e}' <- '{oo}{n}{t}')
501
+ )
502
+ )
503
+ )
504
+
505
+ define step5e as (
506
+ [substring] among (
507
+ '{o}{m}{a}{s}{t}{e}' '{y}{o}{m}{a}{s}{t}{e}' (
508
+ delete
509
+ unset test1
510
+ ([] '{o}{n}' atlimit <- '{o}{m}{a}{s}{t}')
511
+ )
512
+ )
513
+ )
514
+
515
+ define step5f as (
516
+ do (
517
+ ['{y}{e}{s}{t}{e}']
518
+ delete
519
+ unset test1
520
+ [] substring atlimit among (
521
+ '{p}' '{a}{p}' '{s}{u}{m}{p}' '{a}{s}{u}{m}{p}' '{a}{k}{a}{t}{a}{p}' '{a}{m}{e}{t}{a}{m}{f}' (<- '{y}{e}{s}{t}')
522
+ )
523
+ )
524
+ ['{e}{s}{t}{e}']
525
+ delete
526
+ unset test1
527
+ [] substring atlimit among (
528
+ '{a}{l}' '{a}{r}' '{e}{k}{t}{e}{l}' '{z}' '{m}' '{x}' '{p}{a}{r}{a}{k}{a}{l}' '{p}{r}{o}' '{n}{y}{s}'
529
+ (<- '{y}{e}{s}{t}')
530
+ )
531
+ )
532
+
533
+ define step5g as (
534
+ do (
535
+ [substring] among (
536
+ '{i}{th}{i}{k}{a}' '{i}{th}{i}{k}{e}{s}' '{i}{th}{i}{k}{e}' (delete unset test1)
537
+ )
538
+ )
539
+ [substring] among (
540
+ '{i}{k}{a}' '{i}{k}{e}{s}' '{i}{k}{e}' (
541
+ delete
542
+ unset test1
543
+ ([] substring among (
544
+ '{s}{k}{oo}{l}' '{s}{k}{o}{u}{l}' '{n}{a}{r}{th}' '{s}{f}' '{o}{th}' '{p}{y}{th}' (<- '{i}{k}')
545
+ )) or
546
+ ([] substring atlimit among (
547
+ '{d}{y}{a}{th}' '{th}' '{p}{a}{r}{a}{k}{a}{t}{a}{th}' '{p}{r}{o}{s}{th}' '{s}{u}{n}{th}' (<- '{i}{k}')
548
+ ))
549
+ )
550
+ )
551
+ )
552
+
553
+ define step5h as (
554
+ [substring] among (
555
+ '{o}{u}{s}{a}' '{o}{u}{s}{e}{s}' '{o}{u}{s}{e}' (
556
+ delete
557
+ unset test1
558
+ ([] substring among (
559
+ '{p}{o}{d}{a}{r}' '{v}{l}{e}{p}' '{p}{a}{n}{t}{a}{ch}' '{f}{r}{u}{d}' '{m}{a}{n}{t}{y}{l}' '{m}{a}{l}{l}' '{k}{u}{m}{a}{t}' '{l}{a}{ch}' '{l}{i}{g}'
560
+ '{f}{a}{g}' '{o}{m}' '{p}{r}{oo}{t}' (<- '{o}{u}{s}')
561
+
562
+ )) or
563
+ ([] substring atlimit among (
564
+ '{f}{a}{r}{m}{a}{k}' '{ch}{a}{d}' '{a}{g}{k}' '{a}{n}{a}{r}{r}' '{v}{r}{o}{m}' '{e}{k}{l}{y}{p}' '{l}{a}{m}{p}{y}{d}' '{l}{e}{ch}' '{m}' '{p}{a}{t}'
565
+ '{r}' '{l}' '{m}{e}{d}' '{m}{e}{s}{a}{z}' '{u}{p}{o}{t}{e}{y}{n}' '{a}{m}' '{a}{y}{th}' '{a}{n}{i}{k}' '{d}{e}{s}{p}{o}{z}'
566
+ '{e}{n}{d}{y}{a}{f}{e}{r}' '{d}{e}' '{d}{e}{u}{t}{e}{r}{e}{u}' '{k}{a}{th}{a}{r}{e}{u}' '{p}{l}{e}' '{t}{s}{a}'
567
+ (<- '{o}{u}{s}')
568
+ ))
569
+ )
570
+ )
571
+ )
572
+
573
+ define step5i as (
574
+ [substring] among (
575
+ '{a}{g}{a}' '{a}{g}{e}{s}' '{a}{g}{e}' (
576
+ delete
577
+ unset test1
578
+ ([] '{k}{o}{l}{l}' <- '{a}{g}') or (
579
+ ([] substring among (
580
+ '{ps}{o}{f}' '{n}{a}{u}{l}{o}{ch}' ()
581
+ '{o}{f}' '{p}{e}{l}' '{ch}{o}{r}{t}' '{l}{l}' '{s}{f}' '{r}{p}' '{f}{r}' '{p}{r}' '{l}{o}{ch}' '{s}{m}{i}{n}'
582
+ (<- '{a}{g}')
583
+ )) or
584
+ ([] substring atlimit among (
585
+ '{a}{v}{a}{s}{t}' '{p}{o}{l}{u}{f}' '{a}{d}{i}{f}' '{p}{a}{m}{f}' '{r}' '{a}{s}{p}' '{a}{f}' '{a}{m}{a}{l}' '{a}{m}{a}{l}{l}{y}'
586
+ '{a}{n}{u}{s}{t}' '{a}{p}{e}{r}' '{a}{s}{p}{a}{r}' '{a}{ch}{a}{r}' '{d}{e}{r}{v}{e}{n}' '{d}{r}{o}{s}{o}{p}' '{x}{e}{f}' '{n}{e}{o}{p}'
587
+ '{n}{o}{m}{o}{t}' '{o}{l}{o}{p}' '{o}{m}{o}{t}' '{p}{r}{o}{s}{t}' '{p}{r}{o}{s}{oo}{p}{o}{p}' '{s}{u}{m}{p}' '{s}{u}{n}{t}' '{t}' '{u}{p}{o}{t}'
588
+ '{ch}{a}{r}' '{a}{e}{y}{p}' '{a}{y}{m}{o}{s}{t}' '{a}{n}{u}{p}' '{a}{p}{o}{t}' '{a}{r}{t}{y}{p}' '{d}{y}{a}{t}' '{e}{n}' '{e}{p}{y}{t}'
589
+ '{k}{r}{o}{k}{a}{l}{o}{p}' '{s}{y}{d}{i}{r}{o}{p}' '{l}' '{n}{a}{u}' '{o}{u}{l}{a}{m}' '{o}{u}{r}' '{p}' '{t}{r}' '{m}'
590
+ (<- '{a}{g}')
591
+ ))
592
+ )
593
+ )
594
+ )
595
+ )
596
+
597
+ define step5j as (
598
+ [substring] among (
599
+ '{i}{s}{e}' '{i}{s}{o}{u}' '{i}{s}{a}' (delete unset test1)
600
+ )
601
+ [] substring atlimit among (
602
+ '{n}' '{ch}{e}{r}{s}{o}{n}' '{d}{oo}{d}{e}{k}{a}{n}' '{e}{r}{i}{m}{o}{n}' '{m}{e}{g}{a}{l}{o}{n}' '{e}{p}{t}{a}{n}' (<- '{i}{s}')
603
+ )
604
+ )
605
+
606
+ define step5k as (
607
+ [substring] among (
608
+ '{i}{s}{t}{e}' (delete unset test1)
609
+ )
610
+ [] substring atlimit among (
611
+ '{a}{s}{v}' '{s}{v}' '{a}{ch}{r}' '{ch}{r}' '{a}{p}{l}' '{a}{e}{y}{m}{n}' '{d}{u}{s}{ch}{r}' '{e}{u}{ch}{r}' '{k}{o}{y}{n}{o}{ch}{r}' '{p}{a}{l}{y}{m}{ps}'
612
+ (<- '{i}{s}{t}')
613
+ )
614
+ )
615
+
616
+ define step5l as (
617
+ [substring] among (
618
+ '{o}{u}{n}{e}' '{i}{s}{o}{u}{n}{e}' '{i}{th}{o}{u}{n}{e}' (delete unset test1)
619
+ )
620
+ [] substring atlimit among (
621
+ '{n}' '{r}' '{s}{p}{y}' '{s}{t}{r}{a}{v}{o}{m}{o}{u}{t}{s}' '{k}{a}{k}{o}{m}{o}{u}{t}{s}' '{e}{x}{oo}{n}' (<- '{o}{u}{n}')
622
+ )
623
+ )
624
+
625
+ define step5m as (
626
+ [substring] among (
627
+ '{o}{u}{m}{e}' '{i}{s}{o}{u}{m}{e}' '{i}{th}{o}{u}{m}{e}' (delete unset test1)
628
+ )
629
+ [] substring atlimit among (
630
+ '{p}{a}{r}{a}{s}{o}{u}{s}' '{f}' '{ch}' '{oo}{r}{y}{o}{p}{l}' '{a}{z}' '{a}{l}{l}{o}{s}{o}{u}{s}' '{a}{s}{o}{u}{s}'
631
+ (<- '{o}{u}{m}')
632
+ )
633
+ )
634
+
635
+ define step6 as (
636
+ do (
637
+ [substring] among (
638
+ '{m}{a}{t}{a}' '{m}{a}{t}{oo}{n}' '{m}{a}{t}{o}{s}' (<- '{m}{a}')
639
+ )
640
+ )
641
+ test1
642
+ [substring] among (
643
+ '{a}' '{a}{g}{a}{t}{e}' '{a}{g}{a}{n}' '{a}{e}{y}' '{a}{m}{a}{y}' '{a}{n}' '{a}{s}' '{a}{s}{a}{y}' '{a}{t}{a}{y}' '{a}{oo}' '{e}' '{e}{y}'
644
+ '{e}{y}{s}' '{e}{y}{t}{e}' '{e}{s}{a}{y}' '{e}{s}' '{e}{t}{a}{y}' '{y}' '{y}{e}{m}{a}{y}' '{y}{e}{m}{a}{s}{t}{e}' '{y}{e}{t}{a}{y}' '{y}{e}{s}{a}{y}'
645
+ '{y}{e}{s}{a}{s}{t}{e}' '{y}{o}{m}{a}{s}{t}{a}{n}' '{y}{o}{m}{o}{u}{n}' '{y}{o}{m}{o}{u}{n}{a}' '{y}{o}{n}{t}{a}{n}' '{y}{o}{n}{t}{o}{u}{s}{a}{n}' '{y}{o}{s}{a}{s}{t}{a}{n}'
646
+ '{y}{o}{s}{a}{s}{t}{e}' '{y}{o}{s}{o}{u}{n}' '{y}{o}{s}{o}{u}{n}{a}' '{y}{o}{t}{a}{n}' '{y}{o}{u}{m}{a}' '{y}{o}{u}{m}{a}{s}{t}{e}' '{y}{o}{u}{n}{t}{a}{y}'
647
+ '{y}{o}{u}{n}{t}{a}{n}' '{i}' '{i}{d}{e}{s}' '{i}{d}{oo}{n}' '{i}{th}{e}{y}' '{i}{th}{e}{y}{s}' '{i}{th}{e}{y}{t}{e}' '{i}{th}{i}{k}{a}{t}{e}' '{i}{th}{i}{k}{a}{n}'
648
+ '{i}{th}{o}{u}{n}' '{i}{th}{oo}' '{i}{k}{a}{t}{e}' '{i}{k}{a}{n}' '{i}{s}' '{i}{s}{a}{n}' '{i}{s}{a}{t}{e}' '{i}{s}{e}{y}' '{i}{s}{e}{s}' '{i}{s}{o}{u}{n}'
649
+ '{i}{s}{oo}' '{o}' '{o}{y}' '{o}{m}{a}{y}' '{o}{m}{a}{s}{t}{a}{n}' '{o}{m}{o}{u}{n}' '{o}{m}{o}{u}{n}{a}' '{o}{n}{t}{a}{y}' '{o}{n}{t}{a}{n}'
650
+ '{o}{n}{t}{o}{u}{s}{a}{n}' '{o}{s}' '{o}{s}{a}{s}{t}{a}{n}' '{o}{s}{a}{s}{t}{e}' '{o}{s}{o}{u}{n}' '{o}{s}{o}{u}{n}{a}' '{o}{t}{a}{n}' '{o}{u}' '{o}{u}{m}{a}{y}'
651
+ '{o}{u}{m}{a}{s}{t}{e}' '{o}{u}{n}' '{o}{u}{n}{t}{a}{y}' '{o}{u}{n}{t}{a}{n}' '{o}{u}{s}' '{o}{u}{s}{a}{n}' '{o}{u}{s}{a}{t}{e}' '{u}' '{u}{s}' '{oo}'
652
+ '{oo}{n}' (delete)
653
+ )
654
+ )
655
+
656
+ define step7 as (
657
+ [substring] among (
658
+ '{e}{s}{t}{e}{r}' '{e}{s}{t}{a}{t}' '{o}{t}{e}{r}' '{o}{t}{a}{t}' '{u}{t}{e}{r}' '{u}{t}{a}{t}' '{oo}{t}{e}{r}' '{oo}{t}{a}{t}' (delete)
659
+ )
660
+ )
661
+ )
662
+
663
+ define stem as (
664
+ backwards (
665
+ do tolower
666
+ has_min_length
667
+ set test1
668
+ do step1
669
+ do steps1
670
+ do steps2
671
+ do steps3
672
+ do steps4
673
+ do steps5
674
+ do steps6
675
+ do steps7
676
+ do steps8
677
+ do steps9
678
+ do steps10
679
+ do step2a
680
+ do step2b
681
+ do step2c
682
+ do step2d
683
+ do step3
684
+ do step4
685
+ do step5a
686
+ do step5b
687
+ do step5c
688
+ do step5d
689
+ do step5e
690
+ do step5f
691
+ do step5g
692
+ do step5h
693
+ do step5j
694
+ do step5i
695
+ do step5k
696
+ do step5l
697
+ do step5m
698
+ do step6
699
+ do step7
700
+ )
701
+ )