00001
00002
00003 #include <limits.h>
00004 #include "portuguese.h"
00005
00006 static const symbol s_pool[] = {
00007 #define s_0_1 0
00008 0xC3, 0xA3,
00009 #define s_0_2 2
00010 0xC3, 0xB5,
00011 #define s_1_1 4
00012 'a', '~',
00013 #define s_1_2 6
00014 'o', '~',
00015 #define s_2_0 8
00016 'i', 'c',
00017 #define s_2_1 10
00018 'a', 'd',
00019 #define s_2_2 12
00020 'o', 's',
00021 #define s_2_3 14
00022 'i', 'v',
00023 #define s_3_0 16
00024 'a', 'n', 't', 'e',
00025 #define s_3_1 20
00026 'a', 'v', 'e', 'l',
00027 #define s_3_2 24
00028 0xC3, 0xAD, 'v', 'e', 'l',
00029 #define s_4_0 29
00030 'i', 'c',
00031 #define s_4_1 31
00032 'a', 'b', 'i', 'l',
00033 #define s_4_2 35
00034 'i', 'v',
00035 #define s_5_0 37
00036 'i', 'c', 'a',
00037 #define s_5_1 40
00038 0xC3, 0xA2, 'n', 'c', 'i', 'a',
00039 #define s_5_2 46
00040 0xC3, 0xAA, 'n', 'c', 'i', 'a',
00041 #define s_5_3 52
00042 'i', 'r', 'a',
00043 #define s_5_4 55
00044 'a', 'd', 'o', 'r', 'a',
00045 #define s_5_5 60
00046 'o', 's', 'a',
00047 #define s_5_6 63
00048 'i', 's', 't', 'a',
00049 #define s_5_7 67
00050 'i', 'v', 'a',
00051 #define s_5_8 70
00052 'e', 'z', 'a',
00053 #define s_5_9 73
00054 'l', 'o', 'g', 0xC3, 0xAD, 'a',
00055 #define s_5_10 79
00056 'i', 'd', 'a', 'd', 'e',
00057 #define s_5_11 84
00058 'a', 'n', 't', 'e',
00059 #define s_5_12 88
00060 'm', 'e', 'n', 't', 'e',
00061 #define s_5_13 93
00062 'a', 'm', 'e', 'n', 't', 'e',
00063 #define s_5_14 99
00064 0xC3, 0xA1, 'v', 'e', 'l',
00065 #define s_5_15 104
00066 0xC3, 0xAD, 'v', 'e', 'l',
00067 #define s_5_16 109
00068 'u', 'c', 'i', 0xC3, 0xB3, 'n',
00069 #define s_5_17 115
00070 'i', 'c', 'o',
00071 #define s_5_18 118
00072 'i', 's', 'm', 'o',
00073 #define s_5_19 122
00074 'o', 's', 'o',
00075 #define s_5_20 125
00076 'a', 'm', 'e', 'n', 't', 'o',
00077 #define s_5_21 131
00078 'i', 'm', 'e', 'n', 't', 'o',
00079 #define s_5_22 137
00080 'i', 'v', 'o',
00081 #define s_5_23 140
00082 'a', 0xC3, 0xA7, 'a', '~', 'o',
00083 #define s_5_24 146
00084 'a', 'd', 'o', 'r',
00085 #define s_5_25 150
00086 'i', 'c', 'a', 's',
00087 #define s_5_26 154
00088 0xC3, 0xAA, 'n', 'c', 'i', 'a', 's',
00089 #define s_5_27 161
00090 'i', 'r', 'a', 's',
00091 #define s_5_28 165
00092 'a', 'd', 'o', 'r', 'a', 's',
00093 #define s_5_29 171
00094 'o', 's', 'a', 's',
00095 #define s_5_30 175
00096 'i', 's', 't', 'a', 's',
00097 #define s_5_31 180
00098 'i', 'v', 'a', 's',
00099 #define s_5_32 184
00100 'e', 'z', 'a', 's',
00101 #define s_5_33 188
00102 'l', 'o', 'g', 0xC3, 0xAD, 'a', 's',
00103 #define s_5_34 195
00104 'i', 'd', 'a', 'd', 'e', 's',
00105 #define s_5_35 201
00106 'u', 'c', 'i', 'o', 'n', 'e', 's',
00107 #define s_5_36 208
00108 'a', 'd', 'o', 'r', 'e', 's',
00109 #define s_5_37 214
00110 'a', 'n', 't', 'e', 's',
00111 #define s_5_38 219
00112 'a', 0xC3, 0xA7, 'o', '~', 'e', 's',
00113 #define s_5_39 226
00114 'i', 'c', 'o', 's',
00115 #define s_5_40 230
00116 'i', 's', 'm', 'o', 's',
00117 #define s_5_41 235
00118 'o', 's', 'o', 's',
00119 #define s_5_42 239
00120 'a', 'm', 'e', 'n', 't', 'o', 's',
00121 #define s_5_43 246
00122 'i', 'm', 'e', 'n', 't', 'o', 's',
00123 #define s_5_44 253
00124 'i', 'v', 'o', 's',
00125 #define s_6_0 257
00126 'a', 'd', 'a',
00127 #define s_6_1 260
00128 'i', 'd', 'a',
00129 #define s_6_2 263
00130 'i', 'a',
00131 #define s_6_3 265
00132 'a', 'r', 'i', 'a',
00133 #define s_6_4 269
00134 'e', 'r', 'i', 'a',
00135 #define s_6_5 273
00136 'i', 'r', 'i', 'a',
00137 #define s_6_6 277
00138 'a', 'r', 'a',
00139 #define s_6_7 280
00140 'e', 'r', 'a',
00141 #define s_6_8 283
00142 'i', 'r', 'a',
00143 #define s_6_9 286
00144 'a', 'v', 'a',
00145 #define s_6_10 289
00146 'a', 's', 's', 'e',
00147 #define s_6_11 293
00148 'e', 's', 's', 'e',
00149 #define s_6_12 297
00150 'i', 's', 's', 'e',
00151 #define s_6_13 301
00152 'a', 's', 't', 'e',
00153 #define s_6_14 305
00154 'e', 's', 't', 'e',
00155 #define s_6_15 309
00156 'i', 's', 't', 'e',
00157 #define s_6_16 313
00158 'e', 'i',
00159 #define s_6_17 315
00160 'a', 'r', 'e', 'i',
00161 #define s_6_18 319
00162 'e', 'r', 'e', 'i',
00163 #define s_6_19 323
00164 'i', 'r', 'e', 'i',
00165 #define s_6_20 327
00166 'a', 'm',
00167 #define s_6_21 329
00168 'i', 'a', 'm',
00169 #define s_6_22 332
00170 'a', 'r', 'i', 'a', 'm',
00171 #define s_6_23 337
00172 'e', 'r', 'i', 'a', 'm',
00173 #define s_6_24 342
00174 'i', 'r', 'i', 'a', 'm',
00175 #define s_6_25 347
00176 'a', 'r', 'a', 'm',
00177 #define s_6_26 351
00178 'e', 'r', 'a', 'm',
00179 #define s_6_27 355
00180 'i', 'r', 'a', 'm',
00181 #define s_6_28 359
00182 'a', 'v', 'a', 'm',
00183 #define s_6_29 363
00184 'e', 'm',
00185 #define s_6_30 365
00186 'a', 'r', 'e', 'm',
00187 #define s_6_31 369
00188 'e', 'r', 'e', 'm',
00189 #define s_6_32 373
00190 'i', 'r', 'e', 'm',
00191 #define s_6_33 377
00192 'a', 's', 's', 'e', 'm',
00193 #define s_6_34 382
00194 'e', 's', 's', 'e', 'm',
00195 #define s_6_35 387
00196 'i', 's', 's', 'e', 'm',
00197 #define s_6_36 392
00198 'a', 'd', 'o',
00199 #define s_6_37 395
00200 'i', 'd', 'o',
00201 #define s_6_38 398
00202 'a', 'n', 'd', 'o',
00203 #define s_6_39 402
00204 'e', 'n', 'd', 'o',
00205 #define s_6_40 406
00206 'i', 'n', 'd', 'o',
00207 #define s_6_41 410
00208 'a', 'r', 'a', '~', 'o',
00209 #define s_6_42 415
00210 'e', 'r', 'a', '~', 'o',
00211 #define s_6_43 420
00212 'i', 'r', 'a', '~', 'o',
00213 #define s_6_44 425
00214 'a', 'r',
00215 #define s_6_45 427
00216 'e', 'r',
00217 #define s_6_46 429
00218 'i', 'r',
00219 #define s_6_47 431
00220 'a', 's',
00221 #define s_6_48 433
00222 'a', 'd', 'a', 's',
00223 #define s_6_49 437
00224 'i', 'd', 'a', 's',
00225 #define s_6_50 441
00226 'i', 'a', 's',
00227 #define s_6_51 444
00228 'a', 'r', 'i', 'a', 's',
00229 #define s_6_52 449
00230 'e', 'r', 'i', 'a', 's',
00231 #define s_6_53 454
00232 'i', 'r', 'i', 'a', 's',
00233 #define s_6_54 459
00234 'a', 'r', 'a', 's',
00235 #define s_6_55 463
00236 'e', 'r', 'a', 's',
00237 #define s_6_56 467
00238 'i', 'r', 'a', 's',
00239 #define s_6_57 471
00240 'a', 'v', 'a', 's',
00241 #define s_6_58 475
00242 'e', 's',
00243 #define s_6_59 477
00244 'a', 'r', 'd', 'e', 's',
00245 #define s_6_60 482
00246 'e', 'r', 'd', 'e', 's',
00247 #define s_6_61 487
00248 'i', 'r', 'd', 'e', 's',
00249 #define s_6_62 492
00250 'a', 'r', 'e', 's',
00251 #define s_6_63 496
00252 'e', 'r', 'e', 's',
00253 #define s_6_64 500
00254 'i', 'r', 'e', 's',
00255 #define s_6_65 504
00256 'a', 's', 's', 'e', 's',
00257 #define s_6_66 509
00258 'e', 's', 's', 'e', 's',
00259 #define s_6_67 514
00260 'i', 's', 's', 'e', 's',
00261 #define s_6_68 519
00262 'a', 's', 't', 'e', 's',
00263 #define s_6_69 524
00264 'e', 's', 't', 'e', 's',
00265 #define s_6_70 529
00266 'i', 's', 't', 'e', 's',
00267 #define s_6_71 534
00268 'i', 's',
00269 #define s_6_72 536
00270 'a', 'i', 's',
00271 #define s_6_73 539
00272 'e', 'i', 's',
00273 #define s_6_74 542
00274 'a', 'r', 'e', 'i', 's',
00275 #define s_6_75 547
00276 'e', 'r', 'e', 'i', 's',
00277 #define s_6_76 552
00278 'i', 'r', 'e', 'i', 's',
00279 #define s_6_77 557
00280 0xC3, 0xA1, 'r', 'e', 'i', 's',
00281 #define s_6_78 563
00282 0xC3, 0xA9, 'r', 'e', 'i', 's',
00283 #define s_6_79 569
00284 0xC3, 0xAD, 'r', 'e', 'i', 's',
00285 #define s_6_80 575
00286 0xC3, 0xA1, 's', 's', 'e', 'i', 's',
00287 #define s_6_81 582
00288 0xC3, 0xA9, 's', 's', 'e', 'i', 's',
00289 #define s_6_82 589
00290 0xC3, 0xAD, 's', 's', 'e', 'i', 's',
00291 #define s_6_83 596
00292 0xC3, 0xA1, 'v', 'e', 'i', 's',
00293 #define s_6_84 602
00294 0xC3, 0xAD, 'e', 'i', 's',
00295 #define s_6_85 607
00296 'a', 'r', 0xC3, 0xAD, 'e', 'i', 's',
00297 #define s_6_86 614
00298 'e', 'r', 0xC3, 0xAD, 'e', 'i', 's',
00299 #define s_6_87 621
00300 'i', 'r', 0xC3, 0xAD, 'e', 'i', 's',
00301 #define s_6_88 628
00302 'a', 'd', 'o', 's',
00303 #define s_6_89 632
00304 'i', 'd', 'o', 's',
00305 #define s_6_90 636
00306 'a', 'm', 'o', 's',
00307 #define s_6_91 640
00308 0xC3, 0xA1, 'r', 'a', 'm', 'o', 's',
00309 #define s_6_92 647
00310 0xC3, 0xA9, 'r', 'a', 'm', 'o', 's',
00311 #define s_6_93 654
00312 0xC3, 0xAD, 'r', 'a', 'm', 'o', 's',
00313 #define s_6_94 661
00314 0xC3, 0xA1, 'v', 'a', 'm', 'o', 's',
00315 #define s_6_95 668
00316 0xC3, 0xAD, 'a', 'm', 'o', 's',
00317 #define s_6_96 674
00318 'a', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's',
00319 #define s_6_97 682
00320 'e', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's',
00321 #define s_6_98 690
00322 'i', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's',
00323 #define s_6_99 698
00324 'e', 'm', 'o', 's',
00325 #define s_6_100 702
00326 'a', 'r', 'e', 'm', 'o', 's',
00327 #define s_6_101 708
00328 'e', 'r', 'e', 'm', 'o', 's',
00329 #define s_6_102 714
00330 'i', 'r', 'e', 'm', 'o', 's',
00331 #define s_6_103 720
00332 0xC3, 0xA1, 's', 's', 'e', 'm', 'o', 's',
00333 #define s_6_104 728
00334 0xC3, 0xAA, 's', 's', 'e', 'm', 'o', 's',
00335 #define s_6_105 736
00336 0xC3, 0xAD, 's', 's', 'e', 'm', 'o', 's',
00337 #define s_6_106 744
00338 'i', 'm', 'o', 's',
00339 #define s_6_107 748
00340 'a', 'r', 'm', 'o', 's',
00341 #define s_6_108 753
00342 'e', 'r', 'm', 'o', 's',
00343 #define s_6_109 758
00344 'i', 'r', 'm', 'o', 's',
00345 #define s_6_110 763
00346 0xC3, 0xA1, 'm', 'o', 's',
00347 #define s_6_111 768
00348 'a', 'r', 0xC3, 0xA1, 's',
00349 #define s_6_112 773
00350 'e', 'r', 0xC3, 0xA1, 's',
00351 #define s_6_113 778
00352 'i', 'r', 0xC3, 0xA1, 's',
00353 #define s_6_114 783
00354 'e', 'u',
00355 #define s_6_115 785
00356 'i', 'u',
00357 #define s_6_116 787
00358 'o', 'u',
00359 #define s_6_117 789
00360 'a', 'r', 0xC3, 0xA1,
00361 #define s_6_118 793
00362 'e', 'r', 0xC3, 0xA1,
00363 #define s_6_119 797
00364 'i', 'r', 0xC3, 0xA1,
00365 #define s_7_0 801
00366 'a',
00367 #define s_7_1 802
00368 'i',
00369 #define s_7_2 803
00370 'o',
00371 #define s_7_3 804
00372 'o', 's',
00373 #define s_7_4 806
00374 0xC3, 0xA1,
00375 #define s_7_5 808
00376 0xC3, 0xAD,
00377 #define s_7_6 810
00378 0xC3, 0xB3,
00379 #define s_8_0 812
00380 'e',
00381 #define s_8_1 813
00382 0xC3, 0xA7,
00383 #define s_8_2 815
00384 0xC3, 0xA9,
00385 #define s_8_3 817
00386 0xC3, 0xAA,
00387 };
00388
00389
00390 static const struct among a_0[3] =
00391 {
00392 { 0, 0, -1, 3},
00393 { 2, s_0_1, 0, 1},
00394 { 2, s_0_2, 0, 2}
00395 };
00396
00397
00398 static const struct among a_1[3] =
00399 {
00400 { 0, 0, -1, 3},
00401 { 2, s_1_1, 0, 1},
00402 { 2, s_1_2, 0, 2}
00403 };
00404
00405
00406 static const struct among a_2[4] =
00407 {
00408 { 2, s_2_0, -1, -1},
00409 { 2, s_2_1, -1, -1},
00410 { 2, s_2_2, -1, -1},
00411 { 2, s_2_3, -1, 1}
00412 };
00413
00414
00415 static const struct among a_3[3] =
00416 {
00417 { 4, s_3_0, -1, 1},
00418 { 4, s_3_1, -1, 1},
00419 { 5, s_3_2, -1, 1}
00420 };
00421
00422
00423 static const struct among a_4[3] =
00424 {
00425 { 2, s_4_0, -1, 1},
00426 { 4, s_4_1, -1, 1},
00427 { 2, s_4_2, -1, 1}
00428 };
00429
00430
00431 static const struct among a_5[45] =
00432 {
00433 { 3, s_5_0, -1, 1},
00434 { 6, s_5_1, -1, 1},
00435 { 6, s_5_2, -1, 4},
00436 { 3, s_5_3, -1, 9},
00437 { 5, s_5_4, -1, 1},
00438 { 3, s_5_5, -1, 1},
00439 { 4, s_5_6, -1, 1},
00440 { 3, s_5_7, -1, 8},
00441 { 3, s_5_8, -1, 1},
00442 { 6, s_5_9, -1, 2},
00443 { 5, s_5_10, -1, 7},
00444 { 4, s_5_11, -1, 1},
00445 { 5, s_5_12, -1, 6},
00446 { 6, s_5_13, 12, 5},
00447 { 5, s_5_14, -1, 1},
00448 { 5, s_5_15, -1, 1},
00449 { 6, s_5_16, -1, 3},
00450 { 3, s_5_17, -1, 1},
00451 { 4, s_5_18, -1, 1},
00452 { 3, s_5_19, -1, 1},
00453 { 6, s_5_20, -1, 1},
00454 { 6, s_5_21, -1, 1},
00455 { 3, s_5_22, -1, 8},
00456 { 6, s_5_23, -1, 1},
00457 { 4, s_5_24, -1, 1},
00458 { 4, s_5_25, -1, 1},
00459 { 7, s_5_26, -1, 4},
00460 { 4, s_5_27, -1, 9},
00461 { 6, s_5_28, -1, 1},
00462 { 4, s_5_29, -1, 1},
00463 { 5, s_5_30, -1, 1},
00464 { 4, s_5_31, -1, 8},
00465 { 4, s_5_32, -1, 1},
00466 { 7, s_5_33, -1, 2},
00467 { 6, s_5_34, -1, 7},
00468 { 7, s_5_35, -1, 3},
00469 { 6, s_5_36, -1, 1},
00470 { 5, s_5_37, -1, 1},
00471 { 7, s_5_38, -1, 1},
00472 { 4, s_5_39, -1, 1},
00473 { 5, s_5_40, -1, 1},
00474 { 4, s_5_41, -1, 1},
00475 { 7, s_5_42, -1, 1},
00476 { 7, s_5_43, -1, 1},
00477 { 4, s_5_44, -1, 8}
00478 };
00479
00480
00481 static const struct among a_6[120] =
00482 {
00483 { 3, s_6_0, -1, 1},
00484 { 3, s_6_1, -1, 1},
00485 { 2, s_6_2, -1, 1},
00486 { 4, s_6_3, 2, 1},
00487 { 4, s_6_4, 2, 1},
00488 { 4, s_6_5, 2, 1},
00489 { 3, s_6_6, -1, 1},
00490 { 3, s_6_7, -1, 1},
00491 { 3, s_6_8, -1, 1},
00492 { 3, s_6_9, -1, 1},
00493 { 4, s_6_10, -1, 1},
00494 { 4, s_6_11, -1, 1},
00495 { 4, s_6_12, -1, 1},
00496 { 4, s_6_13, -1, 1},
00497 { 4, s_6_14, -1, 1},
00498 { 4, s_6_15, -1, 1},
00499 { 2, s_6_16, -1, 1},
00500 { 4, s_6_17, 16, 1},
00501 { 4, s_6_18, 16, 1},
00502 { 4, s_6_19, 16, 1},
00503 { 2, s_6_20, -1, 1},
00504 { 3, s_6_21, 20, 1},
00505 { 5, s_6_22, 21, 1},
00506 { 5, s_6_23, 21, 1},
00507 { 5, s_6_24, 21, 1},
00508 { 4, s_6_25, 20, 1},
00509 { 4, s_6_26, 20, 1},
00510 { 4, s_6_27, 20, 1},
00511 { 4, s_6_28, 20, 1},
00512 { 2, s_6_29, -1, 1},
00513 { 4, s_6_30, 29, 1},
00514 { 4, s_6_31, 29, 1},
00515 { 4, s_6_32, 29, 1},
00516 { 5, s_6_33, 29, 1},
00517 { 5, s_6_34, 29, 1},
00518 { 5, s_6_35, 29, 1},
00519 { 3, s_6_36, -1, 1},
00520 { 3, s_6_37, -1, 1},
00521 { 4, s_6_38, -1, 1},
00522 { 4, s_6_39, -1, 1},
00523 { 4, s_6_40, -1, 1},
00524 { 5, s_6_41, -1, 1},
00525 { 5, s_6_42, -1, 1},
00526 { 5, s_6_43, -1, 1},
00527 { 2, s_6_44, -1, 1},
00528 { 2, s_6_45, -1, 1},
00529 { 2, s_6_46, -1, 1},
00530 { 2, s_6_47, -1, 1},
00531 { 4, s_6_48, 47, 1},
00532 { 4, s_6_49, 47, 1},
00533 { 3, s_6_50, 47, 1},
00534 { 5, s_6_51, 50, 1},
00535 { 5, s_6_52, 50, 1},
00536 { 5, s_6_53, 50, 1},
00537 { 4, s_6_54, 47, 1},
00538 { 4, s_6_55, 47, 1},
00539 { 4, s_6_56, 47, 1},
00540 { 4, s_6_57, 47, 1},
00541 { 2, s_6_58, -1, 1},
00542 { 5, s_6_59, 58, 1},
00543 { 5, s_6_60, 58, 1},
00544 { 5, s_6_61, 58, 1},
00545 { 4, s_6_62, 58, 1},
00546 { 4, s_6_63, 58, 1},
00547 { 4, s_6_64, 58, 1},
00548 { 5, s_6_65, 58, 1},
00549 { 5, s_6_66, 58, 1},
00550 { 5, s_6_67, 58, 1},
00551 { 5, s_6_68, 58, 1},
00552 { 5, s_6_69, 58, 1},
00553 { 5, s_6_70, 58, 1},
00554 { 2, s_6_71, -1, 1},
00555 { 3, s_6_72, 71, 1},
00556 { 3, s_6_73, 71, 1},
00557 { 5, s_6_74, 73, 1},
00558 { 5, s_6_75, 73, 1},
00559 { 5, s_6_76, 73, 1},
00560 { 6, s_6_77, 73, 1},
00561 { 6, s_6_78, 73, 1},
00562 { 6, s_6_79, 73, 1},
00563 { 7, s_6_80, 73, 1},
00564 { 7, s_6_81, 73, 1},
00565 { 7, s_6_82, 73, 1},
00566 { 6, s_6_83, 73, 1},
00567 { 5, s_6_84, 73, 1},
00568 { 7, s_6_85, 84, 1},
00569 { 7, s_6_86, 84, 1},
00570 { 7, s_6_87, 84, 1},
00571 { 4, s_6_88, -1, 1},
00572 { 4, s_6_89, -1, 1},
00573 { 4, s_6_90, -1, 1},
00574 { 7, s_6_91, 90, 1},
00575 { 7, s_6_92, 90, 1},
00576 { 7, s_6_93, 90, 1},
00577 { 7, s_6_94, 90, 1},
00578 { 6, s_6_95, 90, 1},
00579 { 8, s_6_96, 95, 1},
00580 { 8, s_6_97, 95, 1},
00581 { 8, s_6_98, 95, 1},
00582 { 4, s_6_99, -1, 1},
00583 { 6, s_6_100, 99, 1},
00584 { 6, s_6_101, 99, 1},
00585 { 6, s_6_102, 99, 1},
00586 { 8, s_6_103, 99, 1},
00587 { 8, s_6_104, 99, 1},
00588 { 8, s_6_105, 99, 1},
00589 { 4, s_6_106, -1, 1},
00590 { 5, s_6_107, -1, 1},
00591 { 5, s_6_108, -1, 1},
00592 { 5, s_6_109, -1, 1},
00593 { 5, s_6_110, -1, 1},
00594 { 5, s_6_111, -1, 1},
00595 { 5, s_6_112, -1, 1},
00596 { 5, s_6_113, -1, 1},
00597 { 2, s_6_114, -1, 1},
00598 { 2, s_6_115, -1, 1},
00599 { 2, s_6_116, -1, 1},
00600 { 4, s_6_117, -1, 1},
00601 { 4, s_6_118, -1, 1},
00602 { 4, s_6_119, -1, 1}
00603 };
00604
00605
00606 static const struct among a_7[7] =
00607 {
00608 { 1, s_7_0, -1, 1},
00609 { 1, s_7_1, -1, 1},
00610 { 1, s_7_2, -1, 1},
00611 { 2, s_7_3, -1, 1},
00612 { 2, s_7_4, -1, 1},
00613 { 2, s_7_5, -1, 1},
00614 { 2, s_7_6, -1, 1}
00615 };
00616
00617
00618 static const struct among a_8[4] =
00619 {
00620 { 1, s_8_0, -1, 1},
00621 { 2, s_8_1, -1, 2},
00622 { 2, s_8_2, -1, 1},
00623 { 2, s_8_3, -1, 1}
00624 };
00625
00626 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 };
00627
00628 static const symbol s_0[] = { 'a', '~' };
00629 static const symbol s_1[] = { 'o', '~' };
00630 static const symbol s_2[] = { 0xC3, 0xA3 };
00631 static const symbol s_3[] = { 0xC3, 0xB5 };
00632 static const symbol s_4[] = { 'l', 'o', 'g' };
00633 static const symbol s_5[] = { 'u' };
00634 static const symbol s_6[] = { 'e', 'n', 't', 'e' };
00635 static const symbol s_7[] = { 'a', 't' };
00636 static const symbol s_8[] = { 'a', 't' };
00637 static const symbol s_9[] = { 'i', 'r' };
00638 static const symbol s_10[] = { 'c' };
00639
00640 int Xapian::InternalStemPortuguese::r_prelude() {
00641 int among_var;
00642 while(1) {
00643 int c1 = c;
00644 bra = c;
00645 if (c + 1 >= l || (p[c + 1] != 163 && p[c + 1] != 181)) among_var = 3; else
00646 among_var = find_among(s_pool, a_0, 3, 0, 0);
00647 if (!(among_var)) goto lab0;
00648 ket = c;
00649 switch(among_var) {
00650 case 0: goto lab0;
00651 case 1:
00652 { int ret = slice_from_s(2, s_0);
00653 if (ret < 0) return ret;
00654 }
00655 break;
00656 case 2:
00657 { int ret = slice_from_s(2, s_1);
00658 if (ret < 0) return ret;
00659 }
00660 break;
00661 case 3:
00662 { int ret = skip_utf8(p, c, 0, l, 1);
00663 if (ret < 0) goto lab0;
00664 c = ret;
00665 }
00666 break;
00667 }
00668 continue;
00669 lab0:
00670 c = c1;
00671 break;
00672 }
00673 return 1;
00674 }
00675
00676 int Xapian::InternalStemPortuguese::r_mark_regions() {
00677 I_pV = l;
00678 I_p1 = l;
00679 I_p2 = l;
00680 { int c1 = c;
00681 { int c2 = c;
00682 if (in_grouping_U(g_v, 97, 250, 0)) goto lab2;
00683 { int c3 = c;
00684 if (out_grouping_U(g_v, 97, 250, 0)) goto lab4;
00685 { int ret = out_grouping_U(g_v, 97, 250, 1);
00686 if (ret < 0) goto lab4;
00687 c += ret;
00688 }
00689 goto lab3;
00690 lab4:
00691 c = c3;
00692 if (in_grouping_U(g_v, 97, 250, 0)) goto lab2;
00693 { int ret = in_grouping_U(g_v, 97, 250, 1);
00694 if (ret < 0) goto lab2;
00695 c += ret;
00696 }
00697 }
00698 lab3:
00699 goto lab1;
00700 lab2:
00701 c = c2;
00702 if (out_grouping_U(g_v, 97, 250, 0)) goto lab0;
00703 { int c4 = c;
00704 if (out_grouping_U(g_v, 97, 250, 0)) goto lab6;
00705 { int ret = out_grouping_U(g_v, 97, 250, 1);
00706 if (ret < 0) goto lab6;
00707 c += ret;
00708 }
00709 goto lab5;
00710 lab6:
00711 c = c4;
00712 if (in_grouping_U(g_v, 97, 250, 0)) goto lab0;
00713 { int ret = skip_utf8(p, c, 0, l, 1);
00714 if (ret < 0) goto lab0;
00715 c = ret;
00716 }
00717 }
00718 lab5:
00719 ;
00720 }
00721 lab1:
00722 I_pV = c;
00723 lab0:
00724 c = c1;
00725 }
00726 { int c5 = c;
00727 { int ret = out_grouping_U(g_v, 97, 250, 1);
00728 if (ret < 0) goto lab7;
00729 c += ret;
00730 }
00731 { int ret = in_grouping_U(g_v, 97, 250, 1);
00732 if (ret < 0) goto lab7;
00733 c += ret;
00734 }
00735 I_p1 = c;
00736 { int ret = out_grouping_U(g_v, 97, 250, 1);
00737 if (ret < 0) goto lab7;
00738 c += ret;
00739 }
00740 { int ret = in_grouping_U(g_v, 97, 250, 1);
00741 if (ret < 0) goto lab7;
00742 c += ret;
00743 }
00744 I_p2 = c;
00745 lab7:
00746 c = c5;
00747 }
00748 return 1;
00749 }
00750
00751 int Xapian::InternalStemPortuguese::r_postlude() {
00752 int among_var;
00753 while(1) {
00754 int c1 = c;
00755 bra = c;
00756 if (c + 1 >= l || p[c + 1] != 126) among_var = 3; else
00757 among_var = find_among(s_pool, a_1, 3, 0, 0);
00758 if (!(among_var)) goto lab0;
00759 ket = c;
00760 switch(among_var) {
00761 case 0: goto lab0;
00762 case 1:
00763 { int ret = slice_from_s(2, s_2);
00764 if (ret < 0) return ret;
00765 }
00766 break;
00767 case 2:
00768 { int ret = slice_from_s(2, s_3);
00769 if (ret < 0) return ret;
00770 }
00771 break;
00772 case 3:
00773 { int ret = skip_utf8(p, c, 0, l, 1);
00774 if (ret < 0) goto lab0;
00775 c = ret;
00776 }
00777 break;
00778 }
00779 continue;
00780 lab0:
00781 c = c1;
00782 break;
00783 }
00784 return 1;
00785 }
00786
00787 int Xapian::InternalStemPortuguese::r_RV() {
00788 if (!(I_pV <= c)) return 0;
00789 return 1;
00790 }
00791
00792 int Xapian::InternalStemPortuguese::r_R1() {
00793 if (!(I_p1 <= c)) return 0;
00794 return 1;
00795 }
00796
00797 int Xapian::InternalStemPortuguese::r_R2() {
00798 if (!(I_p2 <= c)) return 0;
00799 return 1;
00800 }
00801
00802 int Xapian::InternalStemPortuguese::r_standard_suffix() {
00803 int among_var;
00804 ket = c;
00805 if (c - 2 <= lb || p[c - 1] >> 5 != 3 || !((839714 >> (p[c - 1] & 0x1f)) & 1)) return 0;
00806 among_var = find_among_b(s_pool, a_5, 45, 0, 0);
00807 if (!(among_var)) return 0;
00808 bra = c;
00809 switch(among_var) {
00810 case 0: return 0;
00811 case 1:
00812 { int ret = r_R2();
00813 if (ret <= 0) return ret;
00814 }
00815 if (slice_del() == -1) return -1;
00816 break;
00817 case 2:
00818 { int ret = r_R2();
00819 if (ret <= 0) return ret;
00820 }
00821 { int ret = slice_from_s(3, s_4);
00822 if (ret < 0) return ret;
00823 }
00824 break;
00825 case 3:
00826 { int ret = r_R2();
00827 if (ret <= 0) return ret;
00828 }
00829 { int ret = slice_from_s(1, s_5);
00830 if (ret < 0) return ret;
00831 }
00832 break;
00833 case 4:
00834 { int ret = r_R2();
00835 if (ret <= 0) return ret;
00836 }
00837 { int ret = slice_from_s(4, s_6);
00838 if (ret < 0) return ret;
00839 }
00840 break;
00841 case 5:
00842 { int ret = r_R1();
00843 if (ret <= 0) return ret;
00844 }
00845 if (slice_del() == -1) return -1;
00846 { int m1 = l - c; (void)m1;
00847 ket = c;
00848 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4718616 >> (p[c - 1] & 0x1f)) & 1)) { c = l - m1; goto lab0; }
00849 among_var = find_among_b(s_pool, a_2, 4, 0, 0);
00850 if (!(among_var)) { c = l - m1; goto lab0; }
00851 bra = c;
00852 { int ret = r_R2();
00853 if (ret == 0) { c = l - m1; goto lab0; }
00854 if (ret < 0) return ret;
00855 }
00856 if (slice_del() == -1) return -1;
00857 switch(among_var) {
00858 case 0: { c = l - m1; goto lab0; }
00859 case 1:
00860 ket = c;
00861 if (!(eq_s_b(2, s_7))) { c = l - m1; goto lab0; }
00862 bra = c;
00863 { int ret = r_R2();
00864 if (ret == 0) { c = l - m1; goto lab0; }
00865 if (ret < 0) return ret;
00866 }
00867 if (slice_del() == -1) return -1;
00868 break;
00869 }
00870 lab0:
00871 ;
00872 }
00873 break;
00874 case 6:
00875 { int ret = r_R2();
00876 if (ret <= 0) return ret;
00877 }
00878 if (slice_del() == -1) return -1;
00879 { int m2 = l - c; (void)m2;
00880 ket = c;
00881 if (c - 3 <= lb || (p[c - 1] != 101 && p[c - 1] != 108)) { c = l - m2; goto lab1; }
00882 among_var = find_among_b(s_pool, a_3, 3, 0, 0);
00883 if (!(among_var)) { c = l - m2; goto lab1; }
00884 bra = c;
00885 switch(among_var) {
00886 case 0: { c = l - m2; goto lab1; }
00887 case 1:
00888 { int ret = r_R2();
00889 if (ret == 0) { c = l - m2; goto lab1; }
00890 if (ret < 0) return ret;
00891 }
00892 if (slice_del() == -1) return -1;
00893 break;
00894 }
00895 lab1:
00896 ;
00897 }
00898 break;
00899 case 7:
00900 { int ret = r_R2();
00901 if (ret <= 0) return ret;
00902 }
00903 if (slice_del() == -1) return -1;
00904 { int m3 = l - c; (void)m3;
00905 ket = c;
00906 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4198408 >> (p[c - 1] & 0x1f)) & 1)) { c = l - m3; goto lab2; }
00907 among_var = find_among_b(s_pool, a_4, 3, 0, 0);
00908 if (!(among_var)) { c = l - m3; goto lab2; }
00909 bra = c;
00910 switch(among_var) {
00911 case 0: { c = l - m3; goto lab2; }
00912 case 1:
00913 { int ret = r_R2();
00914 if (ret == 0) { c = l - m3; goto lab2; }
00915 if (ret < 0) return ret;
00916 }
00917 if (slice_del() == -1) return -1;
00918 break;
00919 }
00920 lab2:
00921 ;
00922 }
00923 break;
00924 case 8:
00925 { int ret = r_R2();
00926 if (ret <= 0) return ret;
00927 }
00928 if (slice_del() == -1) return -1;
00929 { int m4 = l - c; (void)m4;
00930 ket = c;
00931 if (!(eq_s_b(2, s_8))) { c = l - m4; goto lab3; }
00932 bra = c;
00933 { int ret = r_R2();
00934 if (ret == 0) { c = l - m4; goto lab3; }
00935 if (ret < 0) return ret;
00936 }
00937 if (slice_del() == -1) return -1;
00938 lab3:
00939 ;
00940 }
00941 break;
00942 case 9:
00943 { int ret = r_RV();
00944 if (ret <= 0) return ret;
00945 }
00946 if (c <= lb || p[c - 1] != 'e') return 0;
00947 c--;
00948 { int ret = slice_from_s(2, s_9);
00949 if (ret < 0) return ret;
00950 }
00951 break;
00952 }
00953 return 1;
00954 }
00955
00956 int Xapian::InternalStemPortuguese::r_verb_suffix() {
00957 int among_var;
00958 { int m1 = l - c; (void)m1;
00959 int mlimit1;
00960 if (c < I_pV) return 0;
00961 c = I_pV;
00962 mlimit1 = lb; lb = c;
00963 c = l - m1;
00964 ket = c;
00965 among_var = find_among_b(s_pool, a_6, 120, 0, 0);
00966 if (!(among_var)) { lb = mlimit1; return 0; }
00967 bra = c;
00968 switch(among_var) {
00969 case 0: { lb = mlimit1; return 0; }
00970 case 1:
00971 if (slice_del() == -1) return -1;
00972 break;
00973 }
00974 lb = mlimit1;
00975 }
00976 return 1;
00977 }
00978
00979 int Xapian::InternalStemPortuguese::r_residual_suffix() {
00980 int among_var;
00981 ket = c;
00982 among_var = find_among_b(s_pool, a_7, 7, 0, 0);
00983 if (!(among_var)) return 0;
00984 bra = c;
00985 switch(among_var) {
00986 case 0: return 0;
00987 case 1:
00988 { int ret = r_RV();
00989 if (ret <= 0) return ret;
00990 }
00991 if (slice_del() == -1) return -1;
00992 break;
00993 }
00994 return 1;
00995 }
00996
00997 int Xapian::InternalStemPortuguese::r_residual_form() {
00998 int among_var;
00999 ket = c;
01000 among_var = find_among_b(s_pool, a_8, 4, 0, 0);
01001 if (!(among_var)) return 0;
01002 bra = c;
01003 switch(among_var) {
01004 case 0: return 0;
01005 case 1:
01006 { int ret = r_RV();
01007 if (ret <= 0) return ret;
01008 }
01009 if (slice_del() == -1) return -1;
01010 ket = c;
01011 { int m1 = l - c; (void)m1;
01012 if (c <= lb || p[c - 1] != 'u') goto lab1;
01013 c--;
01014 bra = c;
01015 { int m_test2 = l - c;
01016 if (c <= lb || p[c - 1] != 'g') goto lab1;
01017 c--;
01018 c = l - m_test2;
01019 }
01020 goto lab0;
01021 lab1:
01022 c = l - m1;
01023 if (c <= lb || p[c - 1] != 'i') return 0;
01024 c--;
01025 bra = c;
01026 { int m_test3 = l - c;
01027 if (c <= lb || p[c - 1] != 'c') return 0;
01028 c--;
01029 c = l - m_test3;
01030 }
01031 }
01032 lab0:
01033 { int ret = r_RV();
01034 if (ret <= 0) return ret;
01035 }
01036 if (slice_del() == -1) return -1;
01037 break;
01038 case 2:
01039 { int ret = slice_from_s(1, s_10);
01040 if (ret < 0) return ret;
01041 }
01042 break;
01043 }
01044 return 1;
01045 }
01046
01047 int Xapian::InternalStemPortuguese::stem() {
01048 { int c1 = c;
01049 { int ret = r_prelude();
01050 if (ret == 0) goto lab0;
01051 if (ret < 0) return ret;
01052 }
01053 lab0:
01054 c = c1;
01055 }
01056 { int c2 = c;
01057 { int ret = r_mark_regions();
01058 if (ret == 0) goto lab1;
01059 if (ret < 0) return ret;
01060 }
01061 lab1:
01062 c = c2;
01063 }
01064 lb = c; c = l;
01065
01066 { int m3 = l - c; (void)m3;
01067 { int m4 = l - c; (void)m4;
01068 { int m5 = l - c; (void)m5;
01069 { int m6 = l - c; (void)m6;
01070 { int ret = r_standard_suffix();
01071 if (ret == 0) goto lab6;
01072 if (ret < 0) return ret;
01073 }
01074 goto lab5;
01075 lab6:
01076 c = l - m6;
01077 { int ret = r_verb_suffix();
01078 if (ret == 0) goto lab4;
01079 if (ret < 0) return ret;
01080 }
01081 }
01082 lab5:
01083 c = l - m5;
01084 { int m7 = l - c; (void)m7;
01085 ket = c;
01086 if (c <= lb || p[c - 1] != 'i') goto lab7;
01087 c--;
01088 bra = c;
01089 { int m_test8 = l - c;
01090 if (c <= lb || p[c - 1] != 'c') goto lab7;
01091 c--;
01092 c = l - m_test8;
01093 }
01094 { int ret = r_RV();
01095 if (ret == 0) goto lab7;
01096 if (ret < 0) return ret;
01097 }
01098 if (slice_del() == -1) return -1;
01099 lab7:
01100 c = l - m7;
01101 }
01102 }
01103 goto lab3;
01104 lab4:
01105 c = l - m4;
01106 { int ret = r_residual_suffix();
01107 if (ret == 0) goto lab2;
01108 if (ret < 0) return ret;
01109 }
01110 }
01111 lab3:
01112 lab2:
01113 c = l - m3;
01114 }
01115 { int m9 = l - c; (void)m9;
01116 { int ret = r_residual_form();
01117 if (ret == 0) goto lab8;
01118 if (ret < 0) return ret;
01119 }
01120 lab8:
01121 c = l - m9;
01122 }
01123 c = lb;
01124 { int c10 = c;
01125 { int ret = r_postlude();
01126 if (ret == 0) goto lab9;
01127 if (ret < 0) return ret;
01128 }
01129 lab9:
01130 c = c10;
01131 }
01132 return 1;
01133 }
01134
01135 Xapian::InternalStemPortuguese::InternalStemPortuguese()
01136 : I_p2(0), I_p1(0), I_pV(0)
01137 {
01138 }
01139
01140 Xapian::InternalStemPortuguese::~InternalStemPortuguese()
01141 {
01142 }
01143
01144 const char *
01145 Xapian::InternalStemPortuguese::get_description() const
01146 {
01147 return "portuguese";
01148 }