YAZ 5.35.1
stem_UTF_8_norwegian.c
Go to the documentation of this file.
1
2/* This file was generated automatically by the Snowball to ANSI C compiler */
3
4#include "../runtime/header.h"
5
6#ifdef __cplusplus
7extern "C"
8{
9#endif
10 extern int norwegian_UTF_8_stem (struct SN_env *z);
11#ifdef __cplusplus
12}
13#endif
14static int r_other_suffix (struct SN_env *z);
15static int r_consonant_pair (struct SN_env *z);
16static int r_main_suffix (struct SN_env *z);
17static int r_mark_regions (struct SN_env *z);
18#ifdef __cplusplus
19extern "C"
20{
21#endif
22
23
24 extern struct SN_env *norwegian_UTF_8_create_env (void);
25 extern void norwegian_UTF_8_close_env (struct SN_env *z);
26
27
28#ifdef __cplusplus
29}
30#endif
31static const symbol s_0_0[1] = { 'a' };
32static const symbol s_0_1[1] = { 'e' };
33static const symbol s_0_2[3] = { 'e', 'd', 'e' };
34static const symbol s_0_3[4] = { 'a', 'n', 'd', 'e' };
35static const symbol s_0_4[4] = { 'e', 'n', 'd', 'e' };
36static const symbol s_0_5[3] = { 'a', 'n', 'e' };
37static const symbol s_0_6[3] = { 'e', 'n', 'e' };
38static const symbol s_0_7[6] = { 'h', 'e', 't', 'e', 'n', 'e' };
39static const symbol s_0_8[4] = { 'e', 'r', 't', 'e' };
40static const symbol s_0_9[2] = { 'e', 'n' };
41static const symbol s_0_10[5] = { 'h', 'e', 't', 'e', 'n' };
42static const symbol s_0_11[2] = { 'a', 'r' };
43static const symbol s_0_12[2] = { 'e', 'r' };
44static const symbol s_0_13[5] = { 'h', 'e', 't', 'e', 'r' };
45static const symbol s_0_14[1] = { 's' };
46static const symbol s_0_15[2] = { 'a', 's' };
47static const symbol s_0_16[2] = { 'e', 's' };
48static const symbol s_0_17[4] = { 'e', 'd', 'e', 's' };
49static const symbol s_0_18[5] = { 'e', 'n', 'd', 'e', 's' };
50static const symbol s_0_19[4] = { 'e', 'n', 'e', 's' };
51static const symbol s_0_20[7] = { 'h', 'e', 't', 'e', 'n', 'e', 's' };
52static const symbol s_0_21[3] = { 'e', 'n', 's' };
53static const symbol s_0_22[6] = { 'h', 'e', 't', 'e', 'n', 's' };
54static const symbol s_0_23[3] = { 'e', 'r', 's' };
55static const symbol s_0_24[3] = { 'e', 't', 's' };
56static const symbol s_0_25[2] = { 'e', 't' };
57static const symbol s_0_26[3] = { 'h', 'e', 't' };
58static const symbol s_0_27[3] = { 'e', 'r', 't' };
59static const symbol s_0_28[3] = { 'a', 's', 't' };
60
61static const struct among a_0[29] = {
62/* 0 */ {1, s_0_0, -1, 1, 0},
63/* 1 */ {1, s_0_1, -1, 1, 0},
64/* 2 */ {3, s_0_2, 1, 1, 0},
65/* 3 */ {4, s_0_3, 1, 1, 0},
66/* 4 */ {4, s_0_4, 1, 1, 0},
67/* 5 */ {3, s_0_5, 1, 1, 0},
68/* 6 */ {3, s_0_6, 1, 1, 0},
69/* 7 */ {6, s_0_7, 6, 1, 0},
70/* 8 */ {4, s_0_8, 1, 3, 0},
71/* 9 */ {2, s_0_9, -1, 1, 0},
72/* 10 */ {5, s_0_10, 9, 1, 0},
73/* 11 */ {2, s_0_11, -1, 1, 0},
74/* 12 */ {2, s_0_12, -1, 1, 0},
75/* 13 */ {5, s_0_13, 12, 1, 0},
76/* 14 */ {1, s_0_14, -1, 2, 0},
77/* 15 */ {2, s_0_15, 14, 1, 0},
78/* 16 */ {2, s_0_16, 14, 1, 0},
79/* 17 */ {4, s_0_17, 16, 1, 0},
80/* 18 */ {5, s_0_18, 16, 1, 0},
81/* 19 */ {4, s_0_19, 16, 1, 0},
82/* 20 */ {7, s_0_20, 19, 1, 0},
83/* 21 */ {3, s_0_21, 14, 1, 0},
84/* 22 */ {6, s_0_22, 21, 1, 0},
85/* 23 */ {3, s_0_23, 14, 1, 0},
86/* 24 */ {3, s_0_24, 14, 1, 0},
87/* 25 */ {2, s_0_25, -1, 1, 0},
88/* 26 */ {3, s_0_26, 25, 1, 0},
89/* 27 */ {3, s_0_27, -1, 3, 0},
90/* 28 */ {3, s_0_28, -1, 1, 0}
91};
92
93static const symbol s_1_0[2] = { 'd', 't' };
94static const symbol s_1_1[2] = { 'v', 't' };
95
96static const struct among a_1[2] = {
97/* 0 */ {2, s_1_0, -1, -1, 0},
98/* 1 */ {2, s_1_1, -1, -1, 0}
99};
100
101static const symbol s_2_0[3] = { 'l', 'e', 'g' };
102static const symbol s_2_1[4] = { 'e', 'l', 'e', 'g' };
103static const symbol s_2_2[2] = { 'i', 'g' };
104static const symbol s_2_3[3] = { 'e', 'i', 'g' };
105static const symbol s_2_4[3] = { 'l', 'i', 'g' };
106static const symbol s_2_5[4] = { 'e', 'l', 'i', 'g' };
107static const symbol s_2_6[3] = { 'e', 'l', 's' };
108static const symbol s_2_7[3] = { 'l', 'o', 'v' };
109static const symbol s_2_8[4] = { 'e', 'l', 'o', 'v' };
110static const symbol s_2_9[4] = { 's', 'l', 'o', 'v' };
111static const symbol s_2_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
112
113static const struct among a_2[11] = {
114/* 0 */ {3, s_2_0, -1, 1, 0},
115/* 1 */ {4, s_2_1, 0, 1, 0},
116/* 2 */ {2, s_2_2, -1, 1, 0},
117/* 3 */ {3, s_2_3, 2, 1, 0},
118/* 4 */ {3, s_2_4, 2, 1, 0},
119/* 5 */ {4, s_2_5, 4, 1, 0},
120/* 6 */ {3, s_2_6, -1, 1, 0},
121/* 7 */ {3, s_2_7, -1, 1, 0},
122/* 8 */ {4, s_2_8, 7, 1, 0},
123/* 9 */ {4, s_2_9, 7, 1, 0},
124/* 10 */ {7, s_2_10, 9, 1, 0}
125};
126
127static const unsigned char g_v[] =
128 { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
129
130static const unsigned char g_s_ending[] = { 119, 125, 149, 1 };
131
132static const symbol s_0[] = { 'k' };
133static const symbol s_1[] = { 'e', 'r' };
134
135static int
137{
138 z->I[0] = z->l;
139 {
140 int c_test = z->c; /* test, line 30 */
141 {
142 int ret = skip_utf8 (z->p, z->c, 0, z->l, +3);
143 if (ret < 0)
144 return 0;
145 z->c = ret; /* hop, line 30 */
146 }
147 z->I[1] = z->c; /* setmark x, line 30 */
148 z->c = c_test;
149 }
150 if (out_grouping_U (z, g_v, 97, 248, 1) < 0)
151 return 0; /* goto *//* grouping v, line 31 */
152 { /* gopast *//* non v, line 31 */
153 int ret = in_grouping_U (z, g_v, 97, 248, 1);
154 if (ret < 0)
155 return 0;
156 z->c += ret;
157 }
158 z->I[0] = z->c; /* setmark p1, line 31 */
159 /* try, line 32 */
160 if (!(z->I[0] < z->I[1]))
161 goto lab0;
162 z->I[0] = z->I[1];
163lab0:
164 return 1;
165}
166
167static int
169{
170 int among_var;
171 {
172 int mlimit; /* setlimit, line 38 */
173 int m1 = z->l - z->c;
174 (void) m1;
175 if (z->c < z->I[0])
176 return 0;
177 z->c = z->I[0]; /* tomark, line 38 */
178 mlimit = z->lb;
179 z->lb = z->c;
180 z->c = z->l - m1;
181 z->ket = z->c; /* [, line 38 */
182 if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3
183 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1))
184 {
185 z->lb = mlimit;
186 return 0;
187 }
188 among_var = find_among_b (z, a_0, 29); /* substring, line 38 */
189 if (!(among_var))
190 {
191 z->lb = mlimit;
192 return 0;
193 }
194 z->bra = z->c; /* ], line 38 */
195 z->lb = mlimit;
196 }
197 switch (among_var)
198 {
199 case 0:
200 return 0;
201 case 1:
202 {
203 int ret = slice_del (z); /* delete, line 44 */
204 if (ret < 0)
205 return ret;
206 }
207 break;
208 case 2:
209 {
210 int m2 = z->l - z->c;
211 (void) m2; /* or, line 46 */
212 if (in_grouping_b_U (z, g_s_ending, 98, 122, 0))
213 goto lab1;
214 goto lab0;
215 lab1:
216 z->c = z->l - m2;
217 if (!(eq_s_b (z, 1, s_0)))
218 return 0;
219 if (out_grouping_b_U (z, g_v, 97, 248, 0))
220 return 0;
221 }
222 lab0:
223 {
224 int ret = slice_del (z); /* delete, line 46 */
225 if (ret < 0)
226 return ret;
227 }
228 break;
229 case 3:
230 {
231 int ret = slice_from_s (z, 2, s_1); /* <-, line 48 */
232 if (ret < 0)
233 return ret;
234 }
235 break;
236 }
237 return 1;
238}
239
240static int
242{
243 {
244 int m_test = z->l - z->c; /* test, line 53 */
245 {
246 int mlimit; /* setlimit, line 54 */
247 int m1 = z->l - z->c;
248 (void) m1;
249 if (z->c < z->I[0])
250 return 0;
251 z->c = z->I[0]; /* tomark, line 54 */
252 mlimit = z->lb;
253 z->lb = z->c;
254 z->c = z->l - m1;
255 z->ket = z->c; /* [, line 54 */
256 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116)
257 {
258 z->lb = mlimit;
259 return 0;
260 }
261 if (!(find_among_b (z, a_1, 2)))
262 {
263 z->lb = mlimit;
264 return 0;
265 } /* substring, line 54 */
266 z->bra = z->c; /* ], line 54 */
267 z->lb = mlimit;
268 }
269 z->c = z->l - m_test;
270 }
271 {
272 int ret = skip_utf8 (z->p, z->c, z->lb, 0, -1);
273 if (ret < 0)
274 return 0;
275 z->c = ret; /* next, line 59 */
276 }
277 z->bra = z->c; /* ], line 59 */
278 {
279 int ret = slice_del (z); /* delete, line 59 */
280 if (ret < 0)
281 return ret;
282 }
283 return 1;
284}
285
286static int
288{
289 int among_var;
290 {
291 int mlimit; /* setlimit, line 63 */
292 int m1 = z->l - z->c;
293 (void) m1;
294 if (z->c < z->I[0])
295 return 0;
296 z->c = z->I[0]; /* tomark, line 63 */
297 mlimit = z->lb;
298 z->lb = z->c;
299 z->c = z->l - m1;
300 z->ket = z->c; /* [, line 63 */
301 if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3
302 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1))
303 {
304 z->lb = mlimit;
305 return 0;
306 }
307 among_var = find_among_b (z, a_2, 11); /* substring, line 63 */
308 if (!(among_var))
309 {
310 z->lb = mlimit;
311 return 0;
312 }
313 z->bra = z->c; /* ], line 63 */
314 z->lb = mlimit;
315 }
316 switch (among_var)
317 {
318 case 0:
319 return 0;
320 case 1:
321 {
322 int ret = slice_del (z); /* delete, line 67 */
323 if (ret < 0)
324 return ret;
325 }
326 break;
327 }
328 return 1;
329}
330
331extern int
333{
334 {
335 int c1 = z->c; /* do, line 74 */
336 {
337 int ret = r_mark_regions (z);
338 if (ret == 0)
339 goto lab0; /* call mark_regions, line 74 */
340 if (ret < 0)
341 return ret;
342 }
343 lab0:
344 z->c = c1;
345 }
346 z->lb = z->c;
347 z->c = z->l; /* backwards, line 75 */
348
349 {
350 int m2 = z->l - z->c;
351 (void) m2; /* do, line 76 */
352 {
353 int ret = r_main_suffix (z);
354 if (ret == 0)
355 goto lab1; /* call main_suffix, line 76 */
356 if (ret < 0)
357 return ret;
358 }
359 lab1:
360 z->c = z->l - m2;
361 }
362 {
363 int m3 = z->l - z->c;
364 (void) m3; /* do, line 77 */
365 {
366 int ret = r_consonant_pair (z);
367 if (ret == 0)
368 goto lab2; /* call consonant_pair, line 77 */
369 if (ret < 0)
370 return ret;
371 }
372 lab2:
373 z->c = z->l - m3;
374 }
375 {
376 int m4 = z->l - z->c;
377 (void) m4; /* do, line 78 */
378 {
379 int ret = r_other_suffix (z);
380 if (ret == 0)
381 goto lab3; /* call other_suffix, line 78 */
382 if (ret < 0)
383 return ret;
384 }
385 lab3:
386 z->c = z->l - m4;
387 }
388 z->c = z->lb;
389 return 1;
390}
391
392extern struct SN_env *
394{
395 return SN_create_env (0, 2, 0);
396}
397
398extern void
400{
401 SN_close_env (z, 0);
402}
struct SN_env * SN_create_env(int S_size, int I_size, int B_size)
Definition api.c:6
void SN_close_env(struct SN_env *z, int S_size)
Definition api.c:50
unsigned char symbol
Definition api.h:2
int find_among_b(struct SN_env *z, const struct among *v, int v_size)
Definition utilities.c:400
int out_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition utilities.c:170
int slice_del(struct SN_env *z)
Definition utilities.c:573
int in_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition utilities.c:134
int skip_utf8(const symbol *p, int c, int lb, int l, int n)
Definition utilities.c:42
int in_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition utilities.c:152
int eq_s_b(struct SN_env *z, int s_size, const symbol *s)
Definition utilities.c:290
int out_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition utilities.c:187
int slice_from_s(struct SN_env *z, int s_size, const symbol *s)
Definition utilities.c:559
static const symbol s_0_24[3]
static const symbol s_0_18[5]
static const symbol s_0_2[3]
static const symbol s_2_2[2]
static const symbol s_0_3[4]
int norwegian_UTF_8_stem(struct SN_env *z)
static const symbol s_0_25[2]
static const symbol s_0_5[3]
static const symbol s_0_20[7]
static int r_other_suffix(struct SN_env *z)
static const symbol s_0_0[1]
static int r_consonant_pair(struct SN_env *z)
static const symbol s_0_10[5]
static const symbol s_2_3[3]
static const symbol s_0_14[1]
static int r_main_suffix(struct SN_env *z)
static const symbol s_1_0[2]
static const symbol s_0_15[2]
struct SN_env * norwegian_UTF_8_create_env(void)
static const symbol s_0_16[2]
static const symbol s_0_26[3]
static const symbol s_0_17[4]
static const symbol s_1_1[2]
static const symbol s_0_27[3]
static const symbol s_2_10[7]
static const symbol s_0_11[2]
static const symbol s_2_7[3]
static const symbol s_2_1[4]
static const struct among a_1[2]
static const symbol s_0_28[3]
static const symbol s_2_0[3]
static const symbol s_0_4[4]
static const symbol s_2_4[3]
static const symbol s_0_22[6]
static const symbol s_1[]
static const symbol s_2_9[4]
static const symbol s_0_7[6]
static const struct among a_2[11]
static const symbol s_2_6[3]
static int r_mark_regions(struct SN_env *z)
static const symbol s_0_1[1]
static const symbol s_0_8[4]
static const symbol s_2_8[4]
static const symbol s_0_6[3]
static const symbol s_0_12[2]
static const symbol s_0_13[5]
static const struct among a_0[29]
static const symbol s_2_5[4]
static const symbol s_0_21[3]
static const unsigned char g_v[]
static const unsigned char g_s_ending[]
static const symbol s_0_9[2]
static const symbol s_0_23[3]
static const symbol s_0[]
void norwegian_UTF_8_close_env(struct SN_env *z)
static const symbol s_0_19[4]
Definition api.h:14
int lb
Definition api.h:16
symbol * p
Definition api.h:15
int * I
Definition api.h:18
int ket
Definition api.h:16
int c
Definition api.h:16
int bra
Definition api.h:16
int l
Definition api.h:16
Definition header.h:16