00001
00002
00003 #include <limits.h>
00004 #include "french.h"
00005
00006 static const symbol s_pool[] = {
00007 #define s_0_0 0
00008 'c', 'o', 'l',
00009 #define s_0_1 3
00010 'p', 'a', 'r',
00011 #define s_0_2 6
00012 't', 'a', 'p',
00013 #define s_1_1 9
00014 'I',
00015 #define s_1_2 10
00016 'U',
00017 #define s_1_3 11
00018 'Y',
00019 #define s_2_0 12
00020 'i', 'q', 'U',
00021 #define s_2_1 15
00022 'a', 'b', 'l',
00023 #define s_2_2 18
00024 'I', 0xC3, 0xA8, 'r',
00025 #define s_2_3 22
00026 'i', 0xC3, 0xA8, 'r',
00027 #define s_2_4 26
00028 'e', 'u', 's',
00029 #define s_2_5 29
00030 'i', 'v',
00031 #define s_3_0 31
00032 'i', 'c',
00033 #define s_3_1 33
00034 'a', 'b', 'i', 'l',
00035 #define s_3_2 37
00036 'i', 'v',
00037 #define s_4_0 s_4_15
00038 #define s_4_1 s_4_16
00039 #define s_4_2 s_4_17
00040 #define s_4_3 s_4_18
00041 #define s_4_4 s_4_19
00042 #define s_4_5 s_4_20
00043 #define s_4_6 s_4_21
00044 #define s_4_7 s_4_22
00045 #define s_4_8 s_4_23
00046 #define s_4_9 s_4_24
00047 #define s_4_10 s_4_25
00048 #define s_4_11 s_4_26
00049 #define s_4_12 s_4_27
00050 #define s_4_13 s_4_28
00051 #define s_4_14 s_4_29
00052 #define s_4_15 39
00053 'i', 'q', 'U', 'e', 's',
00054 #define s_4_16 44
00055 'a', 't', 'r', 'i', 'c', 'e', 's',
00056 #define s_4_17 51
00057 'a', 'n', 'c', 'e', 's',
00058 #define s_4_18 56
00059 'e', 'n', 'c', 'e', 's',
00060 #define s_4_19 61
00061 'l', 'o', 'g', 'i', 'e', 's',
00062 #define s_4_20 67
00063 'a', 'b', 'l', 'e', 's',
00064 #define s_4_21 72
00065 'i', 's', 'm', 'e', 's',
00066 #define s_4_22 77
00067 'e', 'u', 's', 'e', 's',
00068 #define s_4_23 82
00069 'i', 's', 't', 'e', 's',
00070 #define s_4_24 87
00071 'i', 'v', 'e', 's',
00072 #define s_4_25 91
00073 'i', 'f', 's',
00074 #define s_4_26 94
00075 'u', 's', 'i', 'o', 'n', 's',
00076 #define s_4_27 100
00077 'a', 't', 'i', 'o', 'n', 's',
00078 #define s_4_28 106
00079 'u', 't', 'i', 'o', 'n', 's',
00080 #define s_4_29 112
00081 'a', 't', 'e', 'u', 'r', 's',
00082 #define s_4_30 (s_4_31 + 1)
00083 #define s_4_31 (s_4_32 + 3)
00084 #define s_4_32 118
00085 'i', 's', 's', 'e', 'm', 'e', 'n', 't', 's',
00086 #define s_4_33 127
00087 'i', 't', 0xC3, 0xA9, 's',
00088 #define s_4_34 s_4_30
00089 #define s_4_35 s_4_31
00090 #define s_4_36 s_4_32
00091 #define s_4_37 132
00092 'a', 'm', 'm', 'e', 'n', 't',
00093 #define s_4_38 138
00094 'e', 'm', 'm', 'e', 'n', 't',
00095 #define s_4_39 (s_4_40 + 1)
00096 #define s_4_40 144
00097 'e', 'a', 'u', 'x',
00098 #define s_4_41 148
00099 'e', 'u', 'x',
00100 #define s_4_42 s_4_33
00101 #define s_5_0 s_5_5
00102 #define s_5_1 s_5_8
00103 #define s_5_2 s_5_10
00104 #define s_5_3 s_5_11
00105 #define s_5_4 s_5_0
00106 #define s_5_5 s_5_14
00107 #define s_5_6 s_5_0
00108 #define s_5_7 151
00109 'i', 'r', 'a', 's',
00110 #define s_5_8 155
00111 'i', 'e', 's',
00112 #define s_5_9 158
00113 0xC3, 0xAE, 'm', 'e', 's',
00114 #define s_5_10 163
00115 'i', 's', 's', 'e', 's',
00116 #define s_5_11 168
00117 'i', 's', 's', 'a', 'n', 't', 'e', 's',
00118 #define s_5_12 176
00119 0xC3, 0xAE, 't', 'e', 's',
00120 #define s_5_13 s_5_2
00121 #define s_5_14 181
00122 'i', 'r', 'a', 'i', 's',
00123 #define s_5_15 186
00124 'i', 's', 's', 'a', 'i', 's',
00125 #define s_5_16 192
00126 'i', 'r', 'i', 'o', 'n', 's',
00127 #define s_5_17 198
00128 'i', 's', 's', 'i', 'o', 'n', 's',
00129 #define s_5_18 205
00130 'i', 'r', 'o', 'n', 's',
00131 #define s_5_19 210
00132 'i', 's', 's', 'o', 'n', 's',
00133 #define s_5_20 216
00134 'i', 's', 's', 'a', 'n', 't', 's',
00135 #define s_5_21 (s_5_22 + 3)
00136 #define s_5_22 223
00137 'i', 'r', 'a', 'i', 't',
00138 #define s_5_23 228
00139 'i', 's', 's', 'a', 'i', 't',
00140 #define s_5_24 s_5_3
00141 #define s_5_25 234
00142 'i', 'r', 'a', 'I', 'e', 'n', 't',
00143 #define s_5_26 241
00144 'i', 's', 's', 'a', 'I', 'e', 'n', 't',
00145 #define s_5_27 249
00146 'i', 'r', 'e', 'n', 't',
00147 #define s_5_28 254
00148 'i', 's', 's', 'e', 'n', 't',
00149 #define s_5_29 260
00150 'i', 'r', 'o', 'n', 't',
00151 #define s_5_30 s_5_12
00152 #define s_5_31 265
00153 'i', 'r', 'i', 'e', 'z',
00154 #define s_5_32 270
00155 'i', 's', 's', 'i', 'e', 'z',
00156 #define s_5_33 276
00157 'i', 'r', 'e', 'z',
00158 #define s_5_34 280
00159 'i', 's', 's', 'e', 'z',
00160 #define s_6_0 (s_6_1 + 2)
00161 #define s_6_1 s_6_6
00162 #define s_6_2 s_6_11
00163 #define s_6_3 s_6_12
00164 #define s_6_4 s_6_14
00165 #define s_6_5 (s_6_6 + 2)
00166 #define s_6_6 s_6_16
00167 #define s_6_7 s_6_1
00168 #define s_6_8 s_6_2
00169 #define s_6_9 285
00170 'e', 'r', 'a', 's',
00171 #define s_6_10 289
00172 0xC3, 0xA2, 'm', 'e', 's',
00173 #define s_6_11 294
00174 'a', 's', 's', 'e', 's',
00175 #define s_6_12 299
00176 'a', 'n', 't', 'e', 's',
00177 #define s_6_13 304
00178 0xC3, 0xA2, 't', 'e', 's',
00179 #define s_6_14 309
00180 0xC3, 0xA9, 'e', 's',
00181 #define s_6_15 (s_6_16 + 2)
00182 #define s_6_16 313
00183 'e', 'r', 'a', 'i', 's',
00184 #define s_6_17 (s_6_18 + 2)
00185 #define s_6_18 318
00186 'e', 'r', 'i', 'o', 'n', 's',
00187 #define s_6_19 324
00188 'a', 's', 's', 'i', 'o', 'n', 's',
00189 #define s_6_20 331
00190 'e', 'r', 'o', 'n', 's',
00191 #define s_6_21 336
00192 'a', 'n', 't', 's',
00193 #define s_6_22 340
00194 0xC3, 0xA9, 's',
00195 #define s_6_23 (s_6_24 + 2)
00196 #define s_6_24 343
00197 'e', 'r', 'a', 'i', 't',
00198 #define s_6_25 s_6_3
00199 #define s_6_26 (s_6_27 + 2)
00200 #define s_6_27 348
00201 'e', 'r', 'a', 'I', 'e', 'n', 't',
00202 #define s_6_28 355
00203 0xC3, 0xA8, 'r', 'e', 'n', 't',
00204 #define s_6_29 361
00205 'a', 's', 's', 'e', 'n', 't',
00206 #define s_6_30 367
00207 'e', 'r', 'o', 'n', 't',
00208 #define s_6_31 s_6_13
00209 #define s_6_32 (s_6_33 + 1)
00210 #define s_6_33 (s_6_34 + 2)
00211 #define s_6_34 372
00212 'e', 'r', 'i', 'e', 'z',
00213 #define s_6_35 377
00214 'a', 's', 's', 'i', 'e', 'z',
00215 #define s_6_36 383
00216 'e', 'r', 'e', 'z',
00217 #define s_6_37 s_6_4
00218 #define s_7_0 (s_7_1 + 4)
00219 #define s_7_1 387
00220 'I', 0xC3, 0xA8, 'r', 'e',
00221 #define s_7_2 392
00222 'i', 0xC3, 0xA8, 'r', 'e',
00223 #define s_7_3 397
00224 'i', 'o', 'n',
00225 #define s_7_4 400
00226 'I', 'e', 'r',
00227 #define s_7_5 403
00228 'i', 'e', 'r',
00229 #define s_7_6 406
00230 0xC3, 0xAB,
00231 #define s_8_0 408
00232 'e', 'l', 'l',
00233 #define s_8_1 411
00234 'e', 'i', 'l', 'l',
00235 #define s_8_2 415
00236 'e', 'n', 'n',
00237 #define s_8_3 418
00238 'o', 'n', 'n',
00239 #define s_8_4 421
00240 'e', 't', 't',
00241 };
00242
00243
00244 static const struct among a_0[3] =
00245 {
00246 { 3, s_0_0, -1, -1},
00247 { 3, s_0_1, -1, -1},
00248 { 3, s_0_2, -1, -1}
00249 };
00250
00251
00252 static const struct among a_1[4] =
00253 {
00254 { 0, 0, -1, 4},
00255 { 1, s_1_1, 0, 1},
00256 { 1, s_1_2, 0, 2},
00257 { 1, s_1_3, 0, 3}
00258 };
00259
00260
00261 static const struct among a_2[6] =
00262 {
00263 { 3, s_2_0, -1, 3},
00264 { 3, s_2_1, -1, 3},
00265 { 4, s_2_2, -1, 4},
00266 { 4, s_2_3, -1, 4},
00267 { 3, s_2_4, -1, 2},
00268 { 2, s_2_5, -1, 1}
00269 };
00270
00271
00272 static const struct among a_3[3] =
00273 {
00274 { 2, s_3_0, -1, 2},
00275 { 4, s_3_1, -1, 1},
00276 { 2, s_3_2, -1, 3}
00277 };
00278
00279
00280 static const struct among a_4[43] =
00281 {
00282 { 4, s_4_0, -1, 1},
00283 { 6, s_4_1, -1, 2},
00284 { 4, s_4_2, -1, 1},
00285 { 4, s_4_3, -1, 5},
00286 { 5, s_4_4, -1, 3},
00287 { 4, s_4_5, -1, 1},
00288 { 4, s_4_6, -1, 1},
00289 { 4, s_4_7, -1, 11},
00290 { 4, s_4_8, -1, 1},
00291 { 3, s_4_9, -1, 8},
00292 { 2, s_4_10, -1, 8},
00293 { 5, s_4_11, -1, 4},
00294 { 5, s_4_12, -1, 2},
00295 { 5, s_4_13, -1, 4},
00296 { 5, s_4_14, -1, 2},
00297 { 5, s_4_15, -1, 1},
00298 { 7, s_4_16, -1, 2},
00299 { 5, s_4_17, -1, 1},
00300 { 5, s_4_18, -1, 5},
00301 { 6, s_4_19, -1, 3},
00302 { 5, s_4_20, -1, 1},
00303 { 5, s_4_21, -1, 1},
00304 { 5, s_4_22, -1, 11},
00305 { 5, s_4_23, -1, 1},
00306 { 4, s_4_24, -1, 8},
00307 { 3, s_4_25, -1, 8},
00308 { 6, s_4_26, -1, 4},
00309 { 6, s_4_27, -1, 2},
00310 { 6, s_4_28, -1, 4},
00311 { 6, s_4_29, -1, 2},
00312 { 5, s_4_30, -1, 15},
00313 { 6, s_4_31, 30, 6},
00314 { 9, s_4_32, 31, 12},
00315 { 5, s_4_33, -1, 7},
00316 { 4, s_4_34, -1, 15},
00317 { 5, s_4_35, 34, 6},
00318 { 8, s_4_36, 35, 12},
00319 { 6, s_4_37, 34, 13},
00320 { 6, s_4_38, 34, 14},
00321 { 3, s_4_39, -1, 10},
00322 { 4, s_4_40, 39, 9},
00323 { 3, s_4_41, -1, 1},
00324 { 4, s_4_42, -1, 7}
00325 };
00326
00327
00328 static const struct among a_5[35] =
00329 {
00330 { 3, s_5_0, -1, 1},
00331 { 2, s_5_1, -1, 1},
00332 { 4, s_5_2, -1, 1},
00333 { 7, s_5_3, -1, 1},
00334 { 1, s_5_4, -1, 1},
00335 { 4, s_5_5, 4, 1},
00336 { 2, s_5_6, -1, 1},
00337 { 4, s_5_7, -1, 1},
00338 { 3, s_5_8, -1, 1},
00339 { 5, s_5_9, -1, 1},
00340 { 5, s_5_10, -1, 1},
00341 { 8, s_5_11, -1, 1},
00342 { 5, s_5_12, -1, 1},
00343 { 2, s_5_13, -1, 1},
00344 { 5, s_5_14, 13, 1},
00345 { 6, s_5_15, 13, 1},
00346 { 6, s_5_16, -1, 1},
00347 { 7, s_5_17, -1, 1},
00348 { 5, s_5_18, -1, 1},
00349 { 6, s_5_19, -1, 1},
00350 { 7, s_5_20, -1, 1},
00351 { 2, s_5_21, -1, 1},
00352 { 5, s_5_22, 21, 1},
00353 { 6, s_5_23, 21, 1},
00354 { 6, s_5_24, -1, 1},
00355 { 7, s_5_25, -1, 1},
00356 { 8, s_5_26, -1, 1},
00357 { 5, s_5_27, -1, 1},
00358 { 6, s_5_28, -1, 1},
00359 { 5, s_5_29, -1, 1},
00360 { 3, s_5_30, -1, 1},
00361 { 5, s_5_31, -1, 1},
00362 { 6, s_5_32, -1, 1},
00363 { 4, s_5_33, -1, 1},
00364 { 5, s_5_34, -1, 1}
00365 };
00366
00367
00368 static const struct among a_6[38] =
00369 {
00370 { 1, s_6_0, -1, 3},
00371 { 3, s_6_1, 0, 2},
00372 { 4, s_6_2, -1, 3},
00373 { 4, s_6_3, -1, 3},
00374 { 3, s_6_4, -1, 2},
00375 { 2, s_6_5, -1, 3},
00376 { 4, s_6_6, 5, 2},
00377 { 2, s_6_7, -1, 2},
00378 { 2, s_6_8, -1, 3},
00379 { 4, s_6_9, 8, 2},
00380 { 5, s_6_10, -1, 3},
00381 { 5, s_6_11, -1, 3},
00382 { 5, s_6_12, -1, 3},
00383 { 5, s_6_13, -1, 3},
00384 { 4, s_6_14, -1, 2},
00385 { 3, s_6_15, -1, 3},
00386 { 5, s_6_16, 15, 2},
00387 { 4, s_6_17, -1, 1},
00388 { 6, s_6_18, 17, 2},
00389 { 7, s_6_19, 17, 3},
00390 { 5, s_6_20, -1, 2},
00391 { 4, s_6_21, -1, 3},
00392 { 3, s_6_22, -1, 2},
00393 { 3, s_6_23, -1, 3},
00394 { 5, s_6_24, 23, 2},
00395 { 3, s_6_25, -1, 3},
00396 { 5, s_6_26, -1, 3},
00397 { 7, s_6_27, 26, 2},
00398 { 6, s_6_28, -1, 2},
00399 { 6, s_6_29, -1, 3},
00400 { 5, s_6_30, -1, 2},
00401 { 3, s_6_31, -1, 3},
00402 { 2, s_6_32, -1, 2},
00403 { 3, s_6_33, 32, 2},
00404 { 5, s_6_34, 33, 2},
00405 { 6, s_6_35, 33, 3},
00406 { 4, s_6_36, 32, 2},
00407 { 2, s_6_37, -1, 2}
00408 };
00409
00410
00411 static const struct among a_7[7] =
00412 {
00413 { 1, s_7_0, -1, 3},
00414 { 5, s_7_1, 0, 2},
00415 { 5, s_7_2, 0, 2},
00416 { 3, s_7_3, -1, 1},
00417 { 3, s_7_4, -1, 2},
00418 { 3, s_7_5, -1, 2},
00419 { 2, s_7_6, -1, 4}
00420 };
00421
00422
00423 static const struct among a_8[5] =
00424 {
00425 { 3, s_8_0, -1, -1},
00426 { 4, s_8_1, -1, -1},
00427 { 3, s_8_2, -1, -1},
00428 { 3, s_8_3, -1, -1},
00429 { 3, s_8_4, -1, -1}
00430 };
00431
00432 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 };
00433
00434 static const unsigned char g_keep_with_s[] = { 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
00435
00436 static const symbol s_0[] = { 'U' };
00437 static const symbol s_1[] = { 'I' };
00438 static const symbol s_2[] = { 'Y' };
00439 static const symbol s_3[] = { 'Y' };
00440 static const symbol s_4[] = { 'U' };
00441 static const symbol s_5[] = { 'i' };
00442 static const symbol s_6[] = { 'u' };
00443 static const symbol s_7[] = { 'y' };
00444 static const symbol s_8[] = { 'i', 'c' };
00445 static const symbol s_9[] = { 'i', 'q', 'U' };
00446 static const symbol s_10[] = { 'l', 'o', 'g' };
00447 static const symbol s_11[] = { 'u' };
00448 static const symbol s_12[] = { 'e', 'n', 't' };
00449 static const symbol s_13[] = { 'a', 't' };
00450 static const symbol s_14[] = { 'e', 'u', 'x' };
00451 static const symbol s_15[] = { 'i' };
00452 static const symbol s_16[] = { 'a', 'b', 'l' };
00453 static const symbol s_17[] = { 'i', 'q', 'U' };
00454 static const symbol s_18[] = { 'a', 't' };
00455 static const symbol s_19[] = { 'i', 'c' };
00456 static const symbol s_20[] = { 'i', 'q', 'U' };
00457 static const symbol s_21[] = { 'e', 'a', 'u' };
00458 static const symbol s_22[] = { 'a', 'l' };
00459 static const symbol s_23[] = { 'e', 'u', 'x' };
00460 static const symbol s_24[] = { 'a', 'n', 't' };
00461 static const symbol s_25[] = { 'e', 'n', 't' };
00462 static const symbol s_26[] = { 'i' };
00463 static const symbol s_27[] = { 'g', 'u' };
00464 static const symbol s_28[] = { 0xC3, 0xA9 };
00465 static const symbol s_29[] = { 0xC3, 0xA8 };
00466 static const symbol s_30[] = { 'e' };
00467 static const symbol s_31[] = { 'i' };
00468 static const symbol s_32[] = { 0xC3, 0xA7 };
00469 static const symbol s_33[] = { 'c' };
00470
00471 int Xapian::InternalStemFrench::r_prelude() {
00472 while(1) {
00473 int c1 = c;
00474 while(1) {
00475 int c2 = c;
00476 { int c3 = c;
00477 if (in_grouping_U(g_v, 97, 251, 0)) goto lab3;
00478 bra = c;
00479 { int c4 = c;
00480 if (c == l || p[c] != 'u') goto lab5;
00481 c++;
00482 ket = c;
00483 if (in_grouping_U(g_v, 97, 251, 0)) goto lab5;
00484 { int ret = slice_from_s(1, s_0);
00485 if (ret < 0) return ret;
00486 }
00487 goto lab4;
00488 lab5:
00489 c = c4;
00490 if (c == l || p[c] != 'i') goto lab6;
00491 c++;
00492 ket = c;
00493 if (in_grouping_U(g_v, 97, 251, 0)) goto lab6;
00494 { int ret = slice_from_s(1, s_1);
00495 if (ret < 0) return ret;
00496 }
00497 goto lab4;
00498 lab6:
00499 c = c4;
00500 if (c == l || p[c] != 'y') goto lab3;
00501 c++;
00502 ket = c;
00503 { int ret = slice_from_s(1, s_2);
00504 if (ret < 0) return ret;
00505 }
00506 }
00507 lab4:
00508 goto lab2;
00509 lab3:
00510 c = c3;
00511 bra = c;
00512 if (c == l || p[c] != 'y') goto lab7;
00513 c++;
00514 ket = c;
00515 if (in_grouping_U(g_v, 97, 251, 0)) goto lab7;
00516 { int ret = slice_from_s(1, s_3);
00517 if (ret < 0) return ret;
00518 }
00519 goto lab2;
00520 lab7:
00521 c = c3;
00522 if (c == l || p[c] != 'q') goto lab1;
00523 c++;
00524 bra = c;
00525 if (c == l || p[c] != 'u') goto lab1;
00526 c++;
00527 ket = c;
00528 { int ret = slice_from_s(1, s_4);
00529 if (ret < 0) return ret;
00530 }
00531 }
00532 lab2:
00533 c = c2;
00534 break;
00535 lab1:
00536 c = c2;
00537 { int ret = skip_utf8(p, c, 0, l, 1);
00538 if (ret < 0) goto lab0;
00539 c = ret;
00540 }
00541 }
00542 continue;
00543 lab0:
00544 c = c1;
00545 break;
00546 }
00547 return 1;
00548 }
00549
00550 int Xapian::InternalStemFrench::r_mark_regions() {
00551 I_pV = l;
00552 I_p1 = l;
00553 I_p2 = l;
00554 { int c1 = c;
00555 { int c2 = c;
00556 if (in_grouping_U(g_v, 97, 251, 0)) goto lab2;
00557 if (in_grouping_U(g_v, 97, 251, 0)) goto lab2;
00558 { int ret = skip_utf8(p, c, 0, l, 1);
00559 if (ret < 0) goto lab2;
00560 c = ret;
00561 }
00562 goto lab1;
00563 lab2:
00564 c = c2;
00565 if (c + 2 >= l || p[c + 2] >> 5 != 3 || !((331776 >> (p[c + 2] & 0x1f)) & 1)) goto lab3;
00566 if (!(find_among(s_pool, a_0, 3, 0, 0))) goto lab3;
00567 goto lab1;
00568 lab3:
00569 c = c2;
00570 { int ret = skip_utf8(p, c, 0, l, 1);
00571 if (ret < 0) goto lab0;
00572 c = ret;
00573 }
00574 { int ret = out_grouping_U(g_v, 97, 251, 1);
00575 if (ret < 0) goto lab0;
00576 c += ret;
00577 }
00578 }
00579 lab1:
00580 I_pV = c;
00581 lab0:
00582 c = c1;
00583 }
00584 { int c3 = c;
00585 { int ret = out_grouping_U(g_v, 97, 251, 1);
00586 if (ret < 0) goto lab4;
00587 c += ret;
00588 }
00589 { int ret = in_grouping_U(g_v, 97, 251, 1);
00590 if (ret < 0) goto lab4;
00591 c += ret;
00592 }
00593 I_p1 = c;
00594 { int ret = out_grouping_U(g_v, 97, 251, 1);
00595 if (ret < 0) goto lab4;
00596 c += ret;
00597 }
00598 { int ret = in_grouping_U(g_v, 97, 251, 1);
00599 if (ret < 0) goto lab4;
00600 c += ret;
00601 }
00602 I_p2 = c;
00603 lab4:
00604 c = c3;
00605 }
00606 return 1;
00607 }
00608
00609 int Xapian::InternalStemFrench::r_postlude() {
00610 int among_var;
00611 while(1) {
00612 int c1 = c;
00613 bra = c;
00614 if (c >= l || p[c + 0] >> 5 != 2 || !((35652096 >> (p[c + 0] & 0x1f)) & 1)) among_var = 4; else
00615 among_var = find_among(s_pool, a_1, 4, 0, 0);
00616 if (!(among_var)) goto lab0;
00617 ket = c;
00618 switch(among_var) {
00619 case 0: goto lab0;
00620 case 1:
00621 { int ret = slice_from_s(1, s_5);
00622 if (ret < 0) return ret;
00623 }
00624 break;
00625 case 2:
00626 { int ret = slice_from_s(1, s_6);
00627 if (ret < 0) return ret;
00628 }
00629 break;
00630 case 3:
00631 { int ret = slice_from_s(1, s_7);
00632 if (ret < 0) return ret;
00633 }
00634 break;
00635 case 4:
00636 { int ret = skip_utf8(p, c, 0, l, 1);
00637 if (ret < 0) goto lab0;
00638 c = ret;
00639 }
00640 break;
00641 }
00642 continue;
00643 lab0:
00644 c = c1;
00645 break;
00646 }
00647 return 1;
00648 }
00649
00650 int Xapian::InternalStemFrench::r_RV() {
00651 if (!(I_pV <= c)) return 0;
00652 return 1;
00653 }
00654
00655 int Xapian::InternalStemFrench::r_R1() {
00656 if (!(I_p1 <= c)) return 0;
00657 return 1;
00658 }
00659
00660 int Xapian::InternalStemFrench::r_R2() {
00661 if (!(I_p2 <= c)) return 0;
00662 return 1;
00663 }
00664
00665 int Xapian::InternalStemFrench::r_standard_suffix() {
00666 int among_var;
00667 ket = c;
00668 among_var = find_among_b(s_pool, a_4, 43, 0, 0);
00669 if (!(among_var)) return 0;
00670 bra = c;
00671 switch(among_var) {
00672 case 0: return 0;
00673 case 1:
00674 { int ret = r_R2();
00675 if (ret <= 0) return ret;
00676 }
00677 if (slice_del() == -1) return -1;
00678 break;
00679 case 2:
00680 { int ret = r_R2();
00681 if (ret <= 0) return ret;
00682 }
00683 if (slice_del() == -1) return -1;
00684 { int m1 = l - c; (void)m1;
00685 ket = c;
00686 if (!(eq_s_b(2, s_8))) { c = l - m1; goto lab0; }
00687 bra = c;
00688 { int m2 = l - c; (void)m2;
00689 { int ret = r_R2();
00690 if (ret == 0) goto lab2;
00691 if (ret < 0) return ret;
00692 }
00693 if (slice_del() == -1) return -1;
00694 goto lab1;
00695 lab2:
00696 c = l - m2;
00697 { int ret = slice_from_s(3, s_9);
00698 if (ret < 0) return ret;
00699 }
00700 }
00701 lab1:
00702 lab0:
00703 ;
00704 }
00705 break;
00706 case 3:
00707 { int ret = r_R2();
00708 if (ret <= 0) return ret;
00709 }
00710 { int ret = slice_from_s(3, s_10);
00711 if (ret < 0) return ret;
00712 }
00713 break;
00714 case 4:
00715 { int ret = r_R2();
00716 if (ret <= 0) return ret;
00717 }
00718 { int ret = slice_from_s(1, s_11);
00719 if (ret < 0) return ret;
00720 }
00721 break;
00722 case 5:
00723 { int ret = r_R2();
00724 if (ret <= 0) return ret;
00725 }
00726 { int ret = slice_from_s(3, s_12);
00727 if (ret < 0) return ret;
00728 }
00729 break;
00730 case 6:
00731 { int ret = r_RV();
00732 if (ret <= 0) return ret;
00733 }
00734 if (slice_del() == -1) return -1;
00735 { int m3 = l - c; (void)m3;
00736 ket = c;
00737 among_var = find_among_b(s_pool, a_2, 6, 0, 0);
00738 if (!(among_var)) { c = l - m3; goto lab3; }
00739 bra = c;
00740 switch(among_var) {
00741 case 0: { c = l - m3; goto lab3; }
00742 case 1:
00743 { int ret = r_R2();
00744 if (ret == 0) { c = l - m3; goto lab3; }
00745 if (ret < 0) return ret;
00746 }
00747 if (slice_del() == -1) return -1;
00748 ket = c;
00749 if (!(eq_s_b(2, s_13))) { c = l - m3; goto lab3; }
00750 bra = c;
00751 { int ret = r_R2();
00752 if (ret == 0) { c = l - m3; goto lab3; }
00753 if (ret < 0) return ret;
00754 }
00755 if (slice_del() == -1) return -1;
00756 break;
00757 case 2:
00758 { int m4 = l - c; (void)m4;
00759 { int ret = r_R2();
00760 if (ret == 0) goto lab5;
00761 if (ret < 0) return ret;
00762 }
00763 if (slice_del() == -1) return -1;
00764 goto lab4;
00765 lab5:
00766 c = l - m4;
00767 { int ret = r_R1();
00768 if (ret == 0) { c = l - m3; goto lab3; }
00769 if (ret < 0) return ret;
00770 }
00771 { int ret = slice_from_s(3, s_14);
00772 if (ret < 0) return ret;
00773 }
00774 }
00775 lab4:
00776 break;
00777 case 3:
00778 { int ret = r_R2();
00779 if (ret == 0) { c = l - m3; goto lab3; }
00780 if (ret < 0) return ret;
00781 }
00782 if (slice_del() == -1) return -1;
00783 break;
00784 case 4:
00785 { int ret = r_RV();
00786 if (ret == 0) { c = l - m3; goto lab3; }
00787 if (ret < 0) return ret;
00788 }
00789 { int ret = slice_from_s(1, s_15);
00790 if (ret < 0) return ret;
00791 }
00792 break;
00793 }
00794 lab3:
00795 ;
00796 }
00797 break;
00798 case 7:
00799 { int ret = r_R2();
00800 if (ret <= 0) return ret;
00801 }
00802 if (slice_del() == -1) return -1;
00803 { int m5 = l - c; (void)m5;
00804 ket = c;
00805 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4198408 >> (p[c - 1] & 0x1f)) & 1)) { c = l - m5; goto lab6; }
00806 among_var = find_among_b(s_pool, a_3, 3, 0, 0);
00807 if (!(among_var)) { c = l - m5; goto lab6; }
00808 bra = c;
00809 switch(among_var) {
00810 case 0: { c = l - m5; goto lab6; }
00811 case 1:
00812 { int m6 = l - c; (void)m6;
00813 { int ret = r_R2();
00814 if (ret == 0) goto lab8;
00815 if (ret < 0) return ret;
00816 }
00817 if (slice_del() == -1) return -1;
00818 goto lab7;
00819 lab8:
00820 c = l - m6;
00821 { int ret = slice_from_s(3, s_16);
00822 if (ret < 0) return ret;
00823 }
00824 }
00825 lab7:
00826 break;
00827 case 2:
00828 { int m7 = l - c; (void)m7;
00829 { int ret = r_R2();
00830 if (ret == 0) goto lab10;
00831 if (ret < 0) return ret;
00832 }
00833 if (slice_del() == -1) return -1;
00834 goto lab9;
00835 lab10:
00836 c = l - m7;
00837 { int ret = slice_from_s(3, s_17);
00838 if (ret < 0) return ret;
00839 }
00840 }
00841 lab9:
00842 break;
00843 case 3:
00844 { int ret = r_R2();
00845 if (ret == 0) { c = l - m5; goto lab6; }
00846 if (ret < 0) return ret;
00847 }
00848 if (slice_del() == -1) return -1;
00849 break;
00850 }
00851 lab6:
00852 ;
00853 }
00854 break;
00855 case 8:
00856 { int ret = r_R2();
00857 if (ret <= 0) return ret;
00858 }
00859 if (slice_del() == -1) return -1;
00860 { int m8 = l - c; (void)m8;
00861 ket = c;
00862 if (!(eq_s_b(2, s_18))) { c = l - m8; goto lab11; }
00863 bra = c;
00864 { int ret = r_R2();
00865 if (ret == 0) { c = l - m8; goto lab11; }
00866 if (ret < 0) return ret;
00867 }
00868 if (slice_del() == -1) return -1;
00869 ket = c;
00870 if (!(eq_s_b(2, s_19))) { c = l - m8; goto lab11; }
00871 bra = c;
00872 { int m9 = l - c; (void)m9;
00873 { int ret = r_R2();
00874 if (ret == 0) goto lab13;
00875 if (ret < 0) return ret;
00876 }
00877 if (slice_del() == -1) return -1;
00878 goto lab12;
00879 lab13:
00880 c = l - m9;
00881 { int ret = slice_from_s(3, s_20);
00882 if (ret < 0) return ret;
00883 }
00884 }
00885 lab12:
00886 lab11:
00887 ;
00888 }
00889 break;
00890 case 9:
00891 { int ret = slice_from_s(3, s_21);
00892 if (ret < 0) return ret;
00893 }
00894 break;
00895 case 10:
00896 { int ret = r_R1();
00897 if (ret <= 0) return ret;
00898 }
00899 { int ret = slice_from_s(2, s_22);
00900 if (ret < 0) return ret;
00901 }
00902 break;
00903 case 11:
00904 { int m10 = l - c; (void)m10;
00905 { int ret = r_R2();
00906 if (ret == 0) goto lab15;
00907 if (ret < 0) return ret;
00908 }
00909 if (slice_del() == -1) return -1;
00910 goto lab14;
00911 lab15:
00912 c = l - m10;
00913 { int ret = r_R1();
00914 if (ret <= 0) return ret;
00915 }
00916 { int ret = slice_from_s(3, s_23);
00917 if (ret < 0) return ret;
00918 }
00919 }
00920 lab14:
00921 break;
00922 case 12:
00923 { int ret = r_R1();
00924 if (ret <= 0) return ret;
00925 }
00926 if (out_grouping_b_U(g_v, 97, 251, 0)) return 0;
00927 if (slice_del() == -1) return -1;
00928 break;
00929 case 13:
00930 { int ret = r_RV();
00931 if (ret <= 0) return ret;
00932 }
00933 { int ret = slice_from_s(3, s_24);
00934 if (ret < 0) return ret;
00935 }
00936 return 0;
00937 break;
00938 case 14:
00939 { int ret = r_RV();
00940 if (ret <= 0) return ret;
00941 }
00942 { int ret = slice_from_s(3, s_25);
00943 if (ret < 0) return ret;
00944 }
00945 return 0;
00946 break;
00947 case 15:
00948 { int m_test11 = l - c;
00949 if (in_grouping_b_U(g_v, 97, 251, 0)) return 0;
00950 { int ret = r_RV();
00951 if (ret <= 0) return ret;
00952 }
00953 c = l - m_test11;
00954 }
00955 if (slice_del() == -1) return -1;
00956 return 0;
00957 break;
00958 }
00959 return 1;
00960 }
00961
00962 int Xapian::InternalStemFrench::r_i_verb_suffix() {
00963 int among_var;
00964 { int m1 = l - c; (void)m1;
00965 int mlimit1;
00966 if (c < I_pV) return 0;
00967 c = I_pV;
00968 mlimit1 = lb; lb = c;
00969 c = l - m1;
00970 ket = c;
00971 if (c <= lb || p[c - 1] >> 5 != 3 || !((68944418 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1; return 0; }
00972 among_var = find_among_b(s_pool, a_5, 35, 0, 0);
00973 if (!(among_var)) { lb = mlimit1; return 0; }
00974 bra = c;
00975 switch(among_var) {
00976 case 0: { lb = mlimit1; return 0; }
00977 case 1:
00978 if (out_grouping_b_U(g_v, 97, 251, 0)) { lb = mlimit1; return 0; }
00979 if (slice_del() == -1) return -1;
00980 break;
00981 }
00982 lb = mlimit1;
00983 }
00984 return 1;
00985 }
00986
00987 int Xapian::InternalStemFrench::r_verb_suffix() {
00988 int among_var;
00989 { int m1 = l - c; (void)m1;
00990 int mlimit1;
00991 if (c < I_pV) return 0;
00992 c = I_pV;
00993 mlimit1 = lb; lb = c;
00994 c = l - m1;
00995 ket = c;
00996 among_var = find_among_b(s_pool, a_6, 38, 0, 0);
00997 if (!(among_var)) { lb = mlimit1; return 0; }
00998 bra = c;
00999 switch(among_var) {
01000 case 0: { lb = mlimit1; return 0; }
01001 case 1:
01002 { int ret = r_R2();
01003 if (ret == 0) { lb = mlimit1; return 0; }
01004 if (ret < 0) return ret;
01005 }
01006 if (slice_del() == -1) return -1;
01007 break;
01008 case 2:
01009 if (slice_del() == -1) return -1;
01010 break;
01011 case 3:
01012 if (slice_del() == -1) return -1;
01013 { int m2 = l - c; (void)m2;
01014 ket = c;
01015 if (c <= lb || p[c - 1] != 'e') { c = l - m2; goto lab0; }
01016 c--;
01017 bra = c;
01018 if (slice_del() == -1) return -1;
01019 lab0:
01020 ;
01021 }
01022 break;
01023 }
01024 lb = mlimit1;
01025 }
01026 return 1;
01027 }
01028
01029 int Xapian::InternalStemFrench::r_residual_suffix() {
01030 int among_var;
01031 { int m1 = l - c; (void)m1;
01032 ket = c;
01033 if (c <= lb || p[c - 1] != 's') { c = l - m1; goto lab0; }
01034 c--;
01035 bra = c;
01036 { int m_test2 = l - c;
01037 if (out_grouping_b_U(g_keep_with_s, 97, 232, 0)) { c = l - m1; goto lab0; }
01038 c = l - m_test2;
01039 }
01040 if (slice_del() == -1) return -1;
01041 lab0:
01042 ;
01043 }
01044 { int m3 = l - c; (void)m3;
01045 int mlimit3;
01046 if (c < I_pV) return 0;
01047 c = I_pV;
01048 mlimit3 = lb; lb = c;
01049 c = l - m3;
01050 ket = c;
01051 among_var = find_among_b(s_pool, a_7, 7, 0, 0);
01052 if (!(among_var)) { lb = mlimit3; return 0; }
01053 bra = c;
01054 switch(among_var) {
01055 case 0: { lb = mlimit3; return 0; }
01056 case 1:
01057 { int ret = r_R2();
01058 if (ret == 0) { lb = mlimit3; return 0; }
01059 if (ret < 0) return ret;
01060 }
01061 { int m4 = l - c; (void)m4;
01062 if (c <= lb || p[c - 1] != 's') goto lab2;
01063 c--;
01064 goto lab1;
01065 lab2:
01066 c = l - m4;
01067 if (c <= lb || p[c - 1] != 't') { lb = mlimit3; return 0; }
01068 c--;
01069 }
01070 lab1:
01071 if (slice_del() == -1) return -1;
01072 break;
01073 case 2:
01074 { int ret = slice_from_s(1, s_26);
01075 if (ret < 0) return ret;
01076 }
01077 break;
01078 case 3:
01079 if (slice_del() == -1) return -1;
01080 break;
01081 case 4:
01082 if (!(eq_s_b(2, s_27))) { lb = mlimit3; return 0; }
01083 if (slice_del() == -1) return -1;
01084 break;
01085 }
01086 lb = mlimit3;
01087 }
01088 return 1;
01089 }
01090
01091 int Xapian::InternalStemFrench::r_un_double() {
01092 { int m_test1 = l - c;
01093 if (c - 2 <= lb || p[c - 1] >> 5 != 3 || !((1069056 >> (p[c - 1] & 0x1f)) & 1)) return 0;
01094 if (!(find_among_b(s_pool, a_8, 5, 0, 0))) return 0;
01095 c = l - m_test1;
01096 }
01097 ket = c;
01098 { int ret = skip_utf8(p, c, lb, 0, -1);
01099 if (ret < 0) return 0;
01100 c = ret;
01101 }
01102 bra = c;
01103 if (slice_del() == -1) return -1;
01104 return 1;
01105 }
01106
01107 int Xapian::InternalStemFrench::r_un_accent() {
01108 { int i = 1;
01109 while(1) {
01110 if (out_grouping_b_U(g_v, 97, 251, 0)) goto lab0;
01111 i--;
01112 continue;
01113 lab0:
01114 break;
01115 }
01116 if (i > 0) return 0;
01117 }
01118 ket = c;
01119 { int m1 = l - c; (void)m1;
01120 if (!(eq_s_b(2, s_28))) goto lab2;
01121 goto lab1;
01122 lab2:
01123 c = l - m1;
01124 if (!(eq_s_b(2, s_29))) return 0;
01125 }
01126 lab1:
01127 bra = c;
01128 { int ret = slice_from_s(1, s_30);
01129 if (ret < 0) return ret;
01130 }
01131 return 1;
01132 }
01133
01134 int Xapian::InternalStemFrench::stem() {
01135 { int c1 = c;
01136 { int ret = r_prelude();
01137 if (ret == 0) goto lab0;
01138 if (ret < 0) return ret;
01139 }
01140 lab0:
01141 c = c1;
01142 }
01143 { int c2 = c;
01144 { int ret = r_mark_regions();
01145 if (ret == 0) goto lab1;
01146 if (ret < 0) return ret;
01147 }
01148 lab1:
01149 c = c2;
01150 }
01151 lb = c; c = l;
01152
01153 { int m3 = l - c; (void)m3;
01154 { int m4 = l - c; (void)m4;
01155 { int m5 = l - c; (void)m5;
01156 { int m6 = l - c; (void)m6;
01157 { int ret = r_standard_suffix();
01158 if (ret == 0) goto lab6;
01159 if (ret < 0) return ret;
01160 }
01161 goto lab5;
01162 lab6:
01163 c = l - m6;
01164 { int ret = r_i_verb_suffix();
01165 if (ret == 0) goto lab7;
01166 if (ret < 0) return ret;
01167 }
01168 goto lab5;
01169 lab7:
01170 c = l - m6;
01171 { int ret = r_verb_suffix();
01172 if (ret == 0) goto lab4;
01173 if (ret < 0) return ret;
01174 }
01175 }
01176 lab5:
01177 c = l - m5;
01178 { int m7 = l - c; (void)m7;
01179 ket = c;
01180 { int m8 = l - c; (void)m8;
01181 if (c <= lb || p[c - 1] != 'Y') goto lab10;
01182 c--;
01183 bra = c;
01184 { int ret = slice_from_s(1, s_31);
01185 if (ret < 0) return ret;
01186 }
01187 goto lab9;
01188 lab10:
01189 c = l - m8;
01190 if (!(eq_s_b(2, s_32))) { c = l - m7; goto lab8; }
01191 bra = c;
01192 { int ret = slice_from_s(1, s_33);
01193 if (ret < 0) return ret;
01194 }
01195 }
01196 lab9:
01197 lab8:
01198 ;
01199 }
01200 }
01201 goto lab3;
01202 lab4:
01203 c = l - m4;
01204 { int ret = r_residual_suffix();
01205 if (ret == 0) goto lab2;
01206 if (ret < 0) return ret;
01207 }
01208 }
01209 lab3:
01210 lab2:
01211 c = l - m3;
01212 }
01213 { int m9 = l - c; (void)m9;
01214 { int ret = r_un_double();
01215 if (ret == 0) goto lab11;
01216 if (ret < 0) return ret;
01217 }
01218 lab11:
01219 c = l - m9;
01220 }
01221 { int m10 = l - c; (void)m10;
01222 { int ret = r_un_accent();
01223 if (ret == 0) goto lab12;
01224 if (ret < 0) return ret;
01225 }
01226 lab12:
01227 c = l - m10;
01228 }
01229 c = lb;
01230 { int c11 = c;
01231 { int ret = r_postlude();
01232 if (ret == 0) goto lab13;
01233 if (ret < 0) return ret;
01234 }
01235 lab13:
01236 c = c11;
01237 }
01238 return 1;
01239 }
01240
01241 Xapian::InternalStemFrench::InternalStemFrench()
01242 : I_p2(0), I_p1(0), I_pV(0)
01243 {
01244 }
01245
01246 Xapian::InternalStemFrench::~InternalStemFrench()
01247 {
01248 }
01249
01250 std::string
01251 Xapian::InternalStemFrench::get_description() const
01252 {
01253 return "french";
01254 }