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