add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / analyzers / common / src / java / org / tartarus / snowball / ext / RussianStemmer.java
1 // This file was generated automatically by the Snowball to Java compiler
2
3 package org.tartarus.snowball.ext;
4 import org.tartarus.snowball.SnowballProgram;
5 import org.tartarus.snowball.Among;
6
7 /**
8  * Generated class implementing code defined by a snowball script.
9  */
10 public class RussianStemmer extends SnowballProgram {
11
12         private Among a_0[] = {
13             new Among ( "\u0432", -1, 1, "", this),
14             new Among ( "\u0438\u0432", 0, 2, "", this),
15             new Among ( "\u044B\u0432", 0, 2, "", this),
16             new Among ( "\u0432\u0448\u0438", -1, 1, "", this),
17             new Among ( "\u0438\u0432\u0448\u0438", 3, 2, "", this),
18             new Among ( "\u044B\u0432\u0448\u0438", 3, 2, "", this),
19             new Among ( "\u0432\u0448\u0438\u0441\u044C", -1, 1, "", this),
20             new Among ( "\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2, "", this),
21             new Among ( "\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2, "", this)
22         };
23
24         private Among a_1[] = {
25             new Among ( "\u0435\u0435", -1, 1, "", this),
26             new Among ( "\u0438\u0435", -1, 1, "", this),
27             new Among ( "\u043E\u0435", -1, 1, "", this),
28             new Among ( "\u044B\u0435", -1, 1, "", this),
29             new Among ( "\u0438\u043C\u0438", -1, 1, "", this),
30             new Among ( "\u044B\u043C\u0438", -1, 1, "", this),
31             new Among ( "\u0435\u0439", -1, 1, "", this),
32             new Among ( "\u0438\u0439", -1, 1, "", this),
33             new Among ( "\u043E\u0439", -1, 1, "", this),
34             new Among ( "\u044B\u0439", -1, 1, "", this),
35             new Among ( "\u0435\u043C", -1, 1, "", this),
36             new Among ( "\u0438\u043C", -1, 1, "", this),
37             new Among ( "\u043E\u043C", -1, 1, "", this),
38             new Among ( "\u044B\u043C", -1, 1, "", this),
39             new Among ( "\u0435\u0433\u043E", -1, 1, "", this),
40             new Among ( "\u043E\u0433\u043E", -1, 1, "", this),
41             new Among ( "\u0435\u043C\u0443", -1, 1, "", this),
42             new Among ( "\u043E\u043C\u0443", -1, 1, "", this),
43             new Among ( "\u0438\u0445", -1, 1, "", this),
44             new Among ( "\u044B\u0445", -1, 1, "", this),
45             new Among ( "\u0435\u044E", -1, 1, "", this),
46             new Among ( "\u043E\u044E", -1, 1, "", this),
47             new Among ( "\u0443\u044E", -1, 1, "", this),
48             new Among ( "\u044E\u044E", -1, 1, "", this),
49             new Among ( "\u0430\u044F", -1, 1, "", this),
50             new Among ( "\u044F\u044F", -1, 1, "", this)
51         };
52
53         private Among a_2[] = {
54             new Among ( "\u0435\u043C", -1, 1, "", this),
55             new Among ( "\u043D\u043D", -1, 1, "", this),
56             new Among ( "\u0432\u0448", -1, 1, "", this),
57             new Among ( "\u0438\u0432\u0448", 2, 2, "", this),
58             new Among ( "\u044B\u0432\u0448", 2, 2, "", this),
59             new Among ( "\u0449", -1, 1, "", this),
60             new Among ( "\u044E\u0449", 5, 1, "", this),
61             new Among ( "\u0443\u044E\u0449", 6, 2, "", this)
62         };
63
64         private Among a_3[] = {
65             new Among ( "\u0441\u044C", -1, 1, "", this),
66             new Among ( "\u0441\u044F", -1, 1, "", this)
67         };
68
69         private Among a_4[] = {
70             new Among ( "\u043B\u0430", -1, 1, "", this),
71             new Among ( "\u0438\u043B\u0430", 0, 2, "", this),
72             new Among ( "\u044B\u043B\u0430", 0, 2, "", this),
73             new Among ( "\u043D\u0430", -1, 1, "", this),
74             new Among ( "\u0435\u043D\u0430", 3, 2, "", this),
75             new Among ( "\u0435\u0442\u0435", -1, 1, "", this),
76             new Among ( "\u0438\u0442\u0435", -1, 2, "", this),
77             new Among ( "\u0439\u0442\u0435", -1, 1, "", this),
78             new Among ( "\u0435\u0439\u0442\u0435", 7, 2, "", this),
79             new Among ( "\u0443\u0439\u0442\u0435", 7, 2, "", this),
80             new Among ( "\u043B\u0438", -1, 1, "", this),
81             new Among ( "\u0438\u043B\u0438", 10, 2, "", this),
82             new Among ( "\u044B\u043B\u0438", 10, 2, "", this),
83             new Among ( "\u0439", -1, 1, "", this),
84             new Among ( "\u0435\u0439", 13, 2, "", this),
85             new Among ( "\u0443\u0439", 13, 2, "", this),
86             new Among ( "\u043B", -1, 1, "", this),
87             new Among ( "\u0438\u043B", 16, 2, "", this),
88             new Among ( "\u044B\u043B", 16, 2, "", this),
89             new Among ( "\u0435\u043C", -1, 1, "", this),
90             new Among ( "\u0438\u043C", -1, 2, "", this),
91             new Among ( "\u044B\u043C", -1, 2, "", this),
92             new Among ( "\u043D", -1, 1, "", this),
93             new Among ( "\u0435\u043D", 22, 2, "", this),
94             new Among ( "\u043B\u043E", -1, 1, "", this),
95             new Among ( "\u0438\u043B\u043E", 24, 2, "", this),
96             new Among ( "\u044B\u043B\u043E", 24, 2, "", this),
97             new Among ( "\u043D\u043E", -1, 1, "", this),
98             new Among ( "\u0435\u043D\u043E", 27, 2, "", this),
99             new Among ( "\u043D\u043D\u043E", 27, 1, "", this),
100             new Among ( "\u0435\u0442", -1, 1, "", this),
101             new Among ( "\u0443\u0435\u0442", 30, 2, "", this),
102             new Among ( "\u0438\u0442", -1, 2, "", this),
103             new Among ( "\u044B\u0442", -1, 2, "", this),
104             new Among ( "\u044E\u0442", -1, 1, "", this),
105             new Among ( "\u0443\u044E\u0442", 34, 2, "", this),
106             new Among ( "\u044F\u0442", -1, 2, "", this),
107             new Among ( "\u043D\u044B", -1, 1, "", this),
108             new Among ( "\u0435\u043D\u044B", 37, 2, "", this),
109             new Among ( "\u0442\u044C", -1, 1, "", this),
110             new Among ( "\u0438\u0442\u044C", 39, 2, "", this),
111             new Among ( "\u044B\u0442\u044C", 39, 2, "", this),
112             new Among ( "\u0435\u0448\u044C", -1, 1, "", this),
113             new Among ( "\u0438\u0448\u044C", -1, 2, "", this),
114             new Among ( "\u044E", -1, 2, "", this),
115             new Among ( "\u0443\u044E", 44, 2, "", this)
116         };
117
118         private Among a_5[] = {
119             new Among ( "\u0430", -1, 1, "", this),
120             new Among ( "\u0435\u0432", -1, 1, "", this),
121             new Among ( "\u043E\u0432", -1, 1, "", this),
122             new Among ( "\u0435", -1, 1, "", this),
123             new Among ( "\u0438\u0435", 3, 1, "", this),
124             new Among ( "\u044C\u0435", 3, 1, "", this),
125             new Among ( "\u0438", -1, 1, "", this),
126             new Among ( "\u0435\u0438", 6, 1, "", this),
127             new Among ( "\u0438\u0438", 6, 1, "", this),
128             new Among ( "\u0430\u043C\u0438", 6, 1, "", this),
129             new Among ( "\u044F\u043C\u0438", 6, 1, "", this),
130             new Among ( "\u0438\u044F\u043C\u0438", 10, 1, "", this),
131             new Among ( "\u0439", -1, 1, "", this),
132             new Among ( "\u0435\u0439", 12, 1, "", this),
133             new Among ( "\u0438\u0435\u0439", 13, 1, "", this),
134             new Among ( "\u0438\u0439", 12, 1, "", this),
135             new Among ( "\u043E\u0439", 12, 1, "", this),
136             new Among ( "\u0430\u043C", -1, 1, "", this),
137             new Among ( "\u0435\u043C", -1, 1, "", this),
138             new Among ( "\u0438\u0435\u043C", 18, 1, "", this),
139             new Among ( "\u043E\u043C", -1, 1, "", this),
140             new Among ( "\u044F\u043C", -1, 1, "", this),
141             new Among ( "\u0438\u044F\u043C", 21, 1, "", this),
142             new Among ( "\u043E", -1, 1, "", this),
143             new Among ( "\u0443", -1, 1, "", this),
144             new Among ( "\u0430\u0445", -1, 1, "", this),
145             new Among ( "\u044F\u0445", -1, 1, "", this),
146             new Among ( "\u0438\u044F\u0445", 26, 1, "", this),
147             new Among ( "\u044B", -1, 1, "", this),
148             new Among ( "\u044C", -1, 1, "", this),
149             new Among ( "\u044E", -1, 1, "", this),
150             new Among ( "\u0438\u044E", 30, 1, "", this),
151             new Among ( "\u044C\u044E", 30, 1, "", this),
152             new Among ( "\u044F", -1, 1, "", this),
153             new Among ( "\u0438\u044F", 33, 1, "", this),
154             new Among ( "\u044C\u044F", 33, 1, "", this)
155         };
156
157         private Among a_6[] = {
158             new Among ( "\u043E\u0441\u0442", -1, 1, "", this),
159             new Among ( "\u043E\u0441\u0442\u044C", -1, 1, "", this)
160         };
161
162         private Among a_7[] = {
163             new Among ( "\u0435\u0439\u0448\u0435", -1, 1, "", this),
164             new Among ( "\u043D", -1, 2, "", this),
165             new Among ( "\u0435\u0439\u0448", -1, 1, "", this),
166             new Among ( "\u044C", -1, 3, "", this)
167         };
168
169         private static final char g_v[] = {33, 65, 8, 232 };
170
171         private int I_p2;
172         private int I_pV;
173
174         private void copy_from(RussianStemmer other) {
175             I_p2 = other.I_p2;
176             I_pV = other.I_pV;
177             super.copy_from(other);
178         }
179
180         private boolean r_mark_regions() {
181             int v_1;
182             // (, line 57
183             I_pV = limit;
184             I_p2 = limit;
185             // do, line 61
186             v_1 = cursor;
187             lab0: do {
188                 // (, line 61
189                 // gopast, line 62
190                 golab1: while(true)
191                 {
192                     lab2: do {
193                         if (!(in_grouping(g_v, 1072, 1103)))
194                         {
195                             break lab2;
196                         }
197                         break golab1;
198                     } while (false);
199                     if (cursor >= limit)
200                     {
201                         break lab0;
202                     }
203                     cursor++;
204                 }
205                 // setmark pV, line 62
206                 I_pV = cursor;
207                 // gopast, line 62
208                 golab3: while(true)
209                 {
210                     lab4: do {
211                         if (!(out_grouping(g_v, 1072, 1103)))
212                         {
213                             break lab4;
214                         }
215                         break golab3;
216                     } while (false);
217                     if (cursor >= limit)
218                     {
219                         break lab0;
220                     }
221                     cursor++;
222                 }
223                 // gopast, line 63
224                 golab5: while(true)
225                 {
226                     lab6: do {
227                         if (!(in_grouping(g_v, 1072, 1103)))
228                         {
229                             break lab6;
230                         }
231                         break golab5;
232                     } while (false);
233                     if (cursor >= limit)
234                     {
235                         break lab0;
236                     }
237                     cursor++;
238                 }
239                 // gopast, line 63
240                 golab7: while(true)
241                 {
242                     lab8: do {
243                         if (!(out_grouping(g_v, 1072, 1103)))
244                         {
245                             break lab8;
246                         }
247                         break golab7;
248                     } while (false);
249                     if (cursor >= limit)
250                     {
251                         break lab0;
252                     }
253                     cursor++;
254                 }
255                 // setmark p2, line 63
256                 I_p2 = cursor;
257             } while (false);
258             cursor = v_1;
259             return true;
260         }
261
262         private boolean r_R2() {
263             if (!(I_p2 <= cursor))
264             {
265                 return false;
266             }
267             return true;
268         }
269
270         private boolean r_perfective_gerund() {
271             int among_var;
272             int v_1;
273             // (, line 71
274             // [, line 72
275             ket = cursor;
276             // substring, line 72
277             among_var = find_among_b(a_0, 9);
278             if (among_var == 0)
279             {
280                 return false;
281             }
282             // ], line 72
283             bra = cursor;
284             switch(among_var) {
285                 case 0:
286                     return false;
287                 case 1:
288                     // (, line 76
289                     // or, line 76
290                     lab0: do {
291                         v_1 = limit - cursor;
292                         lab1: do {
293                             // literal, line 76
294                             if (!(eq_s_b(1, "\u0430")))
295                             {
296                                 break lab1;
297                             }
298                             break lab0;
299                         } while (false);
300                         cursor = limit - v_1;
301                         // literal, line 76
302                         if (!(eq_s_b(1, "\u044F")))
303                         {
304                             return false;
305                         }
306                     } while (false);
307                     // delete, line 76
308                     slice_del();
309                     break;
310                 case 2:
311                     // (, line 83
312                     // delete, line 83
313                     slice_del();
314                     break;
315             }
316             return true;
317         }
318
319         private boolean r_adjective() {
320             int among_var;
321             // (, line 87
322             // [, line 88
323             ket = cursor;
324             // substring, line 88
325             among_var = find_among_b(a_1, 26);
326             if (among_var == 0)
327             {
328                 return false;
329             }
330             // ], line 88
331             bra = cursor;
332             switch(among_var) {
333                 case 0:
334                     return false;
335                 case 1:
336                     // (, line 97
337                     // delete, line 97
338                     slice_del();
339                     break;
340             }
341             return true;
342         }
343
344         private boolean r_adjectival() {
345             int among_var;
346             int v_1;
347             int v_2;
348             // (, line 101
349             // call adjective, line 102
350             if (!r_adjective())
351             {
352                 return false;
353             }
354             // try, line 109
355             v_1 = limit - cursor;
356             lab0: do {
357                 // (, line 109
358                 // [, line 110
359                 ket = cursor;
360                 // substring, line 110
361                 among_var = find_among_b(a_2, 8);
362                 if (among_var == 0)
363                 {
364                     cursor = limit - v_1;
365                     break lab0;
366                 }
367                 // ], line 110
368                 bra = cursor;
369                 switch(among_var) {
370                     case 0:
371                         cursor = limit - v_1;
372                         break lab0;
373                     case 1:
374                         // (, line 115
375                         // or, line 115
376                         lab1: do {
377                             v_2 = limit - cursor;
378                             lab2: do {
379                                 // literal, line 115
380                                 if (!(eq_s_b(1, "\u0430")))
381                                 {
382                                     break lab2;
383                                 }
384                                 break lab1;
385                             } while (false);
386                             cursor = limit - v_2;
387                             // literal, line 115
388                             if (!(eq_s_b(1, "\u044F")))
389                             {
390                                 cursor = limit - v_1;
391                                 break lab0;
392                             }
393                         } while (false);
394                         // delete, line 115
395                         slice_del();
396                         break;
397                     case 2:
398                         // (, line 122
399                         // delete, line 122
400                         slice_del();
401                         break;
402                 }
403             } while (false);
404             return true;
405         }
406
407         private boolean r_reflexive() {
408             int among_var;
409             // (, line 128
410             // [, line 129
411             ket = cursor;
412             // substring, line 129
413             among_var = find_among_b(a_3, 2);
414             if (among_var == 0)
415             {
416                 return false;
417             }
418             // ], line 129
419             bra = cursor;
420             switch(among_var) {
421                 case 0:
422                     return false;
423                 case 1:
424                     // (, line 132
425                     // delete, line 132
426                     slice_del();
427                     break;
428             }
429             return true;
430         }
431
432         private boolean r_verb() {
433             int among_var;
434             int v_1;
435             // (, line 136
436             // [, line 137
437             ket = cursor;
438             // substring, line 137
439             among_var = find_among_b(a_4, 46);
440             if (among_var == 0)
441             {
442                 return false;
443             }
444             // ], line 137
445             bra = cursor;
446             switch(among_var) {
447                 case 0:
448                     return false;
449                 case 1:
450                     // (, line 143
451                     // or, line 143
452                     lab0: do {
453                         v_1 = limit - cursor;
454                         lab1: do {
455                             // literal, line 143
456                             if (!(eq_s_b(1, "\u0430")))
457                             {
458                                 break lab1;
459                             }
460                             break lab0;
461                         } while (false);
462                         cursor = limit - v_1;
463                         // literal, line 143
464                         if (!(eq_s_b(1, "\u044F")))
465                         {
466                             return false;
467                         }
468                     } while (false);
469                     // delete, line 143
470                     slice_del();
471                     break;
472                 case 2:
473                     // (, line 151
474                     // delete, line 151
475                     slice_del();
476                     break;
477             }
478             return true;
479         }
480
481         private boolean r_noun() {
482             int among_var;
483             // (, line 159
484             // [, line 160
485             ket = cursor;
486             // substring, line 160
487             among_var = find_among_b(a_5, 36);
488             if (among_var == 0)
489             {
490                 return false;
491             }
492             // ], line 160
493             bra = cursor;
494             switch(among_var) {
495                 case 0:
496                     return false;
497                 case 1:
498                     // (, line 167
499                     // delete, line 167
500                     slice_del();
501                     break;
502             }
503             return true;
504         }
505
506         private boolean r_derivational() {
507             int among_var;
508             // (, line 175
509             // [, line 176
510             ket = cursor;
511             // substring, line 176
512             among_var = find_among_b(a_6, 2);
513             if (among_var == 0)
514             {
515                 return false;
516             }
517             // ], line 176
518             bra = cursor;
519             // call R2, line 176
520             if (!r_R2())
521             {
522                 return false;
523             }
524             switch(among_var) {
525                 case 0:
526                     return false;
527                 case 1:
528                     // (, line 179
529                     // delete, line 179
530                     slice_del();
531                     break;
532             }
533             return true;
534         }
535
536         private boolean r_tidy_up() {
537             int among_var;
538             // (, line 183
539             // [, line 184
540             ket = cursor;
541             // substring, line 184
542             among_var = find_among_b(a_7, 4);
543             if (among_var == 0)
544             {
545                 return false;
546             }
547             // ], line 184
548             bra = cursor;
549             switch(among_var) {
550                 case 0:
551                     return false;
552                 case 1:
553                     // (, line 188
554                     // delete, line 188
555                     slice_del();
556                     // [, line 189
557                     ket = cursor;
558                     // literal, line 189
559                     if (!(eq_s_b(1, "\u043D")))
560                     {
561                         return false;
562                     }
563                     // ], line 189
564                     bra = cursor;
565                     // literal, line 189
566                     if (!(eq_s_b(1, "\u043D")))
567                     {
568                         return false;
569                     }
570                     // delete, line 189
571                     slice_del();
572                     break;
573                 case 2:
574                     // (, line 192
575                     // literal, line 192
576                     if (!(eq_s_b(1, "\u043D")))
577                     {
578                         return false;
579                     }
580                     // delete, line 192
581                     slice_del();
582                     break;
583                 case 3:
584                     // (, line 194
585                     // delete, line 194
586                     slice_del();
587                     break;
588             }
589             return true;
590         }
591
592         public boolean stem() {
593             int v_1;
594             int v_2;
595             int v_3;
596             int v_4;
597             int v_5;
598             int v_6;
599             int v_7;
600             int v_8;
601             int v_9;
602             int v_10;
603             // (, line 199
604             // do, line 201
605             v_1 = cursor;
606             lab0: do {
607                 // call mark_regions, line 201
608                 if (!r_mark_regions())
609                 {
610                     break lab0;
611                 }
612             } while (false);
613             cursor = v_1;
614             // backwards, line 202
615             limit_backward = cursor; cursor = limit;
616             // setlimit, line 202
617             v_2 = limit - cursor;
618             // tomark, line 202
619             if (cursor < I_pV)
620             {
621                 return false;
622             }
623             cursor = I_pV;
624             v_3 = limit_backward;
625             limit_backward = cursor;
626             cursor = limit - v_2;
627             // (, line 202
628             // do, line 203
629             v_4 = limit - cursor;
630             lab1: do {
631                 // (, line 203
632                 // or, line 204
633                 lab2: do {
634                     v_5 = limit - cursor;
635                     lab3: do {
636                         // call perfective_gerund, line 204
637                         if (!r_perfective_gerund())
638                         {
639                             break lab3;
640                         }
641                         break lab2;
642                     } while (false);
643                     cursor = limit - v_5;
644                     // (, line 205
645                     // try, line 205
646                     v_6 = limit - cursor;
647                     lab4: do {
648                         // call reflexive, line 205
649                         if (!r_reflexive())
650                         {
651                             cursor = limit - v_6;
652                             break lab4;
653                         }
654                     } while (false);
655                     // or, line 206
656                     lab5: do {
657                         v_7 = limit - cursor;
658                         lab6: do {
659                             // call adjectival, line 206
660                             if (!r_adjectival())
661                             {
662                                 break lab6;
663                             }
664                             break lab5;
665                         } while (false);
666                         cursor = limit - v_7;
667                         lab7: do {
668                             // call verb, line 206
669                             if (!r_verb())
670                             {
671                                 break lab7;
672                             }
673                             break lab5;
674                         } while (false);
675                         cursor = limit - v_7;
676                         // call noun, line 206
677                         if (!r_noun())
678                         {
679                             break lab1;
680                         }
681                     } while (false);
682                 } while (false);
683             } while (false);
684             cursor = limit - v_4;
685             // try, line 209
686             v_8 = limit - cursor;
687             lab8: do {
688                 // (, line 209
689                 // [, line 209
690                 ket = cursor;
691                 // literal, line 209
692                 if (!(eq_s_b(1, "\u0438")))
693                 {
694                     cursor = limit - v_8;
695                     break lab8;
696                 }
697                 // ], line 209
698                 bra = cursor;
699                 // delete, line 209
700                 slice_del();
701             } while (false);
702             // do, line 212
703             v_9 = limit - cursor;
704             lab9: do {
705                 // call derivational, line 212
706                 if (!r_derivational())
707                 {
708                     break lab9;
709                 }
710             } while (false);
711             cursor = limit - v_9;
712             // do, line 213
713             v_10 = limit - cursor;
714             lab10: do {
715                 // call tidy_up, line 213
716                 if (!r_tidy_up())
717                 {
718                     break lab10;
719                 }
720             } while (false);
721             cursor = limit - v_10;
722             limit_backward = v_3;
723             cursor = limit_backward;            return true;
724         }
725
726 }
727