Lucene.Net  3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
ItalianStemmer.cs
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 // This file was generated automatically by the Snowball to Java compiler
19 using System;
20 using Among = SF.Snowball.Among;
21 using SnowballProgram = SF.Snowball.SnowballProgram;
22 namespace SF.Snowball.Ext
23 {
24 #pragma warning disable 162,164
25 
26  /// <summary> Generated class implementing code defined by a snowball script.</summary>
28  {
29  public ItalianStemmer()
30  {
31  InitBlock();
32  }
33  private void InitBlock()
34  {
35  a_0 = new Among[]{new Among("", - 1, 7, "", this), new Among("qu", 0, 6, "", this), new Among("\u00E1", 0, 1, "", this), new Among("\u00E9", 0, 2, "", this), new Among("\u00ED", 0, 3, "", this), new Among("\u00F3", 0, 4, "", this), new Among("\u00FA", 0, 5, "", this)};
36  a_1 = new Among[]{new Among("", - 1, 3, "", this), new Among("I", 0, 1, "", this), new Among("U", 0, 2, "", this)};
37  a_2 = new Among[]{new Among("la", - 1, - 1, "", this), new Among("cela", 0, - 1, "", this), new Among("gliela", 0, - 1, "", this), new Among("mela", 0, - 1, "", this), new Among("tela", 0, - 1, "", this), new Among("vela", 0, - 1, "", this), new Among("le", - 1, - 1, "", this), new Among("cele", 6, - 1, "", this), new Among("gliele", 6, - 1, "", this), new Among("mele", 6, - 1, "", this), new Among("tele", 6, - 1, "", this), new Among("vele", 6, - 1, "", this), new Among("ne", - 1, - 1, "", this), new Among("cene", 12, - 1, "", this), new Among("gliene", 12, - 1, "", this), new Among("mene", 12, - 1, "", this), new Among("sene", 12, - 1, "", this), new Among("tene", 12, - 1, "", this), new Among("vene", 12, - 1, "", this), new Among("ci", - 1, - 1, "", this), new Among("li", - 1, - 1, "", this), new Among("celi", 20, - 1, "", this), new Among("glieli", 20, - 1, "", this), new Among("meli", 20, - 1, "", this), new Among("teli", 20, - 1, "", this), new Among("veli", 20, - 1, "", this), new Among("gli", 20, - 1, "", this), new Among("mi", - 1, - 1, "", this), new Among("si", - 1, - 1, "", this), new Among("ti", - 1, - 1, "", this), new Among("vi", - 1, - 1, "", this), new Among("lo", - 1, - 1, "", this), new Among("celo", 31, - 1, "", this), new Among("glielo", 31, - 1, "", this), new Among("melo", 31, - 1, "", this), new Among("telo", 31, - 1, "", this), new Among("velo", 31, - 1, "", this)};
38  a_3 = new Among[]{new Among("ando", - 1, 1, "", this), new Among("endo", - 1, 1, "", this), new Among("ar", - 1, 2, "", this), new Among("er", - 1, 2, "", this), new Among("ir", - 1, 2, "", this)};
39  a_4 = new Among[]{new Among("ic", - 1, - 1, "", this), new Among("abil", - 1, - 1, "", this), new Among("os", - 1, - 1, "", this), new Among("iv", - 1, 1, "", this)};
40  a_5 = new Among[]{new Among("ic", - 1, 1, "", this), new Among("abil", - 1, 1, "", this), new Among("iv", - 1, 1, "", this)};
41  a_6 = new Among[]{new Among("ica", - 1, 1, "", this), new Among("logia", - 1, 3, "", this), new Among("osa", - 1, 1, "", this), new Among("ista", - 1, 1, "", this), new Among("iva", - 1, 9, "", this), new Among("anza", - 1, 1, "", this), new Among("enza", - 1, 5, "", this), new Among("ice", - 1, 1, "", this), new Among("atrice", 7, 1, "", this), new Among("iche", - 1, 1, "", this), new Among("logie", - 1, 3, "", this), new Among("abile", - 1, 1, "", this), new Among("ibile", - 1, 1, "", this), new Among("usione", - 1, 4, "", this), new Among("azione", - 1, 2, "", this), new Among("uzione", - 1, 4, "", this), new Among("atore", - 1, 2, "", this), new Among("ose", - 1, 1, "", this), new Among("mente", - 1, 1, "", this), new Among("amente", 18, 7, "", this), new Among("iste", - 1, 1, "", this), new Among("ive", - 1, 9, "", this), new Among("anze", - 1, 1, "", this), new Among("enze", - 1, 5, "", this), new Among("ici", - 1, 1, "", this), new Among("atrici", 24, 1, "", this), new Among("ichi", - 1, 1, "", this), new Among("abili", - 1, 1, "", this), new Among("ibili", - 1, 1, "", this), new Among("ismi", - 1, 1, "", this), new Among("usioni", - 1, 4, "", this), new Among("azioni", - 1, 2, "", this), new Among("uzioni", - 1, 4, "", this), new Among("atori", - 1, 2, "", this), new Among("osi", - 1, 1, "", this), new Among("amenti", - 1, 6, "", this), new Among("imenti", - 1, 6, "", this), new Among("isti", - 1, 1, "", this), new Among("ivi", - 1, 9, "", this), new Among("ico", - 1, 1, "", this), new Among("ismo", - 1, 1, "", this), new Among("oso", - 1, 1, "", this), new Among("amento", - 1, 6, "", this), new Among("imento", - 1, 6, "", this), new Among("ivo", - 1, 9, "", this), new Among("it\u00E0", - 1, 8, "", this), new Among("ist\u00E0", - 1, 1, "", this), new Among("ist\u00E8", - 1, 1, "", this), new Among("ist\u00EC", - 1, 1, "", this)};
42  a_7 = new Among[]{new Among("isca", - 1, 1, "", this), new Among("enda", - 1, 1, "", this), new Among("ata", - 1, 1, "", this), new Among("ita", - 1, 1, "", this), new Among("uta", - 1, 1, "", this), new Among("ava", - 1, 1, "", this), new Among("eva", - 1, 1, "", this), new Among("iva", - 1, 1, "", this), new Among("erebbe", - 1, 1, "", this), new Among("irebbe", - 1, 1, "", this), new Among("isce", - 1, 1, "", this), new Among("ende", - 1, 1, "", this), new Among("are", - 1, 1, "", this), new Among("ere", - 1, 1, "", this), new Among("ire", - 1, 1, "", this), new Among("asse", - 1, 1, "", this), new Among("ate", - 1, 1, "", this), new Among("avate", 16, 1, "", this), new Among("evate", 16, 1, "", this), new Among("ivate", 16, 1, "", this), new Among("ete", - 1, 1, "", this), new Among("erete", 20, 1, "", this), new Among("irete", 20, 1, "", this), new Among("ite", - 1, 1, "", this), new Among("ereste", - 1, 1, "", this), new Among("ireste", - 1, 1, "", this), new Among("ute", - 1, 1, "", this), new Among("erai", - 1, 1, "", this), new Among("irai", - 1, 1, "", this), new Among("isci", - 1, 1, "", this), new Among("endi", - 1, 1, "", this), new Among("erei", - 1, 1, "", this), new Among("irei", - 1, 1, "", this), new Among("assi", - 1, 1, "", this), new Among("ati", - 1, 1, "", this), new Among("iti", - 1, 1, "", this), new Among("eresti", - 1, 1, "", this), new Among("iresti", - 1, 1, "", this), new Among("uti", - 1, 1, "", this), new Among("avi", - 1, 1, "", this), new Among("evi", - 1, 1, "", this), new Among("ivi", - 1, 1, "", this), new Among("isco", - 1, 1, "", this), new Among("ando", - 1, 1, "", this), new Among("endo", - 1, 1, "", this), new Among("Yamo", - 1, 1, "", this), new Among("iamo", - 1, 1, "", this), new Among("avamo", - 1, 1, "", this), new Among("evamo", - 1, 1, "", this), new Among("ivamo", - 1, 1, "", this), new Among("eremo", - 1, 1, "", this), new Among("iremo", - 1, 1, "", this), new Among("assimo", - 1, 1, "", this), new Among("ammo", - 1, 1, "", this), new Among(
43  "emmo", - 1, 1, "", this), new Among("eremmo", 54, 1, "", this), new Among("iremmo", 54, 1, "", this), new Among("immo", - 1, 1, "", this), new Among("ano", - 1, 1, "", this), new Among("iscano", 58, 1, "", this), new Among("avano", 58, 1, "", this), new Among("evano", 58, 1, "", this), new Among("ivano", 58, 1, "", this), new Among("eranno", - 1, 1, "", this), new Among("iranno", - 1, 1, "", this), new Among("ono", - 1, 1, "", this), new Among("iscono", 65, 1, "", this), new Among("arono", 65, 1, "", this), new Among("erono", 65, 1, "", this), new Among("irono", 65, 1, "", this), new Among("erebbero", - 1, 1, "", this), new Among("irebbero", - 1, 1, "", this), new Among("assero", - 1, 1, "", this), new Among("essero", - 1, 1, "", this), new Among("issero", - 1, 1, "", this), new Among("ato", - 1, 1, "", this), new Among("ito", - 1, 1, "", this), new Among("uto", - 1, 1, "", this), new Among("avo", - 1, 1, "", this), new Among("evo", - 1, 1, "", this), new Among("ivo", - 1, 1, "", this), new Among("ar", - 1, 1, "", this), new Among("ir", - 1, 1, "", this), new Among("er\u00E0", - 1, 1, "", this), new Among("ir\u00E0", - 1, 1, "", this), new Among("er\u00F2", - 1, 1, "", this), new Among("ir\u00F2", - 1, 1, "", this)};
44  }
45 
46  private Among[] a_0;
47  private Among[] a_1;
48  private Among[] a_2;
49  private Among[] a_3;
50  private Among[] a_4;
51  private Among[] a_5;
52  private Among[] a_6;
53  private Among[] a_7;
54  private static readonly char[] g_v = new char[]{(char) (17), (char) (65), (char) (16), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (128), (char) (128), (char) (8), (char) (2), (char) (1)};
55  private static readonly char[] g_AEIO = new char[]{(char) (17), (char) (65), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (128), (char) (128), (char) (8), (char) (2)};
56  private static readonly char[] g_CG = new char[]{(char) (17)};
57 
58  private int I_p2;
59  private int I_p1;
60  private int I_pV;
61 
62  protected internal virtual void copy_from(ItalianStemmer other)
63  {
64  I_p2 = other.I_p2;
65  I_p1 = other.I_p1;
66  I_pV = other.I_pV;
67  base.copy_from(other);
68  }
69 
70  private bool r_prelude()
71  {
72  int among_var;
73  int v_1;
74  int v_2;
75  int v_3;
76  int v_4;
77  int v_5;
78  // (, line 34
79  // test, line 35
80  v_1 = cursor;
81  // repeat, line 35
82  while (true)
83  {
84  v_2 = cursor;
85  do
86  {
87  // (, line 35
88  // [, line 36
89  bra = cursor;
90  // substring, line 36
91  among_var = find_among(a_0, 7);
92  if (among_var == 0)
93  {
94  goto lab1_brk;
95  }
96  // ], line 36
97  ket = cursor;
98  switch (among_var)
99  {
100 
101  case 0:
102  goto lab1_brk;
103 
104  case 1:
105  // (, line 37
106  // <-, line 37
107  slice_from("\u00E0");
108  break;
109 
110  case 2:
111  // (, line 38
112  // <-, line 38
113  slice_from("\u00E8");
114  break;
115 
116  case 3:
117  // (, line 39
118  // <-, line 39
119  slice_from("\u00EC");
120  break;
121 
122  case 4:
123  // (, line 40
124  // <-, line 40
125  slice_from("\u00F2");
126  break;
127 
128  case 5:
129  // (, line 41
130  // <-, line 41
131  slice_from("\u00F9");
132  break;
133 
134  case 6:
135  // (, line 42
136  // <-, line 42
137  slice_from("qU");
138  break;
139 
140  case 7:
141  // (, line 43
142  // next, line 43
143  if (cursor >= limit)
144  {
145  goto lab1_brk;
146  }
147  cursor++;
148  break;
149  }
150  goto replab0;
151  }
152  while (false);
153 
154 lab1_brk: ;
155 
156  cursor = v_2;
157  goto replab0_brk;
158 
159 replab0: ;
160  }
161 
162 replab0_brk: ;
163 
164  cursor = v_1;
165  // repeat, line 46
166  while (true)
167  {
168  v_3 = cursor;
169  do
170  {
171  // goto, line 46
172  while (true)
173  {
174  v_4 = cursor;
175  do
176  {
177  // (, line 46
178  if (!(in_grouping(g_v, 97, 249)))
179  {
180  goto lab5_brk;
181  }
182  // [, line 47
183  bra = cursor;
184  // or, line 47
185  do
186  {
187  v_5 = cursor;
188  do
189  {
190  // (, line 47
191  // literal, line 47
192  if (!(eq_s(1, "u")))
193  {
194  goto lab7_brk;
195  }
196  // ], line 47
197  ket = cursor;
198  if (!(in_grouping(g_v, 97, 249)))
199  {
200  goto lab7_brk;
201  }
202  // <-, line 47
203  slice_from("U");
204  goto lab6_brk;
205  }
206  while (false);
207 
208 lab7_brk: ;
209 
210  cursor = v_5;
211  // (, line 48
212  // literal, line 48
213  if (!(eq_s(1, "i")))
214  {
215  goto lab5_brk;
216  }
217  // ], line 48
218  ket = cursor;
219  if (!(in_grouping(g_v, 97, 249)))
220  {
221  goto lab5_brk;
222  }
223  // <-, line 48
224  slice_from("I");
225  }
226  while (false);
227 
228 lab6_brk: ;
229 
230  cursor = v_4;
231  goto golab4_brk;
232  }
233  while (false);
234 
235 lab5_brk: ;
236 
237  cursor = v_4;
238  if (cursor >= limit)
239  {
240  goto lab3_brk;
241  }
242  cursor++;
243  }
244 
245 golab4_brk: ;
246 
247  goto replab2;
248  }
249  while (false);
250 
251 lab3_brk: ;
252 
253  cursor = v_3;
254  goto replab2_brk;
255 
256 replab2: ;
257  }
258 
259 replab2_brk: ;
260 
261  return true;
262  }
263 
264  private bool r_mark_regions()
265  {
266  int v_1;
267  int v_2;
268  int v_3;
269  int v_6;
270  int v_8;
271  // (, line 52
272  I_pV = limit;
273  I_p1 = limit;
274  I_p2 = limit;
275  // do, line 58
276  v_1 = cursor;
277  do
278  {
279  // (, line 58
280  // or, line 60
281 lab2:
282  do
283  {
284  v_2 = cursor;
285  do
286  {
287  // (, line 59
288  if (!(in_grouping(g_v, 97, 249)))
289  {
290  goto lab2_brk;
291  }
292  // or, line 59
293 lab4:
294  do
295  {
296  v_3 = cursor;
297  do
298  {
299  // (, line 59
300  if (!(out_grouping(g_v, 97, 249)))
301  {
302  goto lab4_brk;
303  }
304  // gopast, line 59
305  while (true)
306  {
307  do
308  {
309  if (!(in_grouping(g_v, 97, 249)))
310  {
311  goto lab8_brk;
312  }
313  goto golab5_brk;
314  }
315  while (false);
316 
317 lab8_brk: ;
318 
319  if (cursor >= limit)
320  {
321  goto lab4_brk;
322  }
323  cursor++;
324  }
325 
326 golab5_brk: ;
327 
328  goto lab4_brk;
329  }
330  while (false);
331 
332 lab4_brk: ;
333 
334  cursor = v_3;
335  // (, line 59
336  if (!(in_grouping(g_v, 97, 249)))
337  {
338  goto lab2_brk;
339  }
340  // gopast, line 59
341  while (true)
342  {
343  do
344  {
345  if (!(out_grouping(g_v, 97, 249)))
346  {
347  goto lab8_brk;
348  }
349  goto golab7_brk;
350  }
351  while (false);
352 
353 lab8_brk: ;
354 
355  if (cursor >= limit)
356  {
357  goto lab2_brk;
358  }
359  cursor++;
360  }
361 
362 golab7_brk: ;
363 
364  }
365  while (false);
366  goto lab2_brk;
367  }
368  while (false);
369 
370 lab2_brk: ;
371 
372  cursor = v_2;
373  // (, line 61
374  if (!(out_grouping(g_v, 97, 249)))
375  {
376  goto lab0_brk;
377  }
378  // or, line 61
379  do
380  {
381  v_6 = cursor;
382  do
383  {
384  // (, line 61
385  if (!(out_grouping(g_v, 97, 249)))
386  {
387  goto lab10_brk;
388  }
389  // gopast, line 61
390  while (true)
391  {
392  do
393  {
394  if (!(in_grouping(g_v, 97, 249)))
395  {
396  goto lab12_brk;
397  }
398  goto golab11_brk;
399  }
400  while (false);
401 
402 lab12_brk: ;
403 
404  if (cursor >= limit)
405  {
406  goto lab10_brk;
407  }
408  cursor++;
409  }
410 
411 golab11_brk: ;
412 
413  goto lab9_brk;
414  }
415  while (false);
416 
417 lab10_brk: ;
418 
419  cursor = v_6;
420  // (, line 61
421  if (!(in_grouping(g_v, 97, 249)))
422  {
423  goto lab0_brk;
424  }
425  // next, line 61
426  if (cursor >= limit)
427  {
428  goto lab0_brk;
429  }
430  cursor++;
431  }
432  while (false);
433 
434 lab9_brk: ;
435 
436  }
437  while (false);
438  // setmark pV, line 62
439  I_pV = cursor;
440  }
441  while (false);
442 
443 lab0_brk: ;
444 
445  cursor = v_1;
446  // do, line 64
447  v_8 = cursor;
448  do
449  {
450  // (, line 64
451  // gopast, line 65
452  while (true)
453  {
454  do
455  {
456  if (!(in_grouping(g_v, 97, 249)))
457  {
458  goto lab15_brk;
459  }
460  goto golab14_brk;
461  }
462  while (false);
463 
464 lab15_brk: ;
465 
466  if (cursor >= limit)
467  {
468  goto lab13_brk;
469  }
470  cursor++;
471  }
472 
473 golab14_brk: ;
474 
475  // gopast, line 65
476  while (true)
477  {
478  do
479  {
480  if (!(out_grouping(g_v, 97, 249)))
481  {
482  goto lab17_brk;
483  }
484  goto golab16_brk;
485  }
486  while (false);
487 
488 lab17_brk: ;
489 
490  if (cursor >= limit)
491  {
492  goto lab13_brk;
493  }
494  cursor++;
495  }
496 
497 golab16_brk: ;
498 
499  // setmark p1, line 65
500  I_p1 = cursor;
501  // gopast, line 66
502  while (true)
503  {
504  do
505  {
506  if (!(in_grouping(g_v, 97, 249)))
507  {
508  goto lab19_brk;
509  }
510  goto golab18_brk;
511  }
512  while (false);
513 
514 lab19_brk: ;
515 
516  if (cursor >= limit)
517  {
518  goto lab13_brk;
519  }
520  cursor++;
521  }
522 
523 golab18_brk: ;
524 
525  // gopast, line 66
526  while (true)
527  {
528  do
529  {
530  if (!(out_grouping(g_v, 97, 249)))
531  {
532  goto lab21_brk;
533  }
534  goto golab20_brk;
535  }
536  while (false);
537 
538 lab21_brk: ;
539 
540  if (cursor >= limit)
541  {
542  goto lab13_brk;
543  }
544  cursor++;
545  }
546 
547 golab20_brk: ;
548 
549  // setmark p2, line 66
550  I_p2 = cursor;
551  }
552  while (false);
553 
554 lab13_brk: ;
555 
556  cursor = v_8;
557  return true;
558  }
559 
560  private bool r_postlude()
561  {
562  int among_var;
563  int v_1;
564  // repeat, line 70
565  while (true)
566  {
567  v_1 = cursor;
568  do
569  {
570  // (, line 70
571  // [, line 72
572  bra = cursor;
573  // substring, line 72
574  among_var = find_among(a_1, 3);
575  if (among_var == 0)
576  {
577  goto lab11_brk;
578  }
579  // ], line 72
580  ket = cursor;
581  switch (among_var)
582  {
583 
584  case 0:
585  goto lab11_brk;
586 
587  case 1:
588  // (, line 73
589  // <-, line 73
590  slice_from("i");
591  break;
592 
593  case 2:
594  // (, line 74
595  // <-, line 74
596  slice_from("u");
597  break;
598 
599  case 3:
600  // (, line 75
601  // next, line 75
602  if (cursor >= limit)
603  {
604  goto lab11_brk;
605  }
606  cursor++;
607  break;
608  }
609  goto replab1;
610  }
611  while (false);
612 
613 lab11_brk: ;
614 
615  cursor = v_1;
616  goto replab1_brk;
617 
618 replab1: ;
619  }
620 
621 replab1_brk: ;
622 
623  return true;
624  }
625 
626  private bool r_RV()
627  {
628  if (!(I_pV <= cursor))
629  {
630  return false;
631  }
632  return true;
633  }
634 
635  private bool r_R1()
636  {
637  if (!(I_p1 <= cursor))
638  {
639  return false;
640  }
641  return true;
642  }
643 
644  private bool r_R2()
645  {
646  if (!(I_p2 <= cursor))
647  {
648  return false;
649  }
650  return true;
651  }
652 
653  private bool r_attached_pronoun()
654  {
655  int among_var;
656  // (, line 86
657  // [, line 87
658  ket = cursor;
659  // substring, line 87
660  if (find_among_b(a_2, 37) == 0)
661  {
662  return false;
663  }
664  // ], line 87
665  bra = cursor;
666  // among, line 97
667  among_var = find_among_b(a_3, 5);
668  if (among_var == 0)
669  {
670  return false;
671  }
672  // (, line 97
673  // call RV, line 97
674  if (!r_RV())
675  {
676  return false;
677  }
678  switch (among_var)
679  {
680 
681  case 0:
682  return false;
683 
684  case 1:
685  // (, line 98
686  // delete, line 98
687  slice_del();
688  break;
689 
690  case 2:
691  // (, line 99
692  // <-, line 99
693  slice_from("e");
694  break;
695  }
696  return true;
697  }
698 
699  private bool r_standard_suffix()
700  {
701  int among_var;
702  int v_1;
703  int v_2;
704  int v_3;
705  int v_4;
706  // (, line 103
707  // [, line 104
708  ket = cursor;
709  // substring, line 104
710  among_var = find_among_b(a_6, 49);
711  if (among_var == 0)
712  {
713  return false;
714  }
715  // ], line 104
716  bra = cursor;
717  switch (among_var)
718  {
719 
720  case 0:
721  return false;
722 
723  case 1:
724  // (, line 110
725  // call R2, line 110
726  if (!r_R2())
727  {
728  return false;
729  }
730  // delete, line 110
731  slice_del();
732  break;
733 
734  case 2:
735  // (, line 112
736  // call R2, line 112
737  if (!r_R2())
738  {
739  return false;
740  }
741  // delete, line 112
742  slice_del();
743  // try, line 113
744  v_1 = limit - cursor;
745  do
746  {
747  // (, line 113
748  // [, line 113
749  ket = cursor;
750  // literal, line 113
751  if (!(eq_s_b(2, "ic")))
752  {
753  cursor = limit - v_1;
754  goto lab0_brk;
755  }
756  // ], line 113
757  bra = cursor;
758  // call R2, line 113
759  if (!r_R2())
760  {
761  cursor = limit - v_1;
762  goto lab0_brk;
763  }
764  // delete, line 113
765  slice_del();
766  }
767  while (false);
768 
769 lab0_brk: ;
770 
771  break;
772 
773  case 3:
774  // (, line 116
775  // call R2, line 116
776  if (!r_R2())
777  {
778  return false;
779  }
780  // <-, line 116
781  slice_from("log");
782  break;
783 
784  case 4:
785  // (, line 118
786  // call R2, line 118
787  if (!r_R2())
788  {
789  return false;
790  }
791  // <-, line 118
792  slice_from("u");
793  break;
794 
795  case 5:
796  // (, line 120
797  // call R2, line 120
798  if (!r_R2())
799  {
800  return false;
801  }
802  // <-, line 120
803  slice_from("ente");
804  break;
805 
806  case 6:
807  // (, line 122
808  // call RV, line 122
809  if (!r_RV())
810  {
811  return false;
812  }
813  // delete, line 122
814  slice_del();
815  break;
816 
817  case 7:
818  // (, line 123
819  // call R1, line 124
820  if (!r_R1())
821  {
822  return false;
823  }
824  // delete, line 124
825  slice_del();
826  // try, line 125
827  v_2 = limit - cursor;
828  do
829  {
830  // (, line 125
831  // [, line 126
832  ket = cursor;
833  // substring, line 126
834  among_var = find_among_b(a_4, 4);
835  if (among_var == 0)
836  {
837  cursor = limit - v_2;
838  goto lab1_brk;
839  }
840  // ], line 126
841  bra = cursor;
842  // call R2, line 126
843  if (!r_R2())
844  {
845  cursor = limit - v_2;
846  goto lab1_brk;
847  }
848  // delete, line 126
849  slice_del();
850  switch (among_var)
851  {
852 
853  case 0:
854  cursor = limit - v_2;
855  goto lab1_brk;
856 
857  case 1:
858  // (, line 127
859  // [, line 127
860  ket = cursor;
861  // literal, line 127
862  if (!(eq_s_b(2, "at")))
863  {
864  cursor = limit - v_2;
865  goto lab1_brk;
866  }
867  // ], line 127
868  bra = cursor;
869  // call R2, line 127
870  if (!r_R2())
871  {
872  cursor = limit - v_2;
873  goto lab1_brk;
874  }
875  // delete, line 127
876  slice_del();
877  break;
878  }
879  }
880  while (false);
881 
882 lab1_brk: ;
883 
884  break;
885 
886  case 8:
887  // (, line 132
888  // call R2, line 133
889  if (!r_R2())
890  {
891  return false;
892  }
893  // delete, line 133
894  slice_del();
895  // try, line 134
896  v_3 = limit - cursor;
897  do
898  {
899  // (, line 134
900  // [, line 135
901  ket = cursor;
902  // substring, line 135
903  among_var = find_among_b(a_5, 3);
904  if (among_var == 0)
905  {
906  cursor = limit - v_3;
907  goto lab2_brk;
908  }
909  // ], line 135
910  bra = cursor;
911  switch (among_var)
912  {
913 
914  case 0:
915  cursor = limit - v_3;
916  goto lab2_brk;
917 
918  case 1:
919  // (, line 136
920  // call R2, line 136
921  if (!r_R2())
922  {
923  cursor = limit - v_3;
924  goto lab2_brk;
925  }
926  // delete, line 136
927  slice_del();
928  break;
929  }
930  }
931  while (false);
932 
933 lab2_brk: ;
934 
935  break;
936 
937  case 9:
938  // (, line 140
939  // call R2, line 141
940  if (!r_R2())
941  {
942  return false;
943  }
944  // delete, line 141
945  slice_del();
946  // try, line 142
947  v_4 = limit - cursor;
948  do
949  {
950  // (, line 142
951  // [, line 142
952  ket = cursor;
953  // literal, line 142
954  if (!(eq_s_b(2, "at")))
955  {
956  cursor = limit - v_4;
957  goto lab3_brk;
958  }
959  // ], line 142
960  bra = cursor;
961  // call R2, line 142
962  if (!r_R2())
963  {
964  cursor = limit - v_4;
965  goto lab3_brk;
966  }
967  // delete, line 142
968  slice_del();
969  // [, line 142
970  ket = cursor;
971  // literal, line 142
972  if (!(eq_s_b(2, "ic")))
973  {
974  cursor = limit - v_4;
975  goto lab3_brk;
976  }
977  // ], line 142
978  bra = cursor;
979  // call R2, line 142
980  if (!r_R2())
981  {
982  cursor = limit - v_4;
983  goto lab3_brk;
984  }
985  // delete, line 142
986  slice_del();
987  }
988  while (false);
989 
990 lab3_brk: ;
991 
992  break;
993  }
994  return true;
995  }
996 
997  private bool r_verb_suffix()
998  {
999  int among_var;
1000  int v_1;
1001  int v_2;
1002  // setlimit, line 147
1003  v_1 = limit - cursor;
1004  // tomark, line 147
1005  if (cursor < I_pV)
1006  {
1007  return false;
1008  }
1009  cursor = I_pV;
1010  v_2 = limit_backward;
1011  limit_backward = cursor;
1012  cursor = limit - v_1;
1013  // (, line 147
1014  // [, line 148
1015  ket = cursor;
1016  // substring, line 148
1017  among_var = find_among_b(a_7, 87);
1018  if (among_var == 0)
1019  {
1020  limit_backward = v_2;
1021  return false;
1022  }
1023  // ], line 148
1024  bra = cursor;
1025  switch (among_var)
1026  {
1027 
1028  case 0:
1029  limit_backward = v_2;
1030  return false;
1031 
1032  case 1:
1033  // (, line 162
1034  // delete, line 162
1035  slice_del();
1036  break;
1037  }
1038  limit_backward = v_2;
1039  return true;
1040  }
1041 
1042  private bool r_vowel_suffix()
1043  {
1044  int v_1;
1045  int v_2;
1046  // (, line 169
1047  // try, line 170
1048  v_1 = limit - cursor;
1049  do
1050  {
1051  // (, line 170
1052  // [, line 171
1053  ket = cursor;
1054  if (!(in_grouping_b(g_AEIO, 97, 242)))
1055  {
1056  cursor = limit - v_1;
1057  goto lab0_brk;
1058  }
1059  // ], line 171
1060  bra = cursor;
1061  // call RV, line 171
1062  if (!r_RV())
1063  {
1064  cursor = limit - v_1;
1065  goto lab0_brk;
1066  }
1067  // delete, line 171
1068  slice_del();
1069  // [, line 172
1070  ket = cursor;
1071  // literal, line 172
1072  if (!(eq_s_b(1, "i")))
1073  {
1074  cursor = limit - v_1;
1075  goto lab0_brk;
1076  }
1077  // ], line 172
1078  bra = cursor;
1079  // call RV, line 172
1080  if (!r_RV())
1081  {
1082  cursor = limit - v_1;
1083  goto lab0_brk;
1084  }
1085  // delete, line 172
1086  slice_del();
1087  }
1088  while (false);
1089 
1090 lab0_brk: ;
1091 
1092  // try, line 174
1093  v_2 = limit - cursor;
1094  do
1095  {
1096  // (, line 174
1097  // [, line 175
1098  ket = cursor;
1099  // literal, line 175
1100  if (!(eq_s_b(1, "h")))
1101  {
1102  cursor = limit - v_2;
1103  goto lab1_brk;
1104  }
1105  // ], line 175
1106  bra = cursor;
1107  if (!(in_grouping_b(g_CG, 99, 103)))
1108  {
1109  cursor = limit - v_2;
1110  goto lab1_brk;
1111  }
1112  // call RV, line 175
1113  if (!r_RV())
1114  {
1115  cursor = limit - v_2;
1116  goto lab1_brk;
1117  }
1118  // delete, line 175
1119  slice_del();
1120  }
1121  while (false);
1122 
1123 lab1_brk: ;
1124 
1125  return true;
1126  }
1127 
1128  public override bool Stem()
1129  {
1130  int v_1;
1131  int v_2;
1132  int v_3;
1133  int v_4;
1134  int v_5;
1135  int v_6;
1136  int v_7;
1137  // (, line 180
1138  // do, line 181
1139  v_1 = cursor;
1140  do
1141  {
1142  // call prelude, line 181
1143  if (!r_prelude())
1144  {
1145  goto lab0_brk;
1146  }
1147  }
1148  while (false);
1149 
1150 lab0_brk: ;
1151 
1152  cursor = v_1;
1153  // do, line 182
1154  v_2 = cursor;
1155  do
1156  {
1157  // call mark_regions, line 182
1158  if (!r_mark_regions())
1159  {
1160  goto lab1_brk;
1161  }
1162  }
1163  while (false);
1164 
1165 lab1_brk: ;
1166 
1167  cursor = v_2;
1168  // backwards, line 183
1169  limit_backward = cursor; cursor = limit;
1170  // (, line 183
1171  // do, line 184
1172  v_3 = limit - cursor;
1173  do
1174  {
1175  // call attached_pronoun, line 184
1176  if (!r_attached_pronoun())
1177  {
1178  goto lab2_brk;
1179  }
1180  }
1181  while (false);
1182 
1183 lab2_brk: ;
1184 
1185  cursor = limit - v_3;
1186  // do, line 185
1187  v_4 = limit - cursor;
1188  do
1189  {
1190  // (, line 185
1191  // or, line 185
1192  do
1193  {
1194  v_5 = limit - cursor;
1195  do
1196  {
1197  // call standard_suffix, line 185
1198  if (!r_standard_suffix())
1199  {
1200  goto lab5_brk;
1201  }
1202  goto lab4_brk;
1203  }
1204  while (false);
1205 
1206 lab5_brk: ;
1207 
1208  cursor = limit - v_5;
1209  // call verb_suffix, line 185
1210  if (!r_verb_suffix())
1211  {
1212  goto lab3_brk;
1213  }
1214  }
1215  while (false);
1216 
1217 lab4_brk: ;
1218 
1219  }
1220  while (false);
1221 
1222 lab3_brk: ;
1223 
1224  cursor = limit - v_4;
1225  // do, line 186
1226  v_6 = limit - cursor;
1227  do
1228  {
1229  // call vowel_suffix, line 186
1230  if (!r_vowel_suffix())
1231  {
1232  goto lab6_brk;
1233  }
1234  }
1235  while (false);
1236 
1237 lab6_brk: ;
1238 
1239  cursor = limit - v_6;
1240  cursor = limit_backward; // do, line 188
1241  v_7 = cursor;
1242  do
1243  {
1244  // call postlude, line 188
1245  if (!r_postlude())
1246  {
1247  goto lab7_brk;
1248  }
1249  }
1250  while (false);
1251 
1252 lab7_brk: ;
1253 
1254  cursor = v_7;
1255  return true;
1256  }
1257  }
1258 }