00001
00002
00003 #include <limits.h>
00004 #include "hungarian.h"
00005
00006 static const symbol s_0_0[2] = { 'c', 's' };
00007 static const symbol s_0_1[3] = { 'd', 'z', 's' };
00008 static const symbol s_0_2[2] = { 'g', 'y' };
00009 static const symbol s_0_3[2] = { 'l', 'y' };
00010 static const symbol s_0_4[2] = { 'n', 'y' };
00011 static const symbol s_0_5[2] = { 's', 'z' };
00012 static const symbol s_0_6[2] = { 't', 'y' };
00013 static const symbol s_0_7[2] = { 'z', 's' };
00014
00015 static const struct among a_0[8] =
00016 {
00017 { 2, s_0_0, -1, -1},
00018 { 3, s_0_1, -1, -1},
00019 { 2, s_0_2, -1, -1},
00020 { 2, s_0_3, -1, -1},
00021 { 2, s_0_4, -1, -1},
00022 { 2, s_0_5, -1, -1},
00023 { 2, s_0_6, -1, -1},
00024 { 2, s_0_7, -1, -1}
00025 };
00026
00027 static const symbol s_1_0[2] = { 0xC3, 0xA1 };
00028 static const symbol s_1_1[2] = { 0xC3, 0xA9 };
00029
00030 static const struct among a_1[2] =
00031 {
00032 { 2, s_1_0, -1, 1},
00033 { 2, s_1_1, -1, 2}
00034 };
00035
00036 static const symbol s_2_0[2] = { 'b', 'b' };
00037 static const symbol s_2_1[2] = { 'c', 'c' };
00038 static const symbol s_2_2[2] = { 'd', 'd' };
00039 static const symbol s_2_3[2] = { 'f', 'f' };
00040 static const symbol s_2_4[2] = { 'g', 'g' };
00041 static const symbol s_2_5[2] = { 'j', 'j' };
00042 static const symbol s_2_6[2] = { 'k', 'k' };
00043 static const symbol s_2_7[2] = { 'l', 'l' };
00044 static const symbol s_2_8[2] = { 'm', 'm' };
00045 static const symbol s_2_9[2] = { 'n', 'n' };
00046 static const symbol s_2_10[2] = { 'p', 'p' };
00047 static const symbol s_2_11[2] = { 'r', 'r' };
00048 static const symbol s_2_12[3] = { 'c', 'c', 's' };
00049 static const symbol s_2_13[2] = { 's', 's' };
00050 static const symbol s_2_14[3] = { 'z', 'z', 's' };
00051 static const symbol s_2_15[2] = { 't', 't' };
00052 static const symbol s_2_16[2] = { 'v', 'v' };
00053 static const symbol s_2_17[3] = { 'g', 'g', 'y' };
00054 static const symbol s_2_18[3] = { 'l', 'l', 'y' };
00055 static const symbol s_2_19[3] = { 'n', 'n', 'y' };
00056 static const symbol s_2_20[3] = { 't', 't', 'y' };
00057 static const symbol s_2_21[3] = { 's', 's', 'z' };
00058 static const symbol s_2_22[2] = { 'z', 'z' };
00059
00060 static const struct among a_2[23] =
00061 {
00062 { 2, s_2_0, -1, -1},
00063 { 2, s_2_1, -1, -1},
00064 { 2, s_2_2, -1, -1},
00065 { 2, s_2_3, -1, -1},
00066 { 2, s_2_4, -1, -1},
00067 { 2, s_2_5, -1, -1},
00068 { 2, s_2_6, -1, -1},
00069 { 2, s_2_7, -1, -1},
00070 { 2, s_2_8, -1, -1},
00071 { 2, s_2_9, -1, -1},
00072 { 2, s_2_10, -1, -1},
00073 { 2, s_2_11, -1, -1},
00074 { 3, s_2_12, -1, -1},
00075 { 2, s_2_13, -1, -1},
00076 { 3, s_2_14, -1, -1},
00077 { 2, s_2_15, -1, -1},
00078 { 2, s_2_16, -1, -1},
00079 { 3, s_2_17, -1, -1},
00080 { 3, s_2_18, -1, -1},
00081 { 3, s_2_19, -1, -1},
00082 { 3, s_2_20, -1, -1},
00083 { 3, s_2_21, -1, -1},
00084 { 2, s_2_22, -1, -1}
00085 };
00086
00087 static const symbol s_3_0[2] = { 'a', 'l' };
00088 static const symbol s_3_1[2] = { 'e', 'l' };
00089
00090 static const struct among a_3[2] =
00091 {
00092 { 2, s_3_0, -1, 1},
00093 { 2, s_3_1, -1, 2}
00094 };
00095
00096 static const symbol s_4_0[2] = { 'b', 'a' };
00097 static const symbol s_4_1[2] = { 'r', 'a' };
00098 static const symbol s_4_2[2] = { 'b', 'e' };
00099 static const symbol s_4_3[2] = { 'r', 'e' };
00100 static const symbol s_4_4[2] = { 'i', 'g' };
00101 static const symbol s_4_5[3] = { 'n', 'a', 'k' };
00102 static const symbol s_4_6[3] = { 'n', 'e', 'k' };
00103 static const symbol s_4_7[3] = { 'v', 'a', 'l' };
00104 static const symbol s_4_8[3] = { 'v', 'e', 'l' };
00105 static const symbol s_4_9[2] = { 'u', 'l' };
00106 static const symbol s_4_10[4] = { 'n', 0xC3, 0xA1, 'l' };
00107 static const symbol s_4_11[4] = { 'n', 0xC3, 0xA9, 'l' };
00108 static const symbol s_4_12[4] = { 'b', 0xC3, 0xB3, 'l' };
00109 static const symbol s_4_13[4] = { 'r', 0xC3, 0xB3, 'l' };
00110 static const symbol s_4_14[4] = { 't', 0xC3, 0xB3, 'l' };
00111 static const symbol s_4_15[4] = { 'b', 0xC3, 0xB5, 'l' };
00112 static const symbol s_4_16[4] = { 'r', 0xC3, 0xB5, 'l' };
00113 static const symbol s_4_17[4] = { 't', 0xC3, 0xB5, 'l' };
00114 static const symbol s_4_18[3] = { 0xC3, 0xBC, 'l' };
00115 static const symbol s_4_19[1] = { 'n' };
00116 static const symbol s_4_20[2] = { 'a', 'n' };
00117 static const symbol s_4_21[3] = { 'b', 'a', 'n' };
00118 static const symbol s_4_22[2] = { 'e', 'n' };
00119 static const symbol s_4_23[3] = { 'b', 'e', 'n' };
00120 static const symbol s_4_24[7] = { 'k', 0xC3, 0xA9, 'p', 'p', 'e', 'n' };
00121 static const symbol s_4_25[2] = { 'o', 'n' };
00122 static const symbol s_4_26[3] = { 0xC3, 0xB6, 'n' };
00123 static const symbol s_4_27[5] = { 'k', 0xC3, 0xA9, 'p', 'p' };
00124 static const symbol s_4_28[3] = { 'k', 'o', 'r' };
00125 static const symbol s_4_29[1] = { 't' };
00126 static const symbol s_4_30[2] = { 'a', 't' };
00127 static const symbol s_4_31[2] = { 'e', 't' };
00128 static const symbol s_4_32[5] = { 'k', 0xC3, 0xA9, 'n', 't' };
00129 static const symbol s_4_33[7] = { 'a', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
00130 static const symbol s_4_34[7] = { 'e', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
00131 static const symbol s_4_35[7] = { 'o', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
00132 static const symbol s_4_36[2] = { 'o', 't' };
00133 static const symbol s_4_37[4] = { 0xC3, 0xA9, 'r', 't' };
00134 static const symbol s_4_38[3] = { 0xC3, 0xB6, 't' };
00135 static const symbol s_4_39[3] = { 'h', 'e', 'z' };
00136 static const symbol s_4_40[3] = { 'h', 'o', 'z' };
00137 static const symbol s_4_41[4] = { 'h', 0xC3, 0xB6, 'z' };
00138 static const symbol s_4_42[3] = { 'v', 0xC3, 0xA1 };
00139 static const symbol s_4_43[3] = { 'v', 0xC3, 0xA9 };
00140
00141 static const struct among a_4[44] =
00142 {
00143 { 2, s_4_0, -1, -1},
00144 { 2, s_4_1, -1, -1},
00145 { 2, s_4_2, -1, -1},
00146 { 2, s_4_3, -1, -1},
00147 { 2, s_4_4, -1, -1},
00148 { 3, s_4_5, -1, -1},
00149 { 3, s_4_6, -1, -1},
00150 { 3, s_4_7, -1, -1},
00151 { 3, s_4_8, -1, -1},
00152 { 2, s_4_9, -1, -1},
00153 { 4, s_4_10, -1, -1},
00154 { 4, s_4_11, -1, -1},
00155 { 4, s_4_12, -1, -1},
00156 { 4, s_4_13, -1, -1},
00157 { 4, s_4_14, -1, -1},
00158 { 4, s_4_15, -1, -1},
00159 { 4, s_4_16, -1, -1},
00160 { 4, s_4_17, -1, -1},
00161 { 3, s_4_18, -1, -1},
00162 { 1, s_4_19, -1, -1},
00163 { 2, s_4_20, 19, -1},
00164 { 3, s_4_21, 20, -1},
00165 { 2, s_4_22, 19, -1},
00166 { 3, s_4_23, 22, -1},
00167 { 7, s_4_24, 22, -1},
00168 { 2, s_4_25, 19, -1},
00169 { 3, s_4_26, 19, -1},
00170 { 5, s_4_27, -1, -1},
00171 { 3, s_4_28, -1, -1},
00172 { 1, s_4_29, -1, -1},
00173 { 2, s_4_30, 29, -1},
00174 { 2, s_4_31, 29, -1},
00175 { 5, s_4_32, 29, -1},
00176 { 7, s_4_33, 32, -1},
00177 { 7, s_4_34, 32, -1},
00178 { 7, s_4_35, 32, -1},
00179 { 2, s_4_36, 29, -1},
00180 { 4, s_4_37, 29, -1},
00181 { 3, s_4_38, 29, -1},
00182 { 3, s_4_39, -1, -1},
00183 { 3, s_4_40, -1, -1},
00184 { 4, s_4_41, -1, -1},
00185 { 3, s_4_42, -1, -1},
00186 { 3, s_4_43, -1, -1}
00187 };
00188
00189 static const symbol s_5_0[3] = { 0xC3, 0xA1, 'n' };
00190 static const symbol s_5_1[3] = { 0xC3, 0xA9, 'n' };
00191 static const symbol s_5_2[8] = { 0xC3, 0xA1, 'n', 'k', 0xC3, 0xA9, 'n', 't' };
00192
00193 static const struct among a_5[3] =
00194 {
00195 { 3, s_5_0, -1, 2},
00196 { 3, s_5_1, -1, 1},
00197 { 8, s_5_2, -1, 3}
00198 };
00199
00200 static const symbol s_6_0[4] = { 's', 't', 'u', 'l' };
00201 static const symbol s_6_1[5] = { 'a', 's', 't', 'u', 'l' };
00202 static const symbol s_6_2[6] = { 0xC3, 0xA1, 's', 't', 'u', 'l' };
00203 static const symbol s_6_3[5] = { 's', 't', 0xC3, 0xBC, 'l' };
00204 static const symbol s_6_4[6] = { 'e', 's', 't', 0xC3, 0xBC, 'l' };
00205 static const symbol s_6_5[7] = { 0xC3, 0xA9, 's', 't', 0xC3, 0xBC, 'l' };
00206
00207 static const struct among a_6[6] =
00208 {
00209 { 4, s_6_0, -1, 2},
00210 { 5, s_6_1, 0, 1},
00211 { 6, s_6_2, 0, 3},
00212 { 5, s_6_3, -1, 2},
00213 { 6, s_6_4, 3, 1},
00214 { 7, s_6_5, 3, 4}
00215 };
00216
00217 static const symbol s_7_0[2] = { 0xC3, 0xA1 };
00218 static const symbol s_7_1[2] = { 0xC3, 0xA9 };
00219
00220 static const struct among a_7[2] =
00221 {
00222 { 2, s_7_0, -1, 1},
00223 { 2, s_7_1, -1, 2}
00224 };
00225
00226 static const symbol s_8_0[1] = { 'k' };
00227 static const symbol s_8_1[2] = { 'a', 'k' };
00228 static const symbol s_8_2[2] = { 'e', 'k' };
00229 static const symbol s_8_3[2] = { 'o', 'k' };
00230 static const symbol s_8_4[3] = { 0xC3, 0xA1, 'k' };
00231 static const symbol s_8_5[3] = { 0xC3, 0xA9, 'k' };
00232 static const symbol s_8_6[3] = { 0xC3, 0xB6, 'k' };
00233
00234 static const struct among a_8[7] =
00235 {
00236 { 1, s_8_0, -1, 7},
00237 { 2, s_8_1, 0, 4},
00238 { 2, s_8_2, 0, 6},
00239 { 2, s_8_3, 0, 5},
00240 { 3, s_8_4, 0, 1},
00241 { 3, s_8_5, 0, 2},
00242 { 3, s_8_6, 0, 3}
00243 };
00244
00245 static const symbol s_9_0[3] = { 0xC3, 0xA9, 'i' };
00246 static const symbol s_9_1[5] = { 0xC3, 0xA1, 0xC3, 0xA9, 'i' };
00247 static const symbol s_9_2[5] = { 0xC3, 0xA9, 0xC3, 0xA9, 'i' };
00248 static const symbol s_9_3[2] = { 0xC3, 0xA9 };
00249 static const symbol s_9_4[3] = { 'k', 0xC3, 0xA9 };
00250 static const symbol s_9_5[4] = { 'a', 'k', 0xC3, 0xA9 };
00251 static const symbol s_9_6[4] = { 'e', 'k', 0xC3, 0xA9 };
00252 static const symbol s_9_7[4] = { 'o', 'k', 0xC3, 0xA9 };
00253 static const symbol s_9_8[5] = { 0xC3, 0xA1, 'k', 0xC3, 0xA9 };
00254 static const symbol s_9_9[5] = { 0xC3, 0xA9, 'k', 0xC3, 0xA9 };
00255 static const symbol s_9_10[5] = { 0xC3, 0xB6, 'k', 0xC3, 0xA9 };
00256 static const symbol s_9_11[4] = { 0xC3, 0xA9, 0xC3, 0xA9 };
00257
00258 static const struct among a_9[12] =
00259 {
00260 { 3, s_9_0, -1, 7},
00261 { 5, s_9_1, 0, 6},
00262 { 5, s_9_2, 0, 5},
00263 { 2, s_9_3, -1, 9},
00264 { 3, s_9_4, 3, 4},
00265 { 4, s_9_5, 4, 1},
00266 { 4, s_9_6, 4, 1},
00267 { 4, s_9_7, 4, 1},
00268 { 5, s_9_8, 4, 3},
00269 { 5, s_9_9, 4, 2},
00270 { 5, s_9_10, 4, 1},
00271 { 4, s_9_11, 3, 8}
00272 };
00273
00274 static const symbol s_10_0[1] = { 'a' };
00275 static const symbol s_10_1[2] = { 'j', 'a' };
00276 static const symbol s_10_2[1] = { 'd' };
00277 static const symbol s_10_3[2] = { 'a', 'd' };
00278 static const symbol s_10_4[2] = { 'e', 'd' };
00279 static const symbol s_10_5[2] = { 'o', 'd' };
00280 static const symbol s_10_6[3] = { 0xC3, 0xA1, 'd' };
00281 static const symbol s_10_7[3] = { 0xC3, 0xA9, 'd' };
00282 static const symbol s_10_8[3] = { 0xC3, 0xB6, 'd' };
00283 static const symbol s_10_9[1] = { 'e' };
00284 static const symbol s_10_10[2] = { 'j', 'e' };
00285 static const symbol s_10_11[2] = { 'n', 'k' };
00286 static const symbol s_10_12[3] = { 'u', 'n', 'k' };
00287 static const symbol s_10_13[4] = { 0xC3, 0xA1, 'n', 'k' };
00288 static const symbol s_10_14[4] = { 0xC3, 0xA9, 'n', 'k' };
00289 static const symbol s_10_15[4] = { 0xC3, 0xBC, 'n', 'k' };
00290 static const symbol s_10_16[2] = { 'u', 'k' };
00291 static const symbol s_10_17[3] = { 'j', 'u', 'k' };
00292 static const symbol s_10_18[5] = { 0xC3, 0xA1, 'j', 'u', 'k' };
00293 static const symbol s_10_19[3] = { 0xC3, 0xBC, 'k' };
00294 static const symbol s_10_20[4] = { 'j', 0xC3, 0xBC, 'k' };
00295 static const symbol s_10_21[6] = { 0xC3, 0xA9, 'j', 0xC3, 0xBC, 'k' };
00296 static const symbol s_10_22[1] = { 'm' };
00297 static const symbol s_10_23[2] = { 'a', 'm' };
00298 static const symbol s_10_24[2] = { 'e', 'm' };
00299 static const symbol s_10_25[2] = { 'o', 'm' };
00300 static const symbol s_10_26[3] = { 0xC3, 0xA1, 'm' };
00301 static const symbol s_10_27[3] = { 0xC3, 0xA9, 'm' };
00302 static const symbol s_10_28[1] = { 'o' };
00303 static const symbol s_10_29[2] = { 0xC3, 0xA1 };
00304 static const symbol s_10_30[2] = { 0xC3, 0xA9 };
00305
00306 static const struct among a_10[31] =
00307 {
00308 { 1, s_10_0, -1, 18},
00309 { 2, s_10_1, 0, 17},
00310 { 1, s_10_2, -1, 16},
00311 { 2, s_10_3, 2, 13},
00312 { 2, s_10_4, 2, 13},
00313 { 2, s_10_5, 2, 13},
00314 { 3, s_10_6, 2, 14},
00315 { 3, s_10_7, 2, 15},
00316 { 3, s_10_8, 2, 13},
00317 { 1, s_10_9, -1, 18},
00318 { 2, s_10_10, 9, 17},
00319 { 2, s_10_11, -1, 4},
00320 { 3, s_10_12, 11, 1},
00321 { 4, s_10_13, 11, 2},
00322 { 4, s_10_14, 11, 3},
00323 { 4, s_10_15, 11, 1},
00324 { 2, s_10_16, -1, 8},
00325 { 3, s_10_17, 16, 7},
00326 { 5, s_10_18, 17, 5},
00327 { 3, s_10_19, -1, 8},
00328 { 4, s_10_20, 19, 7},
00329 { 6, s_10_21, 20, 6},
00330 { 1, s_10_22, -1, 12},
00331 { 2, s_10_23, 22, 9},
00332 { 2, s_10_24, 22, 9},
00333 { 2, s_10_25, 22, 9},
00334 { 3, s_10_26, 22, 10},
00335 { 3, s_10_27, 22, 11},
00336 { 1, s_10_28, -1, 18},
00337 { 2, s_10_29, -1, 19},
00338 { 2, s_10_30, -1, 20}
00339 };
00340
00341 static const symbol s_11_0[2] = { 'i', 'd' };
00342 static const symbol s_11_1[3] = { 'a', 'i', 'd' };
00343 static const symbol s_11_2[4] = { 'j', 'a', 'i', 'd' };
00344 static const symbol s_11_3[3] = { 'e', 'i', 'd' };
00345 static const symbol s_11_4[4] = { 'j', 'e', 'i', 'd' };
00346 static const symbol s_11_5[4] = { 0xC3, 0xA1, 'i', 'd' };
00347 static const symbol s_11_6[4] = { 0xC3, 0xA9, 'i', 'd' };
00348 static const symbol s_11_7[1] = { 'i' };
00349 static const symbol s_11_8[2] = { 'a', 'i' };
00350 static const symbol s_11_9[3] = { 'j', 'a', 'i' };
00351 static const symbol s_11_10[2] = { 'e', 'i' };
00352 static const symbol s_11_11[3] = { 'j', 'e', 'i' };
00353 static const symbol s_11_12[3] = { 0xC3, 0xA1, 'i' };
00354 static const symbol s_11_13[3] = { 0xC3, 0xA9, 'i' };
00355 static const symbol s_11_14[4] = { 'i', 't', 'e', 'k' };
00356 static const symbol s_11_15[5] = { 'e', 'i', 't', 'e', 'k' };
00357 static const symbol s_11_16[6] = { 'j', 'e', 'i', 't', 'e', 'k' };
00358 static const symbol s_11_17[6] = { 0xC3, 0xA9, 'i', 't', 'e', 'k' };
00359 static const symbol s_11_18[2] = { 'i', 'k' };
00360 static const symbol s_11_19[3] = { 'a', 'i', 'k' };
00361 static const symbol s_11_20[4] = { 'j', 'a', 'i', 'k' };
00362 static const symbol s_11_21[3] = { 'e', 'i', 'k' };
00363 static const symbol s_11_22[4] = { 'j', 'e', 'i', 'k' };
00364 static const symbol s_11_23[4] = { 0xC3, 0xA1, 'i', 'k' };
00365 static const symbol s_11_24[4] = { 0xC3, 0xA9, 'i', 'k' };
00366 static const symbol s_11_25[3] = { 'i', 'n', 'k' };
00367 static const symbol s_11_26[4] = { 'a', 'i', 'n', 'k' };
00368 static const symbol s_11_27[5] = { 'j', 'a', 'i', 'n', 'k' };
00369 static const symbol s_11_28[4] = { 'e', 'i', 'n', 'k' };
00370 static const symbol s_11_29[5] = { 'j', 'e', 'i', 'n', 'k' };
00371 static const symbol s_11_30[5] = { 0xC3, 0xA1, 'i', 'n', 'k' };
00372 static const symbol s_11_31[5] = { 0xC3, 0xA9, 'i', 'n', 'k' };
00373 static const symbol s_11_32[5] = { 'a', 'i', 't', 'o', 'k' };
00374 static const symbol s_11_33[6] = { 'j', 'a', 'i', 't', 'o', 'k' };
00375 static const symbol s_11_34[6] = { 0xC3, 0xA1, 'i', 't', 'o', 'k' };
00376 static const symbol s_11_35[2] = { 'i', 'm' };
00377 static const symbol s_11_36[3] = { 'a', 'i', 'm' };
00378 static const symbol s_11_37[4] = { 'j', 'a', 'i', 'm' };
00379 static const symbol s_11_38[3] = { 'e', 'i', 'm' };
00380 static const symbol s_11_39[4] = { 'j', 'e', 'i', 'm' };
00381 static const symbol s_11_40[4] = { 0xC3, 0xA1, 'i', 'm' };
00382 static const symbol s_11_41[4] = { 0xC3, 0xA9, 'i', 'm' };
00383
00384 static const struct among a_11[42] =
00385 {
00386 { 2, s_11_0, -1, 10},
00387 { 3, s_11_1, 0, 9},
00388 { 4, s_11_2, 1, 6},
00389 { 3, s_11_3, 0, 9},
00390 { 4, s_11_4, 3, 6},
00391 { 4, s_11_5, 0, 7},
00392 { 4, s_11_6, 0, 8},
00393 { 1, s_11_7, -1, 15},
00394 { 2, s_11_8, 7, 14},
00395 { 3, s_11_9, 8, 11},
00396 { 2, s_11_10, 7, 14},
00397 { 3, s_11_11, 10, 11},
00398 { 3, s_11_12, 7, 12},
00399 { 3, s_11_13, 7, 13},
00400 { 4, s_11_14, -1, 24},
00401 { 5, s_11_15, 14, 21},
00402 { 6, s_11_16, 15, 20},
00403 { 6, s_11_17, 14, 23},
00404 { 2, s_11_18, -1, 29},
00405 { 3, s_11_19, 18, 26},
00406 { 4, s_11_20, 19, 25},
00407 { 3, s_11_21, 18, 26},
00408 { 4, s_11_22, 21, 25},
00409 { 4, s_11_23, 18, 27},
00410 { 4, s_11_24, 18, 28},
00411 { 3, s_11_25, -1, 20},
00412 { 4, s_11_26, 25, 17},
00413 { 5, s_11_27, 26, 16},
00414 { 4, s_11_28, 25, 17},
00415 { 5, s_11_29, 28, 16},
00416 { 5, s_11_30, 25, 18},
00417 { 5, s_11_31, 25, 19},
00418 { 5, s_11_32, -1, 21},
00419 { 6, s_11_33, 32, 20},
00420 { 6, s_11_34, -1, 22},
00421 { 2, s_11_35, -1, 5},
00422 { 3, s_11_36, 35, 4},
00423 { 4, s_11_37, 36, 1},
00424 { 3, s_11_38, 35, 4},
00425 { 4, s_11_39, 38, 1},
00426 { 4, s_11_40, 35, 2},
00427 { 4, s_11_41, 35, 3}
00428 };
00429
00430 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 };
00431
00432 static const symbol s_0[] = { 'a' };
00433 static const symbol s_1[] = { 'e' };
00434 static const symbol s_2[] = { 'e' };
00435 static const symbol s_3[] = { 'a' };
00436 static const symbol s_4[] = { 'a' };
00437 static const symbol s_5[] = { 'a' };
00438 static const symbol s_6[] = { 'e' };
00439 static const symbol s_7[] = { 'a' };
00440 static const symbol s_8[] = { 'e' };
00441 static const symbol s_9[] = { 'e' };
00442 static const symbol s_10[] = { 'a' };
00443 static const symbol s_11[] = { 'e' };
00444 static const symbol s_12[] = { 'a' };
00445 static const symbol s_13[] = { 'e' };
00446 static const symbol s_14[] = { 'a' };
00447 static const symbol s_15[] = { 'e' };
00448 static const symbol s_16[] = { 'a' };
00449 static const symbol s_17[] = { 'e' };
00450 static const symbol s_18[] = { 'a' };
00451 static const symbol s_19[] = { 'e' };
00452 static const symbol s_20[] = { 'a' };
00453 static const symbol s_21[] = { 'e' };
00454 static const symbol s_22[] = { 'a' };
00455 static const symbol s_23[] = { 'e' };
00456 static const symbol s_24[] = { 'a' };
00457 static const symbol s_25[] = { 'e' };
00458 static const symbol s_26[] = { 'a' };
00459 static const symbol s_27[] = { 'e' };
00460 static const symbol s_28[] = { 'a' };
00461 static const symbol s_29[] = { 'e' };
00462 static const symbol s_30[] = { 'a' };
00463 static const symbol s_31[] = { 'e' };
00464 static const symbol s_32[] = { 'a' };
00465 static const symbol s_33[] = { 'e' };
00466 static const symbol s_34[] = { 'a' };
00467 static const symbol s_35[] = { 'e' };
00468
00469 int Xapian::InternalStemHungarian::r_mark_regions() {
00470 I_p1 = l;
00471 { int c1 = c;
00472 if (in_grouping_U(g_v, 97, 252, 0)) goto lab1;
00473 if (in_grouping_U(g_v, 97, 252, 1) < 0) goto lab1;
00474 { int c2 = c;
00475 if (c + 1 >= l || p[c + 1] >> 5 != 3 || !((101187584 >> (p[c + 1] & 0x1f)) & 1)) goto lab3;
00476 if (!(find_among(a_0, 8, 0, 0))) goto lab3;
00477 goto lab2;
00478 lab3:
00479 c = c2;
00480 { int ret = skip_utf8(p, c, 0, l, 1);
00481 if (ret < 0) goto lab1;
00482 c = ret;
00483 }
00484 }
00485 lab2:
00486 I_p1 = c;
00487 goto lab0;
00488 lab1:
00489 c = c1;
00490 if (out_grouping_U(g_v, 97, 252, 0)) return 0;
00491 { int ret = out_grouping_U(g_v, 97, 252, 1);
00492 if (ret < 0) return 0;
00493 c += ret;
00494 }
00495 I_p1 = c;
00496 }
00497 lab0:
00498 return 1;
00499 }
00500
00501 int Xapian::InternalStemHungarian::r_R1() {
00502 if (!(I_p1 <= c)) return 0;
00503 return 1;
00504 }
00505
00506 int Xapian::InternalStemHungarian::r_v_ending() {
00507 int among_var;
00508 ket = c;
00509 if (c - 1 <= lb || (p[c - 1] != 161 && p[c - 1] != 169)) return 0;
00510 among_var = find_among_b(a_1, 2, 0, 0);
00511 if (!(among_var)) return 0;
00512 bra = c;
00513 { int ret = r_R1();
00514 if (ret <= 0) return ret;
00515 }
00516 switch(among_var) {
00517 case 0: return 0;
00518 case 1:
00519 { int ret = slice_from_s(1, s_0);
00520 if (ret < 0) return ret;
00521 }
00522 break;
00523 case 2:
00524 { int ret = slice_from_s(1, s_1);
00525 if (ret < 0) return ret;
00526 }
00527 break;
00528 }
00529 return 1;
00530 }
00531
00532 int Xapian::InternalStemHungarian::r_double() {
00533 { int m_test1 = l - c;
00534 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((106790108 >> (p[c - 1] & 0x1f)) & 1)) return 0;
00535 if (!(find_among_b(a_2, 23, 0, 0))) return 0;
00536 c = l - m_test1;
00537 }
00538 return 1;
00539 }
00540
00541 int Xapian::InternalStemHungarian::r_undouble() {
00542 { int ret = skip_utf8(p, c, lb, 0, -1);
00543 if (ret < 0) return 0;
00544 c = ret;
00545 }
00546 ket = c;
00547 { int ret = skip_utf8(p, c, lb, l, - 1);
00548 if (ret < 0) return 0;
00549 c = ret;
00550 }
00551 bra = c;
00552 if (slice_del() == -1) return -1;
00553 return 1;
00554 }
00555
00556 int Xapian::InternalStemHungarian::r_instrum() {
00557 int among_var;
00558 ket = c;
00559 if (c - 1 <= lb || p[c - 1] != 108) return 0;
00560 among_var = find_among_b(a_3, 2, 0, 0);
00561 if (!(among_var)) return 0;
00562 bra = c;
00563 { int ret = r_R1();
00564 if (ret <= 0) return ret;
00565 }
00566 switch(among_var) {
00567 case 0: return 0;
00568 case 1:
00569 { int ret = r_double();
00570 if (ret <= 0) return ret;
00571 }
00572 break;
00573 case 2:
00574 { int ret = r_double();
00575 if (ret <= 0) return ret;
00576 }
00577 break;
00578 }
00579 if (slice_del() == -1) return -1;
00580 { int ret = r_undouble();
00581 if (ret <= 0) return ret;
00582 }
00583 return 1;
00584 }
00585
00586 int Xapian::InternalStemHungarian::r_case() {
00587 ket = c;
00588 if (!(find_among_b(a_4, 44, 0, 0))) return 0;
00589 bra = c;
00590 { int ret = r_R1();
00591 if (ret <= 0) return ret;
00592 }
00593 if (slice_del() == -1) return -1;
00594 { int ret = r_v_ending();
00595 if (ret <= 0) return ret;
00596 }
00597 return 1;
00598 }
00599
00600 int Xapian::InternalStemHungarian::r_case_special() {
00601 int among_var;
00602 ket = c;
00603 if (c - 2 <= lb || (p[c - 1] != 110 && p[c - 1] != 116)) return 0;
00604 among_var = find_among_b(a_5, 3, 0, 0);
00605 if (!(among_var)) return 0;
00606 bra = c;
00607 { int ret = r_R1();
00608 if (ret <= 0) return ret;
00609 }
00610 switch(among_var) {
00611 case 0: return 0;
00612 case 1:
00613 { int ret = slice_from_s(1, s_2);
00614 if (ret < 0) return ret;
00615 }
00616 break;
00617 case 2:
00618 { int ret = slice_from_s(1, s_3);
00619 if (ret < 0) return ret;
00620 }
00621 break;
00622 case 3:
00623 { int ret = slice_from_s(1, s_4);
00624 if (ret < 0) return ret;
00625 }
00626 break;
00627 }
00628 return 1;
00629 }
00630
00631 int Xapian::InternalStemHungarian::r_case_other() {
00632 int among_var;
00633 ket = c;
00634 if (c - 3 <= lb || p[c - 1] != 108) return 0;
00635 among_var = find_among_b(a_6, 6, 0, 0);
00636 if (!(among_var)) return 0;
00637 bra = c;
00638 { int ret = r_R1();
00639 if (ret <= 0) return ret;
00640 }
00641 switch(among_var) {
00642 case 0: return 0;
00643 case 1:
00644 if (slice_del() == -1) return -1;
00645 break;
00646 case 2:
00647 if (slice_del() == -1) return -1;
00648 break;
00649 case 3:
00650 { int ret = slice_from_s(1, s_5);
00651 if (ret < 0) return ret;
00652 }
00653 break;
00654 case 4:
00655 { int ret = slice_from_s(1, s_6);
00656 if (ret < 0) return ret;
00657 }
00658 break;
00659 }
00660 return 1;
00661 }
00662
00663 int Xapian::InternalStemHungarian::r_factive() {
00664 int among_var;
00665 ket = c;
00666 if (c - 1 <= lb || (p[c - 1] != 161 && p[c - 1] != 169)) return 0;
00667 among_var = find_among_b(a_7, 2, 0, 0);
00668 if (!(among_var)) return 0;
00669 bra = c;
00670 { int ret = r_R1();
00671 if (ret <= 0) return ret;
00672 }
00673 switch(among_var) {
00674 case 0: return 0;
00675 case 1:
00676 { int ret = r_double();
00677 if (ret <= 0) return ret;
00678 }
00679 break;
00680 case 2:
00681 { int ret = r_double();
00682 if (ret <= 0) return ret;
00683 }
00684 break;
00685 }
00686 if (slice_del() == -1) return -1;
00687 { int ret = r_undouble();
00688 if (ret <= 0) return ret;
00689 }
00690 return 1;
00691 }
00692
00693 int Xapian::InternalStemHungarian::r_plural() {
00694 int among_var;
00695 ket = c;
00696 if (c <= lb || p[c - 1] != 107) return 0;
00697 among_var = find_among_b(a_8, 7, 0, 0);
00698 if (!(among_var)) return 0;
00699 bra = c;
00700 { int ret = r_R1();
00701 if (ret <= 0) return ret;
00702 }
00703 switch(among_var) {
00704 case 0: return 0;
00705 case 1:
00706 { int ret = slice_from_s(1, s_7);
00707 if (ret < 0) return ret;
00708 }
00709 break;
00710 case 2:
00711 { int ret = slice_from_s(1, s_8);
00712 if (ret < 0) return ret;
00713 }
00714 break;
00715 case 3:
00716 if (slice_del() == -1) return -1;
00717 break;
00718 case 4:
00719 if (slice_del() == -1) return -1;
00720 break;
00721 case 5:
00722 if (slice_del() == -1) return -1;
00723 break;
00724 case 6:
00725 if (slice_del() == -1) return -1;
00726 break;
00727 case 7:
00728 if (slice_del() == -1) return -1;
00729 break;
00730 }
00731 return 1;
00732 }
00733
00734 int Xapian::InternalStemHungarian::r_owned() {
00735 int among_var;
00736 ket = c;
00737 if (c - 1 <= lb || (p[c - 1] != 105 && p[c - 1] != 169)) return 0;
00738 among_var = find_among_b(a_9, 12, 0, 0);
00739 if (!(among_var)) return 0;
00740 bra = c;
00741 { int ret = r_R1();
00742 if (ret <= 0) return ret;
00743 }
00744 switch(among_var) {
00745 case 0: return 0;
00746 case 1:
00747 if (slice_del() == -1) return -1;
00748 break;
00749 case 2:
00750 { int ret = slice_from_s(1, s_9);
00751 if (ret < 0) return ret;
00752 }
00753 break;
00754 case 3:
00755 { int ret = slice_from_s(1, s_10);
00756 if (ret < 0) return ret;
00757 }
00758 break;
00759 case 4:
00760 if (slice_del() == -1) return -1;
00761 break;
00762 case 5:
00763 { int ret = slice_from_s(1, s_11);
00764 if (ret < 0) return ret;
00765 }
00766 break;
00767 case 6:
00768 { int ret = slice_from_s(1, s_12);
00769 if (ret < 0) return ret;
00770 }
00771 break;
00772 case 7:
00773 if (slice_del() == -1) return -1;
00774 break;
00775 case 8:
00776 { int ret = slice_from_s(1, s_13);
00777 if (ret < 0) return ret;
00778 }
00779 break;
00780 case 9:
00781 if (slice_del() == -1) return -1;
00782 break;
00783 }
00784 return 1;
00785 }
00786
00787 int Xapian::InternalStemHungarian::r_sing_owner() {
00788 int among_var;
00789 ket = c;
00790 among_var = find_among_b(a_10, 31, 0, 0);
00791 if (!(among_var)) return 0;
00792 bra = c;
00793 { int ret = r_R1();
00794 if (ret <= 0) return ret;
00795 }
00796 switch(among_var) {
00797 case 0: return 0;
00798 case 1:
00799 if (slice_del() == -1) return -1;
00800 break;
00801 case 2:
00802 { int ret = slice_from_s(1, s_14);
00803 if (ret < 0) return ret;
00804 }
00805 break;
00806 case 3:
00807 { int ret = slice_from_s(1, s_15);
00808 if (ret < 0) return ret;
00809 }
00810 break;
00811 case 4:
00812 if (slice_del() == -1) return -1;
00813 break;
00814 case 5:
00815 { int ret = slice_from_s(1, s_16);
00816 if (ret < 0) return ret;
00817 }
00818 break;
00819 case 6:
00820 { int ret = slice_from_s(1, s_17);
00821 if (ret < 0) return ret;
00822 }
00823 break;
00824 case 7:
00825 if (slice_del() == -1) return -1;
00826 break;
00827 case 8:
00828 if (slice_del() == -1) return -1;
00829 break;
00830 case 9:
00831 if (slice_del() == -1) return -1;
00832 break;
00833 case 10:
00834 { int ret = slice_from_s(1, s_18);
00835 if (ret < 0) return ret;
00836 }
00837 break;
00838 case 11:
00839 { int ret = slice_from_s(1, s_19);
00840 if (ret < 0) return ret;
00841 }
00842 break;
00843 case 12:
00844 if (slice_del() == -1) return -1;
00845 break;
00846 case 13:
00847 if (slice_del() == -1) return -1;
00848 break;
00849 case 14:
00850 { int ret = slice_from_s(1, s_20);
00851 if (ret < 0) return ret;
00852 }
00853 break;
00854 case 15:
00855 { int ret = slice_from_s(1, s_21);
00856 if (ret < 0) return ret;
00857 }
00858 break;
00859 case 16:
00860 if (slice_del() == -1) return -1;
00861 break;
00862 case 17:
00863 if (slice_del() == -1) return -1;
00864 break;
00865 case 18:
00866 if (slice_del() == -1) return -1;
00867 break;
00868 case 19:
00869 { int ret = slice_from_s(1, s_22);
00870 if (ret < 0) return ret;
00871 }
00872 break;
00873 case 20:
00874 { int ret = slice_from_s(1, s_23);
00875 if (ret < 0) return ret;
00876 }
00877 break;
00878 }
00879 return 1;
00880 }
00881
00882 int Xapian::InternalStemHungarian::r_plur_owner() {
00883 int among_var;
00884 ket = c;
00885 if (c <= lb || p[c - 1] >> 5 != 3 || !((10768 >> (p[c - 1] & 0x1f)) & 1)) return 0;
00886 among_var = find_among_b(a_11, 42, 0, 0);
00887 if (!(among_var)) return 0;
00888 bra = c;
00889 { int ret = r_R1();
00890 if (ret <= 0) return ret;
00891 }
00892 switch(among_var) {
00893 case 0: return 0;
00894 case 1:
00895 if (slice_del() == -1) return -1;
00896 break;
00897 case 2:
00898 { int ret = slice_from_s(1, s_24);
00899 if (ret < 0) return ret;
00900 }
00901 break;
00902 case 3:
00903 { int ret = slice_from_s(1, s_25);
00904 if (ret < 0) return ret;
00905 }
00906 break;
00907 case 4:
00908 if (slice_del() == -1) return -1;
00909 break;
00910 case 5:
00911 if (slice_del() == -1) return -1;
00912 break;
00913 case 6:
00914 if (slice_del() == -1) return -1;
00915 break;
00916 case 7:
00917 { int ret = slice_from_s(1, s_26);
00918 if (ret < 0) return ret;
00919 }
00920 break;
00921 case 8:
00922 { int ret = slice_from_s(1, s_27);
00923 if (ret < 0) return ret;
00924 }
00925 break;
00926 case 9:
00927 if (slice_del() == -1) return -1;
00928 break;
00929 case 10:
00930 if (slice_del() == -1) return -1;
00931 break;
00932 case 11:
00933 if (slice_del() == -1) return -1;
00934 break;
00935 case 12:
00936 { int ret = slice_from_s(1, s_28);
00937 if (ret < 0) return ret;
00938 }
00939 break;
00940 case 13:
00941 { int ret = slice_from_s(1, s_29);
00942 if (ret < 0) return ret;
00943 }
00944 break;
00945 case 14:
00946 if (slice_del() == -1) return -1;
00947 break;
00948 case 15:
00949 if (slice_del() == -1) return -1;
00950 break;
00951 case 16:
00952 if (slice_del() == -1) return -1;
00953 break;
00954 case 17:
00955 if (slice_del() == -1) return -1;
00956 break;
00957 case 18:
00958 { int ret = slice_from_s(1, s_30);
00959 if (ret < 0) return ret;
00960 }
00961 break;
00962 case 19:
00963 { int ret = slice_from_s(1, s_31);
00964 if (ret < 0) return ret;
00965 }
00966 break;
00967 case 20:
00968 if (slice_del() == -1) return -1;
00969 break;
00970 case 21:
00971 if (slice_del() == -1) return -1;
00972 break;
00973 case 22:
00974 { int ret = slice_from_s(1, s_32);
00975 if (ret < 0) return ret;
00976 }
00977 break;
00978 case 23:
00979 { int ret = slice_from_s(1, s_33);
00980 if (ret < 0) return ret;
00981 }
00982 break;
00983 case 24:
00984 if (slice_del() == -1) return -1;
00985 break;
00986 case 25:
00987 if (slice_del() == -1) return -1;
00988 break;
00989 case 26:
00990 if (slice_del() == -1) return -1;
00991 break;
00992 case 27:
00993 { int ret = slice_from_s(1, s_34);
00994 if (ret < 0) return ret;
00995 }
00996 break;
00997 case 28:
00998 { int ret = slice_from_s(1, s_35);
00999 if (ret < 0) return ret;
01000 }
01001 break;
01002 case 29:
01003 if (slice_del() == -1) return -1;
01004 break;
01005 }
01006 return 1;
01007 }
01008
01009 int Xapian::InternalStemHungarian::stem() {
01010 { int c1 = c;
01011 { int ret = r_mark_regions();
01012 if (ret == 0) goto lab0;
01013 if (ret < 0) return ret;
01014 }
01015 lab0:
01016 c = c1;
01017 }
01018 lb = c; c = l;
01019
01020 { int m2 = l - c; (void)m2;
01021 { int ret = r_instrum();
01022 if (ret == 0) goto lab1;
01023 if (ret < 0) return ret;
01024 }
01025 lab1:
01026 c = l - m2;
01027 }
01028 { int m3 = l - c; (void)m3;
01029 { int ret = r_case();
01030 if (ret == 0) goto lab2;
01031 if (ret < 0) return ret;
01032 }
01033 lab2:
01034 c = l - m3;
01035 }
01036 { int m4 = l - c; (void)m4;
01037 { int ret = r_case_special();
01038 if (ret == 0) goto lab3;
01039 if (ret < 0) return ret;
01040 }
01041 lab3:
01042 c = l - m4;
01043 }
01044 { int m5 = l - c; (void)m5;
01045 { int ret = r_case_other();
01046 if (ret == 0) goto lab4;
01047 if (ret < 0) return ret;
01048 }
01049 lab4:
01050 c = l - m5;
01051 }
01052 { int m6 = l - c; (void)m6;
01053 { int ret = r_factive();
01054 if (ret == 0) goto lab5;
01055 if (ret < 0) return ret;
01056 }
01057 lab5:
01058 c = l - m6;
01059 }
01060 { int m7 = l - c; (void)m7;
01061 { int ret = r_owned();
01062 if (ret == 0) goto lab6;
01063 if (ret < 0) return ret;
01064 }
01065 lab6:
01066 c = l - m7;
01067 }
01068 { int m8 = l - c; (void)m8;
01069 { int ret = r_sing_owner();
01070 if (ret == 0) goto lab7;
01071 if (ret < 0) return ret;
01072 }
01073 lab7:
01074 c = l - m8;
01075 }
01076 { int m9 = l - c; (void)m9;
01077 { int ret = r_plur_owner();
01078 if (ret == 0) goto lab8;
01079 if (ret < 0) return ret;
01080 }
01081 lab8:
01082 c = l - m9;
01083 }
01084 { int m10 = l - c; (void)m10;
01085 { int ret = r_plural();
01086 if (ret == 0) goto lab9;
01087 if (ret < 0) return ret;
01088 }
01089 lab9:
01090 c = l - m10;
01091 }
01092 c = lb;
01093 return 1;
01094 }
01095
01096 Xapian::InternalStemHungarian::InternalStemHungarian()
01097 : I_p1(0)
01098 {
01099 }
01100
01101 Xapian::InternalStemHungarian::~InternalStemHungarian()
01102 {
01103 }
01104
01105 const char *
01106 Xapian::InternalStemHungarian::get_description() const
01107 {
01108 return "hungarian";
01109 }