/* * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // This file was generated automatically by the Snowball to Java compiler using System; using Among = SF.Snowball.Among; using SnowballProgram = SF.Snowball.SnowballProgram; namespace SF.Snowball.Ext { /// Generated class implementing code defined by a snowball script. public class EnglishStemmer : SnowballProgram { public EnglishStemmer() { InitBlock(); } private void InitBlock() { a_0 = new Among[]{new Among("gener", - 1, - 1, "", this)}; 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)}; 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)}; 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)}; 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)}; 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)}; 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)}; a_7 = new Among[]{new Among("e", - 1, 1, "", this), new Among("l", - 1, 2, "", this)}; 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)}; 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)}; } private Among[] a_0; private Among[] a_1; private Among[] a_2; private Among[] a_3; private Among[] a_4; private Among[] a_5; private Among[] a_6; private Among[] a_7; private Among[] a_8; private Among[] a_9; private static readonly char[] g_v = new char[]{(char) (17), (char) (65), (char) (16), (char) (1)}; private static readonly char[] g_v_WXY = new char[]{(char) (1), (char) (17), (char) (65), (char) (208), (char) (1)}; private static readonly char[] g_valid_LI = new char[]{(char) (55), (char) (141), (char) (2)}; private bool B_Y_found; private int I_p2; private int I_p1; protected internal virtual void copy_from(EnglishStemmer other) { B_Y_found = other.B_Y_found; I_p2 = other.I_p2; I_p1 = other.I_p1; base.copy_from(other); } private bool r_prelude() { int v_1; int v_2; int v_3; int v_4; // (, line 23 // unset Y_found, line 24 B_Y_found = false; // do, line 25 v_1 = cursor; do { // (, line 25 // [, line 25 bra = cursor; // literal, line 25 if (!(eq_s(1, "y"))) { goto lab0_brk; } // ], line 25 ket = cursor; if (!(in_grouping(g_v, 97, 121))) { goto lab0_brk; } // <-, line 25 slice_from("Y"); // set Y_found, line 25 B_Y_found = true; } while (false); lab0_brk: ; cursor = v_1; // do, line 26 v_2 = cursor; do { // repeat, line 26 while (true) { v_3 = cursor; do { // (, line 26 // goto, line 26 while (true) { v_4 = cursor; do { // (, line 26 if (!(in_grouping(g_v, 97, 121))) { goto lab5_brk; } // [, line 26 bra = cursor; // literal, line 26 if (!(eq_s(1, "y"))) { goto lab5_brk; } // ], line 26 ket = cursor; cursor = v_4; goto golab4_brk; } while (false); lab5_brk: ; cursor = v_4; if (cursor >= limit) { goto lab3_brk; } cursor++; } golab4_brk: ; // <-, line 26 slice_from("Y"); // set Y_found, line 26 B_Y_found = true; goto replab2; } while (false); lab3_brk: ; cursor = v_3; goto replab2_brk; replab2: ; } replab2_brk: ; } while (false); lab1_brk: ; cursor = v_2; return true; } private bool r_mark_regions() { int v_1; int v_2; // (, line 29 I_p1 = limit; I_p2 = limit; // do, line 32 v_1 = cursor; do { // (, line 32 // or, line 36 do { v_2 = cursor; do { // among, line 33 if (find_among(a_0, 1) == 0) { goto lab2_brk; } goto lab1_brk; } while (false); lab2_brk: ; cursor = v_2; // (, line 36 // gopast, line 36 while (true) { do { if (!(in_grouping(g_v, 97, 121))) { goto lab4_brk; } goto golab3_brk; } while (false); lab4_brk: ; if (cursor >= limit) { goto lab0_brk; } cursor++; } golab3_brk: ; // gopast, line 36 while (true) { do { if (!(out_grouping(g_v, 97, 121))) { goto lab6_brk; } goto golab5_brk; } while (false); lab6_brk: ; if (cursor >= limit) { goto lab0_brk; } cursor++; } golab5_brk: ; } while (false); lab1_brk: ; // setmark p1, line 37 I_p1 = cursor; // gopast, line 38 while (true) { do { if (!(in_grouping(g_v, 97, 121))) { goto lab8_brk; } goto golab7_brk; } while (false); lab8_brk: ; if (cursor >= limit) { goto lab0_brk; } cursor++; } golab7_brk: ; // gopast, line 38 while (true) { do { if (!(out_grouping(g_v, 97, 121))) { goto lab10_brk; } goto golab9_brk; } while (false); lab10_brk: ; if (cursor >= limit) { goto lab0_brk; } cursor++; } golab9_brk: ; // setmark p2, line 38 I_p2 = cursor; } while (false); lab0_brk: ; cursor = v_1; return true; } private bool r_shortv() { int v_1; // (, line 44 // or, line 46 do { v_1 = limit - cursor; do { // (, line 45 if (!(out_grouping_b(g_v_WXY, 89, 121))) { goto lab1_brk; } if (!(in_grouping_b(g_v, 97, 121))) { goto lab1_brk; } if (!(out_grouping_b(g_v, 97, 121))) { goto lab1_brk; } goto lab0_brk; } while (false); lab1_brk: ; cursor = limit - v_1; // (, line 47 if (!(out_grouping_b(g_v, 97, 121))) { return false; } if (!(in_grouping_b(g_v, 97, 121))) { return false; } // atlimit, line 47 if (cursor > limit_backward) { return false; } } while (false); lab0_brk: ; return true; } private bool r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private bool r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private bool r_Step_1a() { int among_var; int v_1; // (, line 53 // [, line 54 ket = cursor; // substring, line 54 among_var = find_among_b(a_1, 6); if (among_var == 0) { return false; } // ], line 54 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 55 // <-, line 55 slice_from("ss"); break; case 2: // (, line 57 // or, line 57 do { v_1 = limit - cursor; do { // (, line 57 // next, line 57 if (cursor <= limit_backward) { goto lab1_brk; } cursor--; // atlimit, line 57 if (cursor > limit_backward) { goto lab1_brk; } // <-, line 57 slice_from("ie"); goto lab0_brk; } while (false); lab1_brk: ; cursor = limit - v_1; // <-, line 57 slice_from("i"); } while (false); lab0_brk: ; break; case 3: // (, line 58 // next, line 58 if (cursor <= limit_backward) { return false; } cursor--; // gopast, line 58 while (true) { do { if (!(in_grouping_b(g_v, 97, 121))) { goto lab3_brk; } goto golab2_brk; } while (false); lab3_brk: ; if (cursor <= limit_backward) { return false; } cursor--; } golab2_brk: ; // delete, line 58 slice_del(); break; } return true; } private bool r_Step_1b() { int among_var; int v_1; int v_3; int v_4; // (, line 63 // [, line 64 ket = cursor; // substring, line 64 among_var = find_among_b(a_3, 6); if (among_var == 0) { return false; } // ], line 64 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 66 // call R1, line 66 if (!r_R1()) { return false; } // <-, line 66 slice_from("ee"); break; case 2: // (, line 68 // test, line 69 v_1 = limit - cursor; // gopast, line 69 while (true) { do { if (!(in_grouping_b(g_v, 97, 121))) { goto lab1_brk; } goto golab0_brk; } while (false); lab1_brk: ; if (cursor <= limit_backward) { return false; } cursor--; } golab0_brk: ; cursor = limit - v_1; // delete, line 69 slice_del(); // test, line 70 v_3 = limit - cursor; // substring, line 70 among_var = find_among_b(a_2, 13); if (among_var == 0) { return false; } cursor = limit - v_3; switch (among_var) { case 0: return false; case 1: // (, line 72 // <+, line 72 { int c = cursor; insert(cursor, cursor, "e"); cursor = c; } break; case 2: // (, line 75 // [, line 75 ket = cursor; // next, line 75 if (cursor <= limit_backward) { return false; } cursor--; // ], line 75 bra = cursor; // delete, line 75 slice_del(); break; case 3: // (, line 76 // atmark, line 76 if (cursor != I_p1) { return false; } // test, line 76 v_4 = limit - cursor; // call shortv, line 76 if (!r_shortv()) { return false; } cursor = limit - v_4; // <+, line 76 { int c = cursor; insert(cursor, cursor, "e"); cursor = c; } break; } break; } return true; } private bool r_Step_1c() { int v_1; int v_2; // (, line 82 // [, line 83 ket = cursor; // or, line 83 do { v_1 = limit - cursor; do { // literal, line 83 if (!(eq_s_b(1, "y"))) { goto lab1_brk; } goto lab0_brk; } while (false); lab1_brk: ; cursor = limit - v_1; // literal, line 83 if (!(eq_s_b(1, "Y"))) { return false; } } while (false); lab0_brk: ; // ], line 83 bra = cursor; if (!(out_grouping_b(g_v, 97, 121))) { return false; } // not, line 84 { v_2 = limit - cursor; do { // atlimit, line 84 if (cursor > limit_backward) { goto lab2_brk; } return false; } while (false); lab2_brk: ; cursor = limit - v_2; } // <-, line 85 slice_from("i"); return true; } private bool r_Step_2() { int among_var; // (, line 88 // [, line 89 ket = cursor; // substring, line 89 among_var = find_among_b(a_4, 24); if (among_var == 0) { return false; } // ], line 89 bra = cursor; // call R1, line 89 if (!r_R1()) { return false; } switch (among_var) { case 0: return false; case 1: // (, line 90 // <-, line 90 slice_from("tion"); break; case 2: // (, line 91 // <-, line 91 slice_from("ence"); break; case 3: // (, line 92 // <-, line 92 slice_from("ance"); break; case 4: // (, line 93 // <-, line 93 slice_from("able"); break; case 5: // (, line 94 // <-, line 94 slice_from("ent"); break; case 6: // (, line 96 // <-, line 96 slice_from("ize"); break; case 7: // (, line 98 // <-, line 98 slice_from("ate"); break; case 8: // (, line 100 // <-, line 100 slice_from("al"); break; case 9: // (, line 101 // <-, line 101 slice_from("ful"); break; case 10: // (, line 103 // <-, line 103 slice_from("ous"); break; case 11: // (, line 105 // <-, line 105 slice_from("ive"); break; case 12: // (, line 107 // <-, line 107 slice_from("ble"); break; case 13: // (, line 108 // literal, line 108 if (!(eq_s_b(1, "l"))) { return false; } // <-, line 108 slice_from("og"); break; case 14: // (, line 109 // <-, line 109 slice_from("ful"); break; case 15: // (, line 110 // <-, line 110 slice_from("less"); break; case 16: // (, line 111 if (!(in_grouping_b(g_valid_LI, 99, 116))) { return false; } // delete, line 111 slice_del(); break; } return true; } private bool r_Step_3() { int among_var; // (, line 115 // [, line 116 ket = cursor; // substring, line 116 among_var = find_among_b(a_5, 9); if (among_var == 0) { return false; } // ], line 116 bra = cursor; // call R1, line 116 if (!r_R1()) { return false; } switch (among_var) { case 0: return false; case 1: // (, line 117 // <-, line 117 slice_from("tion"); break; case 2: // (, line 118 // <-, line 118 slice_from("ate"); break; case 3: // (, line 119 // <-, line 119 slice_from("al"); break; case 4: // (, line 121 // <-, line 121 slice_from("ic"); break; case 5: // (, line 123 // delete, line 123 slice_del(); break; case 6: // (, line 125 // call R2, line 125 if (!r_R2()) { return false; } // delete, line 125 slice_del(); break; } return true; } private bool r_Step_4() { int among_var; int v_1; // (, line 129 // [, line 130 ket = cursor; // substring, line 130 among_var = find_among_b(a_6, 18); if (among_var == 0) { return false; } // ], line 130 bra = cursor; // call R2, line 130 if (!r_R2()) { return false; } switch (among_var) { case 0: return false; case 1: // (, line 133 // delete, line 133 slice_del(); break; case 2: // (, line 134 // or, line 134 do { v_1 = limit - cursor; do { // literal, line 134 if (!(eq_s_b(1, "s"))) { goto lab1_brk; } goto lab0_brk; } while (false); lab1_brk: ; cursor = limit - v_1; // literal, line 134 if (!(eq_s_b(1, "t"))) { return false; } } while (false); lab0_brk: ; // delete, line 134 slice_del(); break; } return true; } private bool r_Step_5() { int among_var; int v_1; int v_2; // (, line 138 // [, line 139 ket = cursor; // substring, line 139 among_var = find_among_b(a_7, 2); if (among_var == 0) { return false; } // ], line 139 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 140 // or, line 140 do { v_1 = limit - cursor; do { // call R2, line 140 if (!r_R2()) { goto lab1_brk; } goto lab0_brk; } while (false); lab1_brk: ; cursor = limit - v_1; // (, line 140 // call R1, line 140 if (!r_R1()) { return false; } // not, line 140 { v_2 = limit - cursor; do { // call shortv, line 140 if (!r_shortv()) { goto lab2_brk; } return false; } while (false); lab2_brk: ; cursor = limit - v_2; } } while (false); lab0_brk: ; // delete, line 140 slice_del(); break; case 2: // (, line 141 // call R2, line 141 if (!r_R2()) { return false; } // literal, line 141 if (!(eq_s_b(1, "l"))) { return false; } // delete, line 141 slice_del(); break; } return true; } private bool r_exception2() { // (, line 145 // [, line 147 ket = cursor; // substring, line 147 if (find_among_b(a_8, 8) == 0) { return false; } // ], line 147 bra = cursor; // atlimit, line 147 if (cursor > limit_backward) { return false; } return true; } private bool r_exception1() { int among_var; // (, line 157 // [, line 159 bra = cursor; // substring, line 159 among_var = find_among(a_9, 18); if (among_var == 0) { return false; } // ], line 159 ket = cursor; // atlimit, line 159 if (cursor < limit) { return false; } switch (among_var) { case 0: return false; case 1: // (, line 163 // <-, line 163 slice_from("ski"); break; case 2: // (, line 164 // <-, line 164 slice_from("sky"); break; case 3: // (, line 165 // <-, line 165 slice_from("die"); break; case 4: // (, line 166 // <-, line 166 slice_from("lie"); break; case 5: // (, line 167 // <-, line 167 slice_from("tie"); break; case 6: // (, line 171 // <-, line 171 slice_from("idl"); break; case 7: // (, line 172 // <-, line 172 slice_from("gentl"); break; case 8: // (, line 173 // <-, line 173 slice_from("ugli"); break; case 9: // (, line 174 // <-, line 174 slice_from("earli"); break; case 10: // (, line 175 // <-, line 175 slice_from("onli"); break; case 11: // (, line 176 // <-, line 176 slice_from("singl"); break; } return true; } private bool r_postlude() { int v_1; int v_2; // (, line 192 // Boolean test Y_found, line 192 if (!(B_Y_found)) { return false; } // repeat, line 192 while (true) { v_1 = cursor; do { // (, line 192 // goto, line 192 while (true) { v_2 = cursor; do { // (, line 192 // [, line 192 bra = cursor; // literal, line 192 if (!(eq_s(1, "Y"))) { goto lab3_brk; } // ], line 192 ket = cursor; cursor = v_2; goto golab2_brk; } while (false); lab3_brk: ; cursor = v_2; if (cursor >= limit) { goto lab1_brk; } cursor++; } golab2_brk: ; // <-, line 192 slice_from("y"); goto replab0; } while (false); lab1_brk: ; cursor = v_1; goto replab0_brk; replab0: ; } replab0_brk: ; return true; } public virtual bool Stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; int v_12; int v_13; // (, line 194 // or, line 196 do { v_1 = cursor; do { // call exception1, line 196 if (!r_exception1()) { goto lab1_brk; } goto lab0_brk; } while (false); lab1_brk: ; cursor = v_1; // (, line 196 // test, line 198 v_2 = cursor; // hop, line 198 { int c = cursor + 3; if (0 > c || c > limit) { return false; } cursor = c; } cursor = v_2; // do, line 199 v_3 = cursor; do { // call prelude, line 199 if (!r_prelude()) { goto lab2_brk; } } while (false); lab2_brk: ; cursor = v_3; // do, line 200 v_4 = cursor; do { // call mark_regions, line 200 if (!r_mark_regions()) { goto lab3_brk; } } while (false); lab3_brk: ; cursor = v_4; // backwards, line 201 limit_backward = cursor; cursor = limit; // (, line 201 // do, line 203 v_5 = limit - cursor; do { // call Step_1a, line 203 if (!r_Step_1a()) { goto lab4_brk; } } while (false); lab4_brk: ; cursor = limit - v_5; // or, line 205 do { v_6 = limit - cursor; do { // call exception2, line 205 if (!r_exception2()) { goto lab6_brk; } goto lab5_brk; } while (false); lab6_brk: ; cursor = limit - v_6; // (, line 205 // do, line 207 v_7 = limit - cursor; do { // call Step_1b, line 207 if (!r_Step_1b()) { goto lab7_brk; } } while (false); lab7_brk: ; cursor = limit - v_7; // do, line 208 v_8 = limit - cursor; do { // call Step_1c, line 208 if (!r_Step_1c()) { goto lab8_brk; } } while (false); lab8_brk: ; cursor = limit - v_8; // do, line 210 v_9 = limit - cursor; do { // call Step_2, line 210 if (!r_Step_2()) { goto lab9_brk; } } while (false); lab9_brk: ; cursor = limit - v_9; // do, line 211 v_10 = limit - cursor; do { // call Step_3, line 211 if (!r_Step_3()) { goto lab10_brk; } } while (false); lab10_brk: ; cursor = limit - v_10; // do, line 212 v_11 = limit - cursor; do { // call Step_4, line 212 if (!r_Step_4()) { goto lab11_brk; } } while (false); lab11_brk: ; cursor = limit - v_11; // do, line 214 v_12 = limit - cursor; do { // call Step_5, line 214 if (!r_Step_5()) { goto lab12_brk; } } while (false); lab12_brk: ; cursor = limit - v_12; } while (false); lab5_brk: ; cursor = limit_backward; // do, line 217 v_13 = cursor; do { // call postlude, line 217 if (!r_postlude()) { goto lab13_brk; } } while (false); lab13_brk: ; cursor = v_13; } while (false); lab0_brk: ; return true; } } }