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
EnglishStemmer.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 
30  public EnglishStemmer()
31  {
32  InitBlock();
33  }
34  private void InitBlock()
35  {
36  a_0 = new Among[]{new Among("gener", - 1, - 1, "", this)};
37  a_1 = new Among[]{new Among("ied", - 1, 2, "", this), new Among("s", - 1, 3, "", this), new Among("ies", 1, 2, "", this), new Among("sses", 1, 1, "", this), new Among("ss", 1, - 1, "", this), new Among("us", 1, - 1, "", this)};
38  a_2 = new Among[]{new Among("", - 1, 3, "", this), new Among("bb", 0, 2, "", this), new Among("dd", 0, 2, "", this), new Among("ff", 0, 2, "", this), new Among("gg", 0, 2, "", this), new Among("bl", 0, 1, "", this), new Among("mm", 0, 2, "", this), new Among("nn", 0, 2, "", this), new Among("pp", 0, 2, "", this), new Among("rr", 0, 2, "", this), new Among("at", 0, 1, "", this), new Among("tt", 0, 2, "", this), new Among("iz", 0, 1, "", this)};
39  a_3 = new Among[]{new Among("ed", - 1, 2, "", this), new Among("eed", 0, 1, "", this), new Among("ing", - 1, 2, "", this), new Among("edly", - 1, 2, "", this), new Among("eedly", 3, 1, "", this), new Among("ingly", - 1, 2, "", this)};
40  a_4 = new Among[]{new Among("anci", - 1, 3, "", this), new Among("enci", - 1, 2, "", this), new Among("ogi", - 1, 13, "", this), new Among("li", - 1, 16, "", this), new Among("bli", 3, 12, "", this), new Among("abli", 4, 4, "", this), new Among("alli", 3, 8, "", this), new Among("fulli", 3, 14, "", this), new Among("lessli", 3, 15, "", this), new Among("ousli", 3, 10, "", this), new Among("entli", 3, 5, "", this), new Among("aliti", - 1, 8, "", this), new Among("biliti", - 1, 12, "", this), new Among("iviti", - 1, 11, "", this), new Among("tional", - 1, 1, "", this), new Among("ational", 14, 7, "", this), new Among("alism", - 1, 8, "", this), new Among("ation", - 1, 7, "", this), new Among("ization", 17, 6, "", this), new Among("izer", - 1, 6, "", this), new Among("ator", - 1, 7, "", this), new Among("iveness", - 1, 11, "", this), new Among("fulness", - 1, 9, "", this), new Among("ousness", - 1, 10, "", this)};
41  a_5 = new Among[]{new Among("icate", - 1, 4, "", this), new Among("ative", - 1, 6, "", this), new Among("alize", - 1, 3, "", this), new Among("iciti", - 1, 4, "", this), new Among("ical", - 1, 4, "", this), new Among("tional", - 1, 1, "", this), new Among("ational", 5, 2, "", this), new Among("ful", - 1, 5, "", this), new Among("ness", - 1, 5, "", this)};
42  a_6 = new Among[]{new Among("ic", - 1, 1, "", this), new Among("ance", - 1, 1, "", this), new Among("ence", - 1, 1, "", this), new Among("able", - 1, 1, "", this), new Among("ible", - 1, 1, "", this), new Among("ate", - 1, 1, "", this), new Among("ive", - 1, 1, "", this), new Among("ize", - 1, 1, "", this), new Among("iti", - 1, 1, "", this), new Among("al", - 1, 1, "", this), new Among("ism", - 1, 1, "", this), new Among("ion", - 1, 2, "", this), new Among("er", - 1, 1, "", this), new Among("ous", - 1, 1, "", this), new Among("ant", - 1, 1, "", this), new Among("ent", - 1, 1, "", this), new Among("ment", 15, 1, "", this), new Among("ement", 16, 1, "", this)};
43  a_7 = new Among[]{new Among("e", - 1, 1, "", this), new Among("l", - 1, 2, "", this)};
44  a_8 = new Among[]{new Among("succeed", - 1, - 1, "", this), new Among("proceed", - 1, - 1, "", this), new Among("exceed", - 1, - 1, "", this), new Among("canning", - 1, - 1, "", this), new Among("inning", - 1, - 1, "", this), new Among("earring", - 1, - 1, "", this), new Among("herring", - 1, - 1, "", this), new Among("outing", - 1, - 1, "", this)};
45  a_9 = new Among[]{new Among("andes", - 1, - 1, "", this), new Among("atlas", - 1, - 1, "", this), new Among("bias", - 1, - 1, "", this), new Among("cosmos", - 1, - 1, "", this), new Among("dying", - 1, 3, "", this), new Among("early", - 1, 9, "", this), new Among("gently", - 1, 7, "", this), new Among("howe", - 1, - 1, "", this), new Among("idly", - 1, 6, "", this), new Among("lying", - 1, 4, "", this), new Among("news", - 1, - 1, "", this), new Among("only", - 1, 10, "", this), new Among("singly", - 1, 11, "", this), new Among("skies", - 1, 2, "", this), new Among("skis", - 1, 1, "", this), new Among("sky", - 1, - 1, "", this), new Among("tying", - 1, 5, "", this), new Among("ugly", - 1, 8, "", this)};
46  }
47 
48  private Among[] a_0;
49  private Among[] a_1;
50  private Among[] a_2;
51  private Among[] a_3;
52  private Among[] a_4;
53  private Among[] a_5;
54  private Among[] a_6;
55  private Among[] a_7;
56  private Among[] a_8;
57  private Among[] a_9;
58 
59  private static readonly char[] g_v = new char[]{(char) (17), (char) (65), (char) (16), (char) (1)};
60  private static readonly char[] g_v_WXY = new char[]{(char) (1), (char) (17), (char) (65), (char) (208), (char) (1)};
61  private static readonly char[] g_valid_LI = new char[]{(char) (55), (char) (141), (char) (2)};
62 
63  private bool B_Y_found;
64  private int I_p2;
65  private int I_p1;
66 
67  protected internal virtual void copy_from(EnglishStemmer other)
68  {
69  B_Y_found = other.B_Y_found;
70  I_p2 = other.I_p2;
71  I_p1 = other.I_p1;
72  base.copy_from(other);
73  }
74 
75  private bool r_prelude()
76  {
77  int v_1;
78  int v_2;
79  int v_3;
80  int v_4;
81  // (, line 23
82  // unset Y_found, line 24
83  B_Y_found = false;
84  // do, line 25
85  v_1 = cursor;
86  do
87  {
88  // (, line 25
89  // [, line 25
90  bra = cursor;
91  // literal, line 25
92  if (!(eq_s(1, "y")))
93  {
94  goto lab0_brk;
95  }
96  // ], line 25
97  ket = cursor;
98  if (!(in_grouping(g_v, 97, 121)))
99  {
100  goto lab0_brk;
101  }
102  // <-, line 25
103  slice_from("Y");
104  // set Y_found, line 25
105  B_Y_found = true;
106  }
107  while (false);
108 
109 lab0_brk: ;
110 
111  cursor = v_1;
112  // do, line 26
113  v_2 = cursor;
114  do
115  {
116  // repeat, line 26
117  while (true)
118  {
119  v_3 = cursor;
120  do
121  {
122  // (, line 26
123  // goto, line 26
124  while (true)
125  {
126  v_4 = cursor;
127  do
128  {
129  // (, line 26
130  if (!(in_grouping(g_v, 97, 121)))
131  {
132  goto lab5_brk;
133  }
134  // [, line 26
135  bra = cursor;
136  // literal, line 26
137  if (!(eq_s(1, "y")))
138  {
139  goto lab5_brk;
140  }
141  // ], line 26
142  ket = cursor;
143  cursor = v_4;
144  goto golab4_brk;
145  }
146  while (false);
147 
148 lab5_brk: ;
149 
150  cursor = v_4;
151  if (cursor >= limit)
152  {
153  goto lab3_brk;
154  }
155  cursor++;
156  }
157 
158 golab4_brk: ;
159 
160  // <-, line 26
161  slice_from("Y");
162  // set Y_found, line 26
163  B_Y_found = true;
164  goto replab2;
165  }
166  while (false);
167 
168 lab3_brk: ;
169 
170  cursor = v_3;
171  goto replab2_brk;
172 
173 replab2: ;
174  }
175 
176 replab2_brk: ;
177 
178  }
179  while (false);
180 
181 lab1_brk: ;
182 
183  cursor = v_2;
184  return true;
185  }
186 
187  private bool r_mark_regions()
188  {
189  int v_1;
190  int v_2;
191  // (, line 29
192  I_p1 = limit;
193  I_p2 = limit;
194  // do, line 32
195  v_1 = cursor;
196  do
197  {
198  // (, line 32
199  // or, line 36
200  do
201  {
202  v_2 = cursor;
203  do
204  {
205  // among, line 33
206  if (find_among(a_0, 1) == 0)
207  {
208  goto lab2_brk;
209  }
210  goto lab1_brk;
211  }
212  while (false);
213 
214 lab2_brk: ;
215 
216  cursor = v_2;
217  // (, line 36
218  // gopast, line 36
219  while (true)
220  {
221  do
222  {
223  if (!(in_grouping(g_v, 97, 121)))
224  {
225  goto lab4_brk;
226  }
227  goto golab3_brk;
228  }
229  while (false);
230 
231 lab4_brk: ;
232 
233  if (cursor >= limit)
234  {
235  goto lab0_brk;
236  }
237  cursor++;
238  }
239 
240 golab3_brk: ;
241 
242  // gopast, line 36
243  while (true)
244  {
245  do
246  {
247  if (!(out_grouping(g_v, 97, 121)))
248  {
249  goto lab6_brk;
250  }
251  goto golab5_brk;
252  }
253  while (false);
254 
255 lab6_brk: ;
256 
257  if (cursor >= limit)
258  {
259  goto lab0_brk;
260  }
261  cursor++;
262  }
263 
264 golab5_brk: ;
265 
266  }
267  while (false);
268 
269 lab1_brk: ;
270 
271  // setmark p1, line 37
272  I_p1 = cursor;
273  // gopast, line 38
274  while (true)
275  {
276  do
277  {
278  if (!(in_grouping(g_v, 97, 121)))
279  {
280  goto lab8_brk;
281  }
282  goto golab7_brk;
283  }
284  while (false);
285 
286 lab8_brk: ;
287 
288  if (cursor >= limit)
289  {
290  goto lab0_brk;
291  }
292  cursor++;
293  }
294 
295 golab7_brk: ;
296 
297  // gopast, line 38
298  while (true)
299  {
300  do
301  {
302  if (!(out_grouping(g_v, 97, 121)))
303  {
304  goto lab10_brk;
305  }
306  goto golab9_brk;
307  }
308  while (false);
309 
310 lab10_brk: ;
311 
312  if (cursor >= limit)
313  {
314  goto lab0_brk;
315  }
316  cursor++;
317  }
318 
319 golab9_brk: ;
320 
321  // setmark p2, line 38
322  I_p2 = cursor;
323  }
324  while (false);
325 
326 lab0_brk: ;
327 
328  cursor = v_1;
329  return true;
330  }
331 
332  private bool r_shortv()
333  {
334  int v_1;
335  // (, line 44
336  // or, line 46
337  do
338  {
339  v_1 = limit - cursor;
340  do
341  {
342  // (, line 45
343  if (!(out_grouping_b(g_v_WXY, 89, 121)))
344  {
345  goto lab1_brk;
346  }
347  if (!(in_grouping_b(g_v, 97, 121)))
348  {
349  goto lab1_brk;
350  }
351  if (!(out_grouping_b(g_v, 97, 121)))
352  {
353  goto lab1_brk;
354  }
355  goto lab0_brk;
356  }
357  while (false);
358 
359 lab1_brk: ;
360 
361  cursor = limit - v_1;
362  // (, line 47
363  if (!(out_grouping_b(g_v, 97, 121)))
364  {
365  return false;
366  }
367  if (!(in_grouping_b(g_v, 97, 121)))
368  {
369  return false;
370  }
371  // atlimit, line 47
372  if (cursor > limit_backward)
373  {
374  return false;
375  }
376  }
377  while (false);
378 
379 lab0_brk: ;
380 
381  return true;
382  }
383 
384  private bool r_R1()
385  {
386  if (!(I_p1 <= cursor))
387  {
388  return false;
389  }
390  return true;
391  }
392 
393  private bool r_R2()
394  {
395  if (!(I_p2 <= cursor))
396  {
397  return false;
398  }
399  return true;
400  }
401 
402  private bool r_Step_1a()
403  {
404  int among_var;
405  int v_1;
406  // (, line 53
407  // [, line 54
408  ket = cursor;
409  // substring, line 54
410  among_var = find_among_b(a_1, 6);
411  if (among_var == 0)
412  {
413  return false;
414  }
415  // ], line 54
416  bra = cursor;
417  switch (among_var)
418  {
419 
420  case 0:
421  return false;
422 
423  case 1:
424  // (, line 55
425  // <-, line 55
426  slice_from("ss");
427  break;
428 
429  case 2:
430  // (, line 57
431  // or, line 57
432  do
433  {
434  v_1 = limit - cursor;
435  do
436  {
437  // (, line 57
438  // next, line 57
439  if (cursor <= limit_backward)
440  {
441  goto lab1_brk;
442  }
443  cursor--;
444  // atlimit, line 57
445  if (cursor > limit_backward)
446  {
447  goto lab1_brk;
448  }
449  // <-, line 57
450  slice_from("ie");
451  goto lab0_brk;
452  }
453  while (false);
454 
455 lab1_brk: ;
456 
457  cursor = limit - v_1;
458  // <-, line 57
459  slice_from("i");
460  }
461  while (false);
462 
463 lab0_brk: ;
464 
465  break;
466 
467  case 3:
468  // (, line 58
469  // next, line 58
470  if (cursor <= limit_backward)
471  {
472  return false;
473  }
474  cursor--;
475  // gopast, line 58
476  while (true)
477  {
478  do
479  {
480  if (!(in_grouping_b(g_v, 97, 121)))
481  {
482  goto lab3_brk;
483  }
484  goto golab2_brk;
485  }
486  while (false);
487 
488 lab3_brk: ;
489 
490  if (cursor <= limit_backward)
491  {
492  return false;
493  }
494  cursor--;
495  }
496 
497 golab2_brk: ;
498 
499  // delete, line 58
500  slice_del();
501  break;
502  }
503  return true;
504  }
505 
506  private bool r_Step_1b()
507  {
508  int among_var;
509  int v_1;
510  int v_3;
511  int v_4;
512  // (, line 63
513  // [, line 64
514  ket = cursor;
515  // substring, line 64
516  among_var = find_among_b(a_3, 6);
517  if (among_var == 0)
518  {
519  return false;
520  }
521  // ], line 64
522  bra = cursor;
523  switch (among_var)
524  {
525 
526  case 0:
527  return false;
528 
529  case 1:
530  // (, line 66
531  // call R1, line 66
532  if (!r_R1())
533  {
534  return false;
535  }
536  // <-, line 66
537  slice_from("ee");
538  break;
539 
540  case 2:
541  // (, line 68
542  // test, line 69
543  v_1 = limit - cursor;
544  // gopast, line 69
545  while (true)
546  {
547  do
548  {
549  if (!(in_grouping_b(g_v, 97, 121)))
550  {
551  goto lab1_brk;
552  }
553  goto golab0_brk;
554  }
555  while (false);
556 
557 lab1_brk: ;
558 
559  if (cursor <= limit_backward)
560  {
561  return false;
562  }
563  cursor--;
564  }
565 
566 golab0_brk: ;
567 
568  cursor = limit - v_1;
569  // delete, line 69
570  slice_del();
571  // test, line 70
572  v_3 = limit - cursor;
573  // substring, line 70
574  among_var = find_among_b(a_2, 13);
575  if (among_var == 0)
576  {
577  return false;
578  }
579  cursor = limit - v_3;
580  switch (among_var)
581  {
582 
583  case 0:
584  return false;
585 
586  case 1:
587  // (, line 72
588  // <+, line 72
589  {
590  int c = cursor;
591  insert(cursor, cursor, "e");
592  cursor = c;
593  }
594  break;
595 
596  case 2:
597  // (, line 75
598  // [, line 75
599  ket = cursor;
600  // next, line 75
601  if (cursor <= limit_backward)
602  {
603  return false;
604  }
605  cursor--;
606  // ], line 75
607  bra = cursor;
608  // delete, line 75
609  slice_del();
610  break;
611 
612  case 3:
613  // (, line 76
614  // atmark, line 76
615  if (cursor != I_p1)
616  {
617  return false;
618  }
619  // test, line 76
620  v_4 = limit - cursor;
621  // call shortv, line 76
622  if (!r_shortv())
623  {
624  return false;
625  }
626  cursor = limit - v_4;
627  // <+, line 76
628  {
629  int c = cursor;
630  insert(cursor, cursor, "e");
631  cursor = c;
632  }
633  break;
634  }
635  break;
636  }
637  return true;
638  }
639 
640  private bool r_Step_1c()
641  {
642  int v_1;
643  int v_2;
644  // (, line 82
645  // [, line 83
646  ket = cursor;
647  // or, line 83
648  do
649  {
650  v_1 = limit - cursor;
651  do
652  {
653  // literal, line 83
654  if (!(eq_s_b(1, "y")))
655  {
656  goto lab1_brk;
657  }
658  goto lab0_brk;
659  }
660  while (false);
661 
662 lab1_brk: ;
663 
664  cursor = limit - v_1;
665  // literal, line 83
666  if (!(eq_s_b(1, "Y")))
667  {
668  return false;
669  }
670  }
671  while (false);
672 
673 lab0_brk: ;
674 
675  // ], line 83
676  bra = cursor;
677  if (!(out_grouping_b(g_v, 97, 121)))
678  {
679  return false;
680  }
681  // not, line 84
682  {
683  v_2 = limit - cursor;
684  do
685  {
686  // atlimit, line 84
687  if (cursor > limit_backward)
688  {
689  goto lab2_brk;
690  }
691  return false;
692  }
693  while (false);
694 
695 lab2_brk: ;
696 
697  cursor = limit - v_2;
698  }
699  // <-, line 85
700  slice_from("i");
701  return true;
702  }
703 
704  private bool r_Step_2()
705  {
706  int among_var;
707  // (, line 88
708  // [, line 89
709  ket = cursor;
710  // substring, line 89
711  among_var = find_among_b(a_4, 24);
712  if (among_var == 0)
713  {
714  return false;
715  }
716  // ], line 89
717  bra = cursor;
718  // call R1, line 89
719  if (!r_R1())
720  {
721  return false;
722  }
723  switch (among_var)
724  {
725 
726  case 0:
727  return false;
728 
729  case 1:
730  // (, line 90
731  // <-, line 90
732  slice_from("tion");
733  break;
734 
735  case 2:
736  // (, line 91
737  // <-, line 91
738  slice_from("ence");
739  break;
740 
741  case 3:
742  // (, line 92
743  // <-, line 92
744  slice_from("ance");
745  break;
746 
747  case 4:
748  // (, line 93
749  // <-, line 93
750  slice_from("able");
751  break;
752 
753  case 5:
754  // (, line 94
755  // <-, line 94
756  slice_from("ent");
757  break;
758 
759  case 6:
760  // (, line 96
761  // <-, line 96
762  slice_from("ize");
763  break;
764 
765  case 7:
766  // (, line 98
767  // <-, line 98
768  slice_from("ate");
769  break;
770 
771  case 8:
772  // (, line 100
773  // <-, line 100
774  slice_from("al");
775  break;
776 
777  case 9:
778  // (, line 101
779  // <-, line 101
780  slice_from("ful");
781  break;
782 
783  case 10:
784  // (, line 103
785  // <-, line 103
786  slice_from("ous");
787  break;
788 
789  case 11:
790  // (, line 105
791  // <-, line 105
792  slice_from("ive");
793  break;
794 
795  case 12:
796  // (, line 107
797  // <-, line 107
798  slice_from("ble");
799  break;
800 
801  case 13:
802  // (, line 108
803  // literal, line 108
804  if (!(eq_s_b(1, "l")))
805  {
806  return false;
807  }
808  // <-, line 108
809  slice_from("og");
810  break;
811 
812  case 14:
813  // (, line 109
814  // <-, line 109
815  slice_from("ful");
816  break;
817 
818  case 15:
819  // (, line 110
820  // <-, line 110
821  slice_from("less");
822  break;
823 
824  case 16:
825  // (, line 111
826  if (!(in_grouping_b(g_valid_LI, 99, 116)))
827  {
828  return false;
829  }
830  // delete, line 111
831  slice_del();
832  break;
833  }
834  return true;
835  }
836 
837  private bool r_Step_3()
838  {
839  int among_var;
840  // (, line 115
841  // [, line 116
842  ket = cursor;
843  // substring, line 116
844  among_var = find_among_b(a_5, 9);
845  if (among_var == 0)
846  {
847  return false;
848  }
849  // ], line 116
850  bra = cursor;
851  // call R1, line 116
852  if (!r_R1())
853  {
854  return false;
855  }
856  switch (among_var)
857  {
858 
859  case 0:
860  return false;
861 
862  case 1:
863  // (, line 117
864  // <-, line 117
865  slice_from("tion");
866  break;
867 
868  case 2:
869  // (, line 118
870  // <-, line 118
871  slice_from("ate");
872  break;
873 
874  case 3:
875  // (, line 119
876  // <-, line 119
877  slice_from("al");
878  break;
879 
880  case 4:
881  // (, line 121
882  // <-, line 121
883  slice_from("ic");
884  break;
885 
886  case 5:
887  // (, line 123
888  // delete, line 123
889  slice_del();
890  break;
891 
892  case 6:
893  // (, line 125
894  // call R2, line 125
895  if (!r_R2())
896  {
897  return false;
898  }
899  // delete, line 125
900  slice_del();
901  break;
902  }
903  return true;
904  }
905 
906  private bool r_Step_4()
907  {
908  int among_var;
909  int v_1;
910  // (, line 129
911  // [, line 130
912  ket = cursor;
913  // substring, line 130
914  among_var = find_among_b(a_6, 18);
915  if (among_var == 0)
916  {
917  return false;
918  }
919  // ], line 130
920  bra = cursor;
921  // call R2, line 130
922  if (!r_R2())
923  {
924  return false;
925  }
926  switch (among_var)
927  {
928 
929  case 0:
930  return false;
931 
932  case 1:
933  // (, line 133
934  // delete, line 133
935  slice_del();
936  break;
937 
938  case 2:
939  // (, line 134
940  // or, line 134
941  do
942  {
943  v_1 = limit - cursor;
944  do
945  {
946  // literal, line 134
947  if (!(eq_s_b(1, "s")))
948  {
949  goto lab1_brk;
950  }
951  goto lab0_brk;
952  }
953  while (false);
954 
955 lab1_brk: ;
956 
957  cursor = limit - v_1;
958  // literal, line 134
959  if (!(eq_s_b(1, "t")))
960  {
961  return false;
962  }
963  }
964  while (false);
965 
966 lab0_brk: ;
967 
968  // delete, line 134
969  slice_del();
970  break;
971  }
972  return true;
973  }
974 
975  private bool r_Step_5()
976  {
977  int among_var;
978  int v_1;
979  int v_2;
980  // (, line 138
981  // [, line 139
982  ket = cursor;
983  // substring, line 139
984  among_var = find_among_b(a_7, 2);
985  if (among_var == 0)
986  {
987  return false;
988  }
989  // ], line 139
990  bra = cursor;
991  switch (among_var)
992  {
993 
994  case 0:
995  return false;
996 
997  case 1:
998  // (, line 140
999  // or, line 140
1000  do
1001  {
1002  v_1 = limit - cursor;
1003  do
1004  {
1005  // call R2, line 140
1006  if (!r_R2())
1007  {
1008  goto lab1_brk;
1009  }
1010  goto lab0_brk;
1011  }
1012  while (false);
1013 
1014 lab1_brk: ;
1015 
1016  cursor = limit - v_1;
1017  // (, line 140
1018  // call R1, line 140
1019  if (!r_R1())
1020  {
1021  return false;
1022  }
1023  // not, line 140
1024  {
1025  v_2 = limit - cursor;
1026  do
1027  {
1028  // call shortv, line 140
1029  if (!r_shortv())
1030  {
1031  goto lab2_brk;
1032  }
1033  return false;
1034  }
1035  while (false);
1036 
1037 lab2_brk: ;
1038 
1039  cursor = limit - v_2;
1040  }
1041  }
1042  while (false);
1043 lab0_brk: ;
1044  // delete, line 140
1045  slice_del();
1046  break;
1047 
1048  case 2:
1049  // (, line 141
1050  // call R2, line 141
1051  if (!r_R2())
1052  {
1053  return false;
1054  }
1055  // literal, line 141
1056  if (!(eq_s_b(1, "l")))
1057  {
1058  return false;
1059  }
1060  // delete, line 141
1061  slice_del();
1062  break;
1063  }
1064  return true;
1065  }
1066 
1067  private bool r_exception2()
1068  {
1069  // (, line 145
1070  // [, line 147
1071  ket = cursor;
1072  // substring, line 147
1073  if (find_among_b(a_8, 8) == 0)
1074  {
1075  return false;
1076  }
1077  // ], line 147
1078  bra = cursor;
1079  // atlimit, line 147
1080  if (cursor > limit_backward)
1081  {
1082  return false;
1083  }
1084  return true;
1085  }
1086 
1087  private bool r_exception1()
1088  {
1089  int among_var;
1090  // (, line 157
1091  // [, line 159
1092  bra = cursor;
1093  // substring, line 159
1094  among_var = find_among(a_9, 18);
1095  if (among_var == 0)
1096  {
1097  return false;
1098  }
1099  // ], line 159
1100  ket = cursor;
1101  // atlimit, line 159
1102  if (cursor < limit)
1103  {
1104  return false;
1105  }
1106  switch (among_var)
1107  {
1108 
1109  case 0:
1110  return false;
1111 
1112  case 1:
1113  // (, line 163
1114  // <-, line 163
1115  slice_from("ski");
1116  break;
1117 
1118  case 2:
1119  // (, line 164
1120  // <-, line 164
1121  slice_from("sky");
1122  break;
1123 
1124  case 3:
1125  // (, line 165
1126  // <-, line 165
1127  slice_from("die");
1128  break;
1129 
1130  case 4:
1131  // (, line 166
1132  // <-, line 166
1133  slice_from("lie");
1134  break;
1135 
1136  case 5:
1137  // (, line 167
1138  // <-, line 167
1139  slice_from("tie");
1140  break;
1141 
1142  case 6:
1143  // (, line 171
1144  // <-, line 171
1145  slice_from("idl");
1146  break;
1147 
1148  case 7:
1149  // (, line 172
1150  // <-, line 172
1151  slice_from("gentl");
1152  break;
1153 
1154  case 8:
1155  // (, line 173
1156  // <-, line 173
1157  slice_from("ugli");
1158  break;
1159 
1160  case 9:
1161  // (, line 174
1162  // <-, line 174
1163  slice_from("earli");
1164  break;
1165 
1166  case 10:
1167  // (, line 175
1168  // <-, line 175
1169  slice_from("onli");
1170  break;
1171 
1172  case 11:
1173  // (, line 176
1174  // <-, line 176
1175  slice_from("singl");
1176  break;
1177  }
1178  return true;
1179  }
1180 
1181  private bool r_postlude()
1182  {
1183  int v_1;
1184  int v_2;
1185  // (, line 192
1186  // Boolean test Y_found, line 192
1187  if (!(B_Y_found))
1188  {
1189  return false;
1190  }
1191  // repeat, line 192
1192  while (true)
1193  {
1194  v_1 = cursor;
1195  do
1196  {
1197  // (, line 192
1198  // goto, line 192
1199  while (true)
1200  {
1201  v_2 = cursor;
1202  do
1203  {
1204  // (, line 192
1205  // [, line 192
1206  bra = cursor;
1207  // literal, line 192
1208  if (!(eq_s(1, "Y")))
1209  {
1210  goto lab3_brk;
1211  }
1212  // ], line 192
1213  ket = cursor;
1214  cursor = v_2;
1215  goto golab2_brk;
1216  }
1217  while (false);
1218 
1219 lab3_brk: ;
1220 
1221  cursor = v_2;
1222  if (cursor >= limit)
1223  {
1224  goto lab1_brk;
1225  }
1226  cursor++;
1227  }
1228 golab2_brk: ;
1229 
1230  // <-, line 192
1231  slice_from("y");
1232  goto replab0;
1233  }
1234  while (false);
1235 
1236 lab1_brk: ;
1237 
1238  cursor = v_1;
1239  goto replab0_brk;
1240 
1241 replab0: ;
1242  }
1243 
1244 replab0_brk: ;
1245 
1246  return true;
1247  }
1248 
1249  public override bool Stem()
1250  {
1251  int v_1;
1252  int v_2;
1253  int v_3;
1254  int v_4;
1255  int v_5;
1256  int v_6;
1257  int v_7;
1258  int v_8;
1259  int v_9;
1260  int v_10;
1261  int v_11;
1262  int v_12;
1263  int v_13;
1264  // (, line 194
1265  // or, line 196
1266  do
1267  {
1268  v_1 = cursor;
1269  do
1270  {
1271  // call exception1, line 196
1272  if (!r_exception1())
1273  {
1274  goto lab1_brk;
1275  }
1276  goto lab0_brk;
1277  }
1278  while (false);
1279 
1280 lab1_brk: ;
1281 
1282  cursor = v_1;
1283  // (, line 196
1284  // test, line 198
1285  v_2 = cursor;
1286  // hop, line 198
1287  {
1288  int c = cursor + 3;
1289  if (0 > c || c > limit)
1290  {
1291  return false;
1292  }
1293  cursor = c;
1294  }
1295  cursor = v_2;
1296  // do, line 199
1297  v_3 = cursor;
1298  do
1299  {
1300  // call prelude, line 199
1301  if (!r_prelude())
1302  {
1303  goto lab2_brk;
1304  }
1305  }
1306  while (false);
1307 
1308 lab2_brk: ;
1309 
1310  cursor = v_3;
1311  // do, line 200
1312  v_4 = cursor;
1313  do
1314  {
1315  // call mark_regions, line 200
1316  if (!r_mark_regions())
1317  {
1318  goto lab3_brk;
1319  }
1320  }
1321  while (false);
1322 
1323 lab3_brk: ;
1324 
1325  cursor = v_4;
1326  // backwards, line 201
1327  limit_backward = cursor; cursor = limit;
1328  // (, line 201
1329  // do, line 203
1330  v_5 = limit - cursor;
1331  do
1332  {
1333  // call Step_1a, line 203
1334  if (!r_Step_1a())
1335  {
1336  goto lab4_brk;
1337  }
1338  }
1339  while (false);
1340 
1341 lab4_brk: ;
1342 
1343  cursor = limit - v_5;
1344  // or, line 205
1345  do
1346  {
1347  v_6 = limit - cursor;
1348  do
1349  {
1350  // call exception2, line 205
1351  if (!r_exception2())
1352  {
1353  goto lab6_brk;
1354  }
1355  goto lab5_brk;
1356  }
1357  while (false);
1358 
1359 lab6_brk: ;
1360 
1361  cursor = limit - v_6;
1362  // (, line 205
1363  // do, line 207
1364  v_7 = limit - cursor;
1365  do
1366  {
1367  // call Step_1b, line 207
1368  if (!r_Step_1b())
1369  {
1370  goto lab7_brk;
1371  }
1372  }
1373  while (false);
1374 
1375 lab7_brk: ;
1376 
1377  cursor = limit - v_7;
1378  // do, line 208
1379  v_8 = limit - cursor;
1380  do
1381  {
1382  // call Step_1c, line 208
1383  if (!r_Step_1c())
1384  {
1385  goto lab8_brk;
1386  }
1387  }
1388  while (false);
1389 
1390 lab8_brk: ;
1391 
1392  cursor = limit - v_8;
1393  // do, line 210
1394  v_9 = limit - cursor;
1395  do
1396  {
1397  // call Step_2, line 210
1398  if (!r_Step_2())
1399  {
1400  goto lab9_brk;
1401  }
1402  }
1403  while (false);
1404 
1405 lab9_brk: ;
1406 
1407  cursor = limit - v_9;
1408  // do, line 211
1409  v_10 = limit - cursor;
1410  do
1411  {
1412  // call Step_3, line 211
1413  if (!r_Step_3())
1414  {
1415  goto lab10_brk;
1416  }
1417  }
1418  while (false);
1419 
1420 lab10_brk: ;
1421 
1422  cursor = limit - v_10;
1423  // do, line 212
1424  v_11 = limit - cursor;
1425  do
1426  {
1427  // call Step_4, line 212
1428  if (!r_Step_4())
1429  {
1430  goto lab11_brk;
1431  }
1432  }
1433  while (false);
1434 
1435 lab11_brk: ;
1436 
1437  cursor = limit - v_11;
1438  // do, line 214
1439  v_12 = limit - cursor;
1440  do
1441  {
1442  // call Step_5, line 214
1443  if (!r_Step_5())
1444  {
1445  goto lab12_brk;
1446  }
1447  }
1448  while (false);
1449 
1450 lab12_brk: ;
1451 
1452  cursor = limit - v_12;
1453  }
1454  while (false);
1455 
1456 lab5_brk: ;
1457 
1458  cursor = limit_backward; // do, line 217
1459  v_13 = cursor;
1460  do
1461  {
1462  // call postlude, line 217
1463  if (!r_postlude())
1464  {
1465  goto lab13_brk;
1466  }
1467  }
1468  while (false);
1469 
1470 lab13_brk: ;
1471 
1472  cursor = v_13;
1473  }
1474  while (false);
1475 
1476 lab0_brk: ;
1477 
1478  return true;
1479  }
1480  }
1481 }