1 /* This file was generated automatically by the Snowball to ISO C compiler */
2 /* http://snowballstem.org/ */
3 
4 #include "header.h"
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 extern int porter_ISO_8859_1_stem(struct SN_env * z);
10 #ifdef __cplusplus
11 }
12 #endif
13 static int r_Step_5b(struct SN_env * z);
14 static int r_Step_5a(struct SN_env * z);
15 static int r_Step_4(struct SN_env * z);
16 static int r_Step_3(struct SN_env * z);
17 static int r_Step_2(struct SN_env * z);
18 static int r_Step_1c(struct SN_env * z);
19 static int r_Step_1b(struct SN_env * z);
20 static int r_Step_1a(struct SN_env * z);
21 static int r_R2(struct SN_env * z);
22 static int r_R1(struct SN_env * z);
23 static int r_shortv(struct SN_env * z);
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 
29 extern struct SN_env * porter_ISO_8859_1_create_env(void);
30 extern void porter_ISO_8859_1_close_env(struct SN_env * z);
31 
32 
33 #ifdef __cplusplus
34 }
35 #endif
36 static const symbol s_0_0[1] = { 's' };
37 static const symbol s_0_1[3] = { 'i', 'e', 's' };
38 static const symbol s_0_2[4] = { 's', 's', 'e', 's' };
39 static const symbol s_0_3[2] = { 's', 's' };
40 
41 static const struct among a_0[4] =
42 {
43 /*  0 */ { 1, s_0_0, -1, 3, 0},
44 /*  1 */ { 3, s_0_1, 0, 2, 0},
45 /*  2 */ { 4, s_0_2, 0, 1, 0},
46 /*  3 */ { 2, s_0_3, 0, -1, 0}
47 };
48 
49 static const symbol s_1_1[2] = { 'b', 'b' };
50 static const symbol s_1_2[2] = { 'd', 'd' };
51 static const symbol s_1_3[2] = { 'f', 'f' };
52 static const symbol s_1_4[2] = { 'g', 'g' };
53 static const symbol s_1_5[2] = { 'b', 'l' };
54 static const symbol s_1_6[2] = { 'm', 'm' };
55 static const symbol s_1_7[2] = { 'n', 'n' };
56 static const symbol s_1_8[2] = { 'p', 'p' };
57 static const symbol s_1_9[2] = { 'r', 'r' };
58 static const symbol s_1_10[2] = { 'a', 't' };
59 static const symbol s_1_11[2] = { 't', 't' };
60 static const symbol s_1_12[2] = { 'i', 'z' };
61 
62 static const struct among a_1[13] =
63 {
64 /*  0 */ { 0, 0, -1, 3, 0},
65 /*  1 */ { 2, s_1_1, 0, 2, 0},
66 /*  2 */ { 2, s_1_2, 0, 2, 0},
67 /*  3 */ { 2, s_1_3, 0, 2, 0},
68 /*  4 */ { 2, s_1_4, 0, 2, 0},
69 /*  5 */ { 2, s_1_5, 0, 1, 0},
70 /*  6 */ { 2, s_1_6, 0, 2, 0},
71 /*  7 */ { 2, s_1_7, 0, 2, 0},
72 /*  8 */ { 2, s_1_8, 0, 2, 0},
73 /*  9 */ { 2, s_1_9, 0, 2, 0},
74 /* 10 */ { 2, s_1_10, 0, 1, 0},
75 /* 11 */ { 2, s_1_11, 0, 2, 0},
76 /* 12 */ { 2, s_1_12, 0, 1, 0}
77 };
78 
79 static const symbol s_2_0[2] = { 'e', 'd' };
80 static const symbol s_2_1[3] = { 'e', 'e', 'd' };
81 static const symbol s_2_2[3] = { 'i', 'n', 'g' };
82 
83 static const struct among a_2[3] =
84 {
85 /*  0 */ { 2, s_2_0, -1, 2, 0},
86 /*  1 */ { 3, s_2_1, 0, 1, 0},
87 /*  2 */ { 3, s_2_2, -1, 2, 0}
88 };
89 
90 static const symbol s_3_0[4] = { 'a', 'n', 'c', 'i' };
91 static const symbol s_3_1[4] = { 'e', 'n', 'c', 'i' };
92 static const symbol s_3_2[4] = { 'a', 'b', 'l', 'i' };
93 static const symbol s_3_3[3] = { 'e', 'l', 'i' };
94 static const symbol s_3_4[4] = { 'a', 'l', 'l', 'i' };
95 static const symbol s_3_5[5] = { 'o', 'u', 's', 'l', 'i' };
96 static const symbol s_3_6[5] = { 'e', 'n', 't', 'l', 'i' };
97 static const symbol s_3_7[5] = { 'a', 'l', 'i', 't', 'i' };
98 static const symbol s_3_8[6] = { 'b', 'i', 'l', 'i', 't', 'i' };
99 static const symbol s_3_9[5] = { 'i', 'v', 'i', 't', 'i' };
100 static const symbol s_3_10[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
101 static const symbol s_3_11[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
102 static const symbol s_3_12[5] = { 'a', 'l', 'i', 's', 'm' };
103 static const symbol s_3_13[5] = { 'a', 't', 'i', 'o', 'n' };
104 static const symbol s_3_14[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' };
105 static const symbol s_3_15[4] = { 'i', 'z', 'e', 'r' };
106 static const symbol s_3_16[4] = { 'a', 't', 'o', 'r' };
107 static const symbol s_3_17[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' };
108 static const symbol s_3_18[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' };
109 static const symbol s_3_19[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
110 
111 static const struct among a_3[20] =
112 {
113 /*  0 */ { 4, s_3_0, -1, 3, 0},
114 /*  1 */ { 4, s_3_1, -1, 2, 0},
115 /*  2 */ { 4, s_3_2, -1, 4, 0},
116 /*  3 */ { 3, s_3_3, -1, 6, 0},
117 /*  4 */ { 4, s_3_4, -1, 9, 0},
118 /*  5 */ { 5, s_3_5, -1, 11, 0},
119 /*  6 */ { 5, s_3_6, -1, 5, 0},
120 /*  7 */ { 5, s_3_7, -1, 9, 0},
121 /*  8 */ { 6, s_3_8, -1, 13, 0},
122 /*  9 */ { 5, s_3_9, -1, 12, 0},
123 /* 10 */ { 6, s_3_10, -1, 1, 0},
124 /* 11 */ { 7, s_3_11, 10, 8, 0},
125 /* 12 */ { 5, s_3_12, -1, 9, 0},
126 /* 13 */ { 5, s_3_13, -1, 8, 0},
127 /* 14 */ { 7, s_3_14, 13, 7, 0},
128 /* 15 */ { 4, s_3_15, -1, 7, 0},
129 /* 16 */ { 4, s_3_16, -1, 8, 0},
130 /* 17 */ { 7, s_3_17, -1, 12, 0},
131 /* 18 */ { 7, s_3_18, -1, 10, 0},
132 /* 19 */ { 7, s_3_19, -1, 11, 0}
133 };
134 
135 static const symbol s_4_0[5] = { 'i', 'c', 'a', 't', 'e' };
136 static const symbol s_4_1[5] = { 'a', 't', 'i', 'v', 'e' };
137 static const symbol s_4_2[5] = { 'a', 'l', 'i', 'z', 'e' };
138 static const symbol s_4_3[5] = { 'i', 'c', 'i', 't', 'i' };
139 static const symbol s_4_4[4] = { 'i', 'c', 'a', 'l' };
140 static const symbol s_4_5[3] = { 'f', 'u', 'l' };
141 static const symbol s_4_6[4] = { 'n', 'e', 's', 's' };
142 
143 static const struct among a_4[7] =
144 {
145 /*  0 */ { 5, s_4_0, -1, 2, 0},
146 /*  1 */ { 5, s_4_1, -1, 3, 0},
147 /*  2 */ { 5, s_4_2, -1, 1, 0},
148 /*  3 */ { 5, s_4_3, -1, 2, 0},
149 /*  4 */ { 4, s_4_4, -1, 2, 0},
150 /*  5 */ { 3, s_4_5, -1, 3, 0},
151 /*  6 */ { 4, s_4_6, -1, 3, 0}
152 };
153 
154 static const symbol s_5_0[2] = { 'i', 'c' };
155 static const symbol s_5_1[4] = { 'a', 'n', 'c', 'e' };
156 static const symbol s_5_2[4] = { 'e', 'n', 'c', 'e' };
157 static const symbol s_5_3[4] = { 'a', 'b', 'l', 'e' };
158 static const symbol s_5_4[4] = { 'i', 'b', 'l', 'e' };
159 static const symbol s_5_5[3] = { 'a', 't', 'e' };
160 static const symbol s_5_6[3] = { 'i', 'v', 'e' };
161 static const symbol s_5_7[3] = { 'i', 'z', 'e' };
162 static const symbol s_5_8[3] = { 'i', 't', 'i' };
163 static const symbol s_5_9[2] = { 'a', 'l' };
164 static const symbol s_5_10[3] = { 'i', 's', 'm' };
165 static const symbol s_5_11[3] = { 'i', 'o', 'n' };
166 static const symbol s_5_12[2] = { 'e', 'r' };
167 static const symbol s_5_13[3] = { 'o', 'u', 's' };
168 static const symbol s_5_14[3] = { 'a', 'n', 't' };
169 static const symbol s_5_15[3] = { 'e', 'n', 't' };
170 static const symbol s_5_16[4] = { 'm', 'e', 'n', 't' };
171 static const symbol s_5_17[5] = { 'e', 'm', 'e', 'n', 't' };
172 static const symbol s_5_18[2] = { 'o', 'u' };
173 
174 static const struct among a_5[19] =
175 {
176 /*  0 */ { 2, s_5_0, -1, 1, 0},
177 /*  1 */ { 4, s_5_1, -1, 1, 0},
178 /*  2 */ { 4, s_5_2, -1, 1, 0},
179 /*  3 */ { 4, s_5_3, -1, 1, 0},
180 /*  4 */ { 4, s_5_4, -1, 1, 0},
181 /*  5 */ { 3, s_5_5, -1, 1, 0},
182 /*  6 */ { 3, s_5_6, -1, 1, 0},
183 /*  7 */ { 3, s_5_7, -1, 1, 0},
184 /*  8 */ { 3, s_5_8, -1, 1, 0},
185 /*  9 */ { 2, s_5_9, -1, 1, 0},
186 /* 10 */ { 3, s_5_10, -1, 1, 0},
187 /* 11 */ { 3, s_5_11, -1, 2, 0},
188 /* 12 */ { 2, s_5_12, -1, 1, 0},
189 /* 13 */ { 3, s_5_13, -1, 1, 0},
190 /* 14 */ { 3, s_5_14, -1, 1, 0},
191 /* 15 */ { 3, s_5_15, -1, 1, 0},
192 /* 16 */ { 4, s_5_16, 15, 1, 0},
193 /* 17 */ { 5, s_5_17, 16, 1, 0},
194 /* 18 */ { 2, s_5_18, -1, 1, 0}
195 };
196 
197 static const unsigned char g_v[] = { 17, 65, 16, 1 };
198 
199 static const unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
200 
201 static const symbol s_0[] = { 's', 's' };
202 static const symbol s_1[] = { 'i' };
203 static const symbol s_2[] = { 'e', 'e' };
204 static const symbol s_3[] = { 'e' };
205 static const symbol s_4[] = { 'e' };
206 static const symbol s_5[] = { 'i' };
207 static const symbol s_6[] = { 't', 'i', 'o', 'n' };
208 static const symbol s_7[] = { 'e', 'n', 'c', 'e' };
209 static const symbol s_8[] = { 'a', 'n', 'c', 'e' };
210 static const symbol s_9[] = { 'a', 'b', 'l', 'e' };
211 static const symbol s_10[] = { 'e', 'n', 't' };
212 static const symbol s_11[] = { 'e' };
213 static const symbol s_12[] = { 'i', 'z', 'e' };
214 static const symbol s_13[] = { 'a', 't', 'e' };
215 static const symbol s_14[] = { 'a', 'l' };
216 static const symbol s_15[] = { 'f', 'u', 'l' };
217 static const symbol s_16[] = { 'o', 'u', 's' };
218 static const symbol s_17[] = { 'i', 'v', 'e' };
219 static const symbol s_18[] = { 'b', 'l', 'e' };
220 static const symbol s_19[] = { 'a', 'l' };
221 static const symbol s_20[] = { 'i', 'c' };
222 static const symbol s_21[] = { 'Y' };
223 static const symbol s_22[] = { 'Y' };
224 static const symbol s_23[] = { 'y' };
225 
r_shortv(struct SN_env * z)226 static int r_shortv(struct SN_env * z) { /* backwardmode */
227     if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) return 0; /* non v_WXY, line 19 */
228     if (in_grouping_b(z, g_v, 97, 121, 0)) return 0; /* grouping v, line 19 */
229     if (out_grouping_b(z, g_v, 97, 121, 0)) return 0; /* non v, line 19 */
230     return 1;
231 }
232 
r_R1(struct SN_env * z)233 static int r_R1(struct SN_env * z) { /* backwardmode */
234     if (!(z->I[0] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 21 */
235     return 1;
236 }
237 
r_R2(struct SN_env * z)238 static int r_R2(struct SN_env * z) { /* backwardmode */
239     if (!(z->I[1] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 22 */
240     return 1;
241 }
242 
r_Step_1a(struct SN_env * z)243 static int r_Step_1a(struct SN_env * z) { /* backwardmode */
244     int among_var;
245     z->ket = z->c; /* [, line 25 */
246     if (z->c <= z->lb || z->p[z->c - 1] != 115) return 0; /* substring, line 25 */
247     among_var = find_among_b(z, a_0, 4);
248     if (!(among_var)) return 0;
249     z->bra = z->c; /* ], line 25 */
250     switch (among_var) { /* among, line 25 */
251         case 1:
252             {   int ret = slice_from_s(z, 2, s_0); /* <-, line 26 */
253                 if (ret < 0) return ret;
254             }
255             break;
256         case 2:
257             {   int ret = slice_from_s(z, 1, s_1); /* <-, line 27 */
258                 if (ret < 0) return ret;
259             }
260             break;
261         case 3:
262             {   int ret = slice_del(z); /* delete, line 29 */
263                 if (ret < 0) return ret;
264             }
265             break;
266     }
267     return 1;
268 }
269 
r_Step_1b(struct SN_env * z)270 static int r_Step_1b(struct SN_env * z) { /* backwardmode */
271     int among_var;
272     z->ket = z->c; /* [, line 34 */
273     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0; /* substring, line 34 */
274     among_var = find_among_b(z, a_2, 3);
275     if (!(among_var)) return 0;
276     z->bra = z->c; /* ], line 34 */
277     switch (among_var) { /* among, line 34 */
278         case 1:
279             {   int ret = r_R1(z); /* call R1, line 35 */
280                 if (ret <= 0) return ret;
281             }
282             {   int ret = slice_from_s(z, 2, s_2); /* <-, line 35 */
283                 if (ret < 0) return ret;
284             }
285             break;
286         case 2:
287             {   int m_test1 = z->l - z->c; /* test, line 38 */
288                 {    /* gopast */ /* grouping v, line 38 */
289                     int ret = out_grouping_b(z, g_v, 97, 121, 1);
290                     if (ret < 0) return 0;
291                     z->c -= ret;
292                 }
293                 z->c = z->l - m_test1;
294             }
295             {   int ret = slice_del(z); /* delete, line 38 */
296                 if (ret < 0) return ret;
297             }
298             {   int m_test2 = z->l - z->c; /* test, line 39 */
299                 if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else /* substring, line 39 */
300                 among_var = find_among_b(z, a_1, 13);
301                 if (!(among_var)) return 0;
302                 z->c = z->l - m_test2;
303             }
304             switch (among_var) { /* among, line 39 */
305                 case 1:
306                     {   int ret;
307                         {   int saved_c = z->c;
308                             ret = insert_s(z, z->c, z->c, 1, s_3); /* <+, line 41 */
309                             z->c = saved_c;
310                         }
311                         if (ret < 0) return ret;
312                     }
313                     break;
314                 case 2:
315                     z->ket = z->c; /* [, line 44 */
316                     if (z->c <= z->lb) return 0;
317                     z->c--; /* next, line 44 */
318                     z->bra = z->c; /* ], line 44 */
319                     {   int ret = slice_del(z); /* delete, line 44 */
320                         if (ret < 0) return ret;
321                     }
322                     break;
323                 case 3:
324                     if (z->c != z->I[0]) return 0; /* atmark, line 45 */
325                     {   int m_test3 = z->l - z->c; /* test, line 45 */
326                         {   int ret = r_shortv(z); /* call shortv, line 45 */
327                             if (ret <= 0) return ret;
328                         }
329                         z->c = z->l - m_test3;
330                     }
331                     {   int ret;
332                         {   int saved_c = z->c;
333                             ret = insert_s(z, z->c, z->c, 1, s_4); /* <+, line 45 */
334                             z->c = saved_c;
335                         }
336                         if (ret < 0) return ret;
337                     }
338                     break;
339             }
340             break;
341     }
342     return 1;
343 }
344 
r_Step_1c(struct SN_env * z)345 static int r_Step_1c(struct SN_env * z) { /* backwardmode */
346     z->ket = z->c; /* [, line 52 */
347     {   int m1 = z->l - z->c; (void)m1; /* or, line 52 */
348         if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1; /* literal, line 52 */
349         z->c--;
350         goto lab0;
351     lab1:
352         z->c = z->l - m1;
353         if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0; /* literal, line 52 */
354         z->c--;
355     }
356 lab0:
357     z->bra = z->c; /* ], line 52 */
358     {    /* gopast */ /* grouping v, line 53 */
359         int ret = out_grouping_b(z, g_v, 97, 121, 1);
360         if (ret < 0) return 0;
361         z->c -= ret;
362     }
363     {   int ret = slice_from_s(z, 1, s_5); /* <-, line 54 */
364         if (ret < 0) return ret;
365     }
366     return 1;
367 }
368 
r_Step_2(struct SN_env * z)369 static int r_Step_2(struct SN_env * z) { /* backwardmode */
370     int among_var;
371     z->ket = z->c; /* [, line 58 */
372     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 58 */
373     among_var = find_among_b(z, a_3, 20);
374     if (!(among_var)) return 0;
375     z->bra = z->c; /* ], line 58 */
376     {   int ret = r_R1(z); /* call R1, line 58 */
377         if (ret <= 0) return ret;
378     }
379     switch (among_var) { /* among, line 58 */
380         case 1:
381             {   int ret = slice_from_s(z, 4, s_6); /* <-, line 59 */
382                 if (ret < 0) return ret;
383             }
384             break;
385         case 2:
386             {   int ret = slice_from_s(z, 4, s_7); /* <-, line 60 */
387                 if (ret < 0) return ret;
388             }
389             break;
390         case 3:
391             {   int ret = slice_from_s(z, 4, s_8); /* <-, line 61 */
392                 if (ret < 0) return ret;
393             }
394             break;
395         case 4:
396             {   int ret = slice_from_s(z, 4, s_9); /* <-, line 62 */
397                 if (ret < 0) return ret;
398             }
399             break;
400         case 5:
401             {   int ret = slice_from_s(z, 3, s_10); /* <-, line 63 */
402                 if (ret < 0) return ret;
403             }
404             break;
405         case 6:
406             {   int ret = slice_from_s(z, 1, s_11); /* <-, line 64 */
407                 if (ret < 0) return ret;
408             }
409             break;
410         case 7:
411             {   int ret = slice_from_s(z, 3, s_12); /* <-, line 66 */
412                 if (ret < 0) return ret;
413             }
414             break;
415         case 8:
416             {   int ret = slice_from_s(z, 3, s_13); /* <-, line 68 */
417                 if (ret < 0) return ret;
418             }
419             break;
420         case 9:
421             {   int ret = slice_from_s(z, 2, s_14); /* <-, line 69 */
422                 if (ret < 0) return ret;
423             }
424             break;
425         case 10:
426             {   int ret = slice_from_s(z, 3, s_15); /* <-, line 72 */
427                 if (ret < 0) return ret;
428             }
429             break;
430         case 11:
431             {   int ret = slice_from_s(z, 3, s_16); /* <-, line 74 */
432                 if (ret < 0) return ret;
433             }
434             break;
435         case 12:
436             {   int ret = slice_from_s(z, 3, s_17); /* <-, line 76 */
437                 if (ret < 0) return ret;
438             }
439             break;
440         case 13:
441             {   int ret = slice_from_s(z, 3, s_18); /* <-, line 77 */
442                 if (ret < 0) return ret;
443             }
444             break;
445     }
446     return 1;
447 }
448 
r_Step_3(struct SN_env * z)449 static int r_Step_3(struct SN_env * z) { /* backwardmode */
450     int among_var;
451     z->ket = z->c; /* [, line 82 */
452     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 82 */
453     among_var = find_among_b(z, a_4, 7);
454     if (!(among_var)) return 0;
455     z->bra = z->c; /* ], line 82 */
456     {   int ret = r_R1(z); /* call R1, line 82 */
457         if (ret <= 0) return ret;
458     }
459     switch (among_var) { /* among, line 82 */
460         case 1:
461             {   int ret = slice_from_s(z, 2, s_19); /* <-, line 83 */
462                 if (ret < 0) return ret;
463             }
464             break;
465         case 2:
466             {   int ret = slice_from_s(z, 2, s_20); /* <-, line 85 */
467                 if (ret < 0) return ret;
468             }
469             break;
470         case 3:
471             {   int ret = slice_del(z); /* delete, line 87 */
472                 if (ret < 0) return ret;
473             }
474             break;
475     }
476     return 1;
477 }
478 
r_Step_4(struct SN_env * z)479 static int r_Step_4(struct SN_env * z) { /* backwardmode */
480     int among_var;
481     z->ket = z->c; /* [, line 92 */
482     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((3961384 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* substring, line 92 */
483     among_var = find_among_b(z, a_5, 19);
484     if (!(among_var)) return 0;
485     z->bra = z->c; /* ], line 92 */
486     {   int ret = r_R2(z); /* call R2, line 92 */
487         if (ret <= 0) return ret;
488     }
489     switch (among_var) { /* among, line 92 */
490         case 1:
491             {   int ret = slice_del(z); /* delete, line 95 */
492                 if (ret < 0) return ret;
493             }
494             break;
495         case 2:
496             {   int m1 = z->l - z->c; (void)m1; /* or, line 96 */
497                 if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1; /* literal, line 96 */
498                 z->c--;
499                 goto lab0;
500             lab1:
501                 z->c = z->l - m1;
502                 if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0; /* literal, line 96 */
503                 z->c--;
504             }
505         lab0:
506             {   int ret = slice_del(z); /* delete, line 96 */
507                 if (ret < 0) return ret;
508             }
509             break;
510     }
511     return 1;
512 }
513 
r_Step_5a(struct SN_env * z)514 static int r_Step_5a(struct SN_env * z) { /* backwardmode */
515     z->ket = z->c; /* [, line 101 */
516     if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0; /* literal, line 101 */
517     z->c--;
518     z->bra = z->c; /* ], line 101 */
519     {   int m1 = z->l - z->c; (void)m1; /* or, line 102 */
520         {   int ret = r_R2(z); /* call R2, line 102 */
521             if (ret == 0) goto lab1;
522             if (ret < 0) return ret;
523         }
524         goto lab0;
525     lab1:
526         z->c = z->l - m1;
527         {   int ret = r_R1(z); /* call R1, line 102 */
528             if (ret <= 0) return ret;
529         }
530         {   int m2 = z->l - z->c; (void)m2; /* not, line 102 */
531             {   int ret = r_shortv(z); /* call shortv, line 102 */
532                 if (ret == 0) goto lab2;
533                 if (ret < 0) return ret;
534             }
535             return 0;
536         lab2:
537             z->c = z->l - m2;
538         }
539     }
540 lab0:
541     {   int ret = slice_del(z); /* delete, line 103 */
542         if (ret < 0) return ret;
543     }
544     return 1;
545 }
546 
r_Step_5b(struct SN_env * z)547 static int r_Step_5b(struct SN_env * z) { /* backwardmode */
548     z->ket = z->c; /* [, line 107 */
549     if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0; /* literal, line 107 */
550     z->c--;
551     z->bra = z->c; /* ], line 107 */
552     {   int ret = r_R2(z); /* call R2, line 108 */
553         if (ret <= 0) return ret;
554     }
555     if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0; /* literal, line 108 */
556     z->c--;
557     {   int ret = slice_del(z); /* delete, line 109 */
558         if (ret < 0) return ret;
559     }
560     return 1;
561 }
562 
porter_ISO_8859_1_stem(struct SN_env * z)563 extern int porter_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
564     z->B[0] = 0; /* unset Y_found, line 115 */
565     {   int c1 = z->c; /* do, line 116 */
566         z->bra = z->c; /* [, line 116 */
567         if (z->c == z->l || z->p[z->c] != 'y') goto lab0; /* literal, line 116 */
568         z->c++;
569         z->ket = z->c; /* ], line 116 */
570         {   int ret = slice_from_s(z, 1, s_21); /* <-, line 116 */
571             if (ret < 0) return ret;
572         }
573         z->B[0] = 1; /* set Y_found, line 116 */
574     lab0:
575         z->c = c1;
576     }
577     {   int c2 = z->c; /* do, line 117 */
578         while(1) { /* repeat, line 117 */
579             int c3 = z->c;
580             while(1) { /* goto, line 117 */
581                 int c4 = z->c;
582                 if (in_grouping(z, g_v, 97, 121, 0)) goto lab3; /* grouping v, line 117 */
583                 z->bra = z->c; /* [, line 117 */
584                 if (z->c == z->l || z->p[z->c] != 'y') goto lab3; /* literal, line 117 */
585                 z->c++;
586                 z->ket = z->c; /* ], line 117 */
587                 z->c = c4;
588                 break;
589             lab3:
590                 z->c = c4;
591                 if (z->c >= z->l) goto lab2;
592                 z->c++; /* goto, line 117 */
593             }
594             {   int ret = slice_from_s(z, 1, s_22); /* <-, line 117 */
595                 if (ret < 0) return ret;
596             }
597             z->B[0] = 1; /* set Y_found, line 117 */
598             continue;
599         lab2:
600             z->c = c3;
601             break;
602         }
603         z->c = c2;
604     }
605     z->I[0] = z->l; /* $p1 = <integer expression>, line 119 */
606     z->I[1] = z->l; /* $p2 = <integer expression>, line 120 */
607     {   int c5 = z->c; /* do, line 121 */
608         {    /* gopast */ /* grouping v, line 122 */
609             int ret = out_grouping(z, g_v, 97, 121, 1);
610             if (ret < 0) goto lab4;
611             z->c += ret;
612         }
613         {    /* gopast */ /* non v, line 122 */
614             int ret = in_grouping(z, g_v, 97, 121, 1);
615             if (ret < 0) goto lab4;
616             z->c += ret;
617         }
618         z->I[0] = z->c; /* setmark p1, line 122 */
619         {    /* gopast */ /* grouping v, line 123 */
620             int ret = out_grouping(z, g_v, 97, 121, 1);
621             if (ret < 0) goto lab4;
622             z->c += ret;
623         }
624         {    /* gopast */ /* non v, line 123 */
625             int ret = in_grouping(z, g_v, 97, 121, 1);
626             if (ret < 0) goto lab4;
627             z->c += ret;
628         }
629         z->I[1] = z->c; /* setmark p2, line 123 */
630     lab4:
631         z->c = c5;
632     }
633     z->lb = z->c; z->c = z->l; /* backwards, line 126 */
634 
635     {   int m6 = z->l - z->c; (void)m6; /* do, line 127 */
636         {   int ret = r_Step_1a(z); /* call Step_1a, line 127 */
637             if (ret == 0) goto lab5;
638             if (ret < 0) return ret;
639         }
640     lab5:
641         z->c = z->l - m6;
642     }
643     {   int m7 = z->l - z->c; (void)m7; /* do, line 128 */
644         {   int ret = r_Step_1b(z); /* call Step_1b, line 128 */
645             if (ret == 0) goto lab6;
646             if (ret < 0) return ret;
647         }
648     lab6:
649         z->c = z->l - m7;
650     }
651     {   int m8 = z->l - z->c; (void)m8; /* do, line 129 */
652         {   int ret = r_Step_1c(z); /* call Step_1c, line 129 */
653             if (ret == 0) goto lab7;
654             if (ret < 0) return ret;
655         }
656     lab7:
657         z->c = z->l - m8;
658     }
659     {   int m9 = z->l - z->c; (void)m9; /* do, line 130 */
660         {   int ret = r_Step_2(z); /* call Step_2, line 130 */
661             if (ret == 0) goto lab8;
662             if (ret < 0) return ret;
663         }
664     lab8:
665         z->c = z->l - m9;
666     }
667     {   int m10 = z->l - z->c; (void)m10; /* do, line 131 */
668         {   int ret = r_Step_3(z); /* call Step_3, line 131 */
669             if (ret == 0) goto lab9;
670             if (ret < 0) return ret;
671         }
672     lab9:
673         z->c = z->l - m10;
674     }
675     {   int m11 = z->l - z->c; (void)m11; /* do, line 132 */
676         {   int ret = r_Step_4(z); /* call Step_4, line 132 */
677             if (ret == 0) goto lab10;
678             if (ret < 0) return ret;
679         }
680     lab10:
681         z->c = z->l - m11;
682     }
683     {   int m12 = z->l - z->c; (void)m12; /* do, line 133 */
684         {   int ret = r_Step_5a(z); /* call Step_5a, line 133 */
685             if (ret == 0) goto lab11;
686             if (ret < 0) return ret;
687         }
688     lab11:
689         z->c = z->l - m12;
690     }
691     {   int m13 = z->l - z->c; (void)m13; /* do, line 134 */
692         {   int ret = r_Step_5b(z); /* call Step_5b, line 134 */
693             if (ret == 0) goto lab12;
694             if (ret < 0) return ret;
695         }
696     lab12:
697         z->c = z->l - m13;
698     }
699     z->c = z->lb;
700     {   int c14 = z->c; /* do, line 137 */
701         if (!(z->B[0])) goto lab13; /* Boolean test Y_found, line 137 */
702         while(1) { /* repeat, line 137 */
703             int c15 = z->c;
704             while(1) { /* goto, line 137 */
705                 int c16 = z->c;
706                 z->bra = z->c; /* [, line 137 */
707                 if (z->c == z->l || z->p[z->c] != 'Y') goto lab15; /* literal, line 137 */
708                 z->c++;
709                 z->ket = z->c; /* ], line 137 */
710                 z->c = c16;
711                 break;
712             lab15:
713                 z->c = c16;
714                 if (z->c >= z->l) goto lab14;
715                 z->c++; /* goto, line 137 */
716             }
717             {   int ret = slice_from_s(z, 1, s_23); /* <-, line 137 */
718                 if (ret < 0) return ret;
719             }
720             continue;
721         lab14:
722             z->c = c15;
723             break;
724         }
725     lab13:
726         z->c = c14;
727     }
728     return 1;
729 }
730 
porter_ISO_8859_1_create_env(void)731 extern struct SN_env * porter_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); }
732 
porter_ISO_8859_1_close_env(struct SN_env * z)733 extern void porter_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
734 
735