Line data Source code
1 : /* Generated from hungarian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
2 :
3 : #include "stem_UTF_8_hungarian.h"
4 :
5 : #include <stddef.h>
6 :
7 : #include "snowball_runtime.h"
8 :
9 : struct SN_local {
10 : struct SN_env z;
11 : int i_p1;
12 : };
13 :
14 : typedef struct SN_local SN_local;
15 :
16 : #ifdef __cplusplus
17 : extern "C" {
18 : #endif
19 : extern int hungarian_UTF_8_stem(struct SN_env * z);
20 : #ifdef __cplusplus
21 : }
22 : #endif
23 :
24 : static int r_double(struct SN_env * z);
25 : static int r_undouble(struct SN_env * z);
26 : static int r_factive(struct SN_env * z);
27 : static int r_instrum(struct SN_env * z);
28 : static int r_plur_owner(struct SN_env * z);
29 : static int r_sing_owner(struct SN_env * z);
30 : static int r_owned(struct SN_env * z);
31 : static int r_plural(struct SN_env * z);
32 : static int r_case_other(struct SN_env * z);
33 : static int r_case_special(struct SN_env * z);
34 : static int r_case(struct SN_env * z);
35 : static int r_v_ending(struct SN_env * z);
36 : static int r_R1(struct SN_env * z);
37 : static int r_mark_regions(struct SN_env * z);
38 :
39 : static const symbol s_0[] = { 'a' };
40 : static const symbol s_1[] = { 'e' };
41 : static const symbol s_2[] = { 'e' };
42 : static const symbol s_3[] = { 'a' };
43 : static const symbol s_4[] = { 'a' };
44 : static const symbol s_5[] = { 'e' };
45 : static const symbol s_6[] = { 'a' };
46 : static const symbol s_7[] = { 'e' };
47 : static const symbol s_8[] = { 'e' };
48 : static const symbol s_9[] = { 'a' };
49 : static const symbol s_10[] = { 'a' };
50 : static const symbol s_11[] = { 'e' };
51 : static const symbol s_12[] = { 'a' };
52 : static const symbol s_13[] = { 'e' };
53 :
54 : static const symbol s_0_0[2] = { 0xC3, 0xA1 };
55 : static const symbol s_0_1[2] = { 0xC3, 0xA9 };
56 : static const struct among a_0[2] = {
57 : { 2, s_0_0, 0, 1, 0},
58 : { 2, s_0_1, 0, 2, 0}
59 : };
60 :
61 : static const symbol s_1_0[2] = { 'b', 'b' };
62 : static const symbol s_1_1[2] = { 'c', 'c' };
63 : static const symbol s_1_2[2] = { 'd', 'd' };
64 : static const symbol s_1_3[2] = { 'f', 'f' };
65 : static const symbol s_1_4[2] = { 'g', 'g' };
66 : static const symbol s_1_5[2] = { 'j', 'j' };
67 : static const symbol s_1_6[2] = { 'k', 'k' };
68 : static const symbol s_1_7[2] = { 'l', 'l' };
69 : static const symbol s_1_8[2] = { 'm', 'm' };
70 : static const symbol s_1_9[2] = { 'n', 'n' };
71 : static const symbol s_1_10[2] = { 'p', 'p' };
72 : static const symbol s_1_11[2] = { 'r', 'r' };
73 : static const symbol s_1_12[3] = { 'c', 'c', 's' };
74 : static const symbol s_1_13[2] = { 's', 's' };
75 : static const symbol s_1_14[3] = { 'z', 'z', 's' };
76 : static const symbol s_1_15[2] = { 't', 't' };
77 : static const symbol s_1_16[2] = { 'v', 'v' };
78 : static const symbol s_1_17[3] = { 'g', 'g', 'y' };
79 : static const symbol s_1_18[3] = { 'l', 'l', 'y' };
80 : static const symbol s_1_19[3] = { 'n', 'n', 'y' };
81 : static const symbol s_1_20[3] = { 't', 't', 'y' };
82 : static const symbol s_1_21[3] = { 's', 's', 'z' };
83 : static const symbol s_1_22[2] = { 'z', 'z' };
84 : static const struct among a_1[23] = {
85 : { 2, s_1_0, 0, -1, 0},
86 : { 2, s_1_1, 0, -1, 0},
87 : { 2, s_1_2, 0, -1, 0},
88 : { 2, s_1_3, 0, -1, 0},
89 : { 2, s_1_4, 0, -1, 0},
90 : { 2, s_1_5, 0, -1, 0},
91 : { 2, s_1_6, 0, -1, 0},
92 : { 2, s_1_7, 0, -1, 0},
93 : { 2, s_1_8, 0, -1, 0},
94 : { 2, s_1_9, 0, -1, 0},
95 : { 2, s_1_10, 0, -1, 0},
96 : { 2, s_1_11, 0, -1, 0},
97 : { 3, s_1_12, 0, -1, 0},
98 : { 2, s_1_13, 0, -1, 0},
99 : { 3, s_1_14, 0, -1, 0},
100 : { 2, s_1_15, 0, -1, 0},
101 : { 2, s_1_16, 0, -1, 0},
102 : { 3, s_1_17, 0, -1, 0},
103 : { 3, s_1_18, 0, -1, 0},
104 : { 3, s_1_19, 0, -1, 0},
105 : { 3, s_1_20, 0, -1, 0},
106 : { 3, s_1_21, 0, -1, 0},
107 : { 2, s_1_22, 0, -1, 0}
108 : };
109 :
110 : static const symbol s_2_0[2] = { 'a', 'l' };
111 : static const symbol s_2_1[2] = { 'e', 'l' };
112 : static const struct among a_2[2] = {
113 : { 2, s_2_0, 0, 1, 0},
114 : { 2, s_2_1, 0, 1, 0}
115 : };
116 :
117 : static const symbol s_3_0[2] = { 'b', 'a' };
118 : static const symbol s_3_1[2] = { 'r', 'a' };
119 : static const symbol s_3_2[2] = { 'b', 'e' };
120 : static const symbol s_3_3[2] = { 'r', 'e' };
121 : static const symbol s_3_4[2] = { 'i', 'g' };
122 : static const symbol s_3_5[3] = { 'n', 'a', 'k' };
123 : static const symbol s_3_6[3] = { 'n', 'e', 'k' };
124 : static const symbol s_3_7[3] = { 'v', 'a', 'l' };
125 : static const symbol s_3_8[3] = { 'v', 'e', 'l' };
126 : static const symbol s_3_9[2] = { 'u', 'l' };
127 : static const symbol s_3_10[4] = { 'b', 0xC5, 0x91, 'l' };
128 : static const symbol s_3_11[4] = { 'r', 0xC5, 0x91, 'l' };
129 : static const symbol s_3_12[4] = { 't', 0xC5, 0x91, 'l' };
130 : static const symbol s_3_13[4] = { 'n', 0xC3, 0xA1, 'l' };
131 : static const symbol s_3_14[4] = { 'n', 0xC3, 0xA9, 'l' };
132 : static const symbol s_3_15[4] = { 'b', 0xC3, 0xB3, 'l' };
133 : static const symbol s_3_16[4] = { 'r', 0xC3, 0xB3, 'l' };
134 : static const symbol s_3_17[4] = { 't', 0xC3, 0xB3, 'l' };
135 : static const symbol s_3_18[3] = { 0xC3, 0xBC, 'l' };
136 : static const symbol s_3_19[1] = { 'n' };
137 : static const symbol s_3_20[2] = { 'a', 'n' };
138 : static const symbol s_3_21[3] = { 'b', 'a', 'n' };
139 : static const symbol s_3_22[2] = { 'e', 'n' };
140 : static const symbol s_3_23[3] = { 'b', 'e', 'n' };
141 : static const symbol s_3_24[7] = { 'k', 0xC3, 0xA9, 'p', 'p', 'e', 'n' };
142 : static const symbol s_3_25[2] = { 'o', 'n' };
143 : static const symbol s_3_26[3] = { 0xC3, 0xB6, 'n' };
144 : static const symbol s_3_27[5] = { 'k', 0xC3, 0xA9, 'p', 'p' };
145 : static const symbol s_3_28[3] = { 'k', 'o', 'r' };
146 : static const symbol s_3_29[1] = { 't' };
147 : static const symbol s_3_30[2] = { 'a', 't' };
148 : static const symbol s_3_31[2] = { 'e', 't' };
149 : static const symbol s_3_32[5] = { 'k', 0xC3, 0xA9, 'n', 't' };
150 : static const symbol s_3_33[7] = { 'a', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
151 : static const symbol s_3_34[7] = { 'e', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
152 : static const symbol s_3_35[7] = { 'o', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
153 : static const symbol s_3_36[2] = { 'o', 't' };
154 : static const symbol s_3_37[4] = { 0xC3, 0xA9, 'r', 't' };
155 : static const symbol s_3_38[3] = { 0xC3, 0xB6, 't' };
156 : static const symbol s_3_39[3] = { 'h', 'e', 'z' };
157 : static const symbol s_3_40[3] = { 'h', 'o', 'z' };
158 : static const symbol s_3_41[4] = { 'h', 0xC3, 0xB6, 'z' };
159 : static const symbol s_3_42[3] = { 'v', 0xC3, 0xA1 };
160 : static const symbol s_3_43[3] = { 'v', 0xC3, 0xA9 };
161 : static const struct among a_3[44] = {
162 : { 2, s_3_0, 0, -1, 0},
163 : { 2, s_3_1, 0, -1, 0},
164 : { 2, s_3_2, 0, -1, 0},
165 : { 2, s_3_3, 0, -1, 0},
166 : { 2, s_3_4, 0, -1, 0},
167 : { 3, s_3_5, 0, -1, 0},
168 : { 3, s_3_6, 0, -1, 0},
169 : { 3, s_3_7, 0, -1, 0},
170 : { 3, s_3_8, 0, -1, 0},
171 : { 2, s_3_9, 0, -1, 0},
172 : { 4, s_3_10, 0, -1, 0},
173 : { 4, s_3_11, 0, -1, 0},
174 : { 4, s_3_12, 0, -1, 0},
175 : { 4, s_3_13, 0, -1, 0},
176 : { 4, s_3_14, 0, -1, 0},
177 : { 4, s_3_15, 0, -1, 0},
178 : { 4, s_3_16, 0, -1, 0},
179 : { 4, s_3_17, 0, -1, 0},
180 : { 3, s_3_18, 0, -1, 0},
181 : { 1, s_3_19, 0, -1, 0},
182 : { 2, s_3_20, -1, -1, 0},
183 : { 3, s_3_21, -1, -1, 0},
184 : { 2, s_3_22, -3, -1, 0},
185 : { 3, s_3_23, -1, -1, 0},
186 : { 7, s_3_24, -2, -1, 0},
187 : { 2, s_3_25, -6, -1, 0},
188 : { 3, s_3_26, -7, -1, 0},
189 : { 5, s_3_27, 0, -1, 0},
190 : { 3, s_3_28, 0, -1, 0},
191 : { 1, s_3_29, 0, -1, 0},
192 : { 2, s_3_30, -1, -1, 0},
193 : { 2, s_3_31, -2, -1, 0},
194 : { 5, s_3_32, -3, -1, 0},
195 : { 7, s_3_33, -1, -1, 0},
196 : { 7, s_3_34, -2, -1, 0},
197 : { 7, s_3_35, -3, -1, 0},
198 : { 2, s_3_36, -7, -1, 0},
199 : { 4, s_3_37, -8, -1, 0},
200 : { 3, s_3_38, -9, -1, 0},
201 : { 3, s_3_39, 0, -1, 0},
202 : { 3, s_3_40, 0, -1, 0},
203 : { 4, s_3_41, 0, -1, 0},
204 : { 3, s_3_42, 0, -1, 0},
205 : { 3, s_3_43, 0, -1, 0}
206 : };
207 :
208 : static const symbol s_4_0[3] = { 0xC3, 0xA1, 'n' };
209 : static const symbol s_4_1[3] = { 0xC3, 0xA9, 'n' };
210 : static const symbol s_4_2[8] = { 0xC3, 0xA1, 'n', 'k', 0xC3, 0xA9, 'n', 't' };
211 : static const struct among a_4[3] = {
212 : { 3, s_4_0, 0, 2, 0},
213 : { 3, s_4_1, 0, 1, 0},
214 : { 8, s_4_2, 0, 2, 0}
215 : };
216 :
217 : static const symbol s_5_0[4] = { 's', 't', 'u', 'l' };
218 : static const symbol s_5_1[5] = { 'a', 's', 't', 'u', 'l' };
219 : static const symbol s_5_2[6] = { 0xC3, 0xA1, 's', 't', 'u', 'l' };
220 : static const symbol s_5_3[5] = { 's', 't', 0xC3, 0xBC, 'l' };
221 : static const symbol s_5_4[6] = { 'e', 's', 't', 0xC3, 0xBC, 'l' };
222 : static const symbol s_5_5[7] = { 0xC3, 0xA9, 's', 't', 0xC3, 0xBC, 'l' };
223 : static const struct among a_5[6] = {
224 : { 4, s_5_0, 0, 1, 0},
225 : { 5, s_5_1, -1, 1, 0},
226 : { 6, s_5_2, -2, 2, 0},
227 : { 5, s_5_3, 0, 1, 0},
228 : { 6, s_5_4, -1, 1, 0},
229 : { 7, s_5_5, -2, 3, 0}
230 : };
231 :
232 : static const symbol s_6_0[2] = { 0xC3, 0xA1 };
233 : static const symbol s_6_1[2] = { 0xC3, 0xA9 };
234 : static const struct among a_6[2] = {
235 : { 2, s_6_0, 0, 1, 0},
236 : { 2, s_6_1, 0, 1, 0}
237 : };
238 :
239 : static const symbol s_7_0[1] = { 'k' };
240 : static const symbol s_7_1[2] = { 'a', 'k' };
241 : static const symbol s_7_2[2] = { 'e', 'k' };
242 : static const symbol s_7_3[2] = { 'o', 'k' };
243 : static const symbol s_7_4[3] = { 0xC3, 0xA1, 'k' };
244 : static const symbol s_7_5[3] = { 0xC3, 0xA9, 'k' };
245 : static const symbol s_7_6[3] = { 0xC3, 0xB6, 'k' };
246 : static const struct among a_7[7] = {
247 : { 1, s_7_0, 0, 3, 0},
248 : { 2, s_7_1, -1, 3, 0},
249 : { 2, s_7_2, -2, 3, 0},
250 : { 2, s_7_3, -3, 3, 0},
251 : { 3, s_7_4, -4, 1, 0},
252 : { 3, s_7_5, -5, 2, 0},
253 : { 3, s_7_6, -6, 3, 0}
254 : };
255 :
256 : static const symbol s_8_0[3] = { 0xC3, 0xA9, 'i' };
257 : static const symbol s_8_1[5] = { 0xC3, 0xA1, 0xC3, 0xA9, 'i' };
258 : static const symbol s_8_2[5] = { 0xC3, 0xA9, 0xC3, 0xA9, 'i' };
259 : static const symbol s_8_3[2] = { 0xC3, 0xA9 };
260 : static const symbol s_8_4[3] = { 'k', 0xC3, 0xA9 };
261 : static const symbol s_8_5[4] = { 'a', 'k', 0xC3, 0xA9 };
262 : static const symbol s_8_6[4] = { 'e', 'k', 0xC3, 0xA9 };
263 : static const symbol s_8_7[4] = { 'o', 'k', 0xC3, 0xA9 };
264 : static const symbol s_8_8[5] = { 0xC3, 0xA1, 'k', 0xC3, 0xA9 };
265 : static const symbol s_8_9[5] = { 0xC3, 0xA9, 'k', 0xC3, 0xA9 };
266 : static const symbol s_8_10[5] = { 0xC3, 0xB6, 'k', 0xC3, 0xA9 };
267 : static const symbol s_8_11[4] = { 0xC3, 0xA9, 0xC3, 0xA9 };
268 : static const struct among a_8[12] = {
269 : { 3, s_8_0, 0, 1, 0},
270 : { 5, s_8_1, -1, 3, 0},
271 : { 5, s_8_2, -2, 2, 0},
272 : { 2, s_8_3, 0, 1, 0},
273 : { 3, s_8_4, -1, 1, 0},
274 : { 4, s_8_5, -1, 1, 0},
275 : { 4, s_8_6, -2, 1, 0},
276 : { 4, s_8_7, -3, 1, 0},
277 : { 5, s_8_8, -4, 3, 0},
278 : { 5, s_8_9, -5, 2, 0},
279 : { 5, s_8_10, -6, 1, 0},
280 : { 4, s_8_11, -8, 2, 0}
281 : };
282 :
283 : static const symbol s_9_0[1] = { 'a' };
284 : static const symbol s_9_1[2] = { 'j', 'a' };
285 : static const symbol s_9_2[1] = { 'd' };
286 : static const symbol s_9_3[2] = { 'a', 'd' };
287 : static const symbol s_9_4[2] = { 'e', 'd' };
288 : static const symbol s_9_5[2] = { 'o', 'd' };
289 : static const symbol s_9_6[3] = { 0xC3, 0xA1, 'd' };
290 : static const symbol s_9_7[3] = { 0xC3, 0xA9, 'd' };
291 : static const symbol s_9_8[3] = { 0xC3, 0xB6, 'd' };
292 : static const symbol s_9_9[1] = { 'e' };
293 : static const symbol s_9_10[2] = { 'j', 'e' };
294 : static const symbol s_9_11[2] = { 'n', 'k' };
295 : static const symbol s_9_12[3] = { 'u', 'n', 'k' };
296 : static const symbol s_9_13[4] = { 0xC3, 0xA1, 'n', 'k' };
297 : static const symbol s_9_14[4] = { 0xC3, 0xA9, 'n', 'k' };
298 : static const symbol s_9_15[4] = { 0xC3, 0xBC, 'n', 'k' };
299 : static const symbol s_9_16[2] = { 'u', 'k' };
300 : static const symbol s_9_17[3] = { 'j', 'u', 'k' };
301 : static const symbol s_9_18[5] = { 0xC3, 0xA1, 'j', 'u', 'k' };
302 : static const symbol s_9_19[3] = { 0xC3, 0xBC, 'k' };
303 : static const symbol s_9_20[4] = { 'j', 0xC3, 0xBC, 'k' };
304 : static const symbol s_9_21[6] = { 0xC3, 0xA9, 'j', 0xC3, 0xBC, 'k' };
305 : static const symbol s_9_22[1] = { 'm' };
306 : static const symbol s_9_23[2] = { 'a', 'm' };
307 : static const symbol s_9_24[2] = { 'e', 'm' };
308 : static const symbol s_9_25[2] = { 'o', 'm' };
309 : static const symbol s_9_26[3] = { 0xC3, 0xA1, 'm' };
310 : static const symbol s_9_27[3] = { 0xC3, 0xA9, 'm' };
311 : static const symbol s_9_28[1] = { 'o' };
312 : static const symbol s_9_29[2] = { 0xC3, 0xA1 };
313 : static const symbol s_9_30[2] = { 0xC3, 0xA9 };
314 : static const struct among a_9[31] = {
315 : { 1, s_9_0, 0, 1, 0},
316 : { 2, s_9_1, -1, 1, 0},
317 : { 1, s_9_2, 0, 1, 0},
318 : { 2, s_9_3, -1, 1, 0},
319 : { 2, s_9_4, -2, 1, 0},
320 : { 2, s_9_5, -3, 1, 0},
321 : { 3, s_9_6, -4, 2, 0},
322 : { 3, s_9_7, -5, 3, 0},
323 : { 3, s_9_8, -6, 1, 0},
324 : { 1, s_9_9, 0, 1, 0},
325 : { 2, s_9_10, -1, 1, 0},
326 : { 2, s_9_11, 0, 1, 0},
327 : { 3, s_9_12, -1, 1, 0},
328 : { 4, s_9_13, -2, 2, 0},
329 : { 4, s_9_14, -3, 3, 0},
330 : { 4, s_9_15, -4, 1, 0},
331 : { 2, s_9_16, 0, 1, 0},
332 : { 3, s_9_17, -1, 1, 0},
333 : { 5, s_9_18, -1, 2, 0},
334 : { 3, s_9_19, 0, 1, 0},
335 : { 4, s_9_20, -1, 1, 0},
336 : { 6, s_9_21, -1, 3, 0},
337 : { 1, s_9_22, 0, 1, 0},
338 : { 2, s_9_23, -1, 1, 0},
339 : { 2, s_9_24, -2, 1, 0},
340 : { 2, s_9_25, -3, 1, 0},
341 : { 3, s_9_26, -4, 2, 0},
342 : { 3, s_9_27, -5, 3, 0},
343 : { 1, s_9_28, 0, 1, 0},
344 : { 2, s_9_29, 0, 2, 0},
345 : { 2, s_9_30, 0, 3, 0}
346 : };
347 :
348 : static const symbol s_10_0[2] = { 'i', 'd' };
349 : static const symbol s_10_1[3] = { 'a', 'i', 'd' };
350 : static const symbol s_10_2[4] = { 'j', 'a', 'i', 'd' };
351 : static const symbol s_10_3[3] = { 'e', 'i', 'd' };
352 : static const symbol s_10_4[4] = { 'j', 'e', 'i', 'd' };
353 : static const symbol s_10_5[4] = { 0xC3, 0xA1, 'i', 'd' };
354 : static const symbol s_10_6[4] = { 0xC3, 0xA9, 'i', 'd' };
355 : static const symbol s_10_7[1] = { 'i' };
356 : static const symbol s_10_8[2] = { 'a', 'i' };
357 : static const symbol s_10_9[3] = { 'j', 'a', 'i' };
358 : static const symbol s_10_10[2] = { 'e', 'i' };
359 : static const symbol s_10_11[3] = { 'j', 'e', 'i' };
360 : static const symbol s_10_12[3] = { 0xC3, 0xA1, 'i' };
361 : static const symbol s_10_13[3] = { 0xC3, 0xA9, 'i' };
362 : static const symbol s_10_14[4] = { 'i', 't', 'e', 'k' };
363 : static const symbol s_10_15[5] = { 'e', 'i', 't', 'e', 'k' };
364 : static const symbol s_10_16[6] = { 'j', 'e', 'i', 't', 'e', 'k' };
365 : static const symbol s_10_17[6] = { 0xC3, 0xA9, 'i', 't', 'e', 'k' };
366 : static const symbol s_10_18[2] = { 'i', 'k' };
367 : static const symbol s_10_19[3] = { 'a', 'i', 'k' };
368 : static const symbol s_10_20[4] = { 'j', 'a', 'i', 'k' };
369 : static const symbol s_10_21[3] = { 'e', 'i', 'k' };
370 : static const symbol s_10_22[4] = { 'j', 'e', 'i', 'k' };
371 : static const symbol s_10_23[4] = { 0xC3, 0xA1, 'i', 'k' };
372 : static const symbol s_10_24[4] = { 0xC3, 0xA9, 'i', 'k' };
373 : static const symbol s_10_25[3] = { 'i', 'n', 'k' };
374 : static const symbol s_10_26[4] = { 'a', 'i', 'n', 'k' };
375 : static const symbol s_10_27[5] = { 'j', 'a', 'i', 'n', 'k' };
376 : static const symbol s_10_28[4] = { 'e', 'i', 'n', 'k' };
377 : static const symbol s_10_29[5] = { 'j', 'e', 'i', 'n', 'k' };
378 : static const symbol s_10_30[5] = { 0xC3, 0xA1, 'i', 'n', 'k' };
379 : static const symbol s_10_31[5] = { 0xC3, 0xA9, 'i', 'n', 'k' };
380 : static const symbol s_10_32[5] = { 'a', 'i', 't', 'o', 'k' };
381 : static const symbol s_10_33[6] = { 'j', 'a', 'i', 't', 'o', 'k' };
382 : static const symbol s_10_34[6] = { 0xC3, 0xA1, 'i', 't', 'o', 'k' };
383 : static const symbol s_10_35[2] = { 'i', 'm' };
384 : static const symbol s_10_36[3] = { 'a', 'i', 'm' };
385 : static const symbol s_10_37[4] = { 'j', 'a', 'i', 'm' };
386 : static const symbol s_10_38[3] = { 'e', 'i', 'm' };
387 : static const symbol s_10_39[4] = { 'j', 'e', 'i', 'm' };
388 : static const symbol s_10_40[4] = { 0xC3, 0xA1, 'i', 'm' };
389 : static const symbol s_10_41[4] = { 0xC3, 0xA9, 'i', 'm' };
390 : static const struct among a_10[42] = {
391 : { 2, s_10_0, 0, 1, 0},
392 : { 3, s_10_1, -1, 1, 0},
393 : { 4, s_10_2, -1, 1, 0},
394 : { 3, s_10_3, -3, 1, 0},
395 : { 4, s_10_4, -1, 1, 0},
396 : { 4, s_10_5, -5, 2, 0},
397 : { 4, s_10_6, -6, 3, 0},
398 : { 1, s_10_7, 0, 1, 0},
399 : { 2, s_10_8, -1, 1, 0},
400 : { 3, s_10_9, -1, 1, 0},
401 : { 2, s_10_10, -3, 1, 0},
402 : { 3, s_10_11, -1, 1, 0},
403 : { 3, s_10_12, -5, 2, 0},
404 : { 3, s_10_13, -6, 3, 0},
405 : { 4, s_10_14, 0, 1, 0},
406 : { 5, s_10_15, -1, 1, 0},
407 : { 6, s_10_16, -1, 1, 0},
408 : { 6, s_10_17, -3, 3, 0},
409 : { 2, s_10_18, 0, 1, 0},
410 : { 3, s_10_19, -1, 1, 0},
411 : { 4, s_10_20, -1, 1, 0},
412 : { 3, s_10_21, -3, 1, 0},
413 : { 4, s_10_22, -1, 1, 0},
414 : { 4, s_10_23, -5, 2, 0},
415 : { 4, s_10_24, -6, 3, 0},
416 : { 3, s_10_25, 0, 1, 0},
417 : { 4, s_10_26, -1, 1, 0},
418 : { 5, s_10_27, -1, 1, 0},
419 : { 4, s_10_28, -3, 1, 0},
420 : { 5, s_10_29, -1, 1, 0},
421 : { 5, s_10_30, -5, 2, 0},
422 : { 5, s_10_31, -6, 3, 0},
423 : { 5, s_10_32, 0, 1, 0},
424 : { 6, s_10_33, -1, 1, 0},
425 : { 6, s_10_34, 0, 2, 0},
426 : { 2, s_10_35, 0, 1, 0},
427 : { 3, s_10_36, -1, 1, 0},
428 : { 4, s_10_37, -1, 1, 0},
429 : { 3, s_10_38, -3, 1, 0},
430 : { 4, s_10_39, -1, 1, 0},
431 : { 4, s_10_40, -5, 2, 0},
432 : { 4, s_10_41, -6, 3, 0}
433 : };
434 :
435 : static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 36, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 };
436 :
437 0 : static int r_mark_regions(struct SN_env * z) {
438 0 : ((SN_local *)z)->i_p1 = z->l;
439 : do {
440 0 : int v_1 = z->c;
441 0 : if (in_grouping_U(z, g_v, 97, 369, 0)) goto lab0;
442 : {
443 0 : int v_2 = z->c;
444 : {
445 0 : int ret = in_grouping_U(z, g_v, 97, 369, 1);
446 0 : if (ret < 0) goto lab1;
447 0 : z->c += ret;
448 : }
449 0 : ((SN_local *)z)->i_p1 = z->c;
450 0 : lab1:
451 0 : z->c = v_2;
452 : }
453 0 : break;
454 0 : lab0:
455 0 : z->c = v_1;
456 : {
457 0 : int ret = out_grouping_U(z, g_v, 97, 369, 1);
458 0 : if (ret < 0) return 0;
459 0 : z->c += ret;
460 : }
461 0 : ((SN_local *)z)->i_p1 = z->c;
462 : } while (0);
463 0 : return 1;
464 : }
465 :
466 0 : static int r_R1(struct SN_env * z) {
467 0 : return ((SN_local *)z)->i_p1 <= z->c;
468 : }
469 :
470 0 : static int r_v_ending(struct SN_env * z) {
471 : int among_var;
472 0 : z->ket = z->c;
473 0 : if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 161 && z->p[z->c - 1] != 169)) return 0;
474 0 : among_var = find_among_b(z, a_0, 2, 0);
475 0 : if (!among_var) return 0;
476 0 : z->bra = z->c;
477 : {
478 0 : int ret = r_R1(z);
479 0 : if (ret <= 0) return ret;
480 : }
481 0 : switch (among_var) {
482 0 : case 1:
483 : {
484 0 : int ret = slice_from_s(z, 1, s_0);
485 0 : if (ret < 0) return ret;
486 : }
487 0 : break;
488 0 : case 2:
489 : {
490 0 : int ret = slice_from_s(z, 1, s_1);
491 0 : if (ret < 0) return ret;
492 : }
493 0 : break;
494 : }
495 0 : return 1;
496 : }
497 :
498 0 : static int r_double(struct SN_env * z) {
499 : {
500 0 : int v_1 = z->l - z->c;
501 0 : if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((106790108 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
502 0 : if (!find_among_b(z, a_1, 23, 0)) return 0;
503 0 : z->c = z->l - v_1;
504 : }
505 0 : return 1;
506 : }
507 :
508 0 : static int r_undouble(struct SN_env * z) {
509 : {
510 0 : int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
511 0 : if (ret < 0) return 0;
512 0 : z->c = ret;
513 : }
514 0 : z->ket = z->c;
515 : {
516 0 : int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
517 0 : if (ret < 0) return 0;
518 0 : z->c = ret;
519 : }
520 0 : z->bra = z->c;
521 : {
522 0 : int ret = slice_del(z);
523 0 : if (ret < 0) return ret;
524 : }
525 0 : return 1;
526 : }
527 :
528 0 : static int r_instrum(struct SN_env * z) {
529 0 : z->ket = z->c;
530 0 : if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0;
531 0 : if (!find_among_b(z, a_2, 2, 0)) return 0;
532 0 : z->bra = z->c;
533 : {
534 0 : int ret = r_R1(z);
535 0 : if (ret <= 0) return ret;
536 : }
537 : {
538 0 : int ret = r_double(z);
539 0 : if (ret <= 0) return ret;
540 : }
541 : {
542 0 : int ret = slice_del(z);
543 0 : if (ret < 0) return ret;
544 : }
545 0 : return r_undouble(z);
546 : }
547 :
548 0 : static int r_case(struct SN_env * z) {
549 0 : z->ket = z->c;
550 0 : if (!find_among_b(z, a_3, 44, 0)) return 0;
551 0 : z->bra = z->c;
552 : {
553 0 : int ret = r_R1(z);
554 0 : if (ret <= 0) return ret;
555 : }
556 : {
557 0 : int ret = slice_del(z);
558 0 : if (ret < 0) return ret;
559 : }
560 0 : return r_v_ending(z);
561 : }
562 :
563 0 : static int r_case_special(struct SN_env * z) {
564 : int among_var;
565 0 : z->ket = z->c;
566 0 : if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 110 && z->p[z->c - 1] != 116)) return 0;
567 0 : among_var = find_among_b(z, a_4, 3, 0);
568 0 : if (!among_var) return 0;
569 0 : z->bra = z->c;
570 : {
571 0 : int ret = r_R1(z);
572 0 : if (ret <= 0) return ret;
573 : }
574 0 : switch (among_var) {
575 0 : case 1:
576 : {
577 0 : int ret = slice_from_s(z, 1, s_2);
578 0 : if (ret < 0) return ret;
579 : }
580 0 : break;
581 0 : case 2:
582 : {
583 0 : int ret = slice_from_s(z, 1, s_3);
584 0 : if (ret < 0) return ret;
585 : }
586 0 : break;
587 : }
588 0 : return 1;
589 : }
590 :
591 0 : static int r_case_other(struct SN_env * z) {
592 : int among_var;
593 0 : z->ket = z->c;
594 0 : if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0;
595 0 : among_var = find_among_b(z, a_5, 6, 0);
596 0 : if (!among_var) return 0;
597 0 : z->bra = z->c;
598 : {
599 0 : int ret = r_R1(z);
600 0 : if (ret <= 0) return ret;
601 : }
602 0 : switch (among_var) {
603 0 : case 1:
604 : {
605 0 : int ret = slice_del(z);
606 0 : if (ret < 0) return ret;
607 : }
608 0 : break;
609 0 : case 2:
610 : {
611 0 : int ret = slice_from_s(z, 1, s_4);
612 0 : if (ret < 0) return ret;
613 : }
614 0 : break;
615 0 : case 3:
616 : {
617 0 : int ret = slice_from_s(z, 1, s_5);
618 0 : if (ret < 0) return ret;
619 : }
620 0 : break;
621 : }
622 0 : return 1;
623 : }
624 :
625 0 : static int r_factive(struct SN_env * z) {
626 0 : z->ket = z->c;
627 0 : if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 161 && z->p[z->c - 1] != 169)) return 0;
628 0 : if (!find_among_b(z, a_6, 2, 0)) return 0;
629 0 : z->bra = z->c;
630 : {
631 0 : int ret = r_R1(z);
632 0 : if (ret <= 0) return ret;
633 : }
634 : {
635 0 : int ret = r_double(z);
636 0 : if (ret <= 0) return ret;
637 : }
638 : {
639 0 : int ret = slice_del(z);
640 0 : if (ret < 0) return ret;
641 : }
642 0 : return r_undouble(z);
643 : }
644 :
645 0 : static int r_plural(struct SN_env * z) {
646 : int among_var;
647 0 : z->ket = z->c;
648 0 : if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0;
649 0 : among_var = find_among_b(z, a_7, 7, 0);
650 0 : if (!among_var) return 0;
651 0 : z->bra = z->c;
652 : {
653 0 : int ret = r_R1(z);
654 0 : if (ret <= 0) return ret;
655 : }
656 0 : switch (among_var) {
657 0 : case 1:
658 : {
659 0 : int ret = slice_from_s(z, 1, s_6);
660 0 : if (ret < 0) return ret;
661 : }
662 0 : break;
663 0 : case 2:
664 : {
665 0 : int ret = slice_from_s(z, 1, s_7);
666 0 : if (ret < 0) return ret;
667 : }
668 0 : break;
669 0 : case 3:
670 : {
671 0 : int ret = slice_del(z);
672 0 : if (ret < 0) return ret;
673 : }
674 0 : break;
675 : }
676 0 : return 1;
677 : }
678 :
679 0 : static int r_owned(struct SN_env * z) {
680 : int among_var;
681 0 : z->ket = z->c;
682 0 : if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 169)) return 0;
683 0 : among_var = find_among_b(z, a_8, 12, 0);
684 0 : if (!among_var) return 0;
685 0 : z->bra = z->c;
686 : {
687 0 : int ret = r_R1(z);
688 0 : if (ret <= 0) return ret;
689 : }
690 0 : switch (among_var) {
691 0 : case 1:
692 : {
693 0 : int ret = slice_del(z);
694 0 : if (ret < 0) return ret;
695 : }
696 0 : break;
697 0 : case 2:
698 : {
699 0 : int ret = slice_from_s(z, 1, s_8);
700 0 : if (ret < 0) return ret;
701 : }
702 0 : break;
703 0 : case 3:
704 : {
705 0 : int ret = slice_from_s(z, 1, s_9);
706 0 : if (ret < 0) return ret;
707 : }
708 0 : break;
709 : }
710 0 : return 1;
711 : }
712 :
713 0 : static int r_sing_owner(struct SN_env * z) {
714 : int among_var;
715 0 : z->ket = z->c;
716 0 : among_var = find_among_b(z, a_9, 31, 0);
717 0 : if (!among_var) return 0;
718 0 : z->bra = z->c;
719 : {
720 0 : int ret = r_R1(z);
721 0 : if (ret <= 0) return ret;
722 : }
723 0 : switch (among_var) {
724 0 : case 1:
725 : {
726 0 : int ret = slice_del(z);
727 0 : if (ret < 0) return ret;
728 : }
729 0 : break;
730 0 : case 2:
731 : {
732 0 : int ret = slice_from_s(z, 1, s_10);
733 0 : if (ret < 0) return ret;
734 : }
735 0 : break;
736 0 : case 3:
737 : {
738 0 : int ret = slice_from_s(z, 1, s_11);
739 0 : if (ret < 0) return ret;
740 : }
741 0 : break;
742 : }
743 0 : return 1;
744 : }
745 :
746 0 : static int r_plur_owner(struct SN_env * z) {
747 : int among_var;
748 0 : z->ket = z->c;
749 0 : if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((10768 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
750 0 : among_var = find_among_b(z, a_10, 42, 0);
751 0 : if (!among_var) return 0;
752 0 : z->bra = z->c;
753 : {
754 0 : int ret = r_R1(z);
755 0 : if (ret <= 0) return ret;
756 : }
757 0 : switch (among_var) {
758 0 : case 1:
759 : {
760 0 : int ret = slice_del(z);
761 0 : if (ret < 0) return ret;
762 : }
763 0 : break;
764 0 : case 2:
765 : {
766 0 : int ret = slice_from_s(z, 1, s_12);
767 0 : if (ret < 0) return ret;
768 : }
769 0 : break;
770 0 : case 3:
771 : {
772 0 : int ret = slice_from_s(z, 1, s_13);
773 0 : if (ret < 0) return ret;
774 : }
775 0 : break;
776 : }
777 0 : return 1;
778 : }
779 :
780 0 : extern int hungarian_UTF_8_stem(struct SN_env * z) {
781 : {
782 0 : int v_1 = z->c;
783 : {
784 0 : int ret = r_mark_regions(z);
785 0 : if (ret < 0) return ret;
786 : }
787 0 : z->c = v_1;
788 : }
789 0 : z->lb = z->c; z->c = z->l;
790 : {
791 0 : int v_2 = z->l - z->c;
792 : {
793 0 : int ret = r_instrum(z);
794 0 : if (ret < 0) return ret;
795 : }
796 0 : z->c = z->l - v_2;
797 : }
798 : {
799 0 : int v_3 = z->l - z->c;
800 : {
801 0 : int ret = r_case(z);
802 0 : if (ret < 0) return ret;
803 : }
804 0 : z->c = z->l - v_3;
805 : }
806 : {
807 0 : int v_4 = z->l - z->c;
808 : {
809 0 : int ret = r_case_special(z);
810 0 : if (ret < 0) return ret;
811 : }
812 0 : z->c = z->l - v_4;
813 : }
814 : {
815 0 : int v_5 = z->l - z->c;
816 : {
817 0 : int ret = r_case_other(z);
818 0 : if (ret < 0) return ret;
819 : }
820 0 : z->c = z->l - v_5;
821 : }
822 : {
823 0 : int v_6 = z->l - z->c;
824 : {
825 0 : int ret = r_factive(z);
826 0 : if (ret < 0) return ret;
827 : }
828 0 : z->c = z->l - v_6;
829 : }
830 : {
831 0 : int v_7 = z->l - z->c;
832 : {
833 0 : int ret = r_owned(z);
834 0 : if (ret < 0) return ret;
835 : }
836 0 : z->c = z->l - v_7;
837 : }
838 : {
839 0 : int v_8 = z->l - z->c;
840 : {
841 0 : int ret = r_sing_owner(z);
842 0 : if (ret < 0) return ret;
843 : }
844 0 : z->c = z->l - v_8;
845 : }
846 : {
847 0 : int v_9 = z->l - z->c;
848 : {
849 0 : int ret = r_plur_owner(z);
850 0 : if (ret < 0) return ret;
851 : }
852 0 : z->c = z->l - v_9;
853 : }
854 : {
855 0 : int v_10 = z->l - z->c;
856 : {
857 0 : int ret = r_plural(z);
858 0 : if (ret < 0) return ret;
859 : }
860 0 : z->c = z->l - v_10;
861 : }
862 0 : z->c = z->lb;
863 0 : return 1;
864 : }
865 :
866 0 : extern struct SN_env * hungarian_UTF_8_create_env(void) {
867 0 : struct SN_env * z = SN_new_env(sizeof(SN_local));
868 0 : if (z) {
869 0 : ((SN_local *)z)->i_p1 = 0;
870 : }
871 0 : return z;
872 : }
873 :
874 0 : extern void hungarian_UTF_8_close_env(struct SN_env * z) {
875 0 : SN_delete_env(z);
876 0 : }
877 :
|