~ubuntu-branches/ubuntu/trusty/swish-e/trusty

« back to all changes in this revision

Viewing changes to src/snowball/stem_se.c

  • Committer: Bazaar Package Importer
  • Author(s): Ludovic Drolez
  • Date: 2009-11-05 16:23:33 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20091105162333-9xf7dmhhhvt97bvw
Tags: 2.4.7-1
* New upstream release
* Added Japanese and Russian debconf translations. Closes: #543187, #512987

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 
4
4
#include "header.h"
5
5
 
6
 
extern int swedish_stem(struct SN_env * z);
 
6
#ifdef __cplusplus
 
7
extern "C" {
 
8
#endif
 
9
extern int swedish_ISO_8859_1_stem(struct SN_env * z);
 
10
#ifdef __cplusplus
 
11
}
 
12
#endif
7
13
static int r_other_suffix(struct SN_env * z);
8
14
static int r_consonant_pair(struct SN_env * z);
9
15
static int r_main_suffix(struct SN_env * z);
10
16
static int r_mark_regions(struct SN_env * z);
11
 
 
12
 
extern struct SN_env * swedish_create_env(void);
13
 
extern void swedish_close_env(struct SN_env * z);
14
 
 
15
 
static symbol s_0_0[1] = { 'a' };
16
 
static symbol s_0_1[4] = { 'a', 'r', 'n', 'a' };
17
 
static symbol s_0_2[4] = { 'e', 'r', 'n', 'a' };
18
 
static symbol s_0_3[7] = { 'h', 'e', 't', 'e', 'r', 'n', 'a' };
19
 
static symbol s_0_4[4] = { 'o', 'r', 'n', 'a' };
20
 
static symbol s_0_5[2] = { 'a', 'd' };
21
 
static symbol s_0_6[1] = { 'e' };
22
 
static symbol s_0_7[3] = { 'a', 'd', 'e' };
23
 
static symbol s_0_8[4] = { 'a', 'n', 'd', 'e' };
24
 
static symbol s_0_9[4] = { 'a', 'r', 'n', 'e' };
25
 
static symbol s_0_10[3] = { 'a', 'r', 'e' };
26
 
static symbol s_0_11[4] = { 'a', 's', 't', 'e' };
27
 
static symbol s_0_12[2] = { 'e', 'n' };
28
 
static symbol s_0_13[5] = { 'a', 'n', 'd', 'e', 'n' };
29
 
static symbol s_0_14[4] = { 'a', 'r', 'e', 'n' };
30
 
static symbol s_0_15[5] = { 'h', 'e', 't', 'e', 'n' };
31
 
static symbol s_0_16[3] = { 'e', 'r', 'n' };
32
 
static symbol s_0_17[2] = { 'a', 'r' };
33
 
static symbol s_0_18[2] = { 'e', 'r' };
34
 
static symbol s_0_19[5] = { 'h', 'e', 't', 'e', 'r' };
35
 
static symbol s_0_20[2] = { 'o', 'r' };
36
 
static symbol s_0_21[1] = { 's' };
37
 
static symbol s_0_22[2] = { 'a', 's' };
38
 
static symbol s_0_23[5] = { 'a', 'r', 'n', 'a', 's' };
39
 
static symbol s_0_24[5] = { 'e', 'r', 'n', 'a', 's' };
40
 
static symbol s_0_25[5] = { 'o', 'r', 'n', 'a', 's' };
41
 
static symbol s_0_26[2] = { 'e', 's' };
42
 
static symbol s_0_27[4] = { 'a', 'd', 'e', 's' };
43
 
static symbol s_0_28[5] = { 'a', 'n', 'd', 'e', 's' };
44
 
static symbol s_0_29[3] = { 'e', 'n', 's' };
45
 
static symbol s_0_30[5] = { 'a', 'r', 'e', 'n', 's' };
46
 
static symbol s_0_31[6] = { 'h', 'e', 't', 'e', 'n', 's' };
47
 
static symbol s_0_32[4] = { 'e', 'r', 'n', 's' };
48
 
static symbol s_0_33[2] = { 'a', 't' };
49
 
static symbol s_0_34[5] = { 'a', 'n', 'd', 'e', 't' };
50
 
static symbol s_0_35[3] = { 'h', 'e', 't' };
51
 
static symbol s_0_36[3] = { 'a', 's', 't' };
52
 
 
53
 
static struct among a_0[37] =
 
17
#ifdef __cplusplus
 
18
extern "C" {
 
19
#endif
 
20
 
 
21
 
 
22
extern struct SN_env * swedish_ISO_8859_1_create_env(void);
 
23
extern void swedish_ISO_8859_1_close_env(struct SN_env * z);
 
24
 
 
25
 
 
26
#ifdef __cplusplus
 
27
}
 
28
#endif
 
29
static const symbol s_0_0[1] = { 'a' };
 
30
static const symbol s_0_1[4] = { 'a', 'r', 'n', 'a' };
 
31
static const symbol s_0_2[4] = { 'e', 'r', 'n', 'a' };
 
32
static const symbol s_0_3[7] = { 'h', 'e', 't', 'e', 'r', 'n', 'a' };
 
33
static const symbol s_0_4[4] = { 'o', 'r', 'n', 'a' };
 
34
static const symbol s_0_5[2] = { 'a', 'd' };
 
35
static const symbol s_0_6[1] = { 'e' };
 
36
static const symbol s_0_7[3] = { 'a', 'd', 'e' };
 
37
static const symbol s_0_8[4] = { 'a', 'n', 'd', 'e' };
 
38
static const symbol s_0_9[4] = { 'a', 'r', 'n', 'e' };
 
39
static const symbol s_0_10[3] = { 'a', 'r', 'e' };
 
40
static const symbol s_0_11[4] = { 'a', 's', 't', 'e' };
 
41
static const symbol s_0_12[2] = { 'e', 'n' };
 
42
static const symbol s_0_13[5] = { 'a', 'n', 'd', 'e', 'n' };
 
43
static const symbol s_0_14[4] = { 'a', 'r', 'e', 'n' };
 
44
static const symbol s_0_15[5] = { 'h', 'e', 't', 'e', 'n' };
 
45
static const symbol s_0_16[3] = { 'e', 'r', 'n' };
 
46
static const symbol s_0_17[2] = { 'a', 'r' };
 
47
static const symbol s_0_18[2] = { 'e', 'r' };
 
48
static const symbol s_0_19[5] = { 'h', 'e', 't', 'e', 'r' };
 
49
static const symbol s_0_20[2] = { 'o', 'r' };
 
50
static const symbol s_0_21[1] = { 's' };
 
51
static const symbol s_0_22[2] = { 'a', 's' };
 
52
static const symbol s_0_23[5] = { 'a', 'r', 'n', 'a', 's' };
 
53
static const symbol s_0_24[5] = { 'e', 'r', 'n', 'a', 's' };
 
54
static const symbol s_0_25[5] = { 'o', 'r', 'n', 'a', 's' };
 
55
static const symbol s_0_26[2] = { 'e', 's' };
 
56
static const symbol s_0_27[4] = { 'a', 'd', 'e', 's' };
 
57
static const symbol s_0_28[5] = { 'a', 'n', 'd', 'e', 's' };
 
58
static const symbol s_0_29[3] = { 'e', 'n', 's' };
 
59
static const symbol s_0_30[5] = { 'a', 'r', 'e', 'n', 's' };
 
60
static const symbol s_0_31[6] = { 'h', 'e', 't', 'e', 'n', 's' };
 
61
static const symbol s_0_32[4] = { 'e', 'r', 'n', 's' };
 
62
static const symbol s_0_33[2] = { 'a', 't' };
 
63
static const symbol s_0_34[5] = { 'a', 'n', 'd', 'e', 't' };
 
64
static const symbol s_0_35[3] = { 'h', 'e', 't' };
 
65
static const symbol s_0_36[3] = { 'a', 's', 't' };
 
66
 
 
67
static const struct among a_0[37] =
54
68
{
55
69
/*  0 */ { 1, s_0_0, -1, 1, 0},
56
70
/*  1 */ { 4, s_0_1, 0, 1, 0},
91
105
/* 36 */ { 3, s_0_36, -1, 1, 0}
92
106
};
93
107
 
94
 
static symbol s_1_0[2] = { 'd', 'd' };
95
 
static symbol s_1_1[2] = { 'g', 'd' };
96
 
static symbol s_1_2[2] = { 'n', 'n' };
97
 
static symbol s_1_3[2] = { 'd', 't' };
98
 
static symbol s_1_4[2] = { 'g', 't' };
99
 
static symbol s_1_5[2] = { 'k', 't' };
100
 
static symbol s_1_6[2] = { 't', 't' };
 
108
static const symbol s_1_0[2] = { 'd', 'd' };
 
109
static const symbol s_1_1[2] = { 'g', 'd' };
 
110
static const symbol s_1_2[2] = { 'n', 'n' };
 
111
static const symbol s_1_3[2] = { 'd', 't' };
 
112
static const symbol s_1_4[2] = { 'g', 't' };
 
113
static const symbol s_1_5[2] = { 'k', 't' };
 
114
static const symbol s_1_6[2] = { 't', 't' };
101
115
 
102
 
static struct among a_1[7] =
 
116
static const struct among a_1[7] =
103
117
{
104
118
/*  0 */ { 2, s_1_0, -1, -1, 0},
105
119
/*  1 */ { 2, s_1_1, -1, -1, 0},
110
124
/*  6 */ { 2, s_1_6, -1, -1, 0}
111
125
};
112
126
 
113
 
static symbol s_2_0[2] = { 'i', 'g' };
114
 
static symbol s_2_1[3] = { 'l', 'i', 'g' };
115
 
static symbol s_2_2[3] = { 'e', 'l', 's' };
116
 
static symbol s_2_3[5] = { 'f', 'u', 'l', 'l', 't' };
117
 
static symbol s_2_4[4] = { 'l', 246, 's', 't' };
 
127
static const symbol s_2_0[2] = { 'i', 'g' };
 
128
static const symbol s_2_1[3] = { 'l', 'i', 'g' };
 
129
static const symbol s_2_2[3] = { 'e', 'l', 's' };
 
130
static const symbol s_2_3[5] = { 'f', 'u', 'l', 'l', 't' };
 
131
static const symbol s_2_4[4] = { 'l', 0xF6, 's', 't' };
118
132
 
119
 
static struct among a_2[5] =
 
133
static const struct among a_2[5] =
120
134
{
121
135
/*  0 */ { 2, s_2_0, -1, 1, 0},
122
136
/*  1 */ { 3, s_2_1, 0, 1, 0},
125
139
/*  4 */ { 4, s_2_4, -1, 2, 0}
126
140
};
127
141
 
128
 
static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 };
129
 
 
130
 
static unsigned char g_s_ending[] = { 119, 127, 149 };
131
 
 
132
 
static symbol s_0[] = { 'l', 246, 's' };
133
 
static symbol s_1[] = { 'f', 'u', 'l', 'l' };
 
142
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 };
 
143
 
 
144
static const unsigned char g_s_ending[] = { 119, 127, 149 };
 
145
 
 
146
static const symbol s_0[] = { 'l', 0xF6, 's' };
 
147
static const symbol s_1[] = { 'f', 'u', 'l', 'l' };
134
148
 
135
149
static int r_mark_regions(struct SN_env * z) {
136
150
    z->I[0] = z->l;
137
 
    while(1) { /* goto, line 30 */
138
 
        int c = z->c;
139
 
        if (!(in_grouping(z, g_v, 97, 246))) goto lab0;
140
 
        z->c = c;
141
 
        break;
142
 
    lab0:
143
 
        z->c = c;
144
 
        if (z->c >= z->l) return 0;
145
 
        z->c++;
 
151
    {   int c_test = z->c; /* test, line 29 */
 
152
        {   int ret = z->c + 3;
 
153
            if (0 > ret || ret > z->l) return 0;
 
154
            z->c = ret; /* hop, line 29 */
 
155
        }
 
156
        z->I[1] = z->c; /* setmark x, line 29 */
 
157
        z->c = c_test;
146
158
    }
147
 
    while(1) { /* gopast, line 30 */
148
 
        if (!(out_grouping(z, g_v, 97, 246))) goto lab1;
149
 
        break;
150
 
    lab1:
151
 
        if (z->c >= z->l) return 0;
152
 
        z->c++;
 
159
    if (out_grouping(z, g_v, 97, 246, 1) < 0) return 0; /* goto */ /* grouping v, line 30 */
 
160
    {    /* gopast */ /* non v, line 30 */
 
161
        int ret = in_grouping(z, g_v, 97, 246, 1);
 
162
        if (ret < 0) return 0;
 
163
        z->c += ret;
153
164
    }
154
165
    z->I[0] = z->c; /* setmark p1, line 30 */
155
166
     /* try, line 31 */
156
 
    if (!(z->I[0] < 3)) goto lab2;
157
 
    z->I[0] = 3;
158
 
lab2:
 
167
    if (!(z->I[0] < z->I[1])) goto lab0;
 
168
    z->I[0] = z->I[1];
 
169
lab0:
159
170
    return 1;
160
171
}
161
172
 
162
173
static int r_main_suffix(struct SN_env * z) {
163
174
    int among_var;
164
 
    {   int m = z->l - z->c; /* setlimit, line 37 */
165
 
        int m3;
 
175
    {   int mlimit; /* setlimit, line 37 */
 
176
        int m1 = z->l - z->c; (void)m1;
166
177
        if (z->c < z->I[0]) return 0;
167
178
        z->c = z->I[0]; /* tomark, line 37 */
168
 
        m3 = z->lb; z->lb = z->c;
169
 
        z->c = z->l - m;
 
179
        mlimit = z->lb; z->lb = z->c;
 
180
        z->c = z->l - m1;
170
181
        z->ket = z->c; /* [, line 37 */
 
182
        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; }
171
183
        among_var = find_among_b(z, a_0, 37); /* substring, line 37 */
172
 
        if (!(among_var)) { z->lb = m3; return 0; }
 
184
        if (!(among_var)) { z->lb = mlimit; return 0; }
173
185
        z->bra = z->c; /* ], line 37 */
174
 
        z->lb = m3;
 
186
        z->lb = mlimit;
175
187
    }
176
188
    switch(among_var) {
177
189
        case 0: return 0;
178
190
        case 1:
179
 
            slice_del(z); /* delete, line 44 */
 
191
            {   int ret = slice_del(z); /* delete, line 44 */
 
192
                if (ret < 0) return ret;
 
193
            }
180
194
            break;
181
195
        case 2:
182
 
            if (!(in_grouping_b(z, g_s_ending, 98, 121))) return 0;
183
 
            slice_del(z); /* delete, line 46 */
 
196
            if (in_grouping_b(z, g_s_ending, 98, 121, 0)) return 0;
 
197
            {   int ret = slice_del(z); /* delete, line 46 */
 
198
                if (ret < 0) return ret;
 
199
            }
184
200
            break;
185
201
    }
186
202
    return 1;
187
203
}
188
204
 
189
205
static int r_consonant_pair(struct SN_env * z) {
190
 
    {   int m = z->l - z->c; /* setlimit, line 50 */
191
 
        int m3;
 
206
    {   int mlimit; /* setlimit, line 50 */
 
207
        int m1 = z->l - z->c; (void)m1;
192
208
        if (z->c < z->I[0]) return 0;
193
209
        z->c = z->I[0]; /* tomark, line 50 */
194
 
        m3 = z->lb; z->lb = z->c;
195
 
        z->c = z->l - m;
196
 
        {   int m = z->l - z->c; /* and, line 52 */
197
 
            if (!(find_among_b(z, a_1, 7))) { z->lb = m3; return 0; } /* among, line 51 */
198
 
            z->c = z->l - m;
 
210
        mlimit = z->lb; z->lb = z->c;
 
211
        z->c = z->l - m1;
 
212
        {   int m2 = z->l - z->c; (void)m2; /* and, line 52 */
 
213
            if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; }
 
214
            if (!(find_among_b(z, a_1, 7))) { z->lb = mlimit; return 0; } /* among, line 51 */
 
215
            z->c = z->l - m2;
199
216
            z->ket = z->c; /* [, line 52 */
200
 
            if (z->c <= z->lb) { z->lb = m3; return 0; }
 
217
            if (z->c <= z->lb) { z->lb = mlimit; return 0; }
201
218
            z->c--; /* next, line 52 */
202
219
            z->bra = z->c; /* ], line 52 */
203
 
            slice_del(z); /* delete, line 52 */
 
220
            {   int ret = slice_del(z); /* delete, line 52 */
 
221
                if (ret < 0) return ret;
 
222
            }
204
223
        }
205
 
        z->lb = m3;
 
224
        z->lb = mlimit;
206
225
    }
207
226
    return 1;
208
227
}
209
228
 
210
229
static int r_other_suffix(struct SN_env * z) {
211
230
    int among_var;
212
 
    {   int m = z->l - z->c; /* setlimit, line 55 */
213
 
        int m3;
 
231
    {   int mlimit; /* setlimit, line 55 */
 
232
        int m1 = z->l - z->c; (void)m1;
214
233
        if (z->c < z->I[0]) return 0;
215
234
        z->c = z->I[0]; /* tomark, line 55 */
216
 
        m3 = z->lb; z->lb = z->c;
217
 
        z->c = z->l - m;
 
235
        mlimit = z->lb; z->lb = z->c;
 
236
        z->c = z->l - m1;
218
237
        z->ket = z->c; /* [, line 56 */
 
238
        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; }
219
239
        among_var = find_among_b(z, a_2, 5); /* substring, line 56 */
220
 
        if (!(among_var)) { z->lb = m3; return 0; }
 
240
        if (!(among_var)) { z->lb = mlimit; return 0; }
221
241
        z->bra = z->c; /* ], line 56 */
222
242
        switch(among_var) {
223
 
            case 0: { z->lb = m3; return 0; }
 
243
            case 0: { z->lb = mlimit; return 0; }
224
244
            case 1:
225
 
                slice_del(z); /* delete, line 57 */
 
245
                {   int ret = slice_del(z); /* delete, line 57 */
 
246
                    if (ret < 0) return ret;
 
247
                }
226
248
                break;
227
249
            case 2:
228
 
                slice_from_s(z, 3, s_0); /* <-, line 58 */
 
250
                {   int ret = slice_from_s(z, 3, s_0); /* <-, line 58 */
 
251
                    if (ret < 0) return ret;
 
252
                }
229
253
                break;
230
254
            case 3:
231
 
                slice_from_s(z, 4, s_1); /* <-, line 59 */
 
255
                {   int ret = slice_from_s(z, 4, s_1); /* <-, line 59 */
 
256
                    if (ret < 0) return ret;
 
257
                }
232
258
                break;
233
259
        }
234
 
        z->lb = m3;
 
260
        z->lb = mlimit;
235
261
    }
236
262
    return 1;
237
263
}
238
264
 
239
 
extern int swedish_stem(struct SN_env * z) {
240
 
    {   int c = z->c; /* do, line 66 */
241
 
        if (!r_mark_regions(z)) goto lab0; /* call mark_regions, line 66 */
 
265
extern int swedish_ISO_8859_1_stem(struct SN_env * z) {
 
266
    {   int c1 = z->c; /* do, line 66 */
 
267
        {   int ret = r_mark_regions(z);
 
268
            if (ret == 0) goto lab0; /* call mark_regions, line 66 */
 
269
            if (ret < 0) return ret;
 
270
        }
242
271
    lab0:
243
 
        z->c = c;
 
272
        z->c = c1;
244
273
    }
245
274
    z->lb = z->c; z->c = z->l; /* backwards, line 67 */
246
275
 
247
 
    {   int m = z->l - z->c; /* do, line 68 */
248
 
        if (!r_main_suffix(z)) goto lab1; /* call main_suffix, line 68 */
 
276
    {   int m2 = z->l - z->c; (void)m2; /* do, line 68 */
 
277
        {   int ret = r_main_suffix(z);
 
278
            if (ret == 0) goto lab1; /* call main_suffix, line 68 */
 
279
            if (ret < 0) return ret;
 
280
        }
249
281
    lab1:
250
 
        z->c = z->l - m;
 
282
        z->c = z->l - m2;
251
283
    }
252
 
    {   int m = z->l - z->c; /* do, line 69 */
253
 
        if (!r_consonant_pair(z)) goto lab2; /* call consonant_pair, line 69 */
 
284
    {   int m3 = z->l - z->c; (void)m3; /* do, line 69 */
 
285
        {   int ret = r_consonant_pair(z);
 
286
            if (ret == 0) goto lab2; /* call consonant_pair, line 69 */
 
287
            if (ret < 0) return ret;
 
288
        }
254
289
    lab2:
255
 
        z->c = z->l - m;
 
290
        z->c = z->l - m3;
256
291
    }
257
 
    {   int m = z->l - z->c; /* do, line 70 */
258
 
        if (!r_other_suffix(z)) goto lab3; /* call other_suffix, line 70 */
 
292
    {   int m4 = z->l - z->c; (void)m4; /* do, line 70 */
 
293
        {   int ret = r_other_suffix(z);
 
294
            if (ret == 0) goto lab3; /* call other_suffix, line 70 */
 
295
            if (ret < 0) return ret;
 
296
        }
259
297
    lab3:
260
 
        z->c = z->l - m;
 
298
        z->c = z->l - m4;
261
299
    }
262
300
    z->c = z->lb;
263
301
    return 1;
264
302
}
265
303
 
266
 
extern struct SN_env * swedish_create_env(void) { return SN_create_env(0, 1, 0); }
 
304
extern struct SN_env * swedish_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); }
267
305
 
268
 
extern void swedish_close_env(struct SN_env * z) { SN_close_env(z); }
 
306
extern void swedish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
269
307