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