xapian-core  2.0.0
norwegian.cc
Go to the documentation of this file.
1 /* Generated from norwegian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
2 
3 #include <config.h>
4 
5 #define SNOWBALL_RUNTIME_THROW_EXCEPTIONS
6 #include "norwegian.h"
7 
8 #include <stddef.h>
9 
11 
12 static int r_other_suffix(struct SN_env * z);
13 static int r_consonant_pair(struct SN_env * z);
14 static int r_main_suffix(struct SN_env * z);
15 static int r_mark_regions(struct SN_env * z);
16 
17 static const symbol s_0[] = { 'e', 'r' };
18 
19 static const symbol s_0_1[3] = { 'i', 'n', 'd' };
20 static const symbol s_0_2[2] = { 'k', 'k' };
21 static const symbol s_0_3[2] = { 'n', 'k' };
22 static const symbol s_0_4[3] = { 'a', 'm', 'm' };
23 static const symbol s_0_5[3] = { 'o', 'm', 'm' };
24 static const symbol s_0_6[3] = { 'k', 'a', 'p' };
25 static const symbol s_0_7[4] = { 's', 'k', 'a', 'p' };
26 static const symbol s_0_8[2] = { 'p', 'p' };
27 static const symbol s_0_9[2] = { 'l', 't' };
28 static const symbol s_0_10[3] = { 'a', 's', 't' };
29 static const symbol s_0_11[4] = { 0xC3, 0xB8, 's', 't' };
30 static const symbol s_0_12[1] = { 'v' };
31 static const symbol s_0_13[3] = { 'h', 'a', 'v' };
32 static const symbol s_0_14[3] = { 'g', 'i', 'v' };
33 static const struct among a_0[15] = {
34 { 0, 0, 0, 1, 0},
35 { 3, s_0_1, -1, -1, 0},
36 { 2, s_0_2, -2, -1, 0},
37 { 2, s_0_3, -3, -1, 0},
38 { 3, s_0_4, -4, -1, 0},
39 { 3, s_0_5, -5, -1, 0},
40 { 3, s_0_6, -6, -1, 0},
41 { 4, s_0_7, -1, 1, 0},
42 { 2, s_0_8, -8, -1, 0},
43 { 2, s_0_9, -9, -1, 0},
44 { 3, s_0_10, -10, -1, 0},
45 { 4, s_0_11, -11, -1, 0},
46 { 1, s_0_12, -12, -1, 0},
47 { 3, s_0_13, -1, 1, 0},
48 { 3, s_0_14, -2, 1, 0}
49 };
50 
51 static const symbol s_1_0[1] = { 'a' };
52 static const symbol s_1_1[1] = { 'e' };
53 static const symbol s_1_2[3] = { 'e', 'd', 'e' };
54 static const symbol s_1_3[4] = { 'a', 'n', 'd', 'e' };
55 static const symbol s_1_4[4] = { 'e', 'n', 'd', 'e' };
56 static const symbol s_1_5[3] = { 'a', 'n', 'e' };
57 static const symbol s_1_6[3] = { 'e', 'n', 'e' };
58 static const symbol s_1_7[6] = { 'h', 'e', 't', 'e', 'n', 'e' };
59 static const symbol s_1_8[4] = { 'e', 'r', 't', 'e' };
60 static const symbol s_1_9[2] = { 'e', 'n' };
61 static const symbol s_1_10[5] = { 'h', 'e', 't', 'e', 'n' };
62 static const symbol s_1_11[2] = { 'a', 'r' };
63 static const symbol s_1_12[2] = { 'e', 'r' };
64 static const symbol s_1_13[5] = { 'h', 'e', 't', 'e', 'r' };
65 static const symbol s_1_14[1] = { 's' };
66 static const symbol s_1_15[2] = { 'a', 's' };
67 static const symbol s_1_16[2] = { 'e', 's' };
68 static const symbol s_1_17[4] = { 'e', 'd', 'e', 's' };
69 static const symbol s_1_18[5] = { 'e', 'n', 'd', 'e', 's' };
70 static const symbol s_1_19[4] = { 'e', 'n', 'e', 's' };
71 static const symbol s_1_20[7] = { 'h', 'e', 't', 'e', 'n', 'e', 's' };
72 static const symbol s_1_21[3] = { 'e', 'n', 's' };
73 static const symbol s_1_22[6] = { 'h', 'e', 't', 'e', 'n', 's' };
74 static const symbol s_1_23[3] = { 'e', 'r', 's' };
75 static const symbol s_1_24[3] = { 'e', 't', 's' };
76 static const symbol s_1_25[2] = { 'e', 't' };
77 static const symbol s_1_26[3] = { 'h', 'e', 't' };
78 static const symbol s_1_27[3] = { 'e', 'r', 't' };
79 static const symbol s_1_28[3] = { 'a', 's', 't' };
80 static const struct among a_1[29] = {
81 { 1, s_1_0, 0, 1, 0},
82 { 1, s_1_1, 0, 1, 0},
83 { 3, s_1_2, -1, 1, 0},
84 { 4, s_1_3, -2, 1, 0},
85 { 4, s_1_4, -3, 1, 0},
86 { 3, s_1_5, -4, 1, 0},
87 { 3, s_1_6, -5, 1, 0},
88 { 6, s_1_7, -1, 1, 0},
89 { 4, s_1_8, -7, 4, 0},
90 { 2, s_1_9, 0, 1, 0},
91 { 5, s_1_10, -1, 1, 0},
92 { 2, s_1_11, 0, 1, 0},
93 { 2, s_1_12, 0, 1, 0},
94 { 5, s_1_13, -1, 1, 0},
95 { 1, s_1_14, 0, 3, 0},
96 { 2, s_1_15, -1, 1, 0},
97 { 2, s_1_16, -2, 1, 0},
98 { 4, s_1_17, -1, 1, 0},
99 { 5, s_1_18, -2, 1, 0},
100 { 4, s_1_19, -3, 1, 0},
101 { 7, s_1_20, -1, 1, 0},
102 { 3, s_1_21, -7, 1, 0},
103 { 6, s_1_22, -1, 1, 0},
104 { 3, s_1_23, -9, 2, 0},
105 { 3, s_1_24, -10, 1, 0},
106 { 2, s_1_25, 0, 1, 0},
107 { 3, s_1_26, -1, 1, 0},
108 { 3, s_1_27, 0, 4, 0},
109 { 3, s_1_28, 0, 1, 0}
110 };
111 
112 static const symbol s_2_0[2] = { 'd', 't' };
113 static const symbol s_2_1[2] = { 'v', 't' };
114 static const struct among a_2[2] = {
115 { 2, s_2_0, 0, -1, 0},
116 { 2, s_2_1, 0, -1, 0}
117 };
118 
119 static const symbol s_3_0[3] = { 'l', 'e', 'g' };
120 static const symbol s_3_1[4] = { 'e', 'l', 'e', 'g' };
121 static const symbol s_3_2[2] = { 'i', 'g' };
122 static const symbol s_3_3[3] = { 'e', 'i', 'g' };
123 static const symbol s_3_4[3] = { 'l', 'i', 'g' };
124 static const symbol s_3_5[4] = { 'e', 'l', 'i', 'g' };
125 static const symbol s_3_6[3] = { 'e', 'l', 's' };
126 static const symbol s_3_7[3] = { 'l', 'o', 'v' };
127 static const symbol s_3_8[4] = { 'e', 'l', 'o', 'v' };
128 static const symbol s_3_9[4] = { 's', 'l', 'o', 'v' };
129 static const symbol s_3_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
130 static const struct among a_3[11] = {
131 { 3, s_3_0, 0, 1, 0},
132 { 4, s_3_1, -1, 1, 0},
133 { 2, s_3_2, 0, 1, 0},
134 { 3, s_3_3, -1, 1, 0},
135 { 3, s_3_4, -2, 1, 0},
136 { 4, s_3_5, -1, 1, 0},
137 { 3, s_3_6, 0, 1, 0},
138 { 3, s_3_7, 0, 1, 0},
139 { 4, s_3_8, -1, 1, 0},
140 { 4, s_3_9, -2, 1, 0},
141 { 7, s_3_10, -1, 1, 0}
142 };
143 
144 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2, 142 };
145 
146 static const unsigned char g_s_ending[] = { 119, 125, 148, 1 };
147 
148 static int r_mark_regions(struct SN_env * z) {
149  int i_x;
150  ((SN_local *)z)->i_p1 = z->l;
151  {
152  int v_1 = z->c;
153  {
154  int ret = skip_utf8(z->p, z->c, z->l, 3);
155  if (ret < 0) return 0;
156  z->c = ret;
157  }
158  i_x = z->c;
159  z->c = v_1;
160  }
161  {
162  int ret = out_grouping_U(z, g_v, 97, 248, 1);
163  if (ret < 0) return 0;
164  z->c += ret;
165  }
166  {
167  int ret = in_grouping_U(z, g_v, 97, 248, 1);
168  if (ret < 0) return 0;
169  z->c += ret;
170  }
171  ((SN_local *)z)->i_p1 = z->c;
172  if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
173  ((SN_local *)z)->i_p1 = i_x;
174 lab0:
175  return 1;
176 }
177 
178 static int r_main_suffix(struct SN_env * z) {
179  int among_var;
180  {
181  int v_1;
182  if (z->c < ((SN_local *)z)->i_p1) return 0;
183  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
184  z->ket = z->c;
185  if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
186  among_var = find_among_b(z, a_1, 29, 0);
187  if (!among_var) { z->lb = v_1; return 0; }
188  z->bra = z->c;
189  z->lb = v_1;
190  }
191  switch (among_var) {
192  case 1:
193  slice_del(z);
194  break;
195  case 2:
196  if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((5318672 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 1; else
197  among_var = find_among_b(z, a_0, 15, 0);
198  switch (among_var) {
199  case 1:
200  slice_del(z);
201  break;
202  }
203  break;
204  case 3:
205  do {
206  int v_2 = z->l - z->c;
207  if (in_grouping_b_U(z, g_s_ending, 98, 122, 0)) goto lab0;
208  break;
209  lab0:
210  z->c = z->l - v_2;
211  if (z->c <= z->lb || z->p[z->c - 1] != 'r') goto lab1;
212  z->c--;
213  {
214  int v_3 = z->l - z->c;
215  if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab2;
216  z->c--;
217  goto lab1;
218  lab2:
219  z->c = z->l - v_3;
220  }
221  break;
222  lab1:
223  z->c = z->l - v_2;
224  if (z->c <= z->lb || z->p[z->c - 1] != 'k') return 0;
225  z->c--;
226  if (out_grouping_b_U(z, g_v, 97, 248, 0)) return 0;
227  } while (0);
228  slice_del(z);
229  break;
230  case 4:
231  slice_from_s(z, 2, s_0);
232  break;
233  }
234  return 1;
235 }
236 
237 static int r_consonant_pair(struct SN_env * z) {
238  {
239  int v_1 = z->l - z->c;
240  {
241  int v_2;
242  if (z->c < ((SN_local *)z)->i_p1) return 0;
243  v_2 = z->lb; z->lb = ((SN_local *)z)->i_p1;
244  z->ket = z->c;
245  if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = v_2; return 0; }
246  if (!find_among_b(z, a_2, 2, 0)) { z->lb = v_2; return 0; }
247  z->bra = z->c;
248  z->lb = v_2;
249  }
250  z->c = z->l - v_1;
251  }
252  {
253  int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
254  if (ret < 0) return 0;
255  z->c = ret;
256  }
257  z->bra = z->c;
258  slice_del(z);
259  return 1;
260 }
261 
262 static int r_other_suffix(struct SN_env * z) {
263  {
264  int v_1;
265  if (z->c < ((SN_local *)z)->i_p1) return 0;
266  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
267  z->ket = z->c;
268  if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
269  if (!find_among_b(z, a_3, 11, 0)) { z->lb = v_1; return 0; }
270  z->bra = z->c;
271  z->lb = v_1;
272  }
273  slice_del(z);
274  return 1;
275 }
276 
278  {
279  int v_1 = z->c;
280  r_mark_regions(z);
281  z->c = v_1;
282  }
283  z->lb = z->c; z->c = z->l;
284  {
285  int v_2 = z->l - z->c;
286  r_main_suffix(z);
287  z->c = z->l - v_2;
288  }
289  {
290  int v_3 = z->l - z->c;
291  r_consonant_pair(z);
292  z->c = z->l - v_3;
293  }
294  {
295  int v_4 = z->l - z->c;
296  r_other_suffix(z);
297  z->c = z->l - v_4;
298  }
299  z->c = z->lb;
300  return 1;
301 }
unsigned char symbol
Definition: api.h:4
static int stem(struct SN_env *z)
Definition: norwegian.cc:277
static const struct among a_2[2]
Definition: norwegian.cc:114
static const symbol s_3_5[4]
Definition: norwegian.cc:124
static const symbol s_1_24[3]
Definition: norwegian.cc:75
static const symbol s_1_9[2]
Definition: norwegian.cc:60
static const symbol s_1_14[1]
Definition: norwegian.cc:65
static const symbol s_3_7[3]
Definition: norwegian.cc:126
static const symbol s_1_6[3]
Definition: norwegian.cc:57
static const symbol s_1_5[3]
Definition: norwegian.cc:56
static const symbol s_0_5[3]
Definition: norwegian.cc:23
static const symbol s_0_8[2]
Definition: norwegian.cc:26
static const symbol s_0_10[3]
Definition: norwegian.cc:28
static int r_other_suffix(struct SN_env *z)
Definition: norwegian.cc:262
static int r_consonant_pair(struct SN_env *z)
Definition: norwegian.cc:237
static const struct among a_0[15]
Definition: norwegian.cc:33
static const symbol s_2_0[2]
Definition: norwegian.cc:112
static int r_main_suffix(struct SN_env *z)
Definition: norwegian.cc:178
static const symbol s_1_3[4]
Definition: norwegian.cc:54
static const symbol s_1_27[3]
Definition: norwegian.cc:78
static const symbol s_1_25[2]
Definition: norwegian.cc:76
static const symbol s_1_4[4]
Definition: norwegian.cc:55
Xapian::Internal::Snowball::Norwegian::SN_local SN_local
Definition: norwegian.cc:10
static const symbol s_0_12[1]
Definition: norwegian.cc:30
static const symbol s_3_0[3]
Definition: norwegian.cc:119
static const symbol s_1_15[2]
Definition: norwegian.cc:66
static const symbol s_0_13[3]
Definition: norwegian.cc:31
static const symbol s_1_17[4]
Definition: norwegian.cc:68
static const symbol s_3_9[4]
Definition: norwegian.cc:128
static const symbol s_1_20[7]
Definition: norwegian.cc:71
static const symbol s_1_28[3]
Definition: norwegian.cc:79
static const symbol s_1_21[3]
Definition: norwegian.cc:72
static const symbol s_0_1[3]
Definition: norwegian.cc:19
static const symbol s_3_6[3]
Definition: norwegian.cc:125
static const symbol s_1_23[3]
Definition: norwegian.cc:74
static const symbol s_3_10[7]
Definition: norwegian.cc:129
static const symbol s_1_11[2]
Definition: norwegian.cc:62
static const symbol s_0_11[4]
Definition: norwegian.cc:29
static const symbol s_1_13[5]
Definition: norwegian.cc:64
static const symbol s_1_18[5]
Definition: norwegian.cc:69
static const symbol s_0_7[4]
Definition: norwegian.cc:25
static const symbol s_1_1[1]
Definition: norwegian.cc:52
static const symbol s_0_14[3]
Definition: norwegian.cc:32
static const symbol s_3_4[3]
Definition: norwegian.cc:123
static const symbol s_1_2[3]
Definition: norwegian.cc:53
static const symbol s_3_1[4]
Definition: norwegian.cc:120
static const symbol s_3_3[3]
Definition: norwegian.cc:122
static const symbol s_1_0[1]
Definition: norwegian.cc:51
static const symbol s_1_26[3]
Definition: norwegian.cc:77
static int r_mark_regions(struct SN_env *z)
Definition: norwegian.cc:148
static const symbol s_1_22[6]
Definition: norwegian.cc:73
static const symbol s_3_8[4]
Definition: norwegian.cc:127
static const symbol s_0_6[3]
Definition: norwegian.cc:24
static const symbol s_0_2[2]
Definition: norwegian.cc:20
static const symbol s_1_10[5]
Definition: norwegian.cc:61
static const symbol s_1_16[2]
Definition: norwegian.cc:67
static const struct among a_1[29]
Definition: norwegian.cc:80
static const struct among a_3[11]
Definition: norwegian.cc:130
static const symbol s_1_7[6]
Definition: norwegian.cc:58
static const symbol s_0_3[2]
Definition: norwegian.cc:21
static const symbol s_2_1[2]
Definition: norwegian.cc:113
static const unsigned char g_v[]
Definition: norwegian.cc:144
static const unsigned char g_s_ending[]
Definition: norwegian.cc:146
static const symbol s_1_8[4]
Definition: norwegian.cc:59
static const symbol s_1_19[4]
Definition: norwegian.cc:70
static const symbol s_0_9[2]
Definition: norwegian.cc:27
static const symbol s_3_2[2]
Definition: norwegian.cc:121
static const symbol s_1_12[2]
Definition: norwegian.cc:63
static const symbol s_0[]
Definition: norwegian.cc:17
static const symbol s_0_4[3]
Definition: norwegian.cc:22
int out_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.cc:164
int in_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.cc:140
SNOWBALL_ERR slice_from_s(struct SN_env *z, int s_size, const symbol *s)
Definition: utilities.cc:439
int in_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.cc:152
int skip_b_utf8(const symbol *p, int c, int limit, int n)
Definition: utilities.cc:75
SNOWBALL_ERR slice_del(struct SN_env *z)
Definition: utilities.cc:450
int out_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.cc:176
int skip_utf8(const symbol *p, int c, int limit, int n)
Definition: utilities.cc:50
int find_among_b(struct SN_env *z, const struct among *v, int v_size, int(*)(struct SN_env *))
Definition: utilities.cc:322
Definition: api.h:15
int lb
Definition: api.h:17
symbol * p
Definition: api.h:16
int c
Definition: api.h:17
int bra
Definition: api.h:17
int l
Definition: api.h:17
Definition: header.h:256