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