languages/english.cc

Go to the documentation of this file.
00001 /* This file was generated automatically by the Snowball to ISO C++ compiler */
00002 
00003 #include <limits.h>
00004 #include "english.h"
00005 
00006 static const symbol s_pool[] = {
00007 #define s_0_0 0
00008 'a', 'r', 's', 'e', 'n',
00009 #define s_0_1 5
00010 'c', 'o', 'm', 'm', 'u', 'n',
00011 #define s_0_2 11
00012 'g', 'e', 'n', 'e', 'r',
00013 #define s_1_0 16
00014 '\'',
00015 #define s_1_1 17
00016 '\'', 's', '\'',
00017 #define s_1_2 20
00018 '\'', 's',
00019 #define s_2_0 22
00020 'i', 'e', 'd',
00021 #define s_2_1 25
00022 's',
00023 #define s_2_2 26
00024 'i', 'e', 's',
00025 #define s_2_3 29
00026 's', 's', 'e', 's',
00027 #define s_2_4 33
00028 's', 's',
00029 #define s_2_5 35
00030 'u', 's',
00031 #define s_3_1 37
00032 'b', 'b',
00033 #define s_3_2 39
00034 'd', 'd',
00035 #define s_3_3 41
00036 'f', 'f',
00037 #define s_3_4 43
00038 'g', 'g',
00039 #define s_3_5 45
00040 'b', 'l',
00041 #define s_3_6 47
00042 'm', 'm',
00043 #define s_3_7 49
00044 'n', 'n',
00045 #define s_3_8 51
00046 'p', 'p',
00047 #define s_3_9 53
00048 'r', 'r',
00049 #define s_3_10 55
00050 'a', 't',
00051 #define s_3_11 57
00052 't', 't',
00053 #define s_3_12 59
00054 'i', 'z',
00055 #define s_4_0 61
00056 'e', 'd',
00057 #define s_4_1 63
00058 'e', 'e', 'd',
00059 #define s_4_2 66
00060 'i', 'n', 'g',
00061 #define s_4_3 69
00062 'e', 'd', 'l', 'y',
00063 #define s_4_4 73
00064 'e', 'e', 'd', 'l', 'y',
00065 #define s_4_5 78
00066 'i', 'n', 'g', 'l', 'y',
00067 #define s_5_0 83
00068 'a', 'n', 'c', 'i',
00069 #define s_5_1 87
00070 'e', 'n', 'c', 'i',
00071 #define s_5_2 91
00072 'o', 'g', 'i',
00073 #define s_5_3 94
00074 'l', 'i',
00075 #define s_5_4 96
00076 'b', 'l', 'i',
00077 #define s_5_5 99
00078 'a', 'b', 'l', 'i',
00079 #define s_5_6 103
00080 'a', 'l', 'l', 'i',
00081 #define s_5_7 107
00082 'f', 'u', 'l', 'l', 'i',
00083 #define s_5_8 112
00084 'l', 'e', 's', 's', 'l', 'i',
00085 #define s_5_9 118
00086 'o', 'u', 's', 'l', 'i',
00087 #define s_5_10 123
00088 'e', 'n', 't', 'l', 'i',
00089 #define s_5_11 128
00090 'a', 'l', 'i', 't', 'i',
00091 #define s_5_12 133
00092 'b', 'i', 'l', 'i', 't', 'i',
00093 #define s_5_13 139
00094 'i', 'v', 'i', 't', 'i',
00095 #define s_5_14 144
00096 't', 'i', 'o', 'n', 'a', 'l',
00097 #define s_5_15 150
00098 'a', 't', 'i', 'o', 'n', 'a', 'l',
00099 #define s_5_16 157
00100 'a', 'l', 'i', 's', 'm',
00101 #define s_5_17 162
00102 'a', 't', 'i', 'o', 'n',
00103 #define s_5_18 167
00104 'i', 'z', 'a', 't', 'i', 'o', 'n',
00105 #define s_5_19 174
00106 'i', 'z', 'e', 'r',
00107 #define s_5_20 178
00108 'a', 't', 'o', 'r',
00109 #define s_5_21 182
00110 'i', 'v', 'e', 'n', 'e', 's', 's',
00111 #define s_5_22 189
00112 'f', 'u', 'l', 'n', 'e', 's', 's',
00113 #define s_5_23 196
00114 'o', 'u', 's', 'n', 'e', 's', 's',
00115 #define s_6_0 203
00116 'i', 'c', 'a', 't', 'e',
00117 #define s_6_1 208
00118 'a', 't', 'i', 'v', 'e',
00119 #define s_6_2 213
00120 'a', 'l', 'i', 'z', 'e',
00121 #define s_6_3 218
00122 'i', 'c', 'i', 't', 'i',
00123 #define s_6_4 223
00124 'i', 'c', 'a', 'l',
00125 #define s_6_5 227
00126 't', 'i', 'o', 'n', 'a', 'l',
00127 #define s_6_6 233
00128 'a', 't', 'i', 'o', 'n', 'a', 'l',
00129 #define s_6_7 240
00130 'f', 'u', 'l',
00131 #define s_6_8 243
00132 'n', 'e', 's', 's',
00133 #define s_7_0 247
00134 'i', 'c',
00135 #define s_7_1 249
00136 'a', 'n', 'c', 'e',
00137 #define s_7_2 253
00138 'e', 'n', 'c', 'e',
00139 #define s_7_3 257
00140 'a', 'b', 'l', 'e',
00141 #define s_7_4 261
00142 'i', 'b', 'l', 'e',
00143 #define s_7_5 265
00144 'a', 't', 'e',
00145 #define s_7_6 268
00146 'i', 'v', 'e',
00147 #define s_7_7 271
00148 'i', 'z', 'e',
00149 #define s_7_8 274
00150 'i', 't', 'i',
00151 #define s_7_9 277
00152 'a', 'l',
00153 #define s_7_10 279
00154 'i', 's', 'm',
00155 #define s_7_11 282
00156 'i', 'o', 'n',
00157 #define s_7_12 285
00158 'e', 'r',
00159 #define s_7_13 287
00160 'o', 'u', 's',
00161 #define s_7_14 290
00162 'a', 'n', 't',
00163 #define s_7_15 293
00164 'e', 'n', 't',
00165 #define s_7_16 296
00166 'm', 'e', 'n', 't',
00167 #define s_7_17 300
00168 'e', 'm', 'e', 'n', 't',
00169 #define s_8_0 305
00170 'e',
00171 #define s_8_1 306
00172 'l',
00173 #define s_9_0 307
00174 's', 'u', 'c', 'c', 'e', 'e', 'd',
00175 #define s_9_1 314
00176 'p', 'r', 'o', 'c', 'e', 'e', 'd',
00177 #define s_9_2 321
00178 'e', 'x', 'c', 'e', 'e', 'd',
00179 #define s_9_3 327
00180 'c', 'a', 'n', 'n', 'i', 'n', 'g',
00181 #define s_9_4 334
00182 'i', 'n', 'n', 'i', 'n', 'g',
00183 #define s_9_5 340
00184 'e', 'a', 'r', 'r', 'i', 'n', 'g',
00185 #define s_9_6 347
00186 'h', 'e', 'r', 'r', 'i', 'n', 'g',
00187 #define s_9_7 354
00188 'o', 'u', 't', 'i', 'n', 'g',
00189 #define s_10_0 360
00190 'a', 'n', 'd', 'e', 's',
00191 #define s_10_1 365
00192 'a', 't', 'l', 'a', 's',
00193 #define s_10_2 370
00194 'b', 'i', 'a', 's',
00195 #define s_10_3 374
00196 'c', 'o', 's', 'm', 'o', 's',
00197 #define s_10_4 380
00198 'd', 'y', 'i', 'n', 'g',
00199 #define s_10_5 385
00200 'e', 'a', 'r', 'l', 'y',
00201 #define s_10_6 390
00202 'g', 'e', 'n', 't', 'l', 'y',
00203 #define s_10_7 396
00204 'h', 'o', 'w', 'e',
00205 #define s_10_8 400
00206 'i', 'd', 'l', 'y',
00207 #define s_10_9 404
00208 'l', 'y', 'i', 'n', 'g',
00209 #define s_10_10 409
00210 'n', 'e', 'w', 's',
00211 #define s_10_11 413
00212 'o', 'n', 'l', 'y',
00213 #define s_10_12 417
00214 's', 'i', 'n', 'g', 'l', 'y',
00215 #define s_10_13 423
00216 's', 'k', 'i', 'e', 's',
00217 #define s_10_14 428
00218 's', 'k', 'i', 's',
00219 #define s_10_15 432
00220 's', 'k', 'y',
00221 #define s_10_16 435
00222 't', 'y', 'i', 'n', 'g',
00223 #define s_10_17 440
00224 'u', 'g', 'l', 'y',
00225 };
00226 
00227 
00228 static const struct among a_0[3] =
00229 {
00230 /*  0 */ { 5, s_0_0, -1, -1},
00231 /*  1 */ { 6, s_0_1, -1, -1},
00232 /*  2 */ { 5, s_0_2, -1, -1}
00233 };
00234 
00235 
00236 static const struct among a_1[3] =
00237 {
00238 /*  0 */ { 1, s_1_0, -1, 1},
00239 /*  1 */ { 3, s_1_1, 0, 1},
00240 /*  2 */ { 2, s_1_2, -1, 1}
00241 };
00242 
00243 
00244 static const struct among a_2[6] =
00245 {
00246 /*  0 */ { 3, s_2_0, -1, 2},
00247 /*  1 */ { 1, s_2_1, -1, 3},
00248 /*  2 */ { 3, s_2_2, 1, 2},
00249 /*  3 */ { 4, s_2_3, 1, 1},
00250 /*  4 */ { 2, s_2_4, 1, -1},
00251 /*  5 */ { 2, s_2_5, 1, -1}
00252 };
00253 
00254 
00255 static const struct among a_3[13] =
00256 {
00257 /*  0 */ { 0, 0, -1, 3},
00258 /*  1 */ { 2, s_3_1, 0, 2},
00259 /*  2 */ { 2, s_3_2, 0, 2},
00260 /*  3 */ { 2, s_3_3, 0, 2},
00261 /*  4 */ { 2, s_3_4, 0, 2},
00262 /*  5 */ { 2, s_3_5, 0, 1},
00263 /*  6 */ { 2, s_3_6, 0, 2},
00264 /*  7 */ { 2, s_3_7, 0, 2},
00265 /*  8 */ { 2, s_3_8, 0, 2},
00266 /*  9 */ { 2, s_3_9, 0, 2},
00267 /* 10 */ { 2, s_3_10, 0, 1},
00268 /* 11 */ { 2, s_3_11, 0, 2},
00269 /* 12 */ { 2, s_3_12, 0, 1}
00270 };
00271 
00272 
00273 static const struct among a_4[6] =
00274 {
00275 /*  0 */ { 2, s_4_0, -1, 2},
00276 /*  1 */ { 3, s_4_1, 0, 1},
00277 /*  2 */ { 3, s_4_2, -1, 2},
00278 /*  3 */ { 4, s_4_3, -1, 2},
00279 /*  4 */ { 5, s_4_4, 3, 1},
00280 /*  5 */ { 5, s_4_5, -1, 2}
00281 };
00282 
00283 
00284 static const struct among a_5[24] =
00285 {
00286 /*  0 */ { 4, s_5_0, -1, 3},
00287 /*  1 */ { 4, s_5_1, -1, 2},
00288 /*  2 */ { 3, s_5_2, -1, 13},
00289 /*  3 */ { 2, s_5_3, -1, 16},
00290 /*  4 */ { 3, s_5_4, 3, 12},
00291 /*  5 */ { 4, s_5_5, 4, 4},
00292 /*  6 */ { 4, s_5_6, 3, 8},
00293 /*  7 */ { 5, s_5_7, 3, 14},
00294 /*  8 */ { 6, s_5_8, 3, 15},
00295 /*  9 */ { 5, s_5_9, 3, 10},
00296 /* 10 */ { 5, s_5_10, 3, 5},
00297 /* 11 */ { 5, s_5_11, -1, 8},
00298 /* 12 */ { 6, s_5_12, -1, 12},
00299 /* 13 */ { 5, s_5_13, -1, 11},
00300 /* 14 */ { 6, s_5_14, -1, 1},
00301 /* 15 */ { 7, s_5_15, 14, 7},
00302 /* 16 */ { 5, s_5_16, -1, 8},
00303 /* 17 */ { 5, s_5_17, -1, 7},
00304 /* 18 */ { 7, s_5_18, 17, 6},
00305 /* 19 */ { 4, s_5_19, -1, 6},
00306 /* 20 */ { 4, s_5_20, -1, 7},
00307 /* 21 */ { 7, s_5_21, -1, 11},
00308 /* 22 */ { 7, s_5_22, -1, 9},
00309 /* 23 */ { 7, s_5_23, -1, 10}
00310 };
00311 
00312 
00313 static const struct among a_6[9] =
00314 {
00315 /*  0 */ { 5, s_6_0, -1, 4},
00316 /*  1 */ { 5, s_6_1, -1, 6},
00317 /*  2 */ { 5, s_6_2, -1, 3},
00318 /*  3 */ { 5, s_6_3, -1, 4},
00319 /*  4 */ { 4, s_6_4, -1, 4},
00320 /*  5 */ { 6, s_6_5, -1, 1},
00321 /*  6 */ { 7, s_6_6, 5, 2},
00322 /*  7 */ { 3, s_6_7, -1, 5},
00323 /*  8 */ { 4, s_6_8, -1, 5}
00324 };
00325 
00326 
00327 static const struct among a_7[18] =
00328 {
00329 /*  0 */ { 2, s_7_0, -1, 1},
00330 /*  1 */ { 4, s_7_1, -1, 1},
00331 /*  2 */ { 4, s_7_2, -1, 1},
00332 /*  3 */ { 4, s_7_3, -1, 1},
00333 /*  4 */ { 4, s_7_4, -1, 1},
00334 /*  5 */ { 3, s_7_5, -1, 1},
00335 /*  6 */ { 3, s_7_6, -1, 1},
00336 /*  7 */ { 3, s_7_7, -1, 1},
00337 /*  8 */ { 3, s_7_8, -1, 1},
00338 /*  9 */ { 2, s_7_9, -1, 1},
00339 /* 10 */ { 3, s_7_10, -1, 1},
00340 /* 11 */ { 3, s_7_11, -1, 2},
00341 /* 12 */ { 2, s_7_12, -1, 1},
00342 /* 13 */ { 3, s_7_13, -1, 1},
00343 /* 14 */ { 3, s_7_14, -1, 1},
00344 /* 15 */ { 3, s_7_15, -1, 1},
00345 /* 16 */ { 4, s_7_16, 15, 1},
00346 /* 17 */ { 5, s_7_17, 16, 1}
00347 };
00348 
00349 
00350 static const struct among a_8[2] =
00351 {
00352 /*  0 */ { 1, s_8_0, -1, 1},
00353 /*  1 */ { 1, s_8_1, -1, 2}
00354 };
00355 
00356 
00357 static const struct among a_9[8] =
00358 {
00359 /*  0 */ { 7, s_9_0, -1, -1},
00360 /*  1 */ { 7, s_9_1, -1, -1},
00361 /*  2 */ { 6, s_9_2, -1, -1},
00362 /*  3 */ { 7, s_9_3, -1, -1},
00363 /*  4 */ { 6, s_9_4, -1, -1},
00364 /*  5 */ { 7, s_9_5, -1, -1},
00365 /*  6 */ { 7, s_9_6, -1, -1},
00366 /*  7 */ { 6, s_9_7, -1, -1}
00367 };
00368 
00369 
00370 static const struct among a_10[18] =
00371 {
00372 /*  0 */ { 5, s_10_0, -1, -1},
00373 /*  1 */ { 5, s_10_1, -1, -1},
00374 /*  2 */ { 4, s_10_2, -1, -1},
00375 /*  3 */ { 6, s_10_3, -1, -1},
00376 /*  4 */ { 5, s_10_4, -1, 3},
00377 /*  5 */ { 5, s_10_5, -1, 9},
00378 /*  6 */ { 6, s_10_6, -1, 7},
00379 /*  7 */ { 4, s_10_7, -1, -1},
00380 /*  8 */ { 4, s_10_8, -1, 6},
00381 /*  9 */ { 5, s_10_9, -1, 4},
00382 /* 10 */ { 4, s_10_10, -1, -1},
00383 /* 11 */ { 4, s_10_11, -1, 10},
00384 /* 12 */ { 6, s_10_12, -1, 11},
00385 /* 13 */ { 5, s_10_13, -1, 2},
00386 /* 14 */ { 4, s_10_14, -1, 1},
00387 /* 15 */ { 3, s_10_15, -1, -1},
00388 /* 16 */ { 5, s_10_16, -1, 5},
00389 /* 17 */ { 4, s_10_17, -1, 8}
00390 };
00391 
00392 static const unsigned char g_v[] = { 17, 65, 16, 1 };
00393 
00394 static const unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
00395 
00396 static const unsigned char g_valid_LI[] = { 55, 141, 2 };
00397 
00398 static const symbol s_0[] = { 'Y' };
00399 static const symbol s_1[] = { 'Y' };
00400 static const symbol s_2[] = { 's', 's' };
00401 static const symbol s_3[] = { 'i' };
00402 static const symbol s_4[] = { 'i', 'e' };
00403 static const symbol s_5[] = { 'e', 'e' };
00404 static const symbol s_6[] = { 'e' };
00405 static const symbol s_7[] = { 'e' };
00406 static const symbol s_8[] = { 'i' };
00407 static const symbol s_9[] = { 't', 'i', 'o', 'n' };
00408 static const symbol s_10[] = { 'e', 'n', 'c', 'e' };
00409 static const symbol s_11[] = { 'a', 'n', 'c', 'e' };
00410 static const symbol s_12[] = { 'a', 'b', 'l', 'e' };
00411 static const symbol s_13[] = { 'e', 'n', 't' };
00412 static const symbol s_14[] = { 'i', 'z', 'e' };
00413 static const symbol s_15[] = { 'a', 't', 'e' };
00414 static const symbol s_16[] = { 'a', 'l' };
00415 static const symbol s_17[] = { 'f', 'u', 'l' };
00416 static const symbol s_18[] = { 'o', 'u', 's' };
00417 static const symbol s_19[] = { 'i', 'v', 'e' };
00418 static const symbol s_20[] = { 'b', 'l', 'e' };
00419 static const symbol s_21[] = { 'o', 'g' };
00420 static const symbol s_22[] = { 'f', 'u', 'l' };
00421 static const symbol s_23[] = { 'l', 'e', 's', 's' };
00422 static const symbol s_24[] = { 't', 'i', 'o', 'n' };
00423 static const symbol s_25[] = { 'a', 't', 'e' };
00424 static const symbol s_26[] = { 'a', 'l' };
00425 static const symbol s_27[] = { 'i', 'c' };
00426 static const symbol s_28[] = { 's', 'k', 'i' };
00427 static const symbol s_29[] = { 's', 'k', 'y' };
00428 static const symbol s_30[] = { 'd', 'i', 'e' };
00429 static const symbol s_31[] = { 'l', 'i', 'e' };
00430 static const symbol s_32[] = { 't', 'i', 'e' };
00431 static const symbol s_33[] = { 'i', 'd', 'l' };
00432 static const symbol s_34[] = { 'g', 'e', 'n', 't', 'l' };
00433 static const symbol s_35[] = { 'u', 'g', 'l', 'i' };
00434 static const symbol s_36[] = { 'e', 'a', 'r', 'l', 'i' };
00435 static const symbol s_37[] = { 'o', 'n', 'l', 'i' };
00436 static const symbol s_38[] = { 's', 'i', 'n', 'g', 'l' };
00437 static const symbol s_39[] = { 'y' };
00438 
00439 int Xapian::InternalStemEnglish::r_prelude() { /* forwardmode */
00440     B_Y_found = 0; /* unset Y_found, line 26 */
00441     {   int c1 = c; /* do, line 27 */
00442         bra = c; /* [, line 27 */
00443         if (c == l || p[c] != 39) goto lab0;
00444         c++;
00445         ket = c; /* ], line 27 */
00446         if (slice_del() == -1) return -1; /* delete, line 27 */
00447     lab0:
00448         c = c1;
00449     }
00450     {   int c2 = c; /* do, line 28 */
00451         bra = c; /* [, line 28 */
00452         if (c == l || p[c] != 'y') goto lab1;
00453         c++;
00454         ket = c; /* ], line 28 */
00455         {   int ret = slice_from_s(1, s_0); /* <-, line 28 */
00456             if (ret < 0) return ret;
00457         }
00458         B_Y_found = 1; /* set Y_found, line 28 */
00459     lab1:
00460         c = c2;
00461     }
00462     {   int c3 = c; /* do, line 29 */
00463         while(1) { /* repeat, line 29 */
00464             int c4 = c;
00465             while(1) { /* goto, line 29 */
00466                 int c5 = c;
00467                 if (in_grouping_U(g_v, 97, 121, 0)) goto lab4; /* grouping v, line 29 */
00468                 bra = c; /* [, line 29 */
00469                 if (c == l || p[c] != 'y') goto lab4;
00470                 c++;
00471                 ket = c; /* ], line 29 */
00472                 c = c5;
00473                 break;
00474             lab4:
00475                 c = c5;
00476                 {   int ret = skip_utf8(p, c, 0, l, 1);
00477                     if (ret < 0) goto lab3;
00478                     c = ret; /* goto, line 29 */
00479                 }
00480             }
00481             {   int ret = slice_from_s(1, s_1); /* <-, line 29 */
00482                 if (ret < 0) return ret;
00483             }
00484             B_Y_found = 1; /* set Y_found, line 29 */
00485             continue;
00486         lab3:
00487             c = c4;
00488             break;
00489         }
00490         c = c3;
00491     }
00492     return 1;
00493 }
00494 
00495 int Xapian::InternalStemEnglish::r_mark_regions() { /* forwardmode */
00496     I_p1 = l; /* p1 = <integer expression>, line 33 */
00497     I_p2 = l; /* p2 = <integer expression>, line 34 */
00498     {   int c1 = c; /* do, line 35 */
00499         {   int c2 = c; /* or, line 41 */
00500             if (c + 4 >= l || p[c + 4] >> 5 != 3 || !((2375680 >> (p[c + 4] & 0x1f)) & 1)) goto lab2; /* among, line 36 */
00501             if (!(find_among(s_pool, a_0, 3, 0, 0))) goto lab2;
00502             goto lab1;
00503         lab2:
00504             c = c2;
00505             {   int ret = out_grouping_U(g_v, 97, 121, 1); /* gopast */ /* grouping v, line 41 */
00506                 if (ret < 0) goto lab0;
00507                 c += ret;
00508             }
00509             {   int ret = in_grouping_U(g_v, 97, 121, 1); /* gopast */ /* non v, line 41 */
00510                 if (ret < 0) goto lab0;
00511                 c += ret;
00512             }
00513         }
00514     lab1:
00515         I_p1 = c; /* setmark p1, line 42 */
00516         {   int ret = out_grouping_U(g_v, 97, 121, 1); /* gopast */ /* grouping v, line 43 */
00517             if (ret < 0) goto lab0;
00518             c += ret;
00519         }
00520         {   int ret = in_grouping_U(g_v, 97, 121, 1); /* gopast */ /* non v, line 43 */
00521             if (ret < 0) goto lab0;
00522             c += ret;
00523         }
00524         I_p2 = c; /* setmark p2, line 43 */
00525     lab0:
00526         c = c1;
00527     }
00528     return 1;
00529 }
00530 
00531 int Xapian::InternalStemEnglish::r_shortv() { /* backwardmode */
00532     {   int m1 = l - c; (void)m1; /* or, line 51 */
00533         if (out_grouping_b_U(g_v_WXY, 89, 121, 0)) goto lab1; /* non v_WXY, line 50 */
00534         if (in_grouping_b_U(g_v, 97, 121, 0)) goto lab1; /* grouping v, line 50 */
00535         if (out_grouping_b_U(g_v, 97, 121, 0)) goto lab1; /* non v, line 50 */
00536         goto lab0;
00537     lab1:
00538         c = l - m1;
00539         if (out_grouping_b_U(g_v, 97, 121, 0)) return 0; /* non v, line 52 */
00540         if (in_grouping_b_U(g_v, 97, 121, 0)) return 0; /* grouping v, line 52 */
00541         if (c > lb) return 0; /* atlimit, line 52 */
00542     }
00543 lab0:
00544     return 1;
00545 }
00546 
00547 int Xapian::InternalStemEnglish::r_R1() { /* backwardmode */
00548     if (!(I_p1 <= c)) return 0; /* p1 <= <integer expression>, line 55 */
00549     return 1;
00550 }
00551 
00552 int Xapian::InternalStemEnglish::r_R2() { /* backwardmode */
00553     if (!(I_p2 <= c)) return 0; /* p2 <= <integer expression>, line 56 */
00554     return 1;
00555 }
00556 
00557 int Xapian::InternalStemEnglish::r_Step_1a() { /* backwardmode */
00558     int among_var;
00559     {   int m1 = l - c; (void)m1; /* try, line 59 */
00560         ket = c; /* [, line 60 */
00561         if (c <= lb || (p[c - 1] != 39 && p[c - 1] != 115)) { c = l - m1; goto lab0; } /* substring, line 60 */
00562         among_var = find_among_b(s_pool, a_1, 3, 0, 0);
00563         if (!(among_var)) { c = l - m1; goto lab0; }
00564         bra = c; /* ], line 60 */
00565         switch(among_var) { /* among, line 60 */
00566             case 0: { c = l - m1; goto lab0; }
00567             case 1:
00568                 if (slice_del() == -1) return -1; /* delete, line 62 */
00569                 break;
00570         }
00571     lab0:
00572         ;
00573     }
00574     ket = c; /* [, line 65 */
00575     if (c <= lb || (p[c - 1] != 100 && p[c - 1] != 115)) return 0; /* substring, line 65 */
00576     among_var = find_among_b(s_pool, a_2, 6, 0, 0);
00577     if (!(among_var)) return 0;
00578     bra = c; /* ], line 65 */
00579     switch(among_var) { /* among, line 65 */
00580         case 0: return 0;
00581         case 1:
00582             {   int ret = slice_from_s(2, s_2); /* <-, line 66 */
00583                 if (ret < 0) return ret;
00584             }
00585             break;
00586         case 2:
00587             {   int m2 = l - c; (void)m2; /* or, line 68 */
00588                 {   int ret = skip_utf8(p, c, lb, l, - 2); /* hop, line 68 */
00589                     if (ret < 0) goto lab2;
00590                     c = ret;
00591                 }
00592                 {   int ret = slice_from_s(1, s_3); /* <-, line 68 */
00593                     if (ret < 0) return ret;
00594                 }
00595                 goto lab1;
00596             lab2:
00597                 c = l - m2;
00598                 {   int ret = slice_from_s(2, s_4); /* <-, line 68 */
00599                     if (ret < 0) return ret;
00600                 }
00601             }
00602         lab1:
00603             break;
00604         case 3:
00605             {   int ret = skip_utf8(p, c, lb, 0, -1);
00606                 if (ret < 0) return 0;
00607                 c = ret; /* next, line 69 */
00608             }
00609             {   int ret = out_grouping_b_U(g_v, 97, 121, 1); /* gopast */ /* grouping v, line 69 */
00610                 if (ret < 0) return 0;
00611                 c -= ret;
00612             }
00613             if (slice_del() == -1) return -1; /* delete, line 69 */
00614             break;
00615     }
00616     return 1;
00617 }
00618 
00619 int Xapian::InternalStemEnglish::r_Step_1b() { /* backwardmode */
00620     int among_var;
00621     ket = c; /* [, line 75 */
00622     if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((33554576 >> (p[c - 1] & 0x1f)) & 1)) return 0; /* substring, line 75 */
00623     among_var = find_among_b(s_pool, a_4, 6, 0, 0);
00624     if (!(among_var)) return 0;
00625     bra = c; /* ], line 75 */
00626     switch(among_var) { /* among, line 75 */
00627         case 0: return 0;
00628         case 1:
00629             {   int ret = r_R1(); /* call R1, line 77 */
00630                 if (ret <= 0) return ret;
00631             }
00632             {   int ret = slice_from_s(2, s_5); /* <-, line 77 */
00633                 if (ret < 0) return ret;
00634             }
00635             break;
00636         case 2:
00637             {   int m_test1 = l - c; /* test, line 80 */
00638                 {   int ret = out_grouping_b_U(g_v, 97, 121, 1); /* gopast */ /* grouping v, line 80 */
00639                     if (ret < 0) return 0;
00640                     c -= ret;
00641                 }
00642                 c = l - m_test1;
00643             }
00644             if (slice_del() == -1) return -1; /* delete, line 80 */
00645             {   int m_test2 = l - c; /* test, line 81 */
00646                 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((68514004 >> (p[c - 1] & 0x1f)) & 1)) among_var = 3; else /* substring, line 81 */
00647                 among_var = find_among_b(s_pool, a_3, 13, 0, 0);
00648                 if (!(among_var)) return 0;
00649                 c = l - m_test2;
00650             }
00651             switch(among_var) { /* among, line 81 */
00652                 case 0: return 0;
00653                 case 1:
00654                     {   int saved_c = c;
00655                         insert_s(c, c, 1, s_6); /* <+, line 83 */
00656                         c = saved_c;
00657                     }
00658                     break;
00659                 case 2:
00660                     ket = c; /* [, line 86 */
00661                     {   int ret = skip_utf8(p, c, lb, 0, -1);
00662                         if (ret < 0) return 0;
00663                         c = ret; /* next, line 86 */
00664                     }
00665                     bra = c; /* ], line 86 */
00666                     if (slice_del() == -1) return -1; /* delete, line 86 */
00667                     break;
00668                 case 3:
00669                     if (c != I_p1) return 0; /* atmark, line 87 */
00670                     {   int m_test3 = l - c; /* test, line 87 */
00671                         {   int ret = r_shortv(); /* call shortv, line 87 */
00672                             if (ret <= 0) return ret;
00673                         }
00674                         c = l - m_test3;
00675                     }
00676                     {   int saved_c = c;
00677                         insert_s(c, c, 1, s_7); /* <+, line 87 */
00678                         c = saved_c;
00679                     }
00680                     break;
00681             }
00682             break;
00683     }
00684     return 1;
00685 }
00686 
00687 int Xapian::InternalStemEnglish::r_Step_1c() { /* backwardmode */
00688     ket = c; /* [, line 94 */
00689     {   int m1 = l - c; (void)m1; /* or, line 94 */
00690         if (c <= lb || p[c - 1] != 'y') goto lab1;
00691         c--;
00692         goto lab0;
00693     lab1:
00694         c = l - m1;
00695         if (c <= lb || p[c - 1] != 'Y') return 0;
00696         c--;
00697     }
00698 lab0:
00699     bra = c; /* ], line 94 */
00700     if (out_grouping_b_U(g_v, 97, 121, 0)) return 0; /* non v, line 95 */
00701     {   int m2 = l - c; (void)m2; /* not, line 95 */
00702         if (c > lb) goto lab2; /* atlimit, line 95 */
00703         return 0;
00704     lab2:
00705         c = l - m2;
00706     }
00707     {   int ret = slice_from_s(1, s_8); /* <-, line 96 */
00708         if (ret < 0) return ret;
00709     }
00710     return 1;
00711 }
00712 
00713 int Xapian::InternalStemEnglish::r_Step_2() { /* backwardmode */
00714     int among_var;
00715     ket = c; /* [, line 100 */
00716     if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((815616 >> (p[c - 1] & 0x1f)) & 1)) return 0; /* substring, line 100 */
00717     among_var = find_among_b(s_pool, a_5, 24, 0, 0);
00718     if (!(among_var)) return 0;
00719     bra = c; /* ], line 100 */
00720     {   int ret = r_R1(); /* call R1, line 100 */
00721         if (ret <= 0) return ret;
00722     }
00723     switch(among_var) { /* among, line 100 */
00724         case 0: return 0;
00725         case 1:
00726             {   int ret = slice_from_s(4, s_9); /* <-, line 101 */
00727                 if (ret < 0) return ret;
00728             }
00729             break;
00730         case 2:
00731             {   int ret = slice_from_s(4, s_10); /* <-, line 102 */
00732                 if (ret < 0) return ret;
00733             }
00734             break;
00735         case 3:
00736             {   int ret = slice_from_s(4, s_11); /* <-, line 103 */
00737                 if (ret < 0) return ret;
00738             }
00739             break;
00740         case 4:
00741             {   int ret = slice_from_s(4, s_12); /* <-, line 104 */
00742                 if (ret < 0) return ret;
00743             }
00744             break;
00745         case 5:
00746             {   int ret = slice_from_s(3, s_13); /* <-, line 105 */
00747                 if (ret < 0) return ret;
00748             }
00749             break;
00750         case 6:
00751             {   int ret = slice_from_s(3, s_14); /* <-, line 107 */
00752                 if (ret < 0) return ret;
00753             }
00754             break;
00755         case 7:
00756             {   int ret = slice_from_s(3, s_15); /* <-, line 109 */
00757                 if (ret < 0) return ret;
00758             }
00759             break;
00760         case 8:
00761             {   int ret = slice_from_s(2, s_16); /* <-, line 111 */
00762                 if (ret < 0) return ret;
00763             }
00764             break;
00765         case 9:
00766             {   int ret = slice_from_s(3, s_17); /* <-, line 112 */
00767                 if (ret < 0) return ret;
00768             }
00769             break;
00770         case 10:
00771             {   int ret = slice_from_s(3, s_18); /* <-, line 114 */
00772                 if (ret < 0) return ret;
00773             }
00774             break;
00775         case 11:
00776             {   int ret = slice_from_s(3, s_19); /* <-, line 116 */
00777                 if (ret < 0) return ret;
00778             }
00779             break;
00780         case 12:
00781             {   int ret = slice_from_s(3, s_20); /* <-, line 118 */
00782                 if (ret < 0) return ret;
00783             }
00784             break;
00785         case 13:
00786             if (c <= lb || p[c - 1] != 'l') return 0;
00787             c--;
00788             {   int ret = slice_from_s(2, s_21); /* <-, line 119 */
00789                 if (ret < 0) return ret;
00790             }
00791             break;
00792         case 14:
00793             {   int ret = slice_from_s(3, s_22); /* <-, line 120 */
00794                 if (ret < 0) return ret;
00795             }
00796             break;
00797         case 15:
00798             {   int ret = slice_from_s(4, s_23); /* <-, line 121 */
00799                 if (ret < 0) return ret;
00800             }
00801             break;
00802         case 16:
00803             if (in_grouping_b_U(g_valid_LI, 99, 116, 0)) return 0; /* grouping valid_LI, line 122 */
00804             if (slice_del() == -1) return -1; /* delete, line 122 */
00805             break;
00806     }
00807     return 1;
00808 }
00809 
00810 int Xapian::InternalStemEnglish::r_Step_3() { /* backwardmode */
00811     int among_var;
00812     ket = c; /* [, line 127 */
00813     if (c - 2 <= lb || p[c - 1] >> 5 != 3 || !((528928 >> (p[c - 1] & 0x1f)) & 1)) return 0; /* substring, line 127 */
00814     among_var = find_among_b(s_pool, a_6, 9, 0, 0);
00815     if (!(among_var)) return 0;
00816     bra = c; /* ], line 127 */
00817     {   int ret = r_R1(); /* call R1, line 127 */
00818         if (ret <= 0) return ret;
00819     }
00820     switch(among_var) { /* among, line 127 */
00821         case 0: return 0;
00822         case 1:
00823             {   int ret = slice_from_s(4, s_24); /* <-, line 128 */
00824                 if (ret < 0) return ret;
00825             }
00826             break;
00827         case 2:
00828             {   int ret = slice_from_s(3, s_25); /* <-, line 129 */
00829                 if (ret < 0) return ret;
00830             }
00831             break;
00832         case 3:
00833             {   int ret = slice_from_s(2, s_26); /* <-, line 130 */
00834                 if (ret < 0) return ret;
00835             }
00836             break;
00837         case 4:
00838             {   int ret = slice_from_s(2, s_27); /* <-, line 132 */
00839                 if (ret < 0) return ret;
00840             }
00841             break;
00842         case 5:
00843             if (slice_del() == -1) return -1; /* delete, line 134 */
00844             break;
00845         case 6:
00846             {   int ret = r_R2(); /* call R2, line 136 */
00847                 if (ret <= 0) return ret;
00848             }
00849             if (slice_del() == -1) return -1; /* delete, line 136 */
00850             break;
00851     }
00852     return 1;
00853 }
00854 
00855 int Xapian::InternalStemEnglish::r_Step_4() { /* backwardmode */
00856     int among_var;
00857     ket = c; /* [, line 141 */
00858     if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1864232 >> (p[c - 1] & 0x1f)) & 1)) return 0; /* substring, line 141 */
00859     among_var = find_among_b(s_pool, a_7, 18, 0, 0);
00860     if (!(among_var)) return 0;
00861     bra = c; /* ], line 141 */
00862     {   int ret = r_R2(); /* call R2, line 141 */
00863         if (ret <= 0) return ret;
00864     }
00865     switch(among_var) { /* among, line 141 */
00866         case 0: return 0;
00867         case 1:
00868             if (slice_del() == -1) return -1; /* delete, line 144 */
00869             break;
00870         case 2:
00871             {   int m1 = l - c; (void)m1; /* or, line 145 */
00872                 if (c <= lb || p[c - 1] != 's') goto lab1;
00873                 c--;
00874                 goto lab0;
00875             lab1:
00876                 c = l - m1;
00877                 if (c <= lb || p[c - 1] != 't') return 0;
00878                 c--;
00879             }
00880         lab0:
00881             if (slice_del() == -1) return -1; /* delete, line 145 */
00882             break;
00883     }
00884     return 1;
00885 }
00886 
00887 int Xapian::InternalStemEnglish::r_Step_5() { /* backwardmode */
00888     int among_var;
00889     ket = c; /* [, line 150 */
00890     if (c <= lb || (p[c - 1] != 101 && p[c - 1] != 108)) return 0; /* substring, line 150 */
00891     among_var = find_among_b(s_pool, a_8, 2, 0, 0);
00892     if (!(among_var)) return 0;
00893     bra = c; /* ], line 150 */
00894     switch(among_var) { /* among, line 150 */
00895         case 0: return 0;
00896         case 1:
00897             {   int m1 = l - c; (void)m1; /* or, line 151 */
00898                 {   int ret = r_R2(); /* call R2, line 151 */
00899                     if (ret == 0) goto lab1;
00900                     if (ret < 0) return ret;
00901                 }
00902                 goto lab0;
00903             lab1:
00904                 c = l - m1;
00905                 {   int ret = r_R1(); /* call R1, line 151 */
00906                     if (ret <= 0) return ret;
00907                 }
00908                 {   int m2 = l - c; (void)m2; /* not, line 151 */
00909                     {   int ret = r_shortv(); /* call shortv, line 151 */
00910                         if (ret == 0) goto lab2;
00911                         if (ret < 0) return ret;
00912                     }
00913                     return 0;
00914                 lab2:
00915                     c = l - m2;
00916                 }
00917             }
00918         lab0:
00919             if (slice_del() == -1) return -1; /* delete, line 151 */
00920             break;
00921         case 2:
00922             {   int ret = r_R2(); /* call R2, line 152 */
00923                 if (ret <= 0) return ret;
00924             }
00925             if (c <= lb || p[c - 1] != 'l') return 0;
00926             c--;
00927             if (slice_del() == -1) return -1; /* delete, line 152 */
00928             break;
00929     }
00930     return 1;
00931 }
00932 
00933 int Xapian::InternalStemEnglish::r_exception2() { /* backwardmode */
00934     ket = c; /* [, line 158 */
00935     if (c - 5 <= lb || (p[c - 1] != 100 && p[c - 1] != 103)) return 0; /* substring, line 158 */
00936     if (!(find_among_b(s_pool, a_9, 8, 0, 0))) return 0;
00937     bra = c; /* ], line 158 */
00938     if (c > lb) return 0; /* atlimit, line 158 */
00939     return 1;
00940 }
00941 
00942 int Xapian::InternalStemEnglish::r_exception1() { /* forwardmode */
00943     int among_var;
00944     bra = c; /* [, line 170 */
00945     if (c + 2 >= l || p[c + 2] >> 5 != 3 || !((42750482 >> (p[c + 2] & 0x1f)) & 1)) return 0; /* substring, line 170 */
00946     among_var = find_among(s_pool, a_10, 18, 0, 0);
00947     if (!(among_var)) return 0;
00948     ket = c; /* ], line 170 */
00949     if (c < l) return 0; /* atlimit, line 170 */
00950     switch(among_var) { /* among, line 170 */
00951         case 0: return 0;
00952         case 1:
00953             {   int ret = slice_from_s(3, s_28); /* <-, line 174 */
00954                 if (ret < 0) return ret;
00955             }
00956             break;
00957         case 2:
00958             {   int ret = slice_from_s(3, s_29); /* <-, line 175 */
00959                 if (ret < 0) return ret;
00960             }
00961             break;
00962         case 3:
00963             {   int ret = slice_from_s(3, s_30); /* <-, line 176 */
00964                 if (ret < 0) return ret;
00965             }
00966             break;
00967         case 4:
00968             {   int ret = slice_from_s(3, s_31); /* <-, line 177 */
00969                 if (ret < 0) return ret;
00970             }
00971             break;
00972         case 5:
00973             {   int ret = slice_from_s(3, s_32); /* <-, line 178 */
00974                 if (ret < 0) return ret;
00975             }
00976             break;
00977         case 6:
00978             {   int ret = slice_from_s(3, s_33); /* <-, line 182 */
00979                 if (ret < 0) return ret;
00980             }
00981             break;
00982         case 7:
00983             {   int ret = slice_from_s(5, s_34); /* <-, line 183 */
00984                 if (ret < 0) return ret;
00985             }
00986             break;
00987         case 8:
00988             {   int ret = slice_from_s(4, s_35); /* <-, line 184 */
00989                 if (ret < 0) return ret;
00990             }
00991             break;
00992         case 9:
00993             {   int ret = slice_from_s(5, s_36); /* <-, line 185 */
00994                 if (ret < 0) return ret;
00995             }
00996             break;
00997         case 10:
00998             {   int ret = slice_from_s(4, s_37); /* <-, line 186 */
00999                 if (ret < 0) return ret;
01000             }
01001             break;
01002         case 11:
01003             {   int ret = slice_from_s(5, s_38); /* <-, line 187 */
01004                 if (ret < 0) return ret;
01005             }
01006             break;
01007     }
01008     return 1;
01009 }
01010 
01011 int Xapian::InternalStemEnglish::r_postlude() { /* forwardmode */
01012     if (!(B_Y_found)) return 0; /* Boolean test Y_found, line 203 */
01013     while(1) { /* repeat, line 203 */
01014         int c1 = c;
01015         while(1) { /* goto, line 203 */
01016             int c2 = c;
01017             bra = c; /* [, line 203 */
01018             if (c == l || p[c] != 'Y') goto lab1;
01019             c++;
01020             ket = c; /* ], line 203 */
01021             c = c2;
01022             break;
01023         lab1:
01024             c = c2;
01025             {   int ret = skip_utf8(p, c, 0, l, 1);
01026                 if (ret < 0) goto lab0;
01027                 c = ret; /* goto, line 203 */
01028             }
01029         }
01030         {   int ret = slice_from_s(1, s_39); /* <-, line 203 */
01031             if (ret < 0) return ret;
01032         }
01033         continue;
01034     lab0:
01035         c = c1;
01036         break;
01037     }
01038     return 1;
01039 }
01040 
01041 int Xapian::InternalStemEnglish::stem() { /* forwardmode */
01042     {   int c1 = c; /* or, line 207 */
01043         {   int ret = r_exception1(); /* call exception1, line 207 */
01044             if (ret == 0) goto lab1;
01045             if (ret < 0) return ret;
01046         }
01047         goto lab0;
01048     lab1:
01049         c = c1;
01050         {   int c2 = c; /* not, line 208 */
01051             {   int ret = skip_utf8(p, c, 0, l, + 3); /* hop, line 208 */
01052                 if (ret < 0) goto lab3;
01053                 c = ret;
01054             }
01055             goto lab2;
01056         lab3:
01057             c = c2;
01058         }
01059         goto lab0;
01060     lab2:
01061         c = c1;
01062         {   int c3 = c; /* do, line 209 */
01063             {   int ret = r_prelude(); /* call prelude, line 209 */
01064                 if (ret == 0) goto lab4;
01065                 if (ret < 0) return ret;
01066             }
01067         lab4:
01068             c = c3;
01069         }
01070         {   int c4 = c; /* do, line 210 */
01071             {   int ret = r_mark_regions(); /* call mark_regions, line 210 */
01072                 if (ret == 0) goto lab5;
01073                 if (ret < 0) return ret;
01074             }
01075         lab5:
01076             c = c4;
01077         }
01078         lb = c; c = l; /* backwards, line 211 */
01079 
01080         {   int m5 = l - c; (void)m5; /* do, line 213 */
01081             {   int ret = r_Step_1a(); /* call Step_1a, line 213 */
01082                 if (ret == 0) goto lab6;
01083                 if (ret < 0) return ret;
01084             }
01085         lab6:
01086             c = l - m5;
01087         }
01088         {   int m6 = l - c; (void)m6; /* or, line 215 */
01089             {   int ret = r_exception2(); /* call exception2, line 215 */
01090                 if (ret == 0) goto lab8;
01091                 if (ret < 0) return ret;
01092             }
01093             goto lab7;
01094         lab8:
01095             c = l - m6;
01096             {   int m7 = l - c; (void)m7; /* do, line 217 */
01097                 {   int ret = r_Step_1b(); /* call Step_1b, line 217 */
01098                     if (ret == 0) goto lab9;
01099                     if (ret < 0) return ret;
01100                 }
01101             lab9:
01102                 c = l - m7;
01103             }
01104             {   int m8 = l - c; (void)m8; /* do, line 218 */
01105                 {   int ret = r_Step_1c(); /* call Step_1c, line 218 */
01106                     if (ret == 0) goto lab10;
01107                     if (ret < 0) return ret;
01108                 }
01109             lab10:
01110                 c = l - m8;
01111             }
01112             {   int m9 = l - c; (void)m9; /* do, line 220 */
01113                 {   int ret = r_Step_2(); /* call Step_2, line 220 */
01114                     if (ret == 0) goto lab11;
01115                     if (ret < 0) return ret;
01116                 }
01117             lab11:
01118                 c = l - m9;
01119             }
01120             {   int m10 = l - c; (void)m10; /* do, line 221 */
01121                 {   int ret = r_Step_3(); /* call Step_3, line 221 */
01122                     if (ret == 0) goto lab12;
01123                     if (ret < 0) return ret;
01124                 }
01125             lab12:
01126                 c = l - m10;
01127             }
01128             {   int m11 = l - c; (void)m11; /* do, line 222 */
01129                 {   int ret = r_Step_4(); /* call Step_4, line 222 */
01130                     if (ret == 0) goto lab13;
01131                     if (ret < 0) return ret;
01132                 }
01133             lab13:
01134                 c = l - m11;
01135             }
01136             {   int m12 = l - c; (void)m12; /* do, line 224 */
01137                 {   int ret = r_Step_5(); /* call Step_5, line 224 */
01138                     if (ret == 0) goto lab14;
01139                     if (ret < 0) return ret;
01140                 }
01141             lab14:
01142                 c = l - m12;
01143             }
01144         }
01145     lab7:
01146         c = lb;
01147         {   int c13 = c; /* do, line 227 */
01148             {   int ret = r_postlude(); /* call postlude, line 227 */
01149                 if (ret == 0) goto lab15;
01150                 if (ret < 0) return ret;
01151             }
01152         lab15:
01153             c = c13;
01154         }
01155     }
01156 lab0:
01157     return 1;
01158 }
01159 
01160 Xapian::InternalStemEnglish::InternalStemEnglish()
01161     : B_Y_found(0), I_p2(0), I_p1(0)
01162 {
01163 }
01164 
01165 Xapian::InternalStemEnglish::~InternalStemEnglish()
01166 {
01167 }
01168 
01169 const char *
01170 Xapian::InternalStemEnglish::get_description() const
01171 {
01172     return "english";
01173 }

Documentation for Xapian (version 1.0.20).
Generated on 28 Apr 2010 by Doxygen 1.5.2.