00001
00002
00003 #include <limits.h>
00004 #include "turkish.h"
00005
00006 #define s_0_0 s_0_2
00007 #define s_0_1 s_0_3
00008 static const symbol s_pool[] = {
00009 #define s_0_2 0
00010 'm', 'i', 'z',
00011 #define s_0_3 3
00012 'n', 'i', 'z',
00013 #define s_0_4 6
00014 'm', 'u', 'z',
00015 #define s_0_5 9
00016 'n', 'u', 'z',
00017 #define s_0_6 12
00018 'm', 0xC4, 0xB1, 'z',
00019 #define s_0_7 16
00020 'n', 0xC4, 0xB1, 'z',
00021 #define s_0_8 20
00022 'm', 0xC3, 0xBC, 'z',
00023 #define s_0_9 24
00024 'n', 0xC3, 0xBC, 'z',
00025 #define s_1_0 28
00026 'l', 'e', 'r', 'i',
00027 #define s_1_1 32
00028 'l', 'a', 'r', 0xC4, 0xB1,
00029 #define s_2_0 37
00030 'n', 'i',
00031 #define s_2_1 39
00032 'n', 'u',
00033 #define s_2_2 41
00034 'n', 0xC4, 0xB1,
00035 #define s_2_3 44
00036 'n', 0xC3, 0xBC,
00037 #define s_3_0 47
00038 'i', 'n',
00039 #define s_3_1 49
00040 'u', 'n',
00041 #define s_3_2 51
00042 0xC4, 0xB1, 'n',
00043 #define s_3_3 54
00044 0xC3, 0xBC, 'n',
00045 #define s_4_0 57
00046 'a',
00047 #define s_4_1 58
00048 'e',
00049 #define s_5_0 59
00050 'n', 'a',
00051 #define s_5_1 61
00052 'n', 'e',
00053 #define s_6_0 63
00054 'd', 'a',
00055 #define s_6_1 65
00056 't', 'a',
00057 #define s_6_2 67
00058 'd', 'e',
00059 #define s_6_3 69
00060 't', 'e',
00061 #define s_7_0 71
00062 'n', 'd', 'a',
00063 #define s_7_1 74
00064 'n', 'd', 'e',
00065 #define s_8_0 77
00066 'd', 'a', 'n',
00067 #define s_8_1 80
00068 't', 'a', 'n',
00069 #define s_8_2 83
00070 'd', 'e', 'n',
00071 #define s_8_3 86
00072 't', 'e', 'n',
00073 #define s_9_0 89
00074 'n', 'd', 'a', 'n',
00075 #define s_9_1 93
00076 'n', 'd', 'e', 'n',
00077 #define s_10_0 97
00078 'l', 'a',
00079 #define s_10_1 99
00080 'l', 'e',
00081 #define s_11_0 101
00082 'c', 'a',
00083 #define s_11_1 103
00084 'c', 'e',
00085 #define s_12_0 105
00086 'i', 'm',
00087 #define s_12_1 107
00088 'u', 'm',
00089 #define s_12_2 109
00090 0xC4, 0xB1, 'm',
00091 #define s_12_3 112
00092 0xC3, 0xBC, 'm',
00093 #define s_13_0 115
00094 's', 'i', 'n',
00095 #define s_13_1 118
00096 's', 'u', 'n',
00097 #define s_13_2 121
00098 's', 0xC4, 0xB1, 'n',
00099 #define s_13_3 125
00100 's', 0xC3, 0xBC, 'n',
00101 #define s_14_0 129
00102 'i', 'z',
00103 #define s_14_1 131
00104 'u', 'z',
00105 #define s_14_2 133
00106 0xC4, 0xB1, 'z',
00107 #define s_14_3 136
00108 0xC3, 0xBC, 'z',
00109 #define s_15_0 139
00110 's', 'i', 'n', 'i', 'z',
00111 #define s_15_1 144
00112 's', 'u', 'n', 'u', 'z',
00113 #define s_15_2 149
00114 's', 0xC4, 0xB1, 'n', 0xC4, 0xB1, 'z',
00115 #define s_15_3 156
00116 's', 0xC3, 0xBC, 'n', 0xC3, 0xBC, 'z',
00117 #define s_16_0 163
00118 'l', 'a', 'r',
00119 #define s_16_1 166
00120 'l', 'e', 'r',
00121 #define s_17_0 169
00122 'n', 'i', 'z',
00123 #define s_17_1 172
00124 'n', 'u', 'z',
00125 #define s_17_2 175
00126 'n', 0xC4, 0xB1, 'z',
00127 #define s_17_3 179
00128 'n', 0xC3, 0xBC, 'z',
00129 #define s_18_0 183
00130 'd', 'i', 'r',
00131 #define s_18_1 186
00132 't', 'i', 'r',
00133 #define s_18_2 189
00134 'd', 'u', 'r',
00135 #define s_18_3 192
00136 't', 'u', 'r',
00137 #define s_18_4 195
00138 'd', 0xC4, 0xB1, 'r',
00139 #define s_18_5 199
00140 't', 0xC4, 0xB1, 'r',
00141 #define s_18_6 203
00142 'd', 0xC3, 0xBC, 'r',
00143 #define s_18_7 207
00144 't', 0xC3, 0xBC, 'r',
00145 #define s_19_0 211
00146 'c', 'a', 's', 0xC4, 0xB1, 'n', 'a',
00147 #define s_19_1 218
00148 'c', 'e', 's', 'i', 'n', 'e',
00149 #define s_20_0 s_20_2
00150 #define s_20_1 s_20_3
00151 #define s_20_2 224
00152 'd', 'i', 'k',
00153 #define s_20_3 227
00154 't', 'i', 'k',
00155 #define s_20_4 230
00156 'd', 'u', 'k',
00157 #define s_20_5 233
00158 't', 'u', 'k',
00159 #define s_20_6 236
00160 'd', 0xC4, 0xB1, 'k',
00161 #define s_20_7 240
00162 't', 0xC4, 0xB1, 'k',
00163 #define s_20_8 244
00164 'd', 0xC3, 0xBC, 'k',
00165 #define s_20_9 248
00166 't', 0xC3, 0xBC, 'k',
00167 #define s_20_10 252
00168 'd', 'i', 'm',
00169 #define s_20_11 255
00170 't', 'i', 'm',
00171 #define s_20_12 258
00172 'd', 'u', 'm',
00173 #define s_20_13 261
00174 't', 'u', 'm',
00175 #define s_20_14 264
00176 'd', 0xC4, 0xB1, 'm',
00177 #define s_20_15 268
00178 't', 0xC4, 0xB1, 'm',
00179 #define s_20_16 272
00180 'd', 0xC3, 0xBC, 'm',
00181 #define s_20_17 276
00182 't', 0xC3, 0xBC, 'm',
00183 #define s_20_18 280
00184 'd', 'i', 'n',
00185 #define s_20_19 283
00186 't', 'i', 'n',
00187 #define s_20_20 286
00188 'd', 'u', 'n',
00189 #define s_20_21 289
00190 't', 'u', 'n',
00191 #define s_20_22 292
00192 'd', 0xC4, 0xB1, 'n',
00193 #define s_20_23 296
00194 't', 0xC4, 0xB1, 'n',
00195 #define s_20_24 300
00196 'd', 0xC3, 0xBC, 'n',
00197 #define s_20_25 304
00198 't', 0xC3, 0xBC, 'n',
00199 #define s_20_26 s_20_4
00200 #define s_20_27 s_20_5
00201 #define s_20_28 s_20_6
00202 #define s_20_29 s_20_7
00203 #define s_20_30 s_20_8
00204 #define s_20_31 s_20_9
00205 #define s_21_0 s_21_2
00206 #define s_21_1 s_21_3
00207 #define s_21_2 308
00208 's', 'a', 'k',
00209 #define s_21_3 311
00210 's', 'e', 'k',
00211 #define s_21_4 314
00212 's', 'a', 'm',
00213 #define s_21_5 317
00214 's', 'e', 'm',
00215 #define s_21_6 320
00216 's', 'a', 'n',
00217 #define s_21_7 323
00218 's', 'e', 'n',
00219 #define s_22_0 326
00220 'm', 'i', 0xC5, 0x9F,
00221 #define s_22_1 330
00222 'm', 'u', 0xC5, 0x9F,
00223 #define s_22_2 334
00224 'm', 0xC4, 0xB1, 0xC5, 0x9F,
00225 #define s_22_3 339
00226 'm', 0xC3, 0xBC, 0xC5, 0x9F,
00227 #define s_23_0 344
00228 'b',
00229 #define s_23_1 345
00230 'c',
00231 #define s_23_2 346
00232 'd',
00233 #define s_23_3 347
00234 0xC4, 0x9F,
00235 };
00236
00237
00238 static const struct among a_0[10] =
00239 {
00240 { 1, s_0_0, -1, -1},
00241 { 1, s_0_1, -1, -1},
00242 { 3, s_0_2, -1, -1},
00243 { 3, s_0_3, -1, -1},
00244 { 3, s_0_4, -1, -1},
00245 { 3, s_0_5, -1, -1},
00246 { 4, s_0_6, -1, -1},
00247 { 4, s_0_7, -1, -1},
00248 { 4, s_0_8, -1, -1},
00249 { 4, s_0_9, -1, -1}
00250 };
00251
00252
00253 static const struct among a_1[2] =
00254 {
00255 { 4, s_1_0, -1, -1},
00256 { 5, s_1_1, -1, -1}
00257 };
00258
00259
00260 static const struct among a_2[4] =
00261 {
00262 { 2, s_2_0, -1, -1},
00263 { 2, s_2_1, -1, -1},
00264 { 3, s_2_2, -1, -1},
00265 { 3, s_2_3, -1, -1}
00266 };
00267
00268
00269 static const struct among a_3[4] =
00270 {
00271 { 2, s_3_0, -1, -1},
00272 { 2, s_3_1, -1, -1},
00273 { 3, s_3_2, -1, -1},
00274 { 3, s_3_3, -1, -1}
00275 };
00276
00277
00278 static const struct among a_4[2] =
00279 {
00280 { 1, s_4_0, -1, -1},
00281 { 1, s_4_1, -1, -1}
00282 };
00283
00284
00285 static const struct among a_5[2] =
00286 {
00287 { 2, s_5_0, -1, -1},
00288 { 2, s_5_1, -1, -1}
00289 };
00290
00291
00292 static const struct among a_6[4] =
00293 {
00294 { 2, s_6_0, -1, -1},
00295 { 2, s_6_1, -1, -1},
00296 { 2, s_6_2, -1, -1},
00297 { 2, s_6_3, -1, -1}
00298 };
00299
00300
00301 static const struct among a_7[2] =
00302 {
00303 { 3, s_7_0, -1, -1},
00304 { 3, s_7_1, -1, -1}
00305 };
00306
00307
00308 static const struct among a_8[4] =
00309 {
00310 { 3, s_8_0, -1, -1},
00311 { 3, s_8_1, -1, -1},
00312 { 3, s_8_2, -1, -1},
00313 { 3, s_8_3, -1, -1}
00314 };
00315
00316
00317 static const struct among a_9[2] =
00318 {
00319 { 4, s_9_0, -1, -1},
00320 { 4, s_9_1, -1, -1}
00321 };
00322
00323
00324 static const struct among a_10[2] =
00325 {
00326 { 2, s_10_0, -1, -1},
00327 { 2, s_10_1, -1, -1}
00328 };
00329
00330
00331 static const struct among a_11[2] =
00332 {
00333 { 2, s_11_0, -1, -1},
00334 { 2, s_11_1, -1, -1}
00335 };
00336
00337
00338 static const struct among a_12[4] =
00339 {
00340 { 2, s_12_0, -1, -1},
00341 { 2, s_12_1, -1, -1},
00342 { 3, s_12_2, -1, -1},
00343 { 3, s_12_3, -1, -1}
00344 };
00345
00346
00347 static const struct among a_13[4] =
00348 {
00349 { 3, s_13_0, -1, -1},
00350 { 3, s_13_1, -1, -1},
00351 { 4, s_13_2, -1, -1},
00352 { 4, s_13_3, -1, -1}
00353 };
00354
00355
00356 static const struct among a_14[4] =
00357 {
00358 { 2, s_14_0, -1, -1},
00359 { 2, s_14_1, -1, -1},
00360 { 3, s_14_2, -1, -1},
00361 { 3, s_14_3, -1, -1}
00362 };
00363
00364
00365 static const struct among a_15[4] =
00366 {
00367 { 5, s_15_0, -1, -1},
00368 { 5, s_15_1, -1, -1},
00369 { 7, s_15_2, -1, -1},
00370 { 7, s_15_3, -1, -1}
00371 };
00372
00373
00374 static const struct among a_16[2] =
00375 {
00376 { 3, s_16_0, -1, -1},
00377 { 3, s_16_1, -1, -1}
00378 };
00379
00380
00381 static const struct among a_17[4] =
00382 {
00383 { 3, s_17_0, -1, -1},
00384 { 3, s_17_1, -1, -1},
00385 { 4, s_17_2, -1, -1},
00386 { 4, s_17_3, -1, -1}
00387 };
00388
00389
00390 static const struct among a_18[8] =
00391 {
00392 { 3, s_18_0, -1, -1},
00393 { 3, s_18_1, -1, -1},
00394 { 3, s_18_2, -1, -1},
00395 { 3, s_18_3, -1, -1},
00396 { 4, s_18_4, -1, -1},
00397 { 4, s_18_5, -1, -1},
00398 { 4, s_18_6, -1, -1},
00399 { 4, s_18_7, -1, -1}
00400 };
00401
00402
00403 static const struct among a_19[2] =
00404 {
00405 { 7, s_19_0, -1, -1},
00406 { 6, s_19_1, -1, -1}
00407 };
00408
00409
00410 static const struct among a_20[32] =
00411 {
00412 { 2, s_20_0, -1, -1},
00413 { 2, s_20_1, -1, -1},
00414 { 3, s_20_2, -1, -1},
00415 { 3, s_20_3, -1, -1},
00416 { 3, s_20_4, -1, -1},
00417 { 3, s_20_5, -1, -1},
00418 { 4, s_20_6, -1, -1},
00419 { 4, s_20_7, -1, -1},
00420 { 4, s_20_8, -1, -1},
00421 { 4, s_20_9, -1, -1},
00422 { 3, s_20_10, -1, -1},
00423 { 3, s_20_11, -1, -1},
00424 { 3, s_20_12, -1, -1},
00425 { 3, s_20_13, -1, -1},
00426 { 4, s_20_14, -1, -1},
00427 { 4, s_20_15, -1, -1},
00428 { 4, s_20_16, -1, -1},
00429 { 4, s_20_17, -1, -1},
00430 { 3, s_20_18, -1, -1},
00431 { 3, s_20_19, -1, -1},
00432 { 3, s_20_20, -1, -1},
00433 { 3, s_20_21, -1, -1},
00434 { 4, s_20_22, -1, -1},
00435 { 4, s_20_23, -1, -1},
00436 { 4, s_20_24, -1, -1},
00437 { 4, s_20_25, -1, -1},
00438 { 2, s_20_26, -1, -1},
00439 { 2, s_20_27, -1, -1},
00440 { 3, s_20_28, -1, -1},
00441 { 3, s_20_29, -1, -1},
00442 { 3, s_20_30, -1, -1},
00443 { 3, s_20_31, -1, -1}
00444 };
00445
00446
00447 static const struct among a_21[8] =
00448 {
00449 { 2, s_21_0, -1, -1},
00450 { 2, s_21_1, -1, -1},
00451 { 3, s_21_2, -1, -1},
00452 { 3, s_21_3, -1, -1},
00453 { 3, s_21_4, -1, -1},
00454 { 3, s_21_5, -1, -1},
00455 { 3, s_21_6, -1, -1},
00456 { 3, s_21_7, -1, -1}
00457 };
00458
00459
00460 static const struct among a_22[4] =
00461 {
00462 { 4, s_22_0, -1, -1},
00463 { 4, s_22_1, -1, -1},
00464 { 5, s_22_2, -1, -1},
00465 { 5, s_22_3, -1, -1}
00466 };
00467
00468
00469 static const struct among a_23[4] =
00470 {
00471 { 1, s_23_0, -1, 1},
00472 { 1, s_23_1, -1, 2},
00473 { 1, s_23_2, -1, 3},
00474 { 2, s_23_3, -1, 4}
00475 };
00476
00477 static const unsigned char g_vowel[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 };
00478
00479 static const unsigned char g_U[] = { 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 };
00480
00481 static const unsigned char g_vowel1[] = { 1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
00482
00483 static const unsigned char g_vowel2[] = { 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 };
00484
00485 static const unsigned char g_vowel3[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
00486
00487 static const unsigned char g_vowel4[] = { 17 };
00488
00489 static const unsigned char g_vowel5[] = { 65 };
00490
00491 static const unsigned char g_vowel6[] = { 65 };
00492
00493 static const symbol s_0[] = { 0xC4, 0xB1 };
00494 static const symbol s_1[] = { 0xC3, 0xB6 };
00495 static const symbol s_2[] = { 0xC3, 0xBC };
00496 static const symbol s_3[] = { 'k', 'i' };
00497 static const symbol s_4[] = { 'k', 'e', 'n' };
00498 static const symbol s_5[] = { 'p' };
00499 static const symbol s_6[] = { 0xC3, 0xA7 };
00500 static const symbol s_7[] = { 't' };
00501 static const symbol s_8[] = { 'k' };
00502 static const symbol s_9[] = { 0xC4, 0xB1 };
00503 static const symbol s_10[] = { 0xC4, 0xB1 };
00504 static const symbol s_11[] = { 'i' };
00505 static const symbol s_12[] = { 'u' };
00506 static const symbol s_13[] = { 0xC3, 0xB6 };
00507 static const symbol s_14[] = { 0xC3, 0xBC };
00508 static const symbol s_15[] = { 0xC3, 0xBC };
00509 static const symbol s_16[] = { 'a', 'd' };
00510 static const symbol s_17[] = { 's', 'o', 'y', 'a', 'd' };
00511
00512 int Xapian::InternalStemTurkish::r_check_vowel_harmony() {
00513 { int m_test1 = l - c;
00514 if (out_grouping_b_U(g_vowel, 97, 305, 1) < 0) return 0;
00515 { int m2 = l - c; (void)m2;
00516 if (c <= lb || p[c - 1] != 'a') goto lab1;
00517 c--;
00518 if (out_grouping_b_U(g_vowel1, 97, 305, 1) < 0) goto lab1;
00519 goto lab0;
00520 lab1:
00521 c = l - m2;
00522 if (c <= lb || p[c - 1] != 'e') goto lab2;
00523 c--;
00524 if (out_grouping_b_U(g_vowel2, 101, 252, 1) < 0) goto lab2;
00525 goto lab0;
00526 lab2:
00527 c = l - m2;
00528 if (!(eq_s_b(2, s_0))) goto lab3;
00529 if (out_grouping_b_U(g_vowel3, 97, 305, 1) < 0) goto lab3;
00530 goto lab0;
00531 lab3:
00532 c = l - m2;
00533 if (c <= lb || p[c - 1] != 'i') goto lab4;
00534 c--;
00535 if (out_grouping_b_U(g_vowel4, 101, 105, 1) < 0) goto lab4;
00536 goto lab0;
00537 lab4:
00538 c = l - m2;
00539 if (c <= lb || p[c - 1] != 'o') goto lab5;
00540 c--;
00541 if (out_grouping_b_U(g_vowel5, 111, 117, 1) < 0) goto lab5;
00542 goto lab0;
00543 lab5:
00544 c = l - m2;
00545 if (!(eq_s_b(2, s_1))) goto lab6;
00546 if (out_grouping_b_U(g_vowel6, 246, 252, 1) < 0) goto lab6;
00547 goto lab0;
00548 lab6:
00549 c = l - m2;
00550 if (c <= lb || p[c - 1] != 'u') goto lab7;
00551 c--;
00552 if (out_grouping_b_U(g_vowel5, 111, 117, 1) < 0) goto lab7;
00553 goto lab0;
00554 lab7:
00555 c = l - m2;
00556 if (!(eq_s_b(2, s_2))) return 0;
00557 if (out_grouping_b_U(g_vowel6, 246, 252, 1) < 0) return 0;
00558 }
00559 lab0:
00560 c = l - m_test1;
00561 }
00562 return 1;
00563 }
00564
00565 int Xapian::InternalStemTurkish::r_mark_suffix_with_optional_n_consonant() {
00566 { int m1 = l - c; (void)m1;
00567 if (c <= lb || p[c - 1] != 'n') goto lab1;
00568 c--;
00569 { int m_test2 = l - c;
00570 if (in_grouping_b_U(g_vowel, 97, 305, 0)) goto lab1;
00571 c = l - m_test2;
00572 }
00573 goto lab0;
00574 lab1:
00575 c = l - m1;
00576 { int m3 = l - c; (void)m3;
00577 { int m_test4 = l - c;
00578 if (c <= lb || p[c - 1] != 'n') goto lab2;
00579 c--;
00580 c = l - m_test4;
00581 }
00582 return 0;
00583 lab2:
00584 c = l - m3;
00585 }
00586 { int m_test5 = l - c;
00587 { int ret = skip_utf8(p, c, lb, 0, -1);
00588 if (ret < 0) return 0;
00589 c = ret;
00590 }
00591 if (in_grouping_b_U(g_vowel, 97, 305, 0)) return 0;
00592 c = l - m_test5;
00593 }
00594 }
00595 lab0:
00596 return 1;
00597 }
00598
00599 int Xapian::InternalStemTurkish::r_mark_suffix_with_optional_s_consonant() {
00600 { int m1 = l - c; (void)m1;
00601 if (c <= lb || p[c - 1] != 's') goto lab1;
00602 c--;
00603 { int m_test2 = l - c;
00604 if (in_grouping_b_U(g_vowel, 97, 305, 0)) goto lab1;
00605 c = l - m_test2;
00606 }
00607 goto lab0;
00608 lab1:
00609 c = l - m1;
00610 { int m3 = l - c; (void)m3;
00611 { int m_test4 = l - c;
00612 if (c <= lb || p[c - 1] != 's') goto lab2;
00613 c--;
00614 c = l - m_test4;
00615 }
00616 return 0;
00617 lab2:
00618 c = l - m3;
00619 }
00620 { int m_test5 = l - c;
00621 { int ret = skip_utf8(p, c, lb, 0, -1);
00622 if (ret < 0) return 0;
00623 c = ret;
00624 }
00625 if (in_grouping_b_U(g_vowel, 97, 305, 0)) return 0;
00626 c = l - m_test5;
00627 }
00628 }
00629 lab0:
00630 return 1;
00631 }
00632
00633 int Xapian::InternalStemTurkish::r_mark_suffix_with_optional_y_consonant() {
00634 { int m1 = l - c; (void)m1;
00635 if (c <= lb || p[c - 1] != 'y') goto lab1;
00636 c--;
00637 { int m_test2 = l - c;
00638 if (in_grouping_b_U(g_vowel, 97, 305, 0)) goto lab1;
00639 c = l - m_test2;
00640 }
00641 goto lab0;
00642 lab1:
00643 c = l - m1;
00644 { int m3 = l - c; (void)m3;
00645 { int m_test4 = l - c;
00646 if (c <= lb || p[c - 1] != 'y') goto lab2;
00647 c--;
00648 c = l - m_test4;
00649 }
00650 return 0;
00651 lab2:
00652 c = l - m3;
00653 }
00654 { int m_test5 = l - c;
00655 { int ret = skip_utf8(p, c, lb, 0, -1);
00656 if (ret < 0) return 0;
00657 c = ret;
00658 }
00659 if (in_grouping_b_U(g_vowel, 97, 305, 0)) return 0;
00660 c = l - m_test5;
00661 }
00662 }
00663 lab0:
00664 return 1;
00665 }
00666
00667 int Xapian::InternalStemTurkish::r_mark_suffix_with_optional_U_vowel() {
00668 { int m1 = l - c; (void)m1;
00669 if (in_grouping_b_U(g_U, 105, 305, 0)) goto lab1;
00670 { int m_test2 = l - c;
00671 if (out_grouping_b_U(g_vowel, 97, 305, 0)) goto lab1;
00672 c = l - m_test2;
00673 }
00674 goto lab0;
00675 lab1:
00676 c = l - m1;
00677 { int m3 = l - c; (void)m3;
00678 { int m_test4 = l - c;
00679 if (in_grouping_b_U(g_U, 105, 305, 0)) goto lab2;
00680 c = l - m_test4;
00681 }
00682 return 0;
00683 lab2:
00684 c = l - m3;
00685 }
00686 { int m_test5 = l - c;
00687 { int ret = skip_utf8(p, c, lb, 0, -1);
00688 if (ret < 0) return 0;
00689 c = ret;
00690 }
00691 if (out_grouping_b_U(g_vowel, 97, 305, 0)) return 0;
00692 c = l - m_test5;
00693 }
00694 }
00695 lab0:
00696 return 1;
00697 }
00698
00699 int Xapian::InternalStemTurkish::r_mark_possessives() {
00700 if (c <= lb || p[c - 1] >> 5 != 3 || !((67133440 >> (p[c - 1] & 0x1f)) & 1)) return 0;
00701 if (!(find_among_b(s_pool, a_0, 10, 0, 0))) return 0;
00702 { int ret = r_mark_suffix_with_optional_U_vowel();
00703 if (ret <= 0) return ret;
00704 }
00705 return 1;
00706 }
00707
00708 int Xapian::InternalStemTurkish::r_mark_sU() {
00709 { int ret = r_check_vowel_harmony();
00710 if (ret <= 0) return ret;
00711 }
00712 if (in_grouping_b_U(g_U, 105, 305, 0)) return 0;
00713 { int ret = r_mark_suffix_with_optional_s_consonant();
00714 if (ret <= 0) return ret;
00715 }
00716 return 1;
00717 }
00718
00719 int Xapian::InternalStemTurkish::r_mark_lArI() {
00720 if (c - 3 <= lb || (p[c - 1] != 105 && p[c - 1] != 177)) return 0;
00721 if (!(find_among_b(s_pool, a_1, 2, 0, 0))) return 0;
00722 return 1;
00723 }
00724
00725 int Xapian::InternalStemTurkish::r_mark_yU() {
00726 { int ret = r_check_vowel_harmony();
00727 if (ret <= 0) return ret;
00728 }
00729 if (in_grouping_b_U(g_U, 105, 305, 0)) return 0;
00730 { int ret = r_mark_suffix_with_optional_y_consonant();
00731 if (ret <= 0) return ret;
00732 }
00733 return 1;
00734 }
00735
00736 int Xapian::InternalStemTurkish::r_mark_nU() {
00737 { int ret = r_check_vowel_harmony();
00738 if (ret <= 0) return ret;
00739 }
00740 if (!(find_among_b(s_pool, a_2, 4, 0, 0))) return 0;
00741 return 1;
00742 }
00743
00744 int Xapian::InternalStemTurkish::r_mark_nUn() {
00745 { int ret = r_check_vowel_harmony();
00746 if (ret <= 0) return ret;
00747 }
00748 if (c - 1 <= lb || p[c - 1] != 110) return 0;
00749 if (!(find_among_b(s_pool, a_3, 4, 0, 0))) return 0;
00750 { int ret = r_mark_suffix_with_optional_n_consonant();
00751 if (ret <= 0) return ret;
00752 }
00753 return 1;
00754 }
00755
00756 int Xapian::InternalStemTurkish::r_mark_yA() {
00757 { int ret = r_check_vowel_harmony();
00758 if (ret <= 0) return ret;
00759 }
00760 if (c <= lb || (p[c - 1] != 97 && p[c - 1] != 101)) return 0;
00761 if (!(find_among_b(s_pool, a_4, 2, 0, 0))) return 0;
00762 { int ret = r_mark_suffix_with_optional_y_consonant();
00763 if (ret <= 0) return ret;
00764 }
00765 return 1;
00766 }
00767
00768 int Xapian::InternalStemTurkish::r_mark_nA() {
00769 { int ret = r_check_vowel_harmony();
00770 if (ret <= 0) return ret;
00771 }
00772 if (c - 1 <= lb || (p[c - 1] != 97 && p[c - 1] != 101)) return 0;
00773 if (!(find_among_b(s_pool, a_5, 2, 0, 0))) return 0;
00774 return 1;
00775 }
00776
00777 int Xapian::InternalStemTurkish::r_mark_DA() {
00778 { int ret = r_check_vowel_harmony();
00779 if (ret <= 0) return ret;
00780 }
00781 if (c - 1 <= lb || (p[c - 1] != 97 && p[c - 1] != 101)) return 0;
00782 if (!(find_among_b(s_pool, a_6, 4, 0, 0))) return 0;
00783 return 1;
00784 }
00785
00786 int Xapian::InternalStemTurkish::r_mark_ndA() {
00787 { int ret = r_check_vowel_harmony();
00788 if (ret <= 0) return ret;
00789 }
00790 if (c - 2 <= lb || (p[c - 1] != 97 && p[c - 1] != 101)) return 0;
00791 if (!(find_among_b(s_pool, a_7, 2, 0, 0))) return 0;
00792 return 1;
00793 }
00794
00795 int Xapian::InternalStemTurkish::r_mark_DAn() {
00796 { int ret = r_check_vowel_harmony();
00797 if (ret <= 0) return ret;
00798 }
00799 if (c - 2 <= lb || p[c - 1] != 110) return 0;
00800 if (!(find_among_b(s_pool, a_8, 4, 0, 0))) return 0;
00801 return 1;
00802 }
00803
00804 int Xapian::InternalStemTurkish::r_mark_ndAn() {
00805 { int ret = r_check_vowel_harmony();
00806 if (ret <= 0) return ret;
00807 }
00808 if (c - 3 <= lb || p[c - 1] != 110) return 0;
00809 if (!(find_among_b(s_pool, a_9, 2, 0, 0))) return 0;
00810 return 1;
00811 }
00812
00813 int Xapian::InternalStemTurkish::r_mark_ylA() {
00814 { int ret = r_check_vowel_harmony();
00815 if (ret <= 0) return ret;
00816 }
00817 if (c - 1 <= lb || (p[c - 1] != 97 && p[c - 1] != 101)) return 0;
00818 if (!(find_among_b(s_pool, a_10, 2, 0, 0))) return 0;
00819 { int ret = r_mark_suffix_with_optional_y_consonant();
00820 if (ret <= 0) return ret;
00821 }
00822 return 1;
00823 }
00824
00825 int Xapian::InternalStemTurkish::r_mark_ki() {
00826 if (!(eq_s_b(2, s_3))) return 0;
00827 return 1;
00828 }
00829
00830 int Xapian::InternalStemTurkish::r_mark_ncA() {
00831 { int ret = r_check_vowel_harmony();
00832 if (ret <= 0) return ret;
00833 }
00834 if (c - 1 <= lb || (p[c - 1] != 97 && p[c - 1] != 101)) return 0;
00835 if (!(find_among_b(s_pool, a_11, 2, 0, 0))) return 0;
00836 { int ret = r_mark_suffix_with_optional_n_consonant();
00837 if (ret <= 0) return ret;
00838 }
00839 return 1;
00840 }
00841
00842 int Xapian::InternalStemTurkish::r_mark_yUm() {
00843 { int ret = r_check_vowel_harmony();
00844 if (ret <= 0) return ret;
00845 }
00846 if (c - 1 <= lb || p[c - 1] != 109) return 0;
00847 if (!(find_among_b(s_pool, a_12, 4, 0, 0))) return 0;
00848 { int ret = r_mark_suffix_with_optional_y_consonant();
00849 if (ret <= 0) return ret;
00850 }
00851 return 1;
00852 }
00853
00854 int Xapian::InternalStemTurkish::r_mark_sUn() {
00855 { int ret = r_check_vowel_harmony();
00856 if (ret <= 0) return ret;
00857 }
00858 if (c - 2 <= lb || p[c - 1] != 110) return 0;
00859 if (!(find_among_b(s_pool, a_13, 4, 0, 0))) return 0;
00860 return 1;
00861 }
00862
00863 int Xapian::InternalStemTurkish::r_mark_yUz() {
00864 { int ret = r_check_vowel_harmony();
00865 if (ret <= 0) return ret;
00866 }
00867 if (c - 1 <= lb || p[c - 1] != 122) return 0;
00868 if (!(find_among_b(s_pool, a_14, 4, 0, 0))) return 0;
00869 { int ret = r_mark_suffix_with_optional_y_consonant();
00870 if (ret <= 0) return ret;
00871 }
00872 return 1;
00873 }
00874
00875 int Xapian::InternalStemTurkish::r_mark_sUnUz() {
00876 if (c - 4 <= lb || p[c - 1] != 122) return 0;
00877 if (!(find_among_b(s_pool, a_15, 4, 0, 0))) return 0;
00878 return 1;
00879 }
00880
00881 int Xapian::InternalStemTurkish::r_mark_lAr() {
00882 { int ret = r_check_vowel_harmony();
00883 if (ret <= 0) return ret;
00884 }
00885 if (c - 2 <= lb || p[c - 1] != 114) return 0;
00886 if (!(find_among_b(s_pool, a_16, 2, 0, 0))) return 0;
00887 return 1;
00888 }
00889
00890 int Xapian::InternalStemTurkish::r_mark_nUz() {
00891 { int ret = r_check_vowel_harmony();
00892 if (ret <= 0) return ret;
00893 }
00894 if (c - 2 <= lb || p[c - 1] != 122) return 0;
00895 if (!(find_among_b(s_pool, a_17, 4, 0, 0))) return 0;
00896 return 1;
00897 }
00898
00899 int Xapian::InternalStemTurkish::r_mark_DUr() {
00900 { int ret = r_check_vowel_harmony();
00901 if (ret <= 0) return ret;
00902 }
00903 if (c - 2 <= lb || p[c - 1] != 114) return 0;
00904 if (!(find_among_b(s_pool, a_18, 8, 0, 0))) return 0;
00905 return 1;
00906 }
00907
00908 int Xapian::InternalStemTurkish::r_mark_cAsInA() {
00909 if (c - 5 <= lb || (p[c - 1] != 97 && p[c - 1] != 101)) return 0;
00910 if (!(find_among_b(s_pool, a_19, 2, 0, 0))) return 0;
00911 return 1;
00912 }
00913
00914 int Xapian::InternalStemTurkish::r_mark_yDU() {
00915 { int ret = r_check_vowel_harmony();
00916 if (ret <= 0) return ret;
00917 }
00918 if (!(find_among_b(s_pool, a_20, 32, 0, 0))) return 0;
00919 { int ret = r_mark_suffix_with_optional_y_consonant();
00920 if (ret <= 0) return ret;
00921 }
00922 return 1;
00923 }
00924
00925 int Xapian::InternalStemTurkish::r_mark_ysA() {
00926 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((26658 >> (p[c - 1] & 0x1f)) & 1)) return 0;
00927 if (!(find_among_b(s_pool, a_21, 8, 0, 0))) return 0;
00928 { int ret = r_mark_suffix_with_optional_y_consonant();
00929 if (ret <= 0) return ret;
00930 }
00931 return 1;
00932 }
00933
00934 int Xapian::InternalStemTurkish::r_mark_ymUs_() {
00935 { int ret = r_check_vowel_harmony();
00936 if (ret <= 0) return ret;
00937 }
00938 if (c - 3 <= lb || p[c - 1] != 159) return 0;
00939 if (!(find_among_b(s_pool, a_22, 4, 0, 0))) return 0;
00940 { int ret = r_mark_suffix_with_optional_y_consonant();
00941 if (ret <= 0) return ret;
00942 }
00943 return 1;
00944 }
00945
00946 int Xapian::InternalStemTurkish::r_mark_yken() {
00947 if (!(eq_s_b(3, s_4))) return 0;
00948 { int ret = r_mark_suffix_with_optional_y_consonant();
00949 if (ret <= 0) return ret;
00950 }
00951 return 1;
00952 }
00953
00954 int Xapian::InternalStemTurkish::r_stem_nominal_verb_suffixes() {
00955 ket = c;
00956 B_continue_stemming_noun_suffixes = 1;
00957 { int m1 = l - c; (void)m1;
00958 { int m2 = l - c; (void)m2;
00959 { int ret = r_mark_ymUs_();
00960 if (ret == 0) goto lab3;
00961 if (ret < 0) return ret;
00962 }
00963 goto lab2;
00964 lab3:
00965 c = l - m2;
00966 { int ret = r_mark_yDU();
00967 if (ret == 0) goto lab4;
00968 if (ret < 0) return ret;
00969 }
00970 goto lab2;
00971 lab4:
00972 c = l - m2;
00973 { int ret = r_mark_ysA();
00974 if (ret == 0) goto lab5;
00975 if (ret < 0) return ret;
00976 }
00977 goto lab2;
00978 lab5:
00979 c = l - m2;
00980 { int ret = r_mark_yken();
00981 if (ret == 0) goto lab1;
00982 if (ret < 0) return ret;
00983 }
00984 }
00985 lab2:
00986 goto lab0;
00987 lab1:
00988 c = l - m1;
00989 { int ret = r_mark_cAsInA();
00990 if (ret == 0) goto lab6;
00991 if (ret < 0) return ret;
00992 }
00993 { int m3 = l - c; (void)m3;
00994 { int ret = r_mark_sUnUz();
00995 if (ret == 0) goto lab8;
00996 if (ret < 0) return ret;
00997 }
00998 goto lab7;
00999 lab8:
01000 c = l - m3;
01001 { int ret = r_mark_lAr();
01002 if (ret == 0) goto lab9;
01003 if (ret < 0) return ret;
01004 }
01005 goto lab7;
01006 lab9:
01007 c = l - m3;
01008 { int ret = r_mark_yUm();
01009 if (ret == 0) goto lab10;
01010 if (ret < 0) return ret;
01011 }
01012 goto lab7;
01013 lab10:
01014 c = l - m3;
01015 { int ret = r_mark_sUn();
01016 if (ret == 0) goto lab11;
01017 if (ret < 0) return ret;
01018 }
01019 goto lab7;
01020 lab11:
01021 c = l - m3;
01022 { int ret = r_mark_yUz();
01023 if (ret == 0) goto lab12;
01024 if (ret < 0) return ret;
01025 }
01026 goto lab7;
01027 lab12:
01028 c = l - m3;
01029 }
01030 lab7:
01031 { int ret = r_mark_ymUs_();
01032 if (ret == 0) goto lab6;
01033 if (ret < 0) return ret;
01034 }
01035 goto lab0;
01036 lab6:
01037 c = l - m1;
01038 { int ret = r_mark_lAr();
01039 if (ret == 0) goto lab13;
01040 if (ret < 0) return ret;
01041 }
01042 bra = c;
01043 if (slice_del() == -1) return -1;
01044 { int m4 = l - c; (void)m4;
01045 ket = c;
01046 { int m5 = l - c; (void)m5;
01047 { int ret = r_mark_DUr();
01048 if (ret == 0) goto lab16;
01049 if (ret < 0) return ret;
01050 }
01051 goto lab15;
01052 lab16:
01053 c = l - m5;
01054 { int ret = r_mark_yDU();
01055 if (ret == 0) goto lab17;
01056 if (ret < 0) return ret;
01057 }
01058 goto lab15;
01059 lab17:
01060 c = l - m5;
01061 { int ret = r_mark_ysA();
01062 if (ret == 0) goto lab18;
01063 if (ret < 0) return ret;
01064 }
01065 goto lab15;
01066 lab18:
01067 c = l - m5;
01068 { int ret = r_mark_ymUs_();
01069 if (ret == 0) { c = l - m4; goto lab14; }
01070 if (ret < 0) return ret;
01071 }
01072 }
01073 lab15:
01074 lab14:
01075 ;
01076 }
01077 B_continue_stemming_noun_suffixes = 0;
01078 goto lab0;
01079 lab13:
01080 c = l - m1;
01081 { int ret = r_mark_nUz();
01082 if (ret == 0) goto lab19;
01083 if (ret < 0) return ret;
01084 }
01085 { int m6 = l - c; (void)m6;
01086 { int ret = r_mark_yDU();
01087 if (ret == 0) goto lab21;
01088 if (ret < 0) return ret;
01089 }
01090 goto lab20;
01091 lab21:
01092 c = l - m6;
01093 { int ret = r_mark_ysA();
01094 if (ret == 0) goto lab19;
01095 if (ret < 0) return ret;
01096 }
01097 }
01098 lab20:
01099 goto lab0;
01100 lab19:
01101 c = l - m1;
01102 { int m7 = l - c; (void)m7;
01103 { int ret = r_mark_sUnUz();
01104 if (ret == 0) goto lab24;
01105 if (ret < 0) return ret;
01106 }
01107 goto lab23;
01108 lab24:
01109 c = l - m7;
01110 { int ret = r_mark_yUz();
01111 if (ret == 0) goto lab25;
01112 if (ret < 0) return ret;
01113 }
01114 goto lab23;
01115 lab25:
01116 c = l - m7;
01117 { int ret = r_mark_sUn();
01118 if (ret == 0) goto lab26;
01119 if (ret < 0) return ret;
01120 }
01121 goto lab23;
01122 lab26:
01123 c = l - m7;
01124 { int ret = r_mark_yUm();
01125 if (ret == 0) goto lab22;
01126 if (ret < 0) return ret;
01127 }
01128 }
01129 lab23:
01130 bra = c;
01131 if (slice_del() == -1) return -1;
01132 { int m8 = l - c; (void)m8;
01133 ket = c;
01134 { int ret = r_mark_ymUs_();
01135 if (ret == 0) { c = l - m8; goto lab27; }
01136 if (ret < 0) return ret;
01137 }
01138 lab27:
01139 ;
01140 }
01141 goto lab0;
01142 lab22:
01143 c = l - m1;
01144 { int ret = r_mark_DUr();
01145 if (ret <= 0) return ret;
01146 }
01147 bra = c;
01148 if (slice_del() == -1) return -1;
01149 { int m9 = l - c; (void)m9;
01150 ket = c;
01151 { int m10 = l - c; (void)m10;
01152 { int ret = r_mark_sUnUz();
01153 if (ret == 0) goto lab30;
01154 if (ret < 0) return ret;
01155 }
01156 goto lab29;
01157 lab30:
01158 c = l - m10;
01159 { int ret = r_mark_lAr();
01160 if (ret == 0) goto lab31;
01161 if (ret < 0) return ret;
01162 }
01163 goto lab29;
01164 lab31:
01165 c = l - m10;
01166 { int ret = r_mark_yUm();
01167 if (ret == 0) goto lab32;
01168 if (ret < 0) return ret;
01169 }
01170 goto lab29;
01171 lab32:
01172 c = l - m10;
01173 { int ret = r_mark_sUn();
01174 if (ret == 0) goto lab33;
01175 if (ret < 0) return ret;
01176 }
01177 goto lab29;
01178 lab33:
01179 c = l - m10;
01180 { int ret = r_mark_yUz();
01181 if (ret == 0) goto lab34;
01182 if (ret < 0) return ret;
01183 }
01184 goto lab29;
01185 lab34:
01186 c = l - m10;
01187 }
01188 lab29:
01189 { int ret = r_mark_ymUs_();
01190 if (ret == 0) { c = l - m9; goto lab28; }
01191 if (ret < 0) return ret;
01192 }
01193 lab28:
01194 ;
01195 }
01196 }
01197 lab0:
01198 bra = c;
01199 if (slice_del() == -1) return -1;
01200 return 1;
01201 }
01202
01203 int Xapian::InternalStemTurkish::r_stem_suffix_chain_before_ki() {
01204 ket = c;
01205 { int ret = r_mark_ki();
01206 if (ret <= 0) return ret;
01207 }
01208 { int m1 = l - c; (void)m1;
01209 { int ret = r_mark_DA();
01210 if (ret == 0) goto lab1;
01211 if (ret < 0) return ret;
01212 }
01213 bra = c;
01214 if (slice_del() == -1) return -1;
01215 { int m2 = l - c; (void)m2;
01216 ket = c;
01217 { int m3 = l - c; (void)m3;
01218 { int ret = r_mark_lAr();
01219 if (ret == 0) goto lab4;
01220 if (ret < 0) return ret;
01221 }
01222 bra = c;
01223 if (slice_del() == -1) return -1;
01224 { int m4 = l - c; (void)m4;
01225 { int ret = r_stem_suffix_chain_before_ki();
01226 if (ret == 0) { c = l - m4; goto lab5; }
01227 if (ret < 0) return ret;
01228 }
01229 lab5:
01230 ;
01231 }
01232 goto lab3;
01233 lab4:
01234 c = l - m3;
01235 { int ret = r_mark_possessives();
01236 if (ret == 0) { c = l - m2; goto lab2; }
01237 if (ret < 0) return ret;
01238 }
01239 bra = c;
01240 if (slice_del() == -1) return -1;
01241 { int m5 = l - c; (void)m5;
01242 ket = c;
01243 { int ret = r_mark_lAr();
01244 if (ret == 0) { c = l - m5; goto lab6; }
01245 if (ret < 0) return ret;
01246 }
01247 bra = c;
01248 if (slice_del() == -1) return -1;
01249 { int ret = r_stem_suffix_chain_before_ki();
01250 if (ret == 0) { c = l - m5; goto lab6; }
01251 if (ret < 0) return ret;
01252 }
01253 lab6:
01254 ;
01255 }
01256 }
01257 lab3:
01258 lab2:
01259 ;
01260 }
01261 goto lab0;
01262 lab1:
01263 c = l - m1;
01264 { int ret = r_mark_nUn();
01265 if (ret == 0) goto lab7;
01266 if (ret < 0) return ret;
01267 }
01268 bra = c;
01269 if (slice_del() == -1) return -1;
01270 { int m6 = l - c; (void)m6;
01271 ket = c;
01272 { int m7 = l - c; (void)m7;
01273 { int ret = r_mark_lArI();
01274 if (ret == 0) goto lab10;
01275 if (ret < 0) return ret;
01276 }
01277 bra = c;
01278 if (slice_del() == -1) return -1;
01279 goto lab9;
01280 lab10:
01281 c = l - m7;
01282 ket = c;
01283 { int m8 = l - c; (void)m8;
01284 { int ret = r_mark_possessives();
01285 if (ret == 0) goto lab13;
01286 if (ret < 0) return ret;
01287 }
01288 goto lab12;
01289 lab13:
01290 c = l - m8;
01291 { int ret = r_mark_sU();
01292 if (ret == 0) goto lab11;
01293 if (ret < 0) return ret;
01294 }
01295 }
01296 lab12:
01297 bra = c;
01298 if (slice_del() == -1) return -1;
01299 { int m9 = l - c; (void)m9;
01300 ket = c;
01301 { int ret = r_mark_lAr();
01302 if (ret == 0) { c = l - m9; goto lab14; }
01303 if (ret < 0) return ret;
01304 }
01305 bra = c;
01306 if (slice_del() == -1) return -1;
01307 { int ret = r_stem_suffix_chain_before_ki();
01308 if (ret == 0) { c = l - m9; goto lab14; }
01309 if (ret < 0) return ret;
01310 }
01311 lab14:
01312 ;
01313 }
01314 goto lab9;
01315 lab11:
01316 c = l - m7;
01317 { int ret = r_stem_suffix_chain_before_ki();
01318 if (ret == 0) { c = l - m6; goto lab8; }
01319 if (ret < 0) return ret;
01320 }
01321 }
01322 lab9:
01323 lab8:
01324 ;
01325 }
01326 goto lab0;
01327 lab7:
01328 c = l - m1;
01329 { int ret = r_mark_ndA();
01330 if (ret <= 0) return ret;
01331 }
01332 { int m10 = l - c; (void)m10;
01333 { int ret = r_mark_lArI();
01334 if (ret == 0) goto lab16;
01335 if (ret < 0) return ret;
01336 }
01337 bra = c;
01338 if (slice_del() == -1) return -1;
01339 goto lab15;
01340 lab16:
01341 c = l - m10;
01342 { int ret = r_mark_sU();
01343 if (ret == 0) goto lab17;
01344 if (ret < 0) return ret;
01345 }
01346 bra = c;
01347 if (slice_del() == -1) return -1;
01348 { int m11 = l - c; (void)m11;
01349 ket = c;
01350 { int ret = r_mark_lAr();
01351 if (ret == 0) { c = l - m11; goto lab18; }
01352 if (ret < 0) return ret;
01353 }
01354 bra = c;
01355 if (slice_del() == -1) return -1;
01356 { int ret = r_stem_suffix_chain_before_ki();
01357 if (ret == 0) { c = l - m11; goto lab18; }
01358 if (ret < 0) return ret;
01359 }
01360 lab18:
01361 ;
01362 }
01363 goto lab15;
01364 lab17:
01365 c = l - m10;
01366 { int ret = r_stem_suffix_chain_before_ki();
01367 if (ret <= 0) return ret;
01368 }
01369 }
01370 lab15:
01371 ;
01372 }
01373 lab0:
01374 return 1;
01375 }
01376
01377 int Xapian::InternalStemTurkish::r_stem_noun_suffixes() {
01378 { int m1 = l - c; (void)m1;
01379 ket = c;
01380 { int ret = r_mark_lAr();
01381 if (ret == 0) goto lab1;
01382 if (ret < 0) return ret;
01383 }
01384 bra = c;
01385 if (slice_del() == -1) return -1;
01386 { int m2 = l - c; (void)m2;
01387 { int ret = r_stem_suffix_chain_before_ki();
01388 if (ret == 0) { c = l - m2; goto lab2; }
01389 if (ret < 0) return ret;
01390 }
01391 lab2:
01392 ;
01393 }
01394 goto lab0;
01395 lab1:
01396 c = l - m1;
01397 ket = c;
01398 { int ret = r_mark_ncA();
01399 if (ret == 0) goto lab3;
01400 if (ret < 0) return ret;
01401 }
01402 bra = c;
01403 if (slice_del() == -1) return -1;
01404 { int m3 = l - c; (void)m3;
01405 { int m4 = l - c; (void)m4;
01406 ket = c;
01407 { int ret = r_mark_lArI();
01408 if (ret == 0) goto lab6;
01409 if (ret < 0) return ret;
01410 }
01411 bra = c;
01412 if (slice_del() == -1) return -1;
01413 goto lab5;
01414 lab6:
01415 c = l - m4;
01416 ket = c;
01417 { int m5 = l - c; (void)m5;
01418 { int ret = r_mark_possessives();
01419 if (ret == 0) goto lab9;
01420 if (ret < 0) return ret;
01421 }
01422 goto lab8;
01423 lab9:
01424 c = l - m5;
01425 { int ret = r_mark_sU();
01426 if (ret == 0) goto lab7;
01427 if (ret < 0) return ret;
01428 }
01429 }
01430 lab8:
01431 bra = c;
01432 if (slice_del() == -1) return -1;
01433 { int m6 = l - c; (void)m6;
01434 ket = c;
01435 { int ret = r_mark_lAr();
01436 if (ret == 0) { c = l - m6; goto lab10; }
01437 if (ret < 0) return ret;
01438 }
01439 bra = c;
01440 if (slice_del() == -1) return -1;
01441 { int ret = r_stem_suffix_chain_before_ki();
01442 if (ret == 0) { c = l - m6; goto lab10; }
01443 if (ret < 0) return ret;
01444 }
01445 lab10:
01446 ;
01447 }
01448 goto lab5;
01449 lab7:
01450 c = l - m4;
01451 ket = c;
01452 { int ret = r_mark_lAr();
01453 if (ret == 0) { c = l - m3; goto lab4; }
01454 if (ret < 0) return ret;
01455 }
01456 bra = c;
01457 if (slice_del() == -1) return -1;
01458 { int ret = r_stem_suffix_chain_before_ki();
01459 if (ret == 0) { c = l - m3; goto lab4; }
01460 if (ret < 0) return ret;
01461 }
01462 }
01463 lab5:
01464 lab4:
01465 ;
01466 }
01467 goto lab0;
01468 lab3:
01469 c = l - m1;
01470 ket = c;
01471 { int m7 = l - c; (void)m7;
01472 { int ret = r_mark_ndA();
01473 if (ret == 0) goto lab13;
01474 if (ret < 0) return ret;
01475 }
01476 goto lab12;
01477 lab13:
01478 c = l - m7;
01479 { int ret = r_mark_nA();
01480 if (ret == 0) goto lab11;
01481 if (ret < 0) return ret;
01482 }
01483 }
01484 lab12:
01485 { int m8 = l - c; (void)m8;
01486 { int ret = r_mark_lArI();
01487 if (ret == 0) goto lab15;
01488 if (ret < 0) return ret;
01489 }
01490 bra = c;
01491 if (slice_del() == -1) return -1;
01492 goto lab14;
01493 lab15:
01494 c = l - m8;
01495 { int ret = r_mark_sU();
01496 if (ret == 0) goto lab16;
01497 if (ret < 0) return ret;
01498 }
01499 bra = c;
01500 if (slice_del() == -1) return -1;
01501 { int m9 = l - c; (void)m9;
01502 ket = c;
01503 { int ret = r_mark_lAr();
01504 if (ret == 0) { c = l - m9; goto lab17; }
01505 if (ret < 0) return ret;
01506 }
01507 bra = c;
01508 if (slice_del() == -1) return -1;
01509 { int ret = r_stem_suffix_chain_before_ki();
01510 if (ret == 0) { c = l - m9; goto lab17; }
01511 if (ret < 0) return ret;
01512 }
01513 lab17:
01514 ;
01515 }
01516 goto lab14;
01517 lab16:
01518 c = l - m8;
01519 { int ret = r_stem_suffix_chain_before_ki();
01520 if (ret == 0) goto lab11;
01521 if (ret < 0) return ret;
01522 }
01523 }
01524 lab14:
01525 goto lab0;
01526 lab11:
01527 c = l - m1;
01528 ket = c;
01529 { int m10 = l - c; (void)m10;
01530 { int ret = r_mark_ndAn();
01531 if (ret == 0) goto lab20;
01532 if (ret < 0) return ret;
01533 }
01534 goto lab19;
01535 lab20:
01536 c = l - m10;
01537 { int ret = r_mark_nU();
01538 if (ret == 0) goto lab18;
01539 if (ret < 0) return ret;
01540 }
01541 }
01542 lab19:
01543 { int m11 = l - c; (void)m11;
01544 { int ret = r_mark_sU();
01545 if (ret == 0) goto lab22;
01546 if (ret < 0) return ret;
01547 }
01548 bra = c;
01549 if (slice_del() == -1) return -1;
01550 { int m12 = l - c; (void)m12;
01551 ket = c;
01552 { int ret = r_mark_lAr();
01553 if (ret == 0) { c = l - m12; goto lab23; }
01554 if (ret < 0) return ret;
01555 }
01556 bra = c;
01557 if (slice_del() == -1) return -1;
01558 { int ret = r_stem_suffix_chain_before_ki();
01559 if (ret == 0) { c = l - m12; goto lab23; }
01560 if (ret < 0) return ret;
01561 }
01562 lab23:
01563 ;
01564 }
01565 goto lab21;
01566 lab22:
01567 c = l - m11;
01568 { int ret = r_mark_lArI();
01569 if (ret == 0) goto lab18;
01570 if (ret < 0) return ret;
01571 }
01572 }
01573 lab21:
01574 goto lab0;
01575 lab18:
01576 c = l - m1;
01577 ket = c;
01578 { int ret = r_mark_DAn();
01579 if (ret == 0) goto lab24;
01580 if (ret < 0) return ret;
01581 }
01582 bra = c;
01583 if (slice_del() == -1) return -1;
01584 { int m13 = l - c; (void)m13;
01585 ket = c;
01586 { int m14 = l - c; (void)m14;
01587 { int ret = r_mark_possessives();
01588 if (ret == 0) goto lab27;
01589 if (ret < 0) return ret;
01590 }
01591 bra = c;
01592 if (slice_del() == -1) return -1;
01593 { int m15 = l - c; (void)m15;
01594 ket = c;
01595 { int ret = r_mark_lAr();
01596 if (ret == 0) { c = l - m15; goto lab28; }
01597 if (ret < 0) return ret;
01598 }
01599 bra = c;
01600 if (slice_del() == -1) return -1;
01601 { int ret = r_stem_suffix_chain_before_ki();
01602 if (ret == 0) { c = l - m15; goto lab28; }
01603 if (ret < 0) return ret;
01604 }
01605 lab28:
01606 ;
01607 }
01608 goto lab26;
01609 lab27:
01610 c = l - m14;
01611 { int ret = r_mark_lAr();
01612 if (ret == 0) goto lab29;
01613 if (ret < 0) return ret;
01614 }
01615 bra = c;
01616 if (slice_del() == -1) return -1;
01617 { int m16 = l - c; (void)m16;
01618 { int ret = r_stem_suffix_chain_before_ki();
01619 if (ret == 0) { c = l - m16; goto lab30; }
01620 if (ret < 0) return ret;
01621 }
01622 lab30:
01623 ;
01624 }
01625 goto lab26;
01626 lab29:
01627 c = l - m14;
01628 { int ret = r_stem_suffix_chain_before_ki();
01629 if (ret == 0) { c = l - m13; goto lab25; }
01630 if (ret < 0) return ret;
01631 }
01632 }
01633 lab26:
01634 lab25:
01635 ;
01636 }
01637 goto lab0;
01638 lab24:
01639 c = l - m1;
01640 ket = c;
01641 { int m17 = l - c; (void)m17;
01642 { int ret = r_mark_nUn();
01643 if (ret == 0) goto lab33;
01644 if (ret < 0) return ret;
01645 }
01646 goto lab32;
01647 lab33:
01648 c = l - m17;
01649 { int ret = r_mark_ylA();
01650 if (ret == 0) goto lab31;
01651 if (ret < 0) return ret;
01652 }
01653 }
01654 lab32:
01655 bra = c;
01656 if (slice_del() == -1) return -1;
01657 { int m18 = l - c; (void)m18;
01658 { int m19 = l - c; (void)m19;
01659 ket = c;
01660 { int ret = r_mark_lAr();
01661 if (ret == 0) goto lab36;
01662 if (ret < 0) return ret;
01663 }
01664 bra = c;
01665 if (slice_del() == -1) return -1;
01666 { int ret = r_stem_suffix_chain_before_ki();
01667 if (ret == 0) goto lab36;
01668 if (ret < 0) return ret;
01669 }
01670 goto lab35;
01671 lab36:
01672 c = l - m19;
01673 ket = c;
01674 { int m20 = l - c; (void)m20;
01675 { int ret = r_mark_possessives();
01676 if (ret == 0) goto lab39;
01677 if (ret < 0) return ret;
01678 }
01679 goto lab38;
01680 lab39:
01681 c = l - m20;
01682 { int ret = r_mark_sU();
01683 if (ret == 0) goto lab37;
01684 if (ret < 0) return ret;
01685 }
01686 }
01687 lab38:
01688 bra = c;
01689 if (slice_del() == -1) return -1;
01690 { int m21 = l - c; (void)m21;
01691 ket = c;
01692 { int ret = r_mark_lAr();
01693 if (ret == 0) { c = l - m21; goto lab40; }
01694 if (ret < 0) return ret;
01695 }
01696 bra = c;
01697 if (slice_del() == -1) return -1;
01698 { int ret = r_stem_suffix_chain_before_ki();
01699 if (ret == 0) { c = l - m21; goto lab40; }
01700 if (ret < 0) return ret;
01701 }
01702 lab40:
01703 ;
01704 }
01705 goto lab35;
01706 lab37:
01707 c = l - m19;
01708 { int ret = r_stem_suffix_chain_before_ki();
01709 if (ret == 0) { c = l - m18; goto lab34; }
01710 if (ret < 0) return ret;
01711 }
01712 }
01713 lab35:
01714 lab34:
01715 ;
01716 }
01717 goto lab0;
01718 lab31:
01719 c = l - m1;
01720 ket = c;
01721 { int ret = r_mark_lArI();
01722 if (ret == 0) goto lab41;
01723 if (ret < 0) return ret;
01724 }
01725 bra = c;
01726 if (slice_del() == -1) return -1;
01727 goto lab0;
01728 lab41:
01729 c = l - m1;
01730 { int ret = r_stem_suffix_chain_before_ki();
01731 if (ret == 0) goto lab42;
01732 if (ret < 0) return ret;
01733 }
01734 goto lab0;
01735 lab42:
01736 c = l - m1;
01737 ket = c;
01738 { int m22 = l - c; (void)m22;
01739 { int ret = r_mark_DA();
01740 if (ret == 0) goto lab45;
01741 if (ret < 0) return ret;
01742 }
01743 goto lab44;
01744 lab45:
01745 c = l - m22;
01746 { int ret = r_mark_yU();
01747 if (ret == 0) goto lab46;
01748 if (ret < 0) return ret;
01749 }
01750 goto lab44;
01751 lab46:
01752 c = l - m22;
01753 { int ret = r_mark_yA();
01754 if (ret == 0) goto lab43;
01755 if (ret < 0) return ret;
01756 }
01757 }
01758 lab44:
01759 bra = c;
01760 if (slice_del() == -1) return -1;
01761 { int m23 = l - c; (void)m23;
01762 ket = c;
01763 { int m24 = l - c; (void)m24;
01764 { int ret = r_mark_possessives();
01765 if (ret == 0) goto lab49;
01766 if (ret < 0) return ret;
01767 }
01768 bra = c;
01769 if (slice_del() == -1) return -1;
01770 { int m25 = l - c; (void)m25;
01771 ket = c;
01772 { int ret = r_mark_lAr();
01773 if (ret == 0) { c = l - m25; goto lab50; }
01774 if (ret < 0) return ret;
01775 }
01776 lab50:
01777 ;
01778 }
01779 goto lab48;
01780 lab49:
01781 c = l - m24;
01782 { int ret = r_mark_lAr();
01783 if (ret == 0) { c = l - m23; goto lab47; }
01784 if (ret < 0) return ret;
01785 }
01786 }
01787 lab48:
01788 bra = c;
01789 if (slice_del() == -1) return -1;
01790 ket = c;
01791 { int ret = r_stem_suffix_chain_before_ki();
01792 if (ret == 0) { c = l - m23; goto lab47; }
01793 if (ret < 0) return ret;
01794 }
01795 lab47:
01796 ;
01797 }
01798 goto lab0;
01799 lab43:
01800 c = l - m1;
01801 ket = c;
01802 { int m26 = l - c; (void)m26;
01803 { int ret = r_mark_possessives();
01804 if (ret == 0) goto lab52;
01805 if (ret < 0) return ret;
01806 }
01807 goto lab51;
01808 lab52:
01809 c = l - m26;
01810 { int ret = r_mark_sU();
01811 if (ret <= 0) return ret;
01812 }
01813 }
01814 lab51:
01815 bra = c;
01816 if (slice_del() == -1) return -1;
01817 { int m27 = l - c; (void)m27;
01818 ket = c;
01819 { int ret = r_mark_lAr();
01820 if (ret == 0) { c = l - m27; goto lab53; }
01821 if (ret < 0) return ret;
01822 }
01823 bra = c;
01824 if (slice_del() == -1) return -1;
01825 { int ret = r_stem_suffix_chain_before_ki();
01826 if (ret == 0) { c = l - m27; goto lab53; }
01827 if (ret < 0) return ret;
01828 }
01829 lab53:
01830 ;
01831 }
01832 }
01833 lab0:
01834 return 1;
01835 }
01836
01837 int Xapian::InternalStemTurkish::r_post_process_last_consonants() {
01838 int among_var;
01839 ket = c;
01840 among_var = find_among_b(s_pool, a_23, 4, 0, 0);
01841 if (!(among_var)) return 0;
01842 bra = c;
01843 switch(among_var) {
01844 case 0: return 0;
01845 case 1:
01846 { int ret = slice_from_s(1, s_5);
01847 if (ret < 0) return ret;
01848 }
01849 break;
01850 case 2:
01851 { int ret = slice_from_s(2, s_6);
01852 if (ret < 0) return ret;
01853 }
01854 break;
01855 case 3:
01856 { int ret = slice_from_s(1, s_7);
01857 if (ret < 0) return ret;
01858 }
01859 break;
01860 case 4:
01861 { int ret = slice_from_s(1, s_8);
01862 if (ret < 0) return ret;
01863 }
01864 break;
01865 }
01866 return 1;
01867 }
01868
01869 int Xapian::InternalStemTurkish::r_append_U_to_stems_ending_with_d_or_g() {
01870 { int m_test1 = l - c;
01871 { int m2 = l - c; (void)m2;
01872 if (c <= lb || p[c - 1] != 'd') goto lab1;
01873 c--;
01874 goto lab0;
01875 lab1:
01876 c = l - m2;
01877 if (c <= lb || p[c - 1] != 'g') return 0;
01878 c--;
01879 }
01880 lab0:
01881 c = l - m_test1;
01882 }
01883 { int m3 = l - c; (void)m3;
01884 { int m_test4 = l - c;
01885 if (out_grouping_b_U(g_vowel, 97, 305, 1) < 0) goto lab3;
01886 { int m5 = l - c; (void)m5;
01887 if (c <= lb || p[c - 1] != 'a') goto lab5;
01888 c--;
01889 goto lab4;
01890 lab5:
01891 c = l - m5;
01892 if (!(eq_s_b(2, s_9))) goto lab3;
01893 }
01894 lab4:
01895 c = l - m_test4;
01896 }
01897 { int saved_c = c;
01898 insert_s(c, c, 2, s_10);
01899 c = saved_c;
01900 }
01901 goto lab2;
01902 lab3:
01903 c = l - m3;
01904 { int m_test6 = l - c;
01905 if (out_grouping_b_U(g_vowel, 97, 305, 1) < 0) goto lab6;
01906 { int m7 = l - c; (void)m7;
01907 if (c <= lb || p[c - 1] != 'e') goto lab8;
01908 c--;
01909 goto lab7;
01910 lab8:
01911 c = l - m7;
01912 if (c <= lb || p[c - 1] != 'i') goto lab6;
01913 c--;
01914 }
01915 lab7:
01916 c = l - m_test6;
01917 }
01918 { int saved_c = c;
01919 insert_s(c, c, 1, s_11);
01920 c = saved_c;
01921 }
01922 goto lab2;
01923 lab6:
01924 c = l - m3;
01925 { int m_test8 = l - c;
01926 if (out_grouping_b_U(g_vowel, 97, 305, 1) < 0) goto lab9;
01927 { int m9 = l - c; (void)m9;
01928 if (c <= lb || p[c - 1] != 'o') goto lab11;
01929 c--;
01930 goto lab10;
01931 lab11:
01932 c = l - m9;
01933 if (c <= lb || p[c - 1] != 'u') goto lab9;
01934 c--;
01935 }
01936 lab10:
01937 c = l - m_test8;
01938 }
01939 { int saved_c = c;
01940 insert_s(c, c, 1, s_12);
01941 c = saved_c;
01942 }
01943 goto lab2;
01944 lab9:
01945 c = l - m3;
01946 { int m_test10 = l - c;
01947 if (out_grouping_b_U(g_vowel, 97, 305, 1) < 0) return 0;
01948 { int m11 = l - c; (void)m11;
01949 if (!(eq_s_b(2, s_13))) goto lab13;
01950 goto lab12;
01951 lab13:
01952 c = l - m11;
01953 if (!(eq_s_b(2, s_14))) return 0;
01954 }
01955 lab12:
01956 c = l - m_test10;
01957 }
01958 { int saved_c = c;
01959 insert_s(c, c, 2, s_15);
01960 c = saved_c;
01961 }
01962 }
01963 lab2:
01964 return 1;
01965 }
01966
01967 int Xapian::InternalStemTurkish::r_more_than_one_syllable_word() {
01968 { int c_test1 = c;
01969 { int i = 2;
01970 while(1) {
01971 int c2 = c;
01972 { int ret = out_grouping_U(g_vowel, 97, 305, 1);
01973 if (ret < 0) goto lab0;
01974 c += ret;
01975 }
01976 i--;
01977 continue;
01978 lab0:
01979 c = c2;
01980 break;
01981 }
01982 if (i > 0) return 0;
01983 }
01984 c = c_test1;
01985 }
01986 return 1;
01987 }
01988
01989 int Xapian::InternalStemTurkish::r_is_reserved_word() {
01990 { int c1 = c;
01991 { int c_test2 = c;
01992 while(1) {
01993 if (!(eq_s(2, s_16))) goto lab2;
01994 break;
01995 lab2:
01996 { int ret = skip_utf8(p, c, 0, l, 1);
01997 if (ret < 0) goto lab1;
01998 c = ret;
01999 }
02000 }
02001 I_strlen = 2;
02002 if (!(I_strlen == l)) goto lab1;
02003 c = c_test2;
02004 }
02005 goto lab0;
02006 lab1:
02007 c = c1;
02008 { int c_test3 = c;
02009 while(1) {
02010 if (!(eq_s(5, s_17))) goto lab3;
02011 break;
02012 lab3:
02013 { int ret = skip_utf8(p, c, 0, l, 1);
02014 if (ret < 0) return 0;
02015 c = ret;
02016 }
02017 }
02018 I_strlen = 5;
02019 if (!(I_strlen == l)) return 0;
02020 c = c_test3;
02021 }
02022 }
02023 lab0:
02024 return 1;
02025 }
02026
02027 int Xapian::InternalStemTurkish::r_postlude() {
02028 { int c1 = c;
02029 { int ret = r_is_reserved_word();
02030 if (ret == 0) goto lab0;
02031 if (ret < 0) return ret;
02032 }
02033 return 0;
02034 lab0:
02035 c = c1;
02036 }
02037 lb = c; c = l;
02038
02039 { int m2 = l - c; (void)m2;
02040 { int ret = r_append_U_to_stems_ending_with_d_or_g();
02041 if (ret == 0) goto lab1;
02042 if (ret < 0) return ret;
02043 }
02044 lab1:
02045 c = l - m2;
02046 }
02047 { int m3 = l - c; (void)m3;
02048 { int ret = r_post_process_last_consonants();
02049 if (ret == 0) goto lab2;
02050 if (ret < 0) return ret;
02051 }
02052 lab2:
02053 c = l - m3;
02054 }
02055 c = lb;
02056 return 1;
02057 }
02058
02059 int Xapian::InternalStemTurkish::stem() {
02060 { int ret = r_more_than_one_syllable_word();
02061 if (ret <= 0) return ret;
02062 }
02063 lb = c; c = l;
02064
02065 { int m1 = l - c; (void)m1;
02066 { int ret = r_stem_nominal_verb_suffixes();
02067 if (ret == 0) goto lab0;
02068 if (ret < 0) return ret;
02069 }
02070 lab0:
02071 c = l - m1;
02072 }
02073 if (!(B_continue_stemming_noun_suffixes)) return 0;
02074 { int m2 = l - c; (void)m2;
02075 { int ret = r_stem_noun_suffixes();
02076 if (ret == 0) goto lab1;
02077 if (ret < 0) return ret;
02078 }
02079 lab1:
02080 c = l - m2;
02081 }
02082 c = lb;
02083 { int ret = r_postlude();
02084 if (ret <= 0) return ret;
02085 }
02086 return 1;
02087 }
02088
02089 Xapian::InternalStemTurkish::InternalStemTurkish()
02090 : B_continue_stemming_noun_suffixes(0), I_strlen(0)
02091 {
02092 }
02093
02094 Xapian::InternalStemTurkish::~InternalStemTurkish()
02095 {
02096 }
02097
02098 std::string
02099 Xapian::InternalStemTurkish::get_description() const
02100 {
02101 return "turkish";
02102 }