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
FrenchStemmer.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 FrenchStemmer()
30  {
31  InitBlock();
32  }
33  private void InitBlock()
34  {
35  a_0 = new Among[]{new Among("", - 1, 4, "", this), new Among("I", 0, 1, "", this), new Among("U", 0, 2, "", this), new Among("Y", 0, 3, "", this)};
36  a_1 = new Among[]{new Among("iqU", - 1, 3, "", this), new Among("abl", - 1, 3, "", this), new Among("I\u00E8r", - 1, 4, "", this), new Among("i\u00E8r", - 1, 4, "", this), new Among("eus", - 1, 2, "", this), new Among("iv", - 1, 1, "", this)};
37  a_2 = new Among[]{new Among("ic", - 1, 2, "", this), new Among("abil", - 1, 1, "", this), new Among("iv", - 1, 3, "", this)};
38  a_3 = new Among[]{new Among("iqUe", - 1, 1, "", this), new Among("atrice", - 1, 2, "", this), new Among("ance", - 1, 1, "", this), new Among("ence", - 1, 5, "", this), new Among("logie", - 1, 3, "", this), new Among("able", - 1, 1, "", this), new Among("isme", - 1, 1, "", this), new Among("euse", - 1, 11, "", this), new Among("iste", - 1, 1, "", this), new Among("ive", - 1, 8, "", this), new Among("if", - 1, 8, "", this), new Among("usion", - 1, 4, "", this), new Among("ation", - 1, 2, "", this), new Among("ution", - 1, 4, "", this), new Among("ateur", - 1, 2, "", this), new Among("iqUes", - 1, 1, "", this), new Among("atrices", - 1, 2, "", this), new Among("ances", - 1, 1, "", this), new Among("ences", - 1, 5, "", this), new Among("logies", - 1, 3, "", this), new Among("ables", - 1, 1, "", this), new Among("ismes", - 1, 1, "", this), new Among("euses", - 1, 11, "", this), new Among("istes", - 1, 1, "", this), new Among("ives", - 1, 8, "", this), new Among("ifs", - 1, 8, "", this), new Among("usions", - 1, 4, "", this), new Among("ations", - 1, 2, "", this), new Among("utions", - 1, 4, "", this), new Among("ateurs", - 1, 2, "", this), new Among("ments", - 1, 15, "", this), new Among("ements", 30, 6, "", this), new Among("issements", 31, 12, "", this), new Among("it\u00E9s", - 1, 7, "", this), new Among("ment", - 1, 15, "", this), new Among("ement", 34, 6, "", this), new Among("issement", 35, 12, "", this), new Among("amment", 34, 13, "", this), new Among("emment", 34, 14, "", this), new Among("aux", - 1, 10, "", this), new Among("eaux", 39, 9, "", this), new Among("eux", - 1, 1, "", this), new Among("it\u00E9", - 1, 7, "", this)};
39  a_4 = new Among[]{new Among("ira", - 1, 1, "", this), new Among("ie", - 1, 1, "", this), new Among("isse", - 1, 1, "", this), new Among("issante", - 1, 1, "", this), new Among("i", - 1, 1, "", this), new Among("irai", 4, 1, "", this), new Among("ir", - 1, 1, "", this), new Among("iras", - 1, 1, "", this), new Among("ies", - 1, 1, "", this), new Among("\u00EEmes", - 1, 1, "", this), new Among("isses", - 1, 1, "", this), new Among("issantes", - 1, 1, "", this), new Among("\u00EEtes", - 1, 1, "", this), new Among("is", - 1, 1, "", this), new Among("irais", 13, 1, "", this), new Among("issais", 13, 1, "", this), new Among("irions", - 1, 1, "", this), new Among("issions", - 1, 1, "", this), new Among("irons", - 1, 1, "", this), new Among("issons", - 1, 1, "", this), new Among("issants", - 1, 1, "", this), new Among("it", - 1, 1, "", this), new Among("irait", 21, 1, "", this), new Among("issait", 21, 1, "", this), new Among("issant", - 1, 1, "", this), new Among("iraIent", - 1, 1, "", this), new Among("issaIent", - 1, 1, "", this), new Among("irent", - 1, 1, "", this), new Among("issent", - 1, 1, "", this), new Among("iront", - 1, 1, "", this), new Among("\u00EEt", - 1, 1, "", this), new Among("iriez", - 1, 1, "", this), new Among("issiez", - 1, 1, "", this), new Among("irez", - 1, 1, "", this), new Among("issez", - 1, 1, "", this)};
40  a_5 = new Among[]{new Among("a", - 1, 3, "", this), new Among("era", 0, 2, "", this), new Among("asse", - 1, 3, "", this), new Among("ante", - 1, 3, "", this), new Among("\u00E9e", - 1, 2, "", this), new Among("ai", - 1, 3, "", this), new Among("erai", 5, 2, "", this), new Among("er", - 1, 2, "", this), new Among("as", - 1, 3, "", this), new Among("eras", 8, 2, "", this), new Among("\u00E2mes", - 1, 3, "", this), new Among("asses", - 1, 3, "", this), new Among("antes", - 1, 3, "", this), new Among("\u00E2tes", - 1, 3, "", this), new Among("\u00E9es", - 1, 2, "", this), new Among("ais", - 1, 3, "", this), new Among("erais", 15, 2, "", this), new Among("ions", - 1, 1, "", this), new Among("erions", 17, 2, "", this), new Among("assions", 17, 3, "", this), new Among("erons", - 1, 2, "", this), new Among("ants", - 1, 3, "", this), new Among("\u00E9s", - 1, 2, "", this), new Among("ait", - 1, 3, "", this), new Among("erait", 23, 2, "", this), new Among("ant", - 1, 3, "", this), new Among("aIent", - 1, 3, "", this), new Among("eraIent", 26, 2, "", this), new Among("\u00E8rent", - 1, 2, "", this), new Among("assent", - 1, 3, "", this), new Among("eront", - 1, 2, "", this), new Among("\u00E2t", - 1, 3, "", this), new Among("ez", - 1, 2, "", this), new Among("iez", 32, 2, "", this), new Among("eriez", 33, 2, "", this), new Among("assiez", 33, 3, "", this), new Among("erez", 32, 2, "", this), new Among("\u00E9", - 1, 2, "", this)};
41  a_6 = new Among[]{new Among("e", - 1, 3, "", this), new Among("I\u00E8re", 0, 2, "", this), new Among("i\u00E8re", 0, 2, "", this), new Among("ion", - 1, 1, "", this), new Among("Ier", - 1, 2, "", this), new Among("ier", - 1, 2, "", this), new Among("\u00EB", - 1, 4, "", this)};
42  a_7 = new Among[]{new Among("ell", - 1, - 1, "", this), new Among("eill", - 1, - 1, "", this), new Among("enn", - 1, - 1, "", this), new Among("onn", - 1, - 1, "", this), new Among("ett", - 1, - 1, "", this)};
43  }
44 
45  private Among[] a_0;
46  private Among[] a_1;
47  private Among[] a_2;
48  private Among[] a_3;
49  private Among[] a_4;
50  private Among[] a_5;
51  private Among[] a_6;
52  private Among[] a_7;
53  private static readonly char[] g_v = new char[]{(char) (17), (char) (65), (char) (16), (char) (1), (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) (130), (char) (103), (char) (8), (char) (5)};
54  private static readonly char[] g_keep_with_s = new char[]{(char) (1), (char) (65), (char) (20), (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)};
55 
56  private int I_p2;
57  private int I_p1;
58  private int I_pV;
59  protected internal virtual void copy_from(FrenchStemmer other)
60  {
61  I_p2 = other.I_p2;
62  I_p1 = other.I_p1;
63  I_pV = other.I_pV;
64  base.copy_from(other);
65  }
66 
67  private bool r_prelude()
68  {
69  int v_1;
70  int v_2;
71  int v_3;
72  int v_4;
73  // repeat, line 38
74  while (true)
75  {
76  v_1 = cursor;
77  do
78  {
79  // goto, line 38
80  while (true)
81  {
82  v_2 = cursor;
83  do
84  {
85  // (, line 38
86  // or, line 44
87  do
88  {
89  v_3 = cursor;
90  do
91  {
92  // (, line 40
93  if (!(in_grouping(g_v, 97, 251)))
94  {
95  goto lab5_brk;
96  }
97  // [, line 40
98  bra = cursor;
99  // or, line 40
100  do
101  {
102  v_4 = cursor;
103  do
104  {
105  // (, line 40
106  // literal, line 40
107  if (!(eq_s(1, "u")))
108  {
109  goto lab7_brk;
110  }
111  // ], line 40
112  ket = cursor;
113  if (!(in_grouping(g_v, 97, 251)))
114  {
115  goto lab7_brk;
116  }
117  // <-, line 40
118  slice_from("U");
119  goto lab6_brk;
120  }
121  while (false);
122 
123 lab7_brk: ;
124 
125  cursor = v_4;
126  do
127  {
128  // (, line 41
129  // literal, line 41
130  if (!(eq_s(1, "i")))
131  {
132  goto lab8_brk;
133  }
134  // ], line 41
135  ket = cursor;
136  if (!(in_grouping(g_v, 97, 251)))
137  {
138  goto lab8_brk;
139  }
140  // <-, line 41
141  slice_from("I");
142  goto lab6_brk;
143  }
144  while (false);
145 
146 lab8_brk: ;
147 
148  cursor = v_4;
149  // (, line 42
150  // literal, line 42
151  if (!(eq_s(1, "y")))
152  {
153  goto lab5_brk;
154  }
155  // ], line 42
156  ket = cursor;
157  // <-, line 42
158  slice_from("Y");
159  }
160  while (false);
161 
162 lab6_brk: ;
163 
164  goto lab4_brk;
165  }
166  while (false);
167 
168 lab5_brk: ;
169 
170  cursor = v_3;
171  do
172  {
173  // (, line 45
174  // [, line 45
175  bra = cursor;
176  // literal, line 45
177  if (!(eq_s(1, "y")))
178  {
179  goto lab9_brk;
180  }
181  // ], line 45
182  ket = cursor;
183  if (!(in_grouping(g_v, 97, 251)))
184  {
185  goto lab9_brk;
186  }
187  // <-, line 45
188  slice_from("Y");
189  goto lab4_brk;
190  }
191  while (false);
192 
193 lab9_brk: ;
194 
195  cursor = v_3;
196  // (, line 47
197  // literal, line 47
198  if (!(eq_s(1, "q")))
199  {
200  goto lab3_brk;
201  }
202  // [, line 47
203  bra = cursor;
204  // literal, line 47
205  if (!(eq_s(1, "u")))
206  {
207  goto lab3_brk;
208  }
209  // ], line 47
210  ket = cursor;
211  // <-, line 47
212  slice_from("U");
213  }
214  while (false);
215 
216 lab4_brk: ;
217 
218  cursor = v_2;
219  goto golab2_brk;
220  }
221  while (false);
222 
223 lab3_brk: ;
224 
225  cursor = v_2;
226  if (cursor >= limit)
227  {
228  goto lab1_brk;
229  }
230  cursor++;
231  }
232 
233 golab2_brk: ;
234 
235  goto replab0;
236  }
237  while (false);
238 
239 lab1_brk: ;
240 
241  cursor = v_1;
242  goto replab0_brk;
243 
244 replab0: ;
245  }
246 
247 replab0_brk: ;
248 
249  return true;
250  }
251 
252  private bool r_mark_regions()
253  {
254  int v_1;
255  int v_2;
256  int v_4;
257  // (, line 50
258  I_pV = limit;
259  I_p1 = limit;
260  I_p2 = limit;
261  // do, line 56
262  v_1 = cursor;
263  do
264  {
265  // (, line 56
266  // or, line 57
267  do
268  {
269  v_2 = cursor;
270  do
271  {
272  // (, line 57
273  if (!(in_grouping(g_v, 97, 251)))
274  {
275  goto lab2_brk;
276  }
277  if (!(in_grouping(g_v, 97, 251)))
278  {
279  goto lab2_brk;
280  }
281  // next, line 57
282  if (cursor >= limit)
283  {
284  goto lab2_brk;
285  }
286  cursor++;
287  goto lab1_brk;
288  }
289  while (false);
290 
291 lab2_brk: ;
292 
293  cursor = v_2;
294  // (, line 57
295  // next, line 57
296  if (cursor >= limit)
297  {
298  goto lab0_brk;
299  }
300  cursor++;
301  // gopast, line 57
302  while (true)
303  {
304  do
305  {
306  if (!(in_grouping(g_v, 97, 251)))
307  {
308  goto lab4_brk;
309  }
310  goto golab3_brk;
311  }
312  while (false);
313 
314 lab4_brk: ;
315 
316  if (cursor >= limit)
317  {
318  goto lab0_brk;
319  }
320  cursor++;
321  }
322 
323 golab3_brk: ;
324 
325  }
326  while (false);
327 
328 lab1_brk: ;
329  // setmark pV, line 58
330  I_pV = cursor;
331  }
332  while (false);
333 
334 lab0_brk: ;
335 
336  cursor = v_1;
337  // do, line 60
338  v_4 = cursor;
339  do
340  {
341  // (, line 60
342  // gopast, line 61
343  while (true)
344  {
345  do
346  {
347  if (!(in_grouping(g_v, 97, 251)))
348  {
349  goto lab7_brk;
350  }
351  goto golab6_brk;
352  }
353  while (false);
354 
355 lab7_brk: ;
356 
357  if (cursor >= limit)
358  {
359  goto lab5_brk;
360  }
361  cursor++;
362  }
363 
364 golab6_brk: ;
365 
366  // gopast, line 61
367  while (true)
368  {
369  do
370  {
371  if (!(out_grouping(g_v, 97, 251)))
372  {
373  goto lab9_brk;
374  }
375  goto golab8_brk;
376  }
377  while (false);
378 
379 lab9_brk: ;
380 
381  if (cursor >= limit)
382  {
383  goto lab5_brk;
384  }
385  cursor++;
386  }
387 
388 golab8_brk: ;
389 
390  // setmark p1, line 61
391  I_p1 = cursor;
392  // gopast, line 62
393  while (true)
394  {
395  do
396  {
397  if (!(in_grouping(g_v, 97, 251)))
398  {
399  goto lab11_brk;
400  }
401  goto golab10_brk;
402  }
403  while (false);
404 
405 lab11_brk: ;
406 
407  if (cursor >= limit)
408  {
409  goto lab5_brk;
410  }
411  cursor++;
412  }
413 
414 golab10_brk: ;
415 
416  // gopast, line 62
417  while (true)
418  {
419  do
420  {
421  if (!(out_grouping(g_v, 97, 251)))
422  {
423  goto lab13_brk;
424  }
425  goto golab12_brk;
426  }
427  while (false);
428 
429 lab13_brk: ;
430 
431  if (cursor >= limit)
432  {
433  goto lab5_brk;
434  }
435  cursor++;
436  }
437 
438 golab12_brk: ;
439 
440  // setmark p2, line 62
441  I_p2 = cursor;
442  }
443  while (false);
444 
445 lab5_brk: ;
446 
447  cursor = v_4;
448  return true;
449  }
450 
451  private bool r_postlude()
452  {
453  int among_var;
454  int v_1;
455  // repeat, line 66
456  while (true)
457  {
458  v_1 = cursor;
459  do
460  {
461  // (, line 66
462  // [, line 68
463  bra = cursor;
464  // substring, line 68
465  among_var = find_among(a_0, 4);
466  if (among_var == 0)
467  {
468  goto lab10_brk;
469  }
470  // ], line 68
471  ket = cursor;
472  switch (among_var)
473  {
474 
475  case 0:
476  goto lab10_brk;
477 
478  case 1:
479  // (, line 69
480  // <-, line 69
481  slice_from("i");
482  break;
483 
484  case 2:
485  // (, line 70
486  // <-, line 70
487  slice_from("u");
488  break;
489 
490  case 3:
491  // (, line 71
492  // <-, line 71
493  slice_from("y");
494  break;
495 
496  case 4:
497  // (, line 72
498  // next, line 72
499  if (cursor >= limit)
500  {
501  goto lab10_brk;
502  }
503  cursor++;
504  break;
505  }
506  goto replab1;
507  }
508  while (false);
509 
510 lab10_brk: ;
511 
512  cursor = v_1;
513  goto replab1_brk;
514 
515 replab1: ;
516  }
517 
518 replab1_brk: ;
519 
520  return true;
521  }
522 
523  private bool r_RV()
524  {
525  if (!(I_pV <= cursor))
526  {
527  return false;
528  }
529  return true;
530  }
531 
532  private bool r_R1()
533  {
534  if (!(I_p1 <= cursor))
535  {
536  return false;
537  }
538  return true;
539  }
540 
541  private bool r_R2()
542  {
543  if (!(I_p2 <= cursor))
544  {
545  return false;
546  }
547  return true;
548  }
549 
550  private bool r_standard_suffix()
551  {
552  int among_var;
553  int v_1;
554  int v_2;
555  int v_3;
556  int v_4;
557  int v_5;
558  int v_6;
559  int v_7;
560  int v_8;
561  int v_9;
562  int v_10;
563  int v_11;
564  // (, line 82
565  // [, line 83
566  ket = cursor;
567  // substring, line 83
568  among_var = find_among_b(a_3, 43);
569  if (among_var == 0)
570  {
571  return false;
572  }
573  // ], line 83
574  bra = cursor;
575  switch (among_var)
576  {
577 
578  case 0:
579  return false;
580 
581  case 1:
582  // (, line 87
583  // call R2, line 87
584  if (!r_R2())
585  {
586  return false;
587  }
588  // delete, line 87
589  slice_del();
590  break;
591 
592  case 2:
593  // (, line 90
594  // call R2, line 90
595  if (!r_R2())
596  {
597  return false;
598  }
599  // delete, line 90
600  slice_del();
601  // try, line 91
602  v_1 = limit - cursor;
603  do
604  {
605  // (, line 91
606  // [, line 91
607  ket = cursor;
608  // literal, line 91
609  if (!(eq_s_b(2, "ic")))
610  {
611  cursor = limit - v_1;
612  goto lab0_brk;
613  }
614  // ], line 91
615  bra = cursor;
616  // or, line 91
617  do
618  {
619  v_2 = limit - cursor;
620  do
621  {
622  // (, line 91
623  // call R2, line 91
624  if (!r_R2())
625  {
626  goto lab2_brk;
627  }
628  // delete, line 91
629  slice_del();
630  goto lab1_brk;
631  }
632  while (false);
633 
634 lab2_brk: ;
635 
636  cursor = limit - v_2;
637  // <-, line 91
638  slice_from("iqU");
639  }
640  while (false);
641 
642 lab1_brk: ;
643  }
644  while (false);
645 
646 lab0_brk: ;
647 
648  break;
649 
650  case 3:
651  // (, line 95
652  // call R2, line 95
653  if (!r_R2())
654  {
655  return false;
656  }
657  // <-, line 95
658  slice_from("log");
659  break;
660 
661  case 4:
662  // (, line 98
663  // call R2, line 98
664  if (!r_R2())
665  {
666  return false;
667  }
668  // <-, line 98
669  slice_from("u");
670  break;
671 
672  case 5:
673  // (, line 101
674  // call R2, line 101
675  if (!r_R2())
676  {
677  return false;
678  }
679  // <-, line 101
680  slice_from("ent");
681  break;
682 
683  case 6:
684  // (, line 104
685  // call RV, line 105
686  if (!r_RV())
687  {
688  return false;
689  }
690  // delete, line 105
691  slice_del();
692  // try, line 106
693  v_3 = limit - cursor;
694  do
695  {
696  // (, line 106
697  // [, line 107
698  ket = cursor;
699  // substring, line 107
700  among_var = find_among_b(a_1, 6);
701  if (among_var == 0)
702  {
703  cursor = limit - v_3;
704  goto lab3_brk;
705  }
706  // ], line 107
707  bra = cursor;
708  switch (among_var)
709  {
710 
711  case 0:
712  cursor = limit - v_3;
713  goto lab3_brk;
714 
715  case 1:
716  // (, line 108
717  // call R2, line 108
718  if (!r_R2())
719  {
720  cursor = limit - v_3;
721  goto lab3_brk;
722  }
723  // delete, line 108
724  slice_del();
725  // [, line 108
726  ket = cursor;
727  // literal, line 108
728  if (!(eq_s_b(2, "at")))
729  {
730  cursor = limit - v_3;
731  goto lab3_brk;
732  }
733  // ], line 108
734  bra = cursor;
735  // call R2, line 108
736  if (!r_R2())
737  {
738  cursor = limit - v_3;
739  goto lab3_brk;
740  }
741  // delete, line 108
742  slice_del();
743  break;
744 
745  case 2:
746  // (, line 109
747  // or, line 109
748  do
749  {
750  v_4 = limit - cursor;
751  do
752  {
753  // (, line 109
754  // call R2, line 109
755  if (!r_R2())
756  {
757  goto lab5_brk;
758  }
759  // delete, line 109
760  slice_del();
761  goto lab4_brk;
762  }
763  while (false);
764 
765 lab5_brk: ;
766 
767  cursor = limit - v_4;
768  // (, line 109
769  // call R1, line 109
770  if (!r_R1())
771  {
772  cursor = limit - v_3;
773  goto lab3_brk;
774  }
775  // <-, line 109
776  slice_from("eux");
777  }
778  while (false);
779 
780 lab4_brk: ;
781 
782  break;
783 
784  case 3:
785  // (, line 111
786  // call R2, line 111
787  if (!r_R2())
788  {
789  cursor = limit - v_3;
790  goto lab3_brk;
791  }
792  // delete, line 111
793  slice_del();
794  break;
795 
796  case 4:
797  // (, line 113
798  // call RV, line 113
799  if (!r_RV())
800  {
801  cursor = limit - v_3;
802  goto lab3_brk;
803  }
804  // <-, line 113
805  slice_from("i");
806  break;
807  }
808  }
809  while (false);
810 
811 lab3_brk: ;
812 
813  break;
814 
815  case 7:
816  // (, line 119
817  // call R2, line 120
818  if (!r_R2())
819  {
820  return false;
821  }
822  // delete, line 120
823  slice_del();
824  // try, line 121
825  v_5 = limit - cursor;
826  do
827  {
828  // (, line 121
829  // [, line 122
830  ket = cursor;
831  // substring, line 122
832  among_var = find_among_b(a_2, 3);
833  if (among_var == 0)
834  {
835  cursor = limit - v_5;
836  goto lab6_brk;
837  }
838  // ], line 122
839  bra = cursor;
840  switch (among_var)
841  {
842 
843  case 0:
844  cursor = limit - v_5;
845  goto lab6_brk;
846 
847  case 1:
848  // (, line 123
849  // or, line 123
850  do
851  {
852  v_6 = limit - cursor;
853  do
854  {
855  // (, line 123
856  // call R2, line 123
857  if (!r_R2())
858  {
859  goto lab8_brk;
860  }
861  // delete, line 123
862  slice_del();
863  goto lab7_brk;
864  }
865  while (false);
866 
867 lab8_brk: ;
868 
869  cursor = limit - v_6;
870  // <-, line 123
871  slice_from("abl");
872  }
873  while (false);
874 
875 lab7_brk: ;
876  break;
877 
878  case 2:
879  // (, line 124
880  // or, line 124
881  do
882  {
883  v_7 = limit - cursor;
884  do
885  {
886  // (, line 124
887  // call R2, line 124
888  if (!r_R2())
889  {
890  goto lab10_brk;
891  }
892  // delete, line 124
893  slice_del();
894  goto lab9_brk;
895  }
896  while (false);
897 
898 lab10_brk: ;
899 
900  cursor = limit - v_7;
901  // <-, line 124
902  slice_from("iqU");
903  }
904  while (false);
905 
906 lab9_brk: ;
907 
908  break;
909 
910  case 3:
911  // (, line 125
912  // call R2, line 125
913  if (!r_R2())
914  {
915  cursor = limit - v_5;
916  goto lab6_brk;
917  }
918  // delete, line 125
919  slice_del();
920  break;
921  }
922  }
923  while (false);
924 
925 lab6_brk: ;
926 
927  break;
928 
929  case 8:
930  // (, line 131
931  // call R2, line 132
932  if (!r_R2())
933  {
934  return false;
935  }
936  // delete, line 132
937  slice_del();
938  // try, line 133
939  v_8 = limit - cursor;
940  do
941  {
942  // (, line 133
943  // [, line 133
944  ket = cursor;
945  // literal, line 133
946  if (!(eq_s_b(2, "at")))
947  {
948  cursor = limit - v_8;
949  goto lab11_brk;
950  }
951  // ], line 133
952  bra = cursor;
953  // call R2, line 133
954  if (!r_R2())
955  {
956  cursor = limit - v_8;
957  goto lab11_brk;
958  }
959  // delete, line 133
960  slice_del();
961  // [, line 133
962  ket = cursor;
963  // literal, line 133
964  if (!(eq_s_b(2, "ic")))
965  {
966  cursor = limit - v_8;
967  goto lab11_brk;
968  }
969  // ], line 133
970  bra = cursor;
971  // or, line 133
972  do
973  {
974  v_9 = limit - cursor;
975  do
976  {
977  // (, line 133
978  // call R2, line 133
979  if (!r_R2())
980  {
981  goto lab13_brk;
982  }
983  // delete, line 133
984  slice_del();
985  goto lab12_brk;
986  }
987  while (false);
988 
989 lab13_brk: ;
990 
991  cursor = limit - v_9;
992  // <-, line 133
993  slice_from("iqU");
994  }
995  while (false);
996 
997 lab12_brk: ;
998 
999  }
1000  while (false);
1001 
1002 lab11_brk: ;
1003 
1004  break;
1005 
1006  case 9:
1007  // (, line 135
1008  // <-, line 135
1009  slice_from("eau");
1010  break;
1011 
1012  case 10:
1013  // (, line 136
1014  // call R1, line 136
1015  if (!r_R1())
1016  {
1017  return false;
1018  }
1019  // <-, line 136
1020  slice_from("al");
1021  break;
1022 
1023  case 11:
1024  // (, line 138
1025  // or, line 138
1026  do
1027  {
1028  v_10 = limit - cursor;
1029  do
1030  {
1031  // (, line 138
1032  // call R2, line 138
1033  if (!r_R2())
1034  {
1035  goto lab15_brk;
1036  }
1037  // delete, line 138
1038  slice_del();
1039  goto lab14_brk;
1040  }
1041  while (false);
1042 
1043 lab15_brk: ;
1044 
1045  cursor = limit - v_10;
1046  // (, line 138
1047  // call R1, line 138
1048  if (!r_R1())
1049  {
1050  return false;
1051  }
1052  // <-, line 138
1053  slice_from("eux");
1054  }
1055  while (false);
1056 
1057 lab14_brk: ;
1058 
1059  break;
1060 
1061  case 12:
1062  // (, line 141
1063  // call R1, line 141
1064  if (!r_R1())
1065  {
1066  return false;
1067  }
1068  if (!(out_grouping_b(g_v, 97, 251)))
1069  {
1070  return false;
1071  }
1072  // delete, line 141
1073  slice_del();
1074  break;
1075 
1076  case 13:
1077  // (, line 146
1078  // call RV, line 146
1079  if (!r_RV())
1080  {
1081  return false;
1082  }
1083  // fail, line 146
1084  // (, line 146
1085  // <-, line 146
1086  slice_from("ant");
1087  return false;
1088 
1089  case 14:
1090  // (, line 147
1091  // call RV, line 147
1092  if (!r_RV())
1093  {
1094  return false;
1095  }
1096  // fail, line 147
1097  // (, line 147
1098  // <-, line 147
1099  slice_from("ent");
1100  return false;
1101 
1102  case 15:
1103  // (, line 149
1104  // test, line 149
1105  v_11 = limit - cursor;
1106  // (, line 149
1107  if (!(in_grouping_b(g_v, 97, 251)))
1108  {
1109  return false;
1110  }
1111  // call RV, line 149
1112  if (!r_RV())
1113  {
1114  return false;
1115  }
1116  cursor = limit - v_11;
1117  // fail, line 149
1118  // (, line 149
1119  // delete, line 149
1120  slice_del();
1121  return false;
1122  }
1123  return true;
1124  }
1125 
1126  private bool r_i_verb_suffix()
1127  {
1128  int among_var;
1129  int v_1;
1130  int v_2;
1131  // setlimit, line 154
1132  v_1 = limit - cursor;
1133  // tomark, line 154
1134  if (cursor < I_pV)
1135  {
1136  return false;
1137  }
1138  cursor = I_pV;
1139  v_2 = limit_backward;
1140  limit_backward = cursor;
1141  cursor = limit - v_1;
1142  // (, line 154
1143  // [, line 155
1144  ket = cursor;
1145  // substring, line 155
1146  among_var = find_among_b(a_4, 35);
1147  if (among_var == 0)
1148  {
1149  limit_backward = v_2;
1150  return false;
1151  }
1152  // ], line 155
1153  bra = cursor;
1154  switch (among_var)
1155  {
1156 
1157  case 0:
1158  limit_backward = v_2;
1159  return false;
1160 
1161  case 1:
1162  // (, line 161
1163  if (!(out_grouping_b(g_v, 97, 251)))
1164  {
1165  limit_backward = v_2;
1166  return false;
1167  }
1168  // delete, line 161
1169  slice_del();
1170  break;
1171  }
1172  limit_backward = v_2;
1173  return true;
1174  }
1175 
1176  private bool r_verb_suffix()
1177  {
1178  int among_var;
1179  int v_1;
1180  int v_2;
1181  int v_3;
1182  // setlimit, line 165
1183  v_1 = limit - cursor;
1184  // tomark, line 165
1185  if (cursor < I_pV)
1186  {
1187  return false;
1188  }
1189  cursor = I_pV;
1190  v_2 = limit_backward;
1191  limit_backward = cursor;
1192  cursor = limit - v_1;
1193  // (, line 165
1194  // [, line 166
1195  ket = cursor;
1196  // substring, line 166
1197  among_var = find_among_b(a_5, 38);
1198  if (among_var == 0)
1199  {
1200  limit_backward = v_2;
1201  return false;
1202  }
1203  // ], line 166
1204  bra = cursor;
1205  switch (among_var)
1206  {
1207 
1208  case 0:
1209  limit_backward = v_2;
1210  return false;
1211 
1212  case 1:
1213  // (, line 168
1214  // call R2, line 168
1215  if (!r_R2())
1216  {
1217  limit_backward = v_2;
1218  return false;
1219  }
1220  // delete, line 168
1221  slice_del();
1222  break;
1223 
1224  case 2:
1225  // (, line 176
1226  // delete, line 176
1227  slice_del();
1228  break;
1229 
1230  case 3:
1231  // (, line 181
1232  // delete, line 181
1233  slice_del();
1234  // try, line 182
1235  v_3 = limit - cursor;
1236  do
1237  {
1238  // (, line 182
1239  // [, line 182
1240  ket = cursor;
1241  // literal, line 182
1242  if (!(eq_s_b(1, "e")))
1243  {
1244  cursor = limit - v_3;
1245  goto lab16_brk;
1246  }
1247  // ], line 182
1248  bra = cursor;
1249  // delete, line 182
1250  slice_del();
1251  }
1252  while (false);
1253 
1254 lab16_brk: ;
1255 
1256  break;
1257  }
1258  limit_backward = v_2;
1259  return true;
1260  }
1261 
1262  private bool r_residual_suffix()
1263  {
1264  int among_var;
1265  int v_1;
1266  int v_2;
1267  int v_3;
1268  int v_4;
1269  int v_5;
1270  // (, line 189
1271  // try, line 190
1272  v_1 = limit - cursor;
1273  do
1274  {
1275  // (, line 190
1276  // [, line 190
1277  ket = cursor;
1278  // literal, line 190
1279  if (!(eq_s_b(1, "s")))
1280  {
1281  cursor = limit - v_1;
1282  goto lab0_brk;
1283  }
1284  // ], line 190
1285  bra = cursor;
1286  // test, line 190
1287  v_2 = limit - cursor;
1288  if (!(out_grouping_b(g_keep_with_s, 97, 232)))
1289  {
1290  cursor = limit - v_1;
1291  goto lab0_brk;
1292  }
1293  cursor = limit - v_2;
1294  // delete, line 190
1295  slice_del();
1296  }
1297  while (false);
1298 
1299 lab0_brk: ;
1300 
1301  // setlimit, line 191
1302  v_3 = limit - cursor;
1303  // tomark, line 191
1304  if (cursor < I_pV)
1305  {
1306  return false;
1307  }
1308  cursor = I_pV;
1309  v_4 = limit_backward;
1310  limit_backward = cursor;
1311  cursor = limit - v_3;
1312  // (, line 191
1313  // [, line 192
1314  ket = cursor;
1315  // substring, line 192
1316  among_var = find_among_b(a_6, 7);
1317  if (among_var == 0)
1318  {
1319  limit_backward = v_4;
1320  return false;
1321  }
1322  // ], line 192
1323  bra = cursor;
1324  switch (among_var)
1325  {
1326 
1327  case 0:
1328  limit_backward = v_4;
1329  return false;
1330 
1331  case 1:
1332  // (, line 193
1333  // call R2, line 193
1334  if (!r_R2())
1335  {
1336  limit_backward = v_4;
1337  return false;
1338  }
1339  // or, line 193
1340  do
1341  {
1342  v_5 = limit - cursor;
1343  do
1344  {
1345  // literal, line 193
1346  if (!(eq_s_b(1, "s")))
1347  {
1348  goto lab2_brk;
1349  }
1350  goto lab1_brk;
1351  }
1352  while (false);
1353 
1354 lab2_brk: ;
1355 
1356  cursor = limit - v_5;
1357  // literal, line 193
1358  if (!(eq_s_b(1, "t")))
1359  {
1360  limit_backward = v_4;
1361  return false;
1362  }
1363  }
1364  while (false);
1365 
1366 lab1_brk: ;
1367 
1368  // delete, line 193
1369  slice_del();
1370  break;
1371 
1372  case 2:
1373  // (, line 195
1374  // <-, line 195
1375  slice_from("i");
1376  break;
1377 
1378  case 3:
1379  // (, line 196
1380  // delete, line 196
1381  slice_del();
1382  break;
1383 
1384  case 4:
1385  // (, line 197
1386  // literal, line 197
1387  if (!(eq_s_b(2, "gu")))
1388  {
1389  limit_backward = v_4;
1390  return false;
1391  }
1392  // delete, line 197
1393  slice_del();
1394  break;
1395  }
1396  limit_backward = v_4;
1397  return true;
1398  }
1399 
1400  private bool r_un_double()
1401  {
1402  int v_1;
1403  // (, line 202
1404  // test, line 203
1405  v_1 = limit - cursor;
1406  // among, line 203
1407  if (find_among_b(a_7, 5) == 0)
1408  {
1409  return false;
1410  }
1411  cursor = limit - v_1;
1412  // [, line 203
1413  ket = cursor;
1414  // next, line 203
1415  if (cursor <= limit_backward)
1416  {
1417  return false;
1418  }
1419  cursor--;
1420  // ], line 203
1421  bra = cursor;
1422  // delete, line 203
1423  slice_del();
1424  return true;
1425  }
1426 
1427  private bool r_un_accent()
1428  {
1429  int v_3;
1430  // (, line 206
1431  // atleast, line 207
1432  {
1433  int v_1 = 1;
1434  // atleast, line 207
1435  while (true)
1436  {
1437  do
1438  {
1439  if (!(out_grouping_b(g_v, 97, 251)))
1440  {
1441  goto lab16_brk;
1442  }
1443  v_1--;
1444  goto replab1;
1445  }
1446  while (false);
1447 
1448 lab16_brk: ;
1449 
1450  goto replab1_brk;
1451 
1452 replab1: ;
1453  }
1454 
1455 replab1_brk: ;
1456 
1457  if (v_1 > 0)
1458  {
1459  return false;
1460  }
1461  }
1462  // [, line 208
1463  ket = cursor;
1464  // or, line 208
1465 lab16:
1466  do
1467  {
1468  v_3 = limit - cursor;
1469  do
1470  {
1471  // literal, line 208
1472  if (!(eq_s_b(1, "\u00E9")))
1473  {
1474  goto lab16_brk;
1475  }
1476  goto lab16_brk;
1477  }
1478  while (false);
1479 
1480 lab16_brk: ;
1481 
1482  cursor = limit - v_3;
1483  // literal, line 208
1484  if (!(eq_s_b(1, "\u00E8")))
1485  {
1486  return false;
1487  }
1488  }
1489  while (false);
1490  // ], line 208
1491  bra = cursor;
1492  // <-, line 208
1493  slice_from("e");
1494  return true;
1495  }
1496 
1497  public override bool Stem()
1498  {
1499  int v_1;
1500  int v_2;
1501  int v_3;
1502  int v_4;
1503  int v_5;
1504  int v_6;
1505  int v_7;
1506  int v_8;
1507  int v_9;
1508  int v_10;
1509  int v_11;
1510  // (, line 212
1511  // do, line 214
1512  v_1 = cursor;
1513  do
1514  {
1515  // call prelude, line 214
1516  if (!r_prelude())
1517  {
1518  goto lab0_brk;
1519  }
1520  }
1521  while (false);
1522 
1523 lab0_brk: ;
1524 
1525  cursor = v_1;
1526  // do, line 215
1527  v_2 = cursor;
1528  do
1529  {
1530  // call mark_regions, line 215
1531  if (!r_mark_regions())
1532  {
1533  goto lab1_brk;
1534  }
1535  }
1536  while (false);
1537 
1538 lab1_brk: ;
1539 
1540  cursor = v_2;
1541  // backwards, line 216
1542  limit_backward = cursor; cursor = limit;
1543  // (, line 216
1544  // do, line 218
1545  v_3 = limit - cursor;
1546  do
1547  {
1548  // (, line 218
1549  // or, line 228
1550  do
1551  {
1552  v_4 = limit - cursor;
1553  do
1554  {
1555  // (, line 219
1556  // and, line 224
1557  v_5 = limit - cursor;
1558  // (, line 220
1559  // or, line 220
1560  do
1561  {
1562  v_6 = limit - cursor;
1563  do
1564  {
1565  // call standard_suffix, line 220
1566  if (!r_standard_suffix())
1567  {
1568  goto lab6_brk;
1569  }
1570  goto lab5_brk;
1571  }
1572  while (false);
1573 
1574 lab6_brk: ;
1575 
1576  cursor = limit - v_6;
1577  do
1578  {
1579  // call i_verb_suffix, line 221
1580  if (!r_i_verb_suffix())
1581  {
1582  goto lab7_brk;
1583  }
1584  goto lab5_brk;
1585  }
1586  while (false);
1587 
1588 lab7_brk: ;
1589 
1590  cursor = limit - v_6;
1591  // call verb_suffix, line 222
1592  if (!r_verb_suffix())
1593  {
1594  goto lab4_brk;
1595  }
1596  }
1597  while (false);
1598 
1599 lab5_brk: ;
1600 
1601  cursor = limit - v_5;
1602  // try, line 225
1603  v_7 = limit - cursor;
1604  do
1605  {
1606  // (, line 225
1607  // [, line 225
1608  ket = cursor;
1609  // or, line 225
1610  do
1611  {
1612  v_8 = limit - cursor;
1613  do
1614  {
1615  // (, line 225
1616  // literal, line 225
1617  if (!(eq_s_b(1, "Y")))
1618  {
1619  goto lab10_brk;
1620  }
1621  // ], line 225
1622  bra = cursor;
1623  // <-, line 225
1624  slice_from("i");
1625  goto lab9_brk;
1626  }
1627  while (false);
1628 
1629 lab10_brk: ;
1630 
1631  cursor = limit - v_8;
1632  // (, line 226
1633  // literal, line 226
1634  if (!(eq_s_b(1, "\u00E7")))
1635  {
1636  cursor = limit - v_7;
1637  goto lab8_brk;
1638  }
1639  // ], line 226
1640  bra = cursor;
1641  // <-, line 226
1642  slice_from("c");
1643  }
1644  while (false);
1645 
1646 lab9_brk: ;
1647 
1648  }
1649  while (false);
1650 
1651 lab8_brk: ;
1652 
1653  goto lab3_brk;
1654  }
1655  while (false);
1656 
1657 lab4_brk: ;
1658 
1659  cursor = limit - v_4;
1660  // call residual_suffix, line 229
1661  if (!r_residual_suffix())
1662  {
1663  goto lab2_brk;
1664  }
1665  }
1666  while (false);
1667 
1668 lab3_brk: ;
1669 
1670  }
1671  while (false);
1672 
1673 lab2_brk: ;
1674 
1675  cursor = limit - v_3;
1676  // do, line 234
1677  v_9 = limit - cursor;
1678  do
1679  {
1680  // call un_double, line 234
1681  if (!r_un_double())
1682  {
1683  goto lab11_brk;
1684  }
1685  }
1686  while (false);
1687 
1688 lab11_brk: ;
1689 
1690  cursor = limit - v_9;
1691  // do, line 235
1692  v_10 = limit - cursor;
1693  do
1694  {
1695  // call un_accent, line 235
1696  if (!r_un_accent())
1697  {
1698  goto lab12_brk;
1699  }
1700  }
1701  while (false);
1702 
1703 lab12_brk: ;
1704 
1705  cursor = limit - v_10;
1706  cursor = limit_backward; // do, line 237
1707  v_11 = cursor;
1708  do
1709  {
1710  // call postlude, line 237
1711  if (!r_postlude())
1712  {
1713  goto lab13_brk;
1714  }
1715  }
1716  while (false);
1717 
1718 lab13_brk: ;
1719 
1720  cursor = v_11;
1721  return true;
1722  }
1723  }
1724 }