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