00001
00002
00003 #include <limits.h>
00004 #include "italian.h"
00005
00006 static const symbol s_pool[] = {
00007 #define s_0_1 0
00008 'q', 'u',
00009 #define s_0_2 2
00010 0xC3, 0xA1,
00011 #define s_0_3 4
00012 0xC3, 0xA9,
00013 #define s_0_4 6
00014 0xC3, 0xAD,
00015 #define s_0_5 8
00016 0xC3, 0xB3,
00017 #define s_0_6 10
00018 0xC3, 0xBA,
00019 #define s_1_1 12
00020 'I',
00021 #define s_1_2 13
00022 'U',
00023 #define s_2_0 (s_2_1 + 2)
00024 #define s_2_1 14
00025 'c', 'e', 'l', 'a',
00026 #define s_2_2 18
00027 'g', 'l', 'i', 'e', 'l', 'a',
00028 #define s_2_3 24
00029 'm', 'e', 'l', 'a',
00030 #define s_2_4 28
00031 't', 'e', 'l', 'a',
00032 #define s_2_5 32
00033 'v', 'e', 'l', 'a',
00034 #define s_2_6 (s_2_7 + 2)
00035 #define s_2_7 36
00036 'c', 'e', 'l', 'e',
00037 #define s_2_8 40
00038 'g', 'l', 'i', 'e', 'l', 'e',
00039 #define s_2_9 46
00040 'm', 'e', 'l', 'e',
00041 #define s_2_10 50
00042 't', 'e', 'l', 'e',
00043 #define s_2_11 54
00044 'v', 'e', 'l', 'e',
00045 #define s_2_12 (s_2_13 + 2)
00046 #define s_2_13 58
00047 'c', 'e', 'n', 'e',
00048 #define s_2_14 62
00049 'g', 'l', 'i', 'e', 'n', 'e',
00050 #define s_2_15 68
00051 'm', 'e', 'n', 'e',
00052 #define s_2_16 72
00053 's', 'e', 'n', 'e',
00054 #define s_2_17 76
00055 't', 'e', 'n', 'e',
00056 #define s_2_18 80
00057 'v', 'e', 'n', 'e',
00058 #define s_2_19 84
00059 'c', 'i',
00060 #define s_2_20 (s_2_2 + 1)
00061 #define s_2_21 86
00062 'c', 'e', 'l', 'i',
00063 #define s_2_22 90
00064 'g', 'l', 'i', 'e', 'l', 'i',
00065 #define s_2_23 96
00066 'm', 'e', 'l', 'i',
00067 #define s_2_24 100
00068 't', 'e', 'l', 'i',
00069 #define s_2_25 104
00070 'v', 'e', 'l', 'i',
00071 #define s_2_26 s_2_2
00072 #define s_2_27 108
00073 'm', 'i',
00074 #define s_2_28 110
00075 's', 'i',
00076 #define s_2_29 112
00077 't', 'i',
00078 #define s_2_30 114
00079 'v', 'i',
00080 #define s_2_31 (s_2_32 + 2)
00081 #define s_2_32 116
00082 'c', 'e', 'l', 'o',
00083 #define s_2_33 120
00084 'g', 'l', 'i', 'e', 'l', 'o',
00085 #define s_2_34 126
00086 'm', 'e', 'l', 'o',
00087 #define s_2_35 130
00088 't', 'e', 'l', 'o',
00089 #define s_2_36 134
00090 'v', 'e', 'l', 'o',
00091 #define s_3_0 138
00092 'a', 'n', 'd', 'o',
00093 #define s_3_1 142
00094 'e', 'n', 'd', 'o',
00095 #define s_3_2 146
00096 'a', 'r',
00097 #define s_3_3 148
00098 'e', 'r',
00099 #define s_3_4 150
00100 'i', 'r',
00101 #define s_4_0 152
00102 'i', 'c',
00103 #define s_4_1 154
00104 'a', 'b', 'i', 'l',
00105 #define s_4_2 158
00106 'o', 's',
00107 #define s_4_3 160
00108 'i', 'v',
00109 #define s_5_0 162
00110 'i', 'c',
00111 #define s_5_1 164
00112 'a', 'b', 'i', 'l',
00113 #define s_5_2 168
00114 'i', 'v',
00115 #define s_6_0 170
00116 'i', 'c', 'a',
00117 #define s_6_1 173
00118 'l', 'o', 'g', 'i', 'a',
00119 #define s_6_2 178
00120 'o', 's', 'a',
00121 #define s_6_3 181
00122 'i', 's', 't', 'a',
00123 #define s_6_4 185
00124 'i', 'v', 'a',
00125 #define s_6_5 188
00126 'a', 'n', 'z', 'a',
00127 #define s_6_6 192
00128 'e', 'n', 'z', 'a',
00129 #define s_6_7 (s_6_8 + 3)
00130 #define s_6_8 196
00131 'a', 't', 'r', 'i', 'c', 'e',
00132 #define s_6_9 202
00133 'i', 'c', 'h', 'e',
00134 #define s_6_10 206
00135 'l', 'o', 'g', 'i', 'e',
00136 #define s_6_11 211
00137 'a', 'b', 'i', 'l', 'e',
00138 #define s_6_12 216
00139 'i', 'b', 'i', 'l', 'e',
00140 #define s_6_13 221
00141 'u', 's', 'i', 'o', 'n', 'e',
00142 #define s_6_14 227
00143 'a', 'z', 'i', 'o', 'n', 'e',
00144 #define s_6_15 233
00145 'u', 'z', 'i', 'o', 'n', 'e',
00146 #define s_6_16 239
00147 'a', 't', 'o', 'r', 'e',
00148 #define s_6_17 244
00149 'o', 's', 'e',
00150 #define s_6_18 247
00151 'a', 'n', 't', 'e',
00152 #define s_6_19 (s_6_20 + 1)
00153 #define s_6_20 251
00154 'a', 'm', 'e', 'n', 't', 'e',
00155 #define s_6_21 257
00156 'i', 's', 't', 'e',
00157 #define s_6_22 261
00158 'i', 'v', 'e',
00159 #define s_6_23 264
00160 'a', 'n', 'z', 'e',
00161 #define s_6_24 268
00162 'e', 'n', 'z', 'e',
00163 #define s_6_25 (s_6_26 + 3)
00164 #define s_6_26 272
00165 'a', 't', 'r', 'i', 'c', 'i',
00166 #define s_6_27 278
00167 'i', 'c', 'h', 'i',
00168 #define s_6_28 282
00169 'a', 'b', 'i', 'l', 'i',
00170 #define s_6_29 287
00171 'i', 'b', 'i', 'l', 'i',
00172 #define s_6_30 292
00173 'i', 's', 'm', 'i',
00174 #define s_6_31 296
00175 'u', 's', 'i', 'o', 'n', 'i',
00176 #define s_6_32 302
00177 'a', 'z', 'i', 'o', 'n', 'i',
00178 #define s_6_33 308
00179 'u', 'z', 'i', 'o', 'n', 'i',
00180 #define s_6_34 314
00181 'a', 't', 'o', 'r', 'i',
00182 #define s_6_35 319
00183 'o', 's', 'i',
00184 #define s_6_36 322
00185 'a', 'n', 't', 'i',
00186 #define s_6_37 326
00187 'a', 'm', 'e', 'n', 't', 'i',
00188 #define s_6_38 332
00189 'i', 'm', 'e', 'n', 't', 'i',
00190 #define s_6_39 338
00191 'i', 's', 't', 'i',
00192 #define s_6_40 342
00193 'i', 'v', 'i',
00194 #define s_6_41 345
00195 'i', 'c', 'o',
00196 #define s_6_42 348
00197 'i', 's', 'm', 'o',
00198 #define s_6_43 352
00199 'o', 's', 'o',
00200 #define s_6_44 355
00201 'a', 'm', 'e', 'n', 't', 'o',
00202 #define s_6_45 361
00203 'i', 'm', 'e', 'n', 't', 'o',
00204 #define s_6_46 367
00205 'i', 'v', 'o',
00206 #define s_6_47 370
00207 'i', 't', 0xC3, 0xA0,
00208 #define s_6_48 374
00209 'i', 's', 't', 0xC3, 0xA0,
00210 #define s_6_49 379
00211 'i', 's', 't', 0xC3, 0xA8,
00212 #define s_6_50 384
00213 'i', 's', 't', 0xC3, 0xAC,
00214 #define s_7_0 s_7_59
00215 #define s_7_1 389
00216 'e', 'n', 'd', 'a',
00217 #define s_7_2 393
00218 'a', 't', 'a',
00219 #define s_7_3 396
00220 'i', 't', 'a',
00221 #define s_7_4 399
00222 'u', 't', 'a',
00223 #define s_7_5 s_7_17
00224 #define s_7_6 s_7_18
00225 #define s_7_7 s_7_19
00226 #define s_7_8 s_7_70
00227 #define s_7_9 s_7_71
00228 #define s_7_10 402
00229 'i', 's', 'c', 'e',
00230 #define s_7_11 406
00231 'e', 'n', 'd', 'e',
00232 #define s_7_12 410
00233 'a', 'r', 'e',
00234 #define s_7_13 s_7_8
00235 #define s_7_14 s_7_9
00236 #define s_7_15 s_7_72
00237 #define s_7_16 (s_7_17 + 2)
00238 #define s_7_17 413
00239 'a', 'v', 'a', 't', 'e',
00240 #define s_7_18 418
00241 'e', 'v', 'a', 't', 'e',
00242 #define s_7_19 423
00243 'i', 'v', 'a', 't', 'e',
00244 #define s_7_20 (s_7_21 + 2)
00245 #define s_7_21 428
00246 'e', 'r', 'e', 't', 'e',
00247 #define s_7_22 433
00248 'i', 'r', 'e', 't', 'e',
00249 #define s_7_23 438
00250 'i', 't', 'e',
00251 #define s_7_24 441
00252 'e', 'r', 'e', 's', 't', 'e',
00253 #define s_7_25 447
00254 'i', 'r', 'e', 's', 't', 'e',
00255 #define s_7_26 453
00256 'u', 't', 'e',
00257 #define s_7_27 456
00258 'e', 'r', 'a', 'i',
00259 #define s_7_28 460
00260 'i', 'r', 'a', 'i',
00261 #define s_7_29 464
00262 'i', 's', 'c', 'i',
00263 #define s_7_30 468
00264 'e', 'n', 'd', 'i',
00265 #define s_7_31 472
00266 'e', 'r', 'e', 'i',
00267 #define s_7_32 476
00268 'i', 'r', 'e', 'i',
00269 #define s_7_33 s_7_52
00270 #define s_7_34 480
00271 'a', 't', 'i',
00272 #define s_7_35 483
00273 'i', 't', 'i',
00274 #define s_7_36 486
00275 'e', 'r', 'e', 's', 't', 'i',
00276 #define s_7_37 492
00277 'i', 'r', 'e', 's', 't', 'i',
00278 #define s_7_38 498
00279 'u', 't', 'i',
00280 #define s_7_39 501
00281 'a', 'v', 'i',
00282 #define s_7_40 504
00283 'e', 'v', 'i',
00284 #define s_7_41 507
00285 'i', 'v', 'i',
00286 #define s_7_42 s_7_66
00287 #define s_7_43 510
00288 'a', 'n', 'd', 'o',
00289 #define s_7_44 514
00290 'e', 'n', 'd', 'o',
00291 #define s_7_45 518
00292 'Y', 'a', 'm', 'o',
00293 #define s_7_46 522
00294 'i', 'a', 'm', 'o',
00295 #define s_7_47 526
00296 'a', 'v', 'a', 'm', 'o',
00297 #define s_7_48 531
00298 'e', 'v', 'a', 'm', 'o',
00299 #define s_7_49 536
00300 'i', 'v', 'a', 'm', 'o',
00301 #define s_7_50 541
00302 'e', 'r', 'e', 'm', 'o',
00303 #define s_7_51 546
00304 'i', 'r', 'e', 'm', 'o',
00305 #define s_7_52 551
00306 'a', 's', 's', 'i', 'm', 'o',
00307 #define s_7_53 557
00308 'a', 'm', 'm', 'o',
00309 #define s_7_54 (s_7_55 + 2)
00310 #define s_7_55 561
00311 'e', 'r', 'e', 'm', 'm', 'o',
00312 #define s_7_56 567
00313 'i', 'r', 'e', 'm', 'm', 'o',
00314 #define s_7_57 573
00315 'i', 'm', 'm', 'o',
00316 #define s_7_58 (s_7_59 + 3)
00317 #define s_7_59 577
00318 'i', 's', 'c', 'a', 'n', 'o',
00319 #define s_7_60 583
00320 'a', 'v', 'a', 'n', 'o',
00321 #define s_7_61 588
00322 'e', 'v', 'a', 'n', 'o',
00323 #define s_7_62 593
00324 'i', 'v', 'a', 'n', 'o',
00325 #define s_7_63 598
00326 'e', 'r', 'a', 'n', 'n', 'o',
00327 #define s_7_64 604
00328 'i', 'r', 'a', 'n', 'n', 'o',
00329 #define s_7_65 (s_7_66 + 3)
00330 #define s_7_66 610
00331 'i', 's', 'c', 'o', 'n', 'o',
00332 #define s_7_67 616
00333 'a', 'r', 'o', 'n', 'o',
00334 #define s_7_68 621
00335 'e', 'r', 'o', 'n', 'o',
00336 #define s_7_69 626
00337 'i', 'r', 'o', 'n', 'o',
00338 #define s_7_70 631
00339 'e', 'r', 'e', 'b', 'b', 'e', 'r', 'o',
00340 #define s_7_71 639
00341 'i', 'r', 'e', 'b', 'b', 'e', 'r', 'o',
00342 #define s_7_72 647
00343 'a', 's', 's', 'e', 'r', 'o',
00344 #define s_7_73 653
00345 'e', 's', 's', 'e', 'r', 'o',
00346 #define s_7_74 659
00347 'i', 's', 's', 'e', 'r', 'o',
00348 #define s_7_75 665
00349 'a', 't', 'o',
00350 #define s_7_76 668
00351 'i', 't', 'o',
00352 #define s_7_77 671
00353 'u', 't', 'o',
00354 #define s_7_78 674
00355 'a', 'v', 'o',
00356 #define s_7_79 677
00357 'e', 'v', 'o',
00358 #define s_7_80 680
00359 'i', 'v', 'o',
00360 #define s_7_81 s_7_12
00361 #define s_7_82 s_7_9
00362 #define s_7_83 683
00363 'e', 'r', 0xC3, 0xA0,
00364 #define s_7_84 687
00365 'i', 'r', 0xC3, 0xA0,
00366 #define s_7_85 691
00367 'e', 'r', 0xC3, 0xB2,
00368 #define s_7_86 695
00369 'i', 'r', 0xC3, 0xB2,
00370 };
00371
00372
00373 static const struct among a_0[7] =
00374 {
00375 { 0, 0, -1, 7},
00376 { 2, s_0_1, 0, 6},
00377 { 2, s_0_2, 0, 1},
00378 { 2, s_0_3, 0, 2},
00379 { 2, s_0_4, 0, 3},
00380 { 2, s_0_5, 0, 4},
00381 { 2, s_0_6, 0, 5}
00382 };
00383
00384
00385 static const struct among a_1[3] =
00386 {
00387 { 0, 0, -1, 3},
00388 { 1, s_1_1, 0, 1},
00389 { 1, s_1_2, 0, 2}
00390 };
00391
00392
00393 static const struct among a_2[37] =
00394 {
00395 { 2, s_2_0, -1, -1},
00396 { 4, s_2_1, 0, -1},
00397 { 6, s_2_2, 0, -1},
00398 { 4, s_2_3, 0, -1},
00399 { 4, s_2_4, 0, -1},
00400 { 4, s_2_5, 0, -1},
00401 { 2, s_2_6, -1, -1},
00402 { 4, s_2_7, 6, -1},
00403 { 6, s_2_8, 6, -1},
00404 { 4, s_2_9, 6, -1},
00405 { 4, s_2_10, 6, -1},
00406 { 4, s_2_11, 6, -1},
00407 { 2, s_2_12, -1, -1},
00408 { 4, s_2_13, 12, -1},
00409 { 6, s_2_14, 12, -1},
00410 { 4, s_2_15, 12, -1},
00411 { 4, s_2_16, 12, -1},
00412 { 4, s_2_17, 12, -1},
00413 { 4, s_2_18, 12, -1},
00414 { 2, s_2_19, -1, -1},
00415 { 2, s_2_20, -1, -1},
00416 { 4, s_2_21, 20, -1},
00417 { 6, s_2_22, 20, -1},
00418 { 4, s_2_23, 20, -1},
00419 { 4, s_2_24, 20, -1},
00420 { 4, s_2_25, 20, -1},
00421 { 3, s_2_26, 20, -1},
00422 { 2, s_2_27, -1, -1},
00423 { 2, s_2_28, -1, -1},
00424 { 2, s_2_29, -1, -1},
00425 { 2, s_2_30, -1, -1},
00426 { 2, s_2_31, -1, -1},
00427 { 4, s_2_32, 31, -1},
00428 { 6, s_2_33, 31, -1},
00429 { 4, s_2_34, 31, -1},
00430 { 4, s_2_35, 31, -1},
00431 { 4, s_2_36, 31, -1}
00432 };
00433
00434
00435 static const struct among a_3[5] =
00436 {
00437 { 4, s_3_0, -1, 1},
00438 { 4, s_3_1, -1, 1},
00439 { 2, s_3_2, -1, 2},
00440 { 2, s_3_3, -1, 2},
00441 { 2, s_3_4, -1, 2}
00442 };
00443
00444
00445 static const struct among a_4[4] =
00446 {
00447 { 2, s_4_0, -1, -1},
00448 { 4, s_4_1, -1, -1},
00449 { 2, s_4_2, -1, -1},
00450 { 2, s_4_3, -1, 1}
00451 };
00452
00453
00454 static const struct among a_5[3] =
00455 {
00456 { 2, s_5_0, -1, 1},
00457 { 4, s_5_1, -1, 1},
00458 { 2, s_5_2, -1, 1}
00459 };
00460
00461
00462 static const struct among a_6[51] =
00463 {
00464 { 3, s_6_0, -1, 1},
00465 { 5, s_6_1, -1, 3},
00466 { 3, s_6_2, -1, 1},
00467 { 4, s_6_3, -1, 1},
00468 { 3, s_6_4, -1, 9},
00469 { 4, s_6_5, -1, 1},
00470 { 4, s_6_6, -1, 5},
00471 { 3, s_6_7, -1, 1},
00472 { 6, s_6_8, 7, 1},
00473 { 4, s_6_9, -1, 1},
00474 { 5, s_6_10, -1, 3},
00475 { 5, s_6_11, -1, 1},
00476 { 5, s_6_12, -1, 1},
00477 { 6, s_6_13, -1, 4},
00478 { 6, s_6_14, -1, 2},
00479 { 6, s_6_15, -1, 4},
00480 { 5, s_6_16, -1, 2},
00481 { 3, s_6_17, -1, 1},
00482 { 4, s_6_18, -1, 1},
00483 { 5, s_6_19, -1, 1},
00484 { 6, s_6_20, 19, 7},
00485 { 4, s_6_21, -1, 1},
00486 { 3, s_6_22, -1, 9},
00487 { 4, s_6_23, -1, 1},
00488 { 4, s_6_24, -1, 5},
00489 { 3, s_6_25, -1, 1},
00490 { 6, s_6_26, 25, 1},
00491 { 4, s_6_27, -1, 1},
00492 { 5, s_6_28, -1, 1},
00493 { 5, s_6_29, -1, 1},
00494 { 4, s_6_30, -1, 1},
00495 { 6, s_6_31, -1, 4},
00496 { 6, s_6_32, -1, 2},
00497 { 6, s_6_33, -1, 4},
00498 { 5, s_6_34, -1, 2},
00499 { 3, s_6_35, -1, 1},
00500 { 4, s_6_36, -1, 1},
00501 { 6, s_6_37, -1, 6},
00502 { 6, s_6_38, -1, 6},
00503 { 4, s_6_39, -1, 1},
00504 { 3, s_6_40, -1, 9},
00505 { 3, s_6_41, -1, 1},
00506 { 4, s_6_42, -1, 1},
00507 { 3, s_6_43, -1, 1},
00508 { 6, s_6_44, -1, 6},
00509 { 6, s_6_45, -1, 6},
00510 { 3, s_6_46, -1, 9},
00511 { 4, s_6_47, -1, 8},
00512 { 5, s_6_48, -1, 1},
00513 { 5, s_6_49, -1, 1},
00514 { 5, s_6_50, -1, 1}
00515 };
00516
00517
00518 static const struct among a_7[87] =
00519 {
00520 { 4, s_7_0, -1, 1},
00521 { 4, s_7_1, -1, 1},
00522 { 3, s_7_2, -1, 1},
00523 { 3, s_7_3, -1, 1},
00524 { 3, s_7_4, -1, 1},
00525 { 3, s_7_5, -1, 1},
00526 { 3, s_7_6, -1, 1},
00527 { 3, s_7_7, -1, 1},
00528 { 6, s_7_8, -1, 1},
00529 { 6, s_7_9, -1, 1},
00530 { 4, s_7_10, -1, 1},
00531 { 4, s_7_11, -1, 1},
00532 { 3, s_7_12, -1, 1},
00533 { 3, s_7_13, -1, 1},
00534 { 3, s_7_14, -1, 1},
00535 { 4, s_7_15, -1, 1},
00536 { 3, s_7_16, -1, 1},
00537 { 5, s_7_17, 16, 1},
00538 { 5, s_7_18, 16, 1},
00539 { 5, s_7_19, 16, 1},
00540 { 3, s_7_20, -1, 1},
00541 { 5, s_7_21, 20, 1},
00542 { 5, s_7_22, 20, 1},
00543 { 3, s_7_23, -1, 1},
00544 { 6, s_7_24, -1, 1},
00545 { 6, s_7_25, -1, 1},
00546 { 3, s_7_26, -1, 1},
00547 { 4, s_7_27, -1, 1},
00548 { 4, s_7_28, -1, 1},
00549 { 4, s_7_29, -1, 1},
00550 { 4, s_7_30, -1, 1},
00551 { 4, s_7_31, -1, 1},
00552 { 4, s_7_32, -1, 1},
00553 { 4, s_7_33, -1, 1},
00554 { 3, s_7_34, -1, 1},
00555 { 3, s_7_35, -1, 1},
00556 { 6, s_7_36, -1, 1},
00557 { 6, s_7_37, -1, 1},
00558 { 3, s_7_38, -1, 1},
00559 { 3, s_7_39, -1, 1},
00560 { 3, s_7_40, -1, 1},
00561 { 3, s_7_41, -1, 1},
00562 { 4, s_7_42, -1, 1},
00563 { 4, s_7_43, -1, 1},
00564 { 4, s_7_44, -1, 1},
00565 { 4, s_7_45, -1, 1},
00566 { 4, s_7_46, -1, 1},
00567 { 5, s_7_47, -1, 1},
00568 { 5, s_7_48, -1, 1},
00569 { 5, s_7_49, -1, 1},
00570 { 5, s_7_50, -1, 1},
00571 { 5, s_7_51, -1, 1},
00572 { 6, s_7_52, -1, 1},
00573 { 4, s_7_53, -1, 1},
00574 { 4, s_7_54, -1, 1},
00575 { 6, s_7_55, 54, 1},
00576 { 6, s_7_56, 54, 1},
00577 { 4, s_7_57, -1, 1},
00578 { 3, s_7_58, -1, 1},
00579 { 6, s_7_59, 58, 1},
00580 { 5, s_7_60, 58, 1},
00581 { 5, s_7_61, 58, 1},
00582 { 5, s_7_62, 58, 1},
00583 { 6, s_7_63, -1, 1},
00584 { 6, s_7_64, -1, 1},
00585 { 3, s_7_65, -1, 1},
00586 { 6, s_7_66, 65, 1},
00587 { 5, s_7_67, 65, 1},
00588 { 5, s_7_68, 65, 1},
00589 { 5, s_7_69, 65, 1},
00590 { 8, s_7_70, -1, 1},
00591 { 8, s_7_71, -1, 1},
00592 { 6, s_7_72, -1, 1},
00593 { 6, s_7_73, -1, 1},
00594 { 6, s_7_74, -1, 1},
00595 { 3, s_7_75, -1, 1},
00596 { 3, s_7_76, -1, 1},
00597 { 3, s_7_77, -1, 1},
00598 { 3, s_7_78, -1, 1},
00599 { 3, s_7_79, -1, 1},
00600 { 3, s_7_80, -1, 1},
00601 { 2, s_7_81, -1, 1},
00602 { 2, s_7_82, -1, 1},
00603 { 4, s_7_83, -1, 1},
00604 { 4, s_7_84, -1, 1},
00605 { 4, s_7_85, -1, 1},
00606 { 4, s_7_86, -1, 1}
00607 };
00608
00609 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 };
00610
00611 static const unsigned char g_AEIO[] = { 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 };
00612
00613 static const unsigned char g_CG[] = { 17 };
00614
00615 static const symbol s_0[] = { 0xC3, 0xA0 };
00616 static const symbol s_1[] = { 0xC3, 0xA8 };
00617 static const symbol s_2[] = { 0xC3, 0xAC };
00618 static const symbol s_3[] = { 0xC3, 0xB2 };
00619 static const symbol s_4[] = { 0xC3, 0xB9 };
00620 static const symbol s_5[] = { 'q', 'U' };
00621 static const symbol s_6[] = { 'U' };
00622 static const symbol s_7[] = { 'I' };
00623 static const symbol s_8[] = { 'i' };
00624 static const symbol s_9[] = { 'u' };
00625 static const symbol s_10[] = { 'e' };
00626 static const symbol s_11[] = { 'i', 'c' };
00627 static const symbol s_12[] = { 'l', 'o', 'g' };
00628 static const symbol s_13[] = { 'u' };
00629 static const symbol s_14[] = { 'e', 'n', 't', 'e' };
00630 static const symbol s_15[] = { 'a', 't' };
00631 static const symbol s_16[] = { 'a', 't' };
00632 static const symbol s_17[] = { 'i', 'c' };
00633
00634 int Xapian::InternalStemItalian::r_prelude() {
00635 int among_var;
00636 { int c_test1 = c;
00637 while(1) {
00638 int c2 = c;
00639 bra = c;
00640 among_var = find_among(s_pool, a_0, 7, 0, 0);
00641 if (!(among_var)) goto lab0;
00642 ket = c;
00643 switch(among_var) {
00644 case 0: goto lab0;
00645 case 1:
00646 { int ret = slice_from_s(2, s_0);
00647 if (ret < 0) return ret;
00648 }
00649 break;
00650 case 2:
00651 { int ret = slice_from_s(2, s_1);
00652 if (ret < 0) return ret;
00653 }
00654 break;
00655 case 3:
00656 { int ret = slice_from_s(2, s_2);
00657 if (ret < 0) return ret;
00658 }
00659 break;
00660 case 4:
00661 { int ret = slice_from_s(2, s_3);
00662 if (ret < 0) return ret;
00663 }
00664 break;
00665 case 5:
00666 { int ret = slice_from_s(2, s_4);
00667 if (ret < 0) return ret;
00668 }
00669 break;
00670 case 6:
00671 { int ret = slice_from_s(2, s_5);
00672 if (ret < 0) return ret;
00673 }
00674 break;
00675 case 7:
00676 { int ret = skip_utf8(p, c, 0, l, 1);
00677 if (ret < 0) goto lab0;
00678 c = ret;
00679 }
00680 break;
00681 }
00682 continue;
00683 lab0:
00684 c = c2;
00685 break;
00686 }
00687 c = c_test1;
00688 }
00689 while(1) {
00690 int c3 = c;
00691 while(1) {
00692 int c4 = c;
00693 if (in_grouping_U(g_v, 97, 249, 0)) goto lab2;
00694 bra = c;
00695 { int c5 = c;
00696 if (c == l || p[c] != 'u') goto lab4;
00697 c++;
00698 ket = c;
00699 if (in_grouping_U(g_v, 97, 249, 0)) goto lab4;
00700 { int ret = slice_from_s(1, s_6);
00701 if (ret < 0) return ret;
00702 }
00703 goto lab3;
00704 lab4:
00705 c = c5;
00706 if (c == l || p[c] != 'i') goto lab2;
00707 c++;
00708 ket = c;
00709 if (in_grouping_U(g_v, 97, 249, 0)) goto lab2;
00710 { int ret = slice_from_s(1, s_7);
00711 if (ret < 0) return ret;
00712 }
00713 }
00714 lab3:
00715 c = c4;
00716 break;
00717 lab2:
00718 c = c4;
00719 { int ret = skip_utf8(p, c, 0, l, 1);
00720 if (ret < 0) goto lab1;
00721 c = ret;
00722 }
00723 }
00724 continue;
00725 lab1:
00726 c = c3;
00727 break;
00728 }
00729 return 1;
00730 }
00731
00732 int Xapian::InternalStemItalian::r_mark_regions() {
00733 I_pV = l;
00734 I_p1 = l;
00735 I_p2 = l;
00736 { int c1 = c;
00737 { int c2 = c;
00738 if (in_grouping_U(g_v, 97, 249, 0)) goto lab2;
00739 { int c3 = c;
00740 if (out_grouping_U(g_v, 97, 249, 0)) goto lab4;
00741 { int ret = out_grouping_U(g_v, 97, 249, 1);
00742 if (ret < 0) goto lab4;
00743 c += ret;
00744 }
00745 goto lab3;
00746 lab4:
00747 c = c3;
00748 if (in_grouping_U(g_v, 97, 249, 0)) goto lab2;
00749 { int ret = in_grouping_U(g_v, 97, 249, 1);
00750 if (ret < 0) goto lab2;
00751 c += ret;
00752 }
00753 }
00754 lab3:
00755 goto lab1;
00756 lab2:
00757 c = c2;
00758 if (out_grouping_U(g_v, 97, 249, 0)) goto lab0;
00759 { int c4 = c;
00760 if (out_grouping_U(g_v, 97, 249, 0)) goto lab6;
00761 { int ret = out_grouping_U(g_v, 97, 249, 1);
00762 if (ret < 0) goto lab6;
00763 c += ret;
00764 }
00765 goto lab5;
00766 lab6:
00767 c = c4;
00768 if (in_grouping_U(g_v, 97, 249, 0)) goto lab0;
00769 { int ret = skip_utf8(p, c, 0, l, 1);
00770 if (ret < 0) goto lab0;
00771 c = ret;
00772 }
00773 }
00774 lab5:
00775 ;
00776 }
00777 lab1:
00778 I_pV = c;
00779 lab0:
00780 c = c1;
00781 }
00782 { int c5 = c;
00783 { int ret = out_grouping_U(g_v, 97, 249, 1);
00784 if (ret < 0) goto lab7;
00785 c += ret;
00786 }
00787 { int ret = in_grouping_U(g_v, 97, 249, 1);
00788 if (ret < 0) goto lab7;
00789 c += ret;
00790 }
00791 I_p1 = c;
00792 { int ret = out_grouping_U(g_v, 97, 249, 1);
00793 if (ret < 0) goto lab7;
00794 c += ret;
00795 }
00796 { int ret = in_grouping_U(g_v, 97, 249, 1);
00797 if (ret < 0) goto lab7;
00798 c += ret;
00799 }
00800 I_p2 = c;
00801 lab7:
00802 c = c5;
00803 }
00804 return 1;
00805 }
00806
00807 int Xapian::InternalStemItalian::r_postlude() {
00808 int among_var;
00809 while(1) {
00810 int c1 = c;
00811 bra = c;
00812 if (c >= l || (p[c + 0] != 73 && p[c + 0] != 85)) among_var = 3; else
00813 among_var = find_among(s_pool, a_1, 3, 0, 0);
00814 if (!(among_var)) goto lab0;
00815 ket = c;
00816 switch(among_var) {
00817 case 0: goto lab0;
00818 case 1:
00819 { int ret = slice_from_s(1, s_8);
00820 if (ret < 0) return ret;
00821 }
00822 break;
00823 case 2:
00824 { int ret = slice_from_s(1, s_9);
00825 if (ret < 0) return ret;
00826 }
00827 break;
00828 case 3:
00829 { int ret = skip_utf8(p, c, 0, l, 1);
00830 if (ret < 0) goto lab0;
00831 c = ret;
00832 }
00833 break;
00834 }
00835 continue;
00836 lab0:
00837 c = c1;
00838 break;
00839 }
00840 return 1;
00841 }
00842
00843 int Xapian::InternalStemItalian::r_RV() {
00844 if (!(I_pV <= c)) return 0;
00845 return 1;
00846 }
00847
00848 int Xapian::InternalStemItalian::r_R1() {
00849 if (!(I_p1 <= c)) return 0;
00850 return 1;
00851 }
00852
00853 int Xapian::InternalStemItalian::r_R2() {
00854 if (!(I_p2 <= c)) return 0;
00855 return 1;
00856 }
00857
00858 int Xapian::InternalStemItalian::r_attached_pronoun() {
00859 int among_var;
00860 ket = c;
00861 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((33314 >> (p[c - 1] & 0x1f)) & 1)) return 0;
00862 if (!(find_among_b(s_pool, a_2, 37, 0, 0))) return 0;
00863 bra = c;
00864 if (c - 1 <= lb || (p[c - 1] != 111 && p[c - 1] != 114)) return 0;
00865 among_var = find_among_b(s_pool, a_3, 5, 0, 0);
00866 if (!(among_var)) return 0;
00867 { int ret = r_RV();
00868 if (ret <= 0) return ret;
00869 }
00870 switch(among_var) {
00871 case 0: return 0;
00872 case 1:
00873 if (slice_del() == -1) return -1;
00874 break;
00875 case 2:
00876 { int ret = slice_from_s(1, s_10);
00877 if (ret < 0) return ret;
00878 }
00879 break;
00880 }
00881 return 1;
00882 }
00883
00884 int Xapian::InternalStemItalian::r_standard_suffix() {
00885 int among_var;
00886 ket = c;
00887 among_var = find_among_b(s_pool, a_6, 51, 0, 0);
00888 if (!(among_var)) return 0;
00889 bra = c;
00890 switch(among_var) {
00891 case 0: return 0;
00892 case 1:
00893 { int ret = r_R2();
00894 if (ret <= 0) return ret;
00895 }
00896 if (slice_del() == -1) return -1;
00897 break;
00898 case 2:
00899 { int ret = r_R2();
00900 if (ret <= 0) return ret;
00901 }
00902 if (slice_del() == -1) return -1;
00903 { int m1 = l - c; (void)m1;
00904 ket = c;
00905 if (!(eq_s_b(2, s_11))) { c = l - m1; goto lab0; }
00906 bra = c;
00907 { int ret = r_R2();
00908 if (ret == 0) { c = l - m1; goto lab0; }
00909 if (ret < 0) return ret;
00910 }
00911 if (slice_del() == -1) return -1;
00912 lab0:
00913 ;
00914 }
00915 break;
00916 case 3:
00917 { int ret = r_R2();
00918 if (ret <= 0) return ret;
00919 }
00920 { int ret = slice_from_s(3, s_12);
00921 if (ret < 0) return ret;
00922 }
00923 break;
00924 case 4:
00925 { int ret = r_R2();
00926 if (ret <= 0) return ret;
00927 }
00928 { int ret = slice_from_s(1, s_13);
00929 if (ret < 0) return ret;
00930 }
00931 break;
00932 case 5:
00933 { int ret = r_R2();
00934 if (ret <= 0) return ret;
00935 }
00936 { int ret = slice_from_s(4, s_14);
00937 if (ret < 0) return ret;
00938 }
00939 break;
00940 case 6:
00941 { int ret = r_RV();
00942 if (ret <= 0) return ret;
00943 }
00944 if (slice_del() == -1) return -1;
00945 break;
00946 case 7:
00947 { int ret = r_R1();
00948 if (ret <= 0) return ret;
00949 }
00950 if (slice_del() == -1) return -1;
00951 { int m2 = l - c; (void)m2;
00952 ket = c;
00953 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4722696 >> (p[c - 1] & 0x1f)) & 1)) { c = l - m2; goto lab1; }
00954 among_var = find_among_b(s_pool, a_4, 4, 0, 0);
00955 if (!(among_var)) { c = l - m2; goto lab1; }
00956 bra = c;
00957 { int ret = r_R2();
00958 if (ret == 0) { c = l - m2; goto lab1; }
00959 if (ret < 0) return ret;
00960 }
00961 if (slice_del() == -1) return -1;
00962 switch(among_var) {
00963 case 0: { c = l - m2; goto lab1; }
00964 case 1:
00965 ket = c;
00966 if (!(eq_s_b(2, s_15))) { c = l - m2; goto lab1; }
00967 bra = c;
00968 { int ret = r_R2();
00969 if (ret == 0) { c = l - m2; goto lab1; }
00970 if (ret < 0) return ret;
00971 }
00972 if (slice_del() == -1) return -1;
00973 break;
00974 }
00975 lab1:
00976 ;
00977 }
00978 break;
00979 case 8:
00980 { int ret = r_R2();
00981 if (ret <= 0) return ret;
00982 }
00983 if (slice_del() == -1) return -1;
00984 { int m3 = l - c; (void)m3;
00985 ket = c;
00986 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4198408 >> (p[c - 1] & 0x1f)) & 1)) { c = l - m3; goto lab2; }
00987 among_var = find_among_b(s_pool, a_5, 3, 0, 0);
00988 if (!(among_var)) { c = l - m3; goto lab2; }
00989 bra = c;
00990 switch(among_var) {
00991 case 0: { c = l - m3; goto lab2; }
00992 case 1:
00993 { int ret = r_R2();
00994 if (ret == 0) { c = l - m3; goto lab2; }
00995 if (ret < 0) return ret;
00996 }
00997 if (slice_del() == -1) return -1;
00998 break;
00999 }
01000 lab2:
01001 ;
01002 }
01003 break;
01004 case 9:
01005 { int ret = r_R2();
01006 if (ret <= 0) return ret;
01007 }
01008 if (slice_del() == -1) return -1;
01009 { int m4 = l - c; (void)m4;
01010 ket = c;
01011 if (!(eq_s_b(2, s_16))) { c = l - m4; goto lab3; }
01012 bra = c;
01013 { int ret = r_R2();
01014 if (ret == 0) { c = l - m4; goto lab3; }
01015 if (ret < 0) return ret;
01016 }
01017 if (slice_del() == -1) return -1;
01018 ket = c;
01019 if (!(eq_s_b(2, s_17))) { c = l - m4; goto lab3; }
01020 bra = c;
01021 { int ret = r_R2();
01022 if (ret == 0) { c = l - m4; goto lab3; }
01023 if (ret < 0) return ret;
01024 }
01025 if (slice_del() == -1) return -1;
01026 lab3:
01027 ;
01028 }
01029 break;
01030 }
01031 return 1;
01032 }
01033
01034 int Xapian::InternalStemItalian::r_verb_suffix() {
01035 int among_var;
01036 { int m1 = l - c; (void)m1;
01037 int mlimit1;
01038 if (c < I_pV) return 0;
01039 c = I_pV;
01040 mlimit1 = lb; lb = c;
01041 c = l - m1;
01042 ket = c;
01043 among_var = find_among_b(s_pool, a_7, 87, 0, 0);
01044 if (!(among_var)) { lb = mlimit1; return 0; }
01045 bra = c;
01046 switch(among_var) {
01047 case 0: { lb = mlimit1; return 0; }
01048 case 1:
01049 if (slice_del() == -1) return -1;
01050 break;
01051 }
01052 lb = mlimit1;
01053 }
01054 return 1;
01055 }
01056
01057 int Xapian::InternalStemItalian::r_vowel_suffix() {
01058 { int m1 = l - c; (void)m1;
01059 ket = c;
01060 if (in_grouping_b_U(g_AEIO, 97, 242, 0)) { c = l - m1; goto lab0; }
01061 bra = c;
01062 { int ret = r_RV();
01063 if (ret == 0) { c = l - m1; goto lab0; }
01064 if (ret < 0) return ret;
01065 }
01066 if (slice_del() == -1) return -1;
01067 ket = c;
01068 if (c <= lb || p[c - 1] != 'i') { c = l - m1; goto lab0; }
01069 c--;
01070 bra = c;
01071 { int ret = r_RV();
01072 if (ret == 0) { c = l - m1; goto lab0; }
01073 if (ret < 0) return ret;
01074 }
01075 if (slice_del() == -1) return -1;
01076 lab0:
01077 ;
01078 }
01079 { int m2 = l - c; (void)m2;
01080 ket = c;
01081 if (c <= lb || p[c - 1] != 'h') { c = l - m2; goto lab1; }
01082 c--;
01083 bra = c;
01084 if (in_grouping_b_U(g_CG, 99, 103, 0)) { c = l - m2; goto lab1; }
01085 { int ret = r_RV();
01086 if (ret == 0) { c = l - m2; goto lab1; }
01087 if (ret < 0) return ret;
01088 }
01089 if (slice_del() == -1) return -1;
01090 lab1:
01091 ;
01092 }
01093 return 1;
01094 }
01095
01096 int Xapian::InternalStemItalian::stem() {
01097 { int c1 = c;
01098 { int ret = r_prelude();
01099 if (ret == 0) goto lab0;
01100 if (ret < 0) return ret;
01101 }
01102 lab0:
01103 c = c1;
01104 }
01105 { int c2 = c;
01106 { int ret = r_mark_regions();
01107 if (ret == 0) goto lab1;
01108 if (ret < 0) return ret;
01109 }
01110 lab1:
01111 c = c2;
01112 }
01113 lb = c; c = l;
01114
01115 { int m3 = l - c; (void)m3;
01116 { int ret = r_attached_pronoun();
01117 if (ret == 0) goto lab2;
01118 if (ret < 0) return ret;
01119 }
01120 lab2:
01121 c = l - m3;
01122 }
01123 { int m4 = l - c; (void)m4;
01124 { int m5 = l - c; (void)m5;
01125 { int ret = r_standard_suffix();
01126 if (ret == 0) goto lab5;
01127 if (ret < 0) return ret;
01128 }
01129 goto lab4;
01130 lab5:
01131 c = l - m5;
01132 { int ret = r_verb_suffix();
01133 if (ret == 0) goto lab3;
01134 if (ret < 0) return ret;
01135 }
01136 }
01137 lab4:
01138 lab3:
01139 c = l - m4;
01140 }
01141 { int m6 = l - c; (void)m6;
01142 { int ret = r_vowel_suffix();
01143 if (ret == 0) goto lab6;
01144 if (ret < 0) return ret;
01145 }
01146 lab6:
01147 c = l - m6;
01148 }
01149 c = lb;
01150 { int c7 = c;
01151 { int ret = r_postlude();
01152 if (ret == 0) goto lab7;
01153 if (ret < 0) return ret;
01154 }
01155 lab7:
01156 c = c7;
01157 }
01158 return 1;
01159 }
01160
01161 Xapian::InternalStemItalian::InternalStemItalian()
01162 : I_p2(0), I_p1(0), I_pV(0)
01163 {
01164 }
01165
01166 Xapian::InternalStemItalian::~InternalStemItalian()
01167 {
01168 }
01169
01170 std::string
01171 Xapian::InternalStemItalian::get_description() const
01172 {
01173 return "italian";
01174 }