mittens 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ )