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