1 /* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
2 
3 #include "../runtime/header.h"
4 
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 extern int arabic_UTF_8_stem(struct SN_env * z);
9 #ifdef __cplusplus
10 }
11 #endif
12 static int r_Checks1(struct SN_env * z);
13 static int r_Normalize_pre(struct SN_env * z);
14 static int r_Normalize_post(struct SN_env * z);
15 static int r_Suffix_Verb_Step2c(struct SN_env * z);
16 static int r_Suffix_Verb_Step2b(struct SN_env * z);
17 static int r_Suffix_Verb_Step2a(struct SN_env * z);
18 static int r_Suffix_Verb_Step1(struct SN_env * z);
19 static int r_Suffix_Noun_Step3(struct SN_env * z);
20 static int r_Suffix_Noun_Step2c2(struct SN_env * z);
21 static int r_Suffix_Noun_Step2c1(struct SN_env * z);
22 static int r_Suffix_Noun_Step2b(struct SN_env * z);
23 static int r_Suffix_Noun_Step2a(struct SN_env * z);
24 static int r_Suffix_Noun_Step1b(struct SN_env * z);
25 static int r_Suffix_Noun_Step1a(struct SN_env * z);
26 static int r_Suffix_All_alef_maqsura(struct SN_env * z);
27 static int r_Prefix_Step4_Verb(struct SN_env * z);
28 static int r_Prefix_Step3_Verb(struct SN_env * z);
29 static int r_Prefix_Step3b_Noun(struct SN_env * z);
30 static int r_Prefix_Step3a_Noun(struct SN_env * z);
31 static int r_Prefix_Step2(struct SN_env * z);
32 static int r_Prefix_Step1(struct SN_env * z);
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 
38 extern struct SN_env * arabic_UTF_8_create_env(void);
39 extern void arabic_UTF_8_close_env(struct SN_env * z);
40 
41 
42 #ifdef __cplusplus
43 }
44 #endif
45 static const symbol s_0_0[2] = { 0xD9, 0x80 };
46 static const symbol s_0_1[2] = { 0xD9, 0x8B };
47 static const symbol s_0_2[2] = { 0xD9, 0x8C };
48 static const symbol s_0_3[2] = { 0xD9, 0x8D };
49 static const symbol s_0_4[2] = { 0xD9, 0x8E };
50 static const symbol s_0_5[2] = { 0xD9, 0x8F };
51 static const symbol s_0_6[2] = { 0xD9, 0x90 };
52 static const symbol s_0_7[2] = { 0xD9, 0x91 };
53 static const symbol s_0_8[2] = { 0xD9, 0x92 };
54 static const symbol s_0_9[2] = { 0xD9, 0xA0 };
55 static const symbol s_0_10[2] = { 0xD9, 0xA1 };
56 static const symbol s_0_11[2] = { 0xD9, 0xA2 };
57 static const symbol s_0_12[2] = { 0xD9, 0xA3 };
58 static const symbol s_0_13[2] = { 0xD9, 0xA4 };
59 static const symbol s_0_14[2] = { 0xD9, 0xA5 };
60 static const symbol s_0_15[2] = { 0xD9, 0xA6 };
61 static const symbol s_0_16[2] = { 0xD9, 0xA7 };
62 static const symbol s_0_17[2] = { 0xD9, 0xA8 };
63 static const symbol s_0_18[2] = { 0xD9, 0xA9 };
64 static const symbol s_0_19[3] = { 0xEF, 0xBA, 0x80 };
65 static const symbol s_0_20[3] = { 0xEF, 0xBA, 0x81 };
66 static const symbol s_0_21[3] = { 0xEF, 0xBA, 0x82 };
67 static const symbol s_0_22[3] = { 0xEF, 0xBA, 0x83 };
68 static const symbol s_0_23[3] = { 0xEF, 0xBA, 0x84 };
69 static const symbol s_0_24[3] = { 0xEF, 0xBA, 0x85 };
70 static const symbol s_0_25[3] = { 0xEF, 0xBA, 0x86 };
71 static const symbol s_0_26[3] = { 0xEF, 0xBA, 0x87 };
72 static const symbol s_0_27[3] = { 0xEF, 0xBA, 0x88 };
73 static const symbol s_0_28[3] = { 0xEF, 0xBA, 0x89 };
74 static const symbol s_0_29[3] = { 0xEF, 0xBA, 0x8A };
75 static const symbol s_0_30[3] = { 0xEF, 0xBA, 0x8B };
76 static const symbol s_0_31[3] = { 0xEF, 0xBA, 0x8C };
77 static const symbol s_0_32[3] = { 0xEF, 0xBA, 0x8D };
78 static const symbol s_0_33[3] = { 0xEF, 0xBA, 0x8E };
79 static const symbol s_0_34[3] = { 0xEF, 0xBA, 0x8F };
80 static const symbol s_0_35[3] = { 0xEF, 0xBA, 0x90 };
81 static const symbol s_0_36[3] = { 0xEF, 0xBA, 0x91 };
82 static const symbol s_0_37[3] = { 0xEF, 0xBA, 0x92 };
83 static const symbol s_0_38[3] = { 0xEF, 0xBA, 0x93 };
84 static const symbol s_0_39[3] = { 0xEF, 0xBA, 0x94 };
85 static const symbol s_0_40[3] = { 0xEF, 0xBA, 0x95 };
86 static const symbol s_0_41[3] = { 0xEF, 0xBA, 0x96 };
87 static const symbol s_0_42[3] = { 0xEF, 0xBA, 0x97 };
88 static const symbol s_0_43[3] = { 0xEF, 0xBA, 0x98 };
89 static const symbol s_0_44[3] = { 0xEF, 0xBA, 0x99 };
90 static const symbol s_0_45[3] = { 0xEF, 0xBA, 0x9A };
91 static const symbol s_0_46[3] = { 0xEF, 0xBA, 0x9B };
92 static const symbol s_0_47[3] = { 0xEF, 0xBA, 0x9C };
93 static const symbol s_0_48[3] = { 0xEF, 0xBA, 0x9D };
94 static const symbol s_0_49[3] = { 0xEF, 0xBA, 0x9E };
95 static const symbol s_0_50[3] = { 0xEF, 0xBA, 0x9F };
96 static const symbol s_0_51[3] = { 0xEF, 0xBA, 0xA0 };
97 static const symbol s_0_52[3] = { 0xEF, 0xBA, 0xA1 };
98 static const symbol s_0_53[3] = { 0xEF, 0xBA, 0xA2 };
99 static const symbol s_0_54[3] = { 0xEF, 0xBA, 0xA3 };
100 static const symbol s_0_55[3] = { 0xEF, 0xBA, 0xA4 };
101 static const symbol s_0_56[3] = { 0xEF, 0xBA, 0xA5 };
102 static const symbol s_0_57[3] = { 0xEF, 0xBA, 0xA6 };
103 static const symbol s_0_58[3] = { 0xEF, 0xBA, 0xA7 };
104 static const symbol s_0_59[3] = { 0xEF, 0xBA, 0xA8 };
105 static const symbol s_0_60[3] = { 0xEF, 0xBA, 0xA9 };
106 static const symbol s_0_61[3] = { 0xEF, 0xBA, 0xAA };
107 static const symbol s_0_62[3] = { 0xEF, 0xBA, 0xAB };
108 static const symbol s_0_63[3] = { 0xEF, 0xBA, 0xAC };
109 static const symbol s_0_64[3] = { 0xEF, 0xBA, 0xAD };
110 static const symbol s_0_65[3] = { 0xEF, 0xBA, 0xAE };
111 static const symbol s_0_66[3] = { 0xEF, 0xBA, 0xAF };
112 static const symbol s_0_67[3] = { 0xEF, 0xBA, 0xB0 };
113 static const symbol s_0_68[3] = { 0xEF, 0xBA, 0xB1 };
114 static const symbol s_0_69[3] = { 0xEF, 0xBA, 0xB2 };
115 static const symbol s_0_70[3] = { 0xEF, 0xBA, 0xB3 };
116 static const symbol s_0_71[3] = { 0xEF, 0xBA, 0xB4 };
117 static const symbol s_0_72[3] = { 0xEF, 0xBA, 0xB5 };
118 static const symbol s_0_73[3] = { 0xEF, 0xBA, 0xB6 };
119 static const symbol s_0_74[3] = { 0xEF, 0xBA, 0xB7 };
120 static const symbol s_0_75[3] = { 0xEF, 0xBA, 0xB8 };
121 static const symbol s_0_76[3] = { 0xEF, 0xBA, 0xB9 };
122 static const symbol s_0_77[3] = { 0xEF, 0xBA, 0xBA };
123 static const symbol s_0_78[3] = { 0xEF, 0xBA, 0xBB };
124 static const symbol s_0_79[3] = { 0xEF, 0xBA, 0xBC };
125 static const symbol s_0_80[3] = { 0xEF, 0xBA, 0xBD };
126 static const symbol s_0_81[3] = { 0xEF, 0xBA, 0xBE };
127 static const symbol s_0_82[3] = { 0xEF, 0xBA, 0xBF };
128 static const symbol s_0_83[3] = { 0xEF, 0xBB, 0x80 };
129 static const symbol s_0_84[3] = { 0xEF, 0xBB, 0x81 };
130 static const symbol s_0_85[3] = { 0xEF, 0xBB, 0x82 };
131 static const symbol s_0_86[3] = { 0xEF, 0xBB, 0x83 };
132 static const symbol s_0_87[3] = { 0xEF, 0xBB, 0x84 };
133 static const symbol s_0_88[3] = { 0xEF, 0xBB, 0x85 };
134 static const symbol s_0_89[3] = { 0xEF, 0xBB, 0x86 };
135 static const symbol s_0_90[3] = { 0xEF, 0xBB, 0x87 };
136 static const symbol s_0_91[3] = { 0xEF, 0xBB, 0x88 };
137 static const symbol s_0_92[3] = { 0xEF, 0xBB, 0x89 };
138 static const symbol s_0_93[3] = { 0xEF, 0xBB, 0x8A };
139 static const symbol s_0_94[3] = { 0xEF, 0xBB, 0x8B };
140 static const symbol s_0_95[3] = { 0xEF, 0xBB, 0x8C };
141 static const symbol s_0_96[3] = { 0xEF, 0xBB, 0x8D };
142 static const symbol s_0_97[3] = { 0xEF, 0xBB, 0x8E };
143 static const symbol s_0_98[3] = { 0xEF, 0xBB, 0x8F };
144 static const symbol s_0_99[3] = { 0xEF, 0xBB, 0x90 };
145 static const symbol s_0_100[3] = { 0xEF, 0xBB, 0x91 };
146 static const symbol s_0_101[3] = { 0xEF, 0xBB, 0x92 };
147 static const symbol s_0_102[3] = { 0xEF, 0xBB, 0x93 };
148 static const symbol s_0_103[3] = { 0xEF, 0xBB, 0x94 };
149 static const symbol s_0_104[3] = { 0xEF, 0xBB, 0x95 };
150 static const symbol s_0_105[3] = { 0xEF, 0xBB, 0x96 };
151 static const symbol s_0_106[3] = { 0xEF, 0xBB, 0x97 };
152 static const symbol s_0_107[3] = { 0xEF, 0xBB, 0x98 };
153 static const symbol s_0_108[3] = { 0xEF, 0xBB, 0x99 };
154 static const symbol s_0_109[3] = { 0xEF, 0xBB, 0x9A };
155 static const symbol s_0_110[3] = { 0xEF, 0xBB, 0x9B };
156 static const symbol s_0_111[3] = { 0xEF, 0xBB, 0x9C };
157 static const symbol s_0_112[3] = { 0xEF, 0xBB, 0x9D };
158 static const symbol s_0_113[3] = { 0xEF, 0xBB, 0x9E };
159 static const symbol s_0_114[3] = { 0xEF, 0xBB, 0x9F };
160 static const symbol s_0_115[3] = { 0xEF, 0xBB, 0xA0 };
161 static const symbol s_0_116[3] = { 0xEF, 0xBB, 0xA1 };
162 static const symbol s_0_117[3] = { 0xEF, 0xBB, 0xA2 };
163 static const symbol s_0_118[3] = { 0xEF, 0xBB, 0xA3 };
164 static const symbol s_0_119[3] = { 0xEF, 0xBB, 0xA4 };
165 static const symbol s_0_120[3] = { 0xEF, 0xBB, 0xA5 };
166 static const symbol s_0_121[3] = { 0xEF, 0xBB, 0xA6 };
167 static const symbol s_0_122[3] = { 0xEF, 0xBB, 0xA7 };
168 static const symbol s_0_123[3] = { 0xEF, 0xBB, 0xA8 };
169 static const symbol s_0_124[3] = { 0xEF, 0xBB, 0xA9 };
170 static const symbol s_0_125[3] = { 0xEF, 0xBB, 0xAA };
171 static const symbol s_0_126[3] = { 0xEF, 0xBB, 0xAB };
172 static const symbol s_0_127[3] = { 0xEF, 0xBB, 0xAC };
173 static const symbol s_0_128[3] = { 0xEF, 0xBB, 0xAD };
174 static const symbol s_0_129[3] = { 0xEF, 0xBB, 0xAE };
175 static const symbol s_0_130[3] = { 0xEF, 0xBB, 0xAF };
176 static const symbol s_0_131[3] = { 0xEF, 0xBB, 0xB0 };
177 static const symbol s_0_132[3] = { 0xEF, 0xBB, 0xB1 };
178 static const symbol s_0_133[3] = { 0xEF, 0xBB, 0xB2 };
179 static const symbol s_0_134[3] = { 0xEF, 0xBB, 0xB3 };
180 static const symbol s_0_135[3] = { 0xEF, 0xBB, 0xB4 };
181 static const symbol s_0_136[3] = { 0xEF, 0xBB, 0xB5 };
182 static const symbol s_0_137[3] = { 0xEF, 0xBB, 0xB6 };
183 static const symbol s_0_138[3] = { 0xEF, 0xBB, 0xB7 };
184 static const symbol s_0_139[3] = { 0xEF, 0xBB, 0xB8 };
185 static const symbol s_0_140[3] = { 0xEF, 0xBB, 0xB9 };
186 static const symbol s_0_141[3] = { 0xEF, 0xBB, 0xBA };
187 static const symbol s_0_142[3] = { 0xEF, 0xBB, 0xBB };
188 static const symbol s_0_143[3] = { 0xEF, 0xBB, 0xBC };
189 
190 static const struct among a_0[144] =
191 {
192 /*  0 */ { 2, s_0_0, -1, 1, 0},
193 /*  1 */ { 2, s_0_1, -1, 1, 0},
194 /*  2 */ { 2, s_0_2, -1, 1, 0},
195 /*  3 */ { 2, s_0_3, -1, 1, 0},
196 /*  4 */ { 2, s_0_4, -1, 1, 0},
197 /*  5 */ { 2, s_0_5, -1, 1, 0},
198 /*  6 */ { 2, s_0_6, -1, 1, 0},
199 /*  7 */ { 2, s_0_7, -1, 1, 0},
200 /*  8 */ { 2, s_0_8, -1, 1, 0},
201 /*  9 */ { 2, s_0_9, -1, 2, 0},
202 /* 10 */ { 2, s_0_10, -1, 3, 0},
203 /* 11 */ { 2, s_0_11, -1, 4, 0},
204 /* 12 */ { 2, s_0_12, -1, 5, 0},
205 /* 13 */ { 2, s_0_13, -1, 6, 0},
206 /* 14 */ { 2, s_0_14, -1, 7, 0},
207 /* 15 */ { 2, s_0_15, -1, 8, 0},
208 /* 16 */ { 2, s_0_16, -1, 9, 0},
209 /* 17 */ { 2, s_0_17, -1, 10, 0},
210 /* 18 */ { 2, s_0_18, -1, 11, 0},
211 /* 19 */ { 3, s_0_19, -1, 12, 0},
212 /* 20 */ { 3, s_0_20, -1, 16, 0},
213 /* 21 */ { 3, s_0_21, -1, 16, 0},
214 /* 22 */ { 3, s_0_22, -1, 13, 0},
215 /* 23 */ { 3, s_0_23, -1, 13, 0},
216 /* 24 */ { 3, s_0_24, -1, 17, 0},
217 /* 25 */ { 3, s_0_25, -1, 17, 0},
218 /* 26 */ { 3, s_0_26, -1, 14, 0},
219 /* 27 */ { 3, s_0_27, -1, 14, 0},
220 /* 28 */ { 3, s_0_28, -1, 15, 0},
221 /* 29 */ { 3, s_0_29, -1, 15, 0},
222 /* 30 */ { 3, s_0_30, -1, 15, 0},
223 /* 31 */ { 3, s_0_31, -1, 15, 0},
224 /* 32 */ { 3, s_0_32, -1, 18, 0},
225 /* 33 */ { 3, s_0_33, -1, 18, 0},
226 /* 34 */ { 3, s_0_34, -1, 19, 0},
227 /* 35 */ { 3, s_0_35, -1, 19, 0},
228 /* 36 */ { 3, s_0_36, -1, 19, 0},
229 /* 37 */ { 3, s_0_37, -1, 19, 0},
230 /* 38 */ { 3, s_0_38, -1, 20, 0},
231 /* 39 */ { 3, s_0_39, -1, 20, 0},
232 /* 40 */ { 3, s_0_40, -1, 21, 0},
233 /* 41 */ { 3, s_0_41, -1, 21, 0},
234 /* 42 */ { 3, s_0_42, -1, 21, 0},
235 /* 43 */ { 3, s_0_43, -1, 21, 0},
236 /* 44 */ { 3, s_0_44, -1, 22, 0},
237 /* 45 */ { 3, s_0_45, -1, 22, 0},
238 /* 46 */ { 3, s_0_46, -1, 22, 0},
239 /* 47 */ { 3, s_0_47, -1, 22, 0},
240 /* 48 */ { 3, s_0_48, -1, 23, 0},
241 /* 49 */ { 3, s_0_49, -1, 23, 0},
242 /* 50 */ { 3, s_0_50, -1, 23, 0},
243 /* 51 */ { 3, s_0_51, -1, 23, 0},
244 /* 52 */ { 3, s_0_52, -1, 24, 0},
245 /* 53 */ { 3, s_0_53, -1, 24, 0},
246 /* 54 */ { 3, s_0_54, -1, 24, 0},
247 /* 55 */ { 3, s_0_55, -1, 24, 0},
248 /* 56 */ { 3, s_0_56, -1, 25, 0},
249 /* 57 */ { 3, s_0_57, -1, 25, 0},
250 /* 58 */ { 3, s_0_58, -1, 25, 0},
251 /* 59 */ { 3, s_0_59, -1, 25, 0},
252 /* 60 */ { 3, s_0_60, -1, 26, 0},
253 /* 61 */ { 3, s_0_61, -1, 26, 0},
254 /* 62 */ { 3, s_0_62, -1, 27, 0},
255 /* 63 */ { 3, s_0_63, -1, 27, 0},
256 /* 64 */ { 3, s_0_64, -1, 28, 0},
257 /* 65 */ { 3, s_0_65, -1, 28, 0},
258 /* 66 */ { 3, s_0_66, -1, 29, 0},
259 /* 67 */ { 3, s_0_67, -1, 29, 0},
260 /* 68 */ { 3, s_0_68, -1, 30, 0},
261 /* 69 */ { 3, s_0_69, -1, 30, 0},
262 /* 70 */ { 3, s_0_70, -1, 30, 0},
263 /* 71 */ { 3, s_0_71, -1, 30, 0},
264 /* 72 */ { 3, s_0_72, -1, 31, 0},
265 /* 73 */ { 3, s_0_73, -1, 31, 0},
266 /* 74 */ { 3, s_0_74, -1, 31, 0},
267 /* 75 */ { 3, s_0_75, -1, 31, 0},
268 /* 76 */ { 3, s_0_76, -1, 32, 0},
269 /* 77 */ { 3, s_0_77, -1, 32, 0},
270 /* 78 */ { 3, s_0_78, -1, 32, 0},
271 /* 79 */ { 3, s_0_79, -1, 32, 0},
272 /* 80 */ { 3, s_0_80, -1, 33, 0},
273 /* 81 */ { 3, s_0_81, -1, 33, 0},
274 /* 82 */ { 3, s_0_82, -1, 33, 0},
275 /* 83 */ { 3, s_0_83, -1, 33, 0},
276 /* 84 */ { 3, s_0_84, -1, 34, 0},
277 /* 85 */ { 3, s_0_85, -1, 34, 0},
278 /* 86 */ { 3, s_0_86, -1, 34, 0},
279 /* 87 */ { 3, s_0_87, -1, 34, 0},
280 /* 88 */ { 3, s_0_88, -1, 35, 0},
281 /* 89 */ { 3, s_0_89, -1, 35, 0},
282 /* 90 */ { 3, s_0_90, -1, 35, 0},
283 /* 91 */ { 3, s_0_91, -1, 35, 0},
284 /* 92 */ { 3, s_0_92, -1, 36, 0},
285 /* 93 */ { 3, s_0_93, -1, 36, 0},
286 /* 94 */ { 3, s_0_94, -1, 36, 0},
287 /* 95 */ { 3, s_0_95, -1, 36, 0},
288 /* 96 */ { 3, s_0_96, -1, 37, 0},
289 /* 97 */ { 3, s_0_97, -1, 37, 0},
290 /* 98 */ { 3, s_0_98, -1, 37, 0},
291 /* 99 */ { 3, s_0_99, -1, 37, 0},
292 /*100 */ { 3, s_0_100, -1, 38, 0},
293 /*101 */ { 3, s_0_101, -1, 38, 0},
294 /*102 */ { 3, s_0_102, -1, 38, 0},
295 /*103 */ { 3, s_0_103, -1, 38, 0},
296 /*104 */ { 3, s_0_104, -1, 39, 0},
297 /*105 */ { 3, s_0_105, -1, 39, 0},
298 /*106 */ { 3, s_0_106, -1, 39, 0},
299 /*107 */ { 3, s_0_107, -1, 39, 0},
300 /*108 */ { 3, s_0_108, -1, 40, 0},
301 /*109 */ { 3, s_0_109, -1, 40, 0},
302 /*110 */ { 3, s_0_110, -1, 40, 0},
303 /*111 */ { 3, s_0_111, -1, 40, 0},
304 /*112 */ { 3, s_0_112, -1, 41, 0},
305 /*113 */ { 3, s_0_113, -1, 41, 0},
306 /*114 */ { 3, s_0_114, -1, 41, 0},
307 /*115 */ { 3, s_0_115, -1, 41, 0},
308 /*116 */ { 3, s_0_116, -1, 42, 0},
309 /*117 */ { 3, s_0_117, -1, 42, 0},
310 /*118 */ { 3, s_0_118, -1, 42, 0},
311 /*119 */ { 3, s_0_119, -1, 42, 0},
312 /*120 */ { 3, s_0_120, -1, 43, 0},
313 /*121 */ { 3, s_0_121, -1, 43, 0},
314 /*122 */ { 3, s_0_122, -1, 43, 0},
315 /*123 */ { 3, s_0_123, -1, 43, 0},
316 /*124 */ { 3, s_0_124, -1, 44, 0},
317 /*125 */ { 3, s_0_125, -1, 44, 0},
318 /*126 */ { 3, s_0_126, -1, 44, 0},
319 /*127 */ { 3, s_0_127, -1, 44, 0},
320 /*128 */ { 3, s_0_128, -1, 45, 0},
321 /*129 */ { 3, s_0_129, -1, 45, 0},
322 /*130 */ { 3, s_0_130, -1, 46, 0},
323 /*131 */ { 3, s_0_131, -1, 46, 0},
324 /*132 */ { 3, s_0_132, -1, 47, 0},
325 /*133 */ { 3, s_0_133, -1, 47, 0},
326 /*134 */ { 3, s_0_134, -1, 47, 0},
327 /*135 */ { 3, s_0_135, -1, 47, 0},
328 /*136 */ { 3, s_0_136, -1, 51, 0},
329 /*137 */ { 3, s_0_137, -1, 51, 0},
330 /*138 */ { 3, s_0_138, -1, 49, 0},
331 /*139 */ { 3, s_0_139, -1, 49, 0},
332 /*140 */ { 3, s_0_140, -1, 50, 0},
333 /*141 */ { 3, s_0_141, -1, 50, 0},
334 /*142 */ { 3, s_0_142, -1, 48, 0},
335 /*143 */ { 3, s_0_143, -1, 48, 0}
336 };
337 
338 static const symbol s_1_0[2] = { 0xD8, 0xA2 };
339 static const symbol s_1_1[2] = { 0xD8, 0xA3 };
340 static const symbol s_1_2[2] = { 0xD8, 0xA4 };
341 static const symbol s_1_3[2] = { 0xD8, 0xA5 };
342 static const symbol s_1_4[2] = { 0xD8, 0xA6 };
343 
344 static const struct among a_1[5] =
345 {
346 /*  0 */ { 2, s_1_0, -1, 1, 0},
347 /*  1 */ { 2, s_1_1, -1, 1, 0},
348 /*  2 */ { 2, s_1_2, -1, 1, 0},
349 /*  3 */ { 2, s_1_3, -1, 1, 0},
350 /*  4 */ { 2, s_1_4, -1, 1, 0}
351 };
352 
353 static const symbol s_2_0[2] = { 0xD8, 0xA2 };
354 static const symbol s_2_1[2] = { 0xD8, 0xA3 };
355 static const symbol s_2_2[2] = { 0xD8, 0xA4 };
356 static const symbol s_2_3[2] = { 0xD8, 0xA5 };
357 static const symbol s_2_4[2] = { 0xD8, 0xA6 };
358 
359 static const struct among a_2[5] =
360 {
361 /*  0 */ { 2, s_2_0, -1, 1, 0},
362 /*  1 */ { 2, s_2_1, -1, 1, 0},
363 /*  2 */ { 2, s_2_2, -1, 2, 0},
364 /*  3 */ { 2, s_2_3, -1, 1, 0},
365 /*  4 */ { 2, s_2_4, -1, 3, 0}
366 };
367 
368 static const symbol s_3_0[4] = { 0xD8, 0xA7, 0xD9, 0x84 };
369 static const symbol s_3_1[6] = { 0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84 };
370 static const symbol s_3_2[6] = { 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84 };
371 static const symbol s_3_3[4] = { 0xD9, 0x84, 0xD9, 0x84 };
372 
373 static const struct among a_3[4] =
374 {
375 /*  0 */ { 4, s_3_0, -1, 2, 0},
376 /*  1 */ { 6, s_3_1, -1, 1, 0},
377 /*  2 */ { 6, s_3_2, -1, 1, 0},
378 /*  3 */ { 4, s_3_3, -1, 2, 0}
379 };
380 
381 static const symbol s_4_0[4] = { 0xD8, 0xA3, 0xD8, 0xA2 };
382 static const symbol s_4_1[4] = { 0xD8, 0xA3, 0xD8, 0xA3 };
383 static const symbol s_4_2[4] = { 0xD8, 0xA3, 0xD8, 0xA4 };
384 static const symbol s_4_3[4] = { 0xD8, 0xA3, 0xD8, 0xA5 };
385 static const symbol s_4_4[4] = { 0xD8, 0xA3, 0xD8, 0xA7 };
386 
387 static const struct among a_4[5] =
388 {
389 /*  0 */ { 4, s_4_0, -1, 2, 0},
390 /*  1 */ { 4, s_4_1, -1, 1, 0},
391 /*  2 */ { 4, s_4_2, -1, 1, 0},
392 /*  3 */ { 4, s_4_3, -1, 4, 0},
393 /*  4 */ { 4, s_4_4, -1, 3, 0}
394 };
395 
396 static const symbol s_5_0[2] = { 0xD9, 0x81 };
397 static const symbol s_5_1[2] = { 0xD9, 0x88 };
398 
399 static const struct among a_5[2] =
400 {
401 /*  0 */ { 2, s_5_0, -1, 1, 0},
402 /*  1 */ { 2, s_5_1, -1, 1, 0}
403 };
404 
405 static const symbol s_6_0[4] = { 0xD8, 0xA7, 0xD9, 0x84 };
406 static const symbol s_6_1[6] = { 0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84 };
407 static const symbol s_6_2[6] = { 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84 };
408 static const symbol s_6_3[4] = { 0xD9, 0x84, 0xD9, 0x84 };
409 
410 static const struct among a_6[4] =
411 {
412 /*  0 */ { 4, s_6_0, -1, 2, 0},
413 /*  1 */ { 6, s_6_1, -1, 1, 0},
414 /*  2 */ { 6, s_6_2, -1, 1, 0},
415 /*  3 */ { 4, s_6_3, -1, 2, 0}
416 };
417 
418 static const symbol s_7_0[2] = { 0xD8, 0xA8 };
419 static const symbol s_7_1[4] = { 0xD8, 0xA8, 0xD8, 0xA8 };
420 static const symbol s_7_2[4] = { 0xD9, 0x83, 0xD9, 0x83 };
421 
422 static const struct among a_7[3] =
423 {
424 /*  0 */ { 2, s_7_0, -1, 1, 0},
425 /*  1 */ { 4, s_7_1, 0, 2, 0},
426 /*  2 */ { 4, s_7_2, -1, 3, 0}
427 };
428 
429 static const symbol s_8_0[4] = { 0xD8, 0xB3, 0xD8, 0xA3 };
430 static const symbol s_8_1[4] = { 0xD8, 0xB3, 0xD8, 0xAA };
431 static const symbol s_8_2[4] = { 0xD8, 0xB3, 0xD9, 0x86 };
432 static const symbol s_8_3[4] = { 0xD8, 0xB3, 0xD9, 0x8A };
433 
434 static const struct among a_8[4] =
435 {
436 /*  0 */ { 4, s_8_0, -1, 4, 0},
437 /*  1 */ { 4, s_8_1, -1, 2, 0},
438 /*  2 */ { 4, s_8_2, -1, 3, 0},
439 /*  3 */ { 4, s_8_3, -1, 1, 0}
440 };
441 
442 static const symbol s_9_0[6] = { 0xD8, 0xAA, 0xD8, 0xB3, 0xD8, 0xAA };
443 static const symbol s_9_1[6] = { 0xD9, 0x86, 0xD8, 0xB3, 0xD8, 0xAA };
444 static const symbol s_9_2[6] = { 0xD9, 0x8A, 0xD8, 0xB3, 0xD8, 0xAA };
445 
446 static const struct among a_9[3] =
447 {
448 /*  0 */ { 6, s_9_0, -1, 1, 0},
449 /*  1 */ { 6, s_9_1, -1, 1, 0},
450 /*  2 */ { 6, s_9_2, -1, 1, 0}
451 };
452 
453 static const symbol s_10_0[2] = { 0xD9, 0x83 };
454 static const symbol s_10_1[4] = { 0xD9, 0x83, 0xD9, 0x85 };
455 static const symbol s_10_2[4] = { 0xD9, 0x87, 0xD9, 0x85 };
456 static const symbol s_10_3[4] = { 0xD9, 0x87, 0xD9, 0x86 };
457 static const symbol s_10_4[2] = { 0xD9, 0x87 };
458 static const symbol s_10_5[2] = { 0xD9, 0x8A };
459 static const symbol s_10_6[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7 };
460 static const symbol s_10_7[6] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7 };
461 static const symbol s_10_8[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
462 static const symbol s_10_9[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
463 
464 static const struct among a_10[10] =
465 {
466 /*  0 */ { 2, s_10_0, -1, 1, 0},
467 /*  1 */ { 4, s_10_1, -1, 2, 0},
468 /*  2 */ { 4, s_10_2, -1, 2, 0},
469 /*  3 */ { 4, s_10_3, -1, 2, 0},
470 /*  4 */ { 2, s_10_4, -1, 1, 0},
471 /*  5 */ { 2, s_10_5, -1, 1, 0},
472 /*  6 */ { 6, s_10_6, -1, 3, 0},
473 /*  7 */ { 6, s_10_7, -1, 3, 0},
474 /*  8 */ { 4, s_10_8, -1, 2, 0},
475 /*  9 */ { 4, s_10_9, -1, 2, 0}
476 };
477 
478 static const symbol s_11_0[2] = { 0xD9, 0x86 };
479 
480 static const struct among a_11[1] =
481 {
482 /*  0 */ { 2, s_11_0, -1, 1, 0}
483 };
484 
485 static const symbol s_12_0[2] = { 0xD9, 0x88 };
486 static const symbol s_12_1[2] = { 0xD9, 0x8A };
487 static const symbol s_12_2[2] = { 0xD8, 0xA7 };
488 
489 static const struct among a_12[3] =
490 {
491 /*  0 */ { 2, s_12_0, -1, 1, 0},
492 /*  1 */ { 2, s_12_1, -1, 1, 0},
493 /*  2 */ { 2, s_12_2, -1, 1, 0}
494 };
495 
496 static const symbol s_13_0[4] = { 0xD8, 0xA7, 0xD8, 0xAA };
497 
498 static const struct among a_13[1] =
499 {
500 /*  0 */ { 4, s_13_0, -1, 1, 0}
501 };
502 
503 static const symbol s_14_0[2] = { 0xD8, 0xAA };
504 
505 static const struct among a_14[1] =
506 {
507 /*  0 */ { 2, s_14_0, -1, 1, 0}
508 };
509 
510 static const symbol s_15_0[2] = { 0xD8, 0xA9 };
511 
512 static const struct among a_15[1] =
513 {
514 /*  0 */ { 2, s_15_0, -1, 1, 0}
515 };
516 
517 static const symbol s_16_0[2] = { 0xD9, 0x8A };
518 
519 static const struct among a_16[1] =
520 {
521 /*  0 */ { 2, s_16_0, -1, 1, 0}
522 };
523 
524 static const symbol s_17_0[2] = { 0xD9, 0x83 };
525 static const symbol s_17_1[4] = { 0xD9, 0x83, 0xD9, 0x85 };
526 static const symbol s_17_2[4] = { 0xD9, 0x87, 0xD9, 0x85 };
527 static const symbol s_17_3[4] = { 0xD9, 0x83, 0xD9, 0x86 };
528 static const symbol s_17_4[4] = { 0xD9, 0x87, 0xD9, 0x86 };
529 static const symbol s_17_5[2] = { 0xD9, 0x87 };
530 static const symbol s_17_6[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x88 };
531 static const symbol s_17_7[4] = { 0xD9, 0x86, 0xD9, 0x8A };
532 static const symbol s_17_8[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7 };
533 static const symbol s_17_9[6] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7 };
534 static const symbol s_17_10[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
535 static const symbol s_17_11[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
536 
537 static const struct among a_17[12] =
538 {
539 /*  0 */ { 2, s_17_0, -1, 1, 0},
540 /*  1 */ { 4, s_17_1, -1, 2, 0},
541 /*  2 */ { 4, s_17_2, -1, 2, 0},
542 /*  3 */ { 4, s_17_3, -1, 2, 0},
543 /*  4 */ { 4, s_17_4, -1, 2, 0},
544 /*  5 */ { 2, s_17_5, -1, 1, 0},
545 /*  6 */ { 6, s_17_6, -1, 3, 0},
546 /*  7 */ { 4, s_17_7, -1, 2, 0},
547 /*  8 */ { 6, s_17_8, -1, 3, 0},
548 /*  9 */ { 6, s_17_9, -1, 3, 0},
549 /* 10 */ { 4, s_17_10, -1, 2, 0},
550 /* 11 */ { 4, s_17_11, -1, 2, 0}
551 };
552 
553 static const symbol s_18_0[2] = { 0xD9, 0x86 };
554 static const symbol s_18_1[4] = { 0xD9, 0x88, 0xD9, 0x86 };
555 static const symbol s_18_2[4] = { 0xD9, 0x8A, 0xD9, 0x86 };
556 static const symbol s_18_3[4] = { 0xD8, 0xA7, 0xD9, 0x86 };
557 static const symbol s_18_4[4] = { 0xD8, 0xAA, 0xD9, 0x86 };
558 static const symbol s_18_5[2] = { 0xD9, 0x8A };
559 static const symbol s_18_6[2] = { 0xD8, 0xA7 };
560 static const symbol s_18_7[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xA7 };
561 static const symbol s_18_8[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
562 static const symbol s_18_9[4] = { 0xD8, 0xAA, 0xD8, 0xA7 };
563 static const symbol s_18_10[2] = { 0xD8, 0xAA };
564 
565 static const struct among a_18[11] =
566 {
567 /*  0 */ { 2, s_18_0, -1, 1, 0},
568 /*  1 */ { 4, s_18_1, 0, 3, 0},
569 /*  2 */ { 4, s_18_2, 0, 3, 0},
570 /*  3 */ { 4, s_18_3, 0, 3, 0},
571 /*  4 */ { 4, s_18_4, 0, 2, 0},
572 /*  5 */ { 2, s_18_5, -1, 1, 0},
573 /*  6 */ { 2, s_18_6, -1, 1, 0},
574 /*  7 */ { 6, s_18_7, 6, 4, 0},
575 /*  8 */ { 4, s_18_8, 6, 2, 0},
576 /*  9 */ { 4, s_18_9, 6, 2, 0},
577 /* 10 */ { 2, s_18_10, -1, 1, 0}
578 };
579 
580 static const symbol s_19_0[4] = { 0xD8, 0xAA, 0xD9, 0x85 };
581 static const symbol s_19_1[4] = { 0xD9, 0x88, 0xD8, 0xA7 };
582 
583 static const struct among a_19[2] =
584 {
585 /*  0 */ { 4, s_19_0, -1, 1, 0},
586 /*  1 */ { 4, s_19_1, -1, 1, 0}
587 };
588 
589 static const symbol s_20_0[2] = { 0xD9, 0x88 };
590 static const symbol s_20_1[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x88 };
591 
592 static const struct among a_20[2] =
593 {
594 /*  0 */ { 2, s_20_0, -1, 1, 0},
595 /*  1 */ { 6, s_20_1, 0, 2, 0}
596 };
597 
598 static const symbol s_21_0[2] = { 0xD9, 0x89 };
599 
600 static const struct among a_21[1] =
601 {
602 /*  0 */ { 2, s_21_0, -1, 1, 0}
603 };
604 
605 static const symbol s_0[] = { '0' };
606 static const symbol s_1[] = { '1' };
607 static const symbol s_2[] = { '2' };
608 static const symbol s_3[] = { '3' };
609 static const symbol s_4[] = { '4' };
610 static const symbol s_5[] = { '5' };
611 static const symbol s_6[] = { '6' };
612 static const symbol s_7[] = { '7' };
613 static const symbol s_8[] = { '8' };
614 static const symbol s_9[] = { '9' };
615 static const symbol s_10[] = { 0xD8, 0xA1 };
616 static const symbol s_11[] = { 0xD8, 0xA3 };
617 static const symbol s_12[] = { 0xD8, 0xA5 };
618 static const symbol s_13[] = { 0xD8, 0xA6 };
619 static const symbol s_14[] = { 0xD8, 0xA2 };
620 static const symbol s_15[] = { 0xD8, 0xA4 };
621 static const symbol s_16[] = { 0xD8, 0xA7 };
622 static const symbol s_17[] = { 0xD8, 0xA8 };
623 static const symbol s_18[] = { 0xD8, 0xA9 };
624 static const symbol s_19[] = { 0xD8, 0xAA };
625 static const symbol s_20[] = { 0xD8, 0xAB };
626 static const symbol s_21[] = { 0xD8, 0xAC };
627 static const symbol s_22[] = { 0xD8, 0xAD };
628 static const symbol s_23[] = { 0xD8, 0xAE };
629 static const symbol s_24[] = { 0xD8, 0xAF };
630 static const symbol s_25[] = { 0xD8, 0xB0 };
631 static const symbol s_26[] = { 0xD8, 0xB1 };
632 static const symbol s_27[] = { 0xD8, 0xB2 };
633 static const symbol s_28[] = { 0xD8, 0xB3 };
634 static const symbol s_29[] = { 0xD8, 0xB4 };
635 static const symbol s_30[] = { 0xD8, 0xB5 };
636 static const symbol s_31[] = { 0xD8, 0xB6 };
637 static const symbol s_32[] = { 0xD8, 0xB7 };
638 static const symbol s_33[] = { 0xD8, 0xB8 };
639 static const symbol s_34[] = { 0xD8, 0xB9 };
640 static const symbol s_35[] = { 0xD8, 0xBA };
641 static const symbol s_36[] = { 0xD9, 0x81 };
642 static const symbol s_37[] = { 0xD9, 0x82 };
643 static const symbol s_38[] = { 0xD9, 0x83 };
644 static const symbol s_39[] = { 0xD9, 0x84 };
645 static const symbol s_40[] = { 0xD9, 0x85 };
646 static const symbol s_41[] = { 0xD9, 0x86 };
647 static const symbol s_42[] = { 0xD9, 0x87 };
648 static const symbol s_43[] = { 0xD9, 0x88 };
649 static const symbol s_44[] = { 0xD9, 0x89 };
650 static const symbol s_45[] = { 0xD9, 0x8A };
651 static const symbol s_46[] = { 0xD9, 0x84, 0xD8, 0xA7 };
652 static const symbol s_47[] = { 0xD9, 0x84, 0xD8, 0xA3 };
653 static const symbol s_48[] = { 0xD9, 0x84, 0xD8, 0xA5 };
654 static const symbol s_49[] = { 0xD9, 0x84, 0xD8, 0xA2 };
655 static const symbol s_50[] = { 0xD8, 0xA1 };
656 static const symbol s_51[] = { 0xD8, 0xA7 };
657 static const symbol s_52[] = { 0xD9, 0x88 };
658 static const symbol s_53[] = { 0xD9, 0x8A };
659 static const symbol s_54[] = { 0xD8, 0xA3 };
660 static const symbol s_55[] = { 0xD8, 0xA2 };
661 static const symbol s_56[] = { 0xD8, 0xA7 };
662 static const symbol s_57[] = { 0xD8, 0xA5 };
663 static const symbol s_58[] = { 0xD9, 0x81, 0xD8, 0xA7 };
664 static const symbol s_59[] = { 0xD9, 0x88, 0xD8, 0xA7 };
665 static const symbol s_60[] = { 0xD8, 0xA8, 0xD8, 0xA7 };
666 static const symbol s_61[] = { 0xD8, 0xA8 };
667 static const symbol s_62[] = { 0xD9, 0x83 };
668 static const symbol s_63[] = { 0xD9, 0x8A };
669 static const symbol s_64[] = { 0xD8, 0xAA };
670 static const symbol s_65[] = { 0xD9, 0x86 };
671 static const symbol s_66[] = { 0xD8, 0xA3 };
672 static const symbol s_67[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA };
673 static const symbol s_68[] = { 0xD9, 0x8A };
674 
r_Normalize_pre(struct SN_env * z)675 static int r_Normalize_pre(struct SN_env * z) { /* forwardmode */
676     int among_var;
677     {   int c1 = z->c; /* do, line 247 */
678 /* repeat, line 247 */
679 
680         while(1) {            int c2 = z->c;
681             {   int c3 = z->c; /* or, line 311 */
682                 z->bra = z->c; /* [, line 249 */
683                 among_var = find_among(z, a_0, 144); /* substring, line 249 */
684                 if (!(among_var)) goto lab3;
685                 z->ket = z->c; /* ], line 249 */
686                 switch (among_var) { /* among, line 249 */
687                     case 1:
688                         {   int ret = slice_del(z); /* delete, line 250 */
689                             if (ret < 0) return ret;
690                         }
691                         break;
692                     case 2:
693                         {   int ret = slice_from_s(z, 1, s_0); /* <-, line 254 */
694                             if (ret < 0) return ret;
695                         }
696                         break;
697                     case 3:
698                         {   int ret = slice_from_s(z, 1, s_1); /* <-, line 255 */
699                             if (ret < 0) return ret;
700                         }
701                         break;
702                     case 4:
703                         {   int ret = slice_from_s(z, 1, s_2); /* <-, line 256 */
704                             if (ret < 0) return ret;
705                         }
706                         break;
707                     case 5:
708                         {   int ret = slice_from_s(z, 1, s_3); /* <-, line 257 */
709                             if (ret < 0) return ret;
710                         }
711                         break;
712                     case 6:
713                         {   int ret = slice_from_s(z, 1, s_4); /* <-, line 258 */
714                             if (ret < 0) return ret;
715                         }
716                         break;
717                     case 7:
718                         {   int ret = slice_from_s(z, 1, s_5); /* <-, line 259 */
719                             if (ret < 0) return ret;
720                         }
721                         break;
722                     case 8:
723                         {   int ret = slice_from_s(z, 1, s_6); /* <-, line 260 */
724                             if (ret < 0) return ret;
725                         }
726                         break;
727                     case 9:
728                         {   int ret = slice_from_s(z, 1, s_7); /* <-, line 261 */
729                             if (ret < 0) return ret;
730                         }
731                         break;
732                     case 10:
733                         {   int ret = slice_from_s(z, 1, s_8); /* <-, line 262 */
734                             if (ret < 0) return ret;
735                         }
736                         break;
737                     case 11:
738                         {   int ret = slice_from_s(z, 1, s_9); /* <-, line 263 */
739                             if (ret < 0) return ret;
740                         }
741                         break;
742                     case 12:
743                         {   int ret = slice_from_s(z, 2, s_10); /* <-, line 266 */
744                             if (ret < 0) return ret;
745                         }
746                         break;
747                     case 13:
748                         {   int ret = slice_from_s(z, 2, s_11); /* <-, line 267 */
749                             if (ret < 0) return ret;
750                         }
751                         break;
752                     case 14:
753                         {   int ret = slice_from_s(z, 2, s_12); /* <-, line 268 */
754                             if (ret < 0) return ret;
755                         }
756                         break;
757                     case 15:
758                         {   int ret = slice_from_s(z, 2, s_13); /* <-, line 269 */
759                             if (ret < 0) return ret;
760                         }
761                         break;
762                     case 16:
763                         {   int ret = slice_from_s(z, 2, s_14); /* <-, line 270 */
764                             if (ret < 0) return ret;
765                         }
766                         break;
767                     case 17:
768                         {   int ret = slice_from_s(z, 2, s_15); /* <-, line 271 */
769                             if (ret < 0) return ret;
770                         }
771                         break;
772                     case 18:
773                         {   int ret = slice_from_s(z, 2, s_16); /* <-, line 272 */
774                             if (ret < 0) return ret;
775                         }
776                         break;
777                     case 19:
778                         {   int ret = slice_from_s(z, 2, s_17); /* <-, line 273 */
779                             if (ret < 0) return ret;
780                         }
781                         break;
782                     case 20:
783                         {   int ret = slice_from_s(z, 2, s_18); /* <-, line 274 */
784                             if (ret < 0) return ret;
785                         }
786                         break;
787                     case 21:
788                         {   int ret = slice_from_s(z, 2, s_19); /* <-, line 275 */
789                             if (ret < 0) return ret;
790                         }
791                         break;
792                     case 22:
793                         {   int ret = slice_from_s(z, 2, s_20); /* <-, line 276 */
794                             if (ret < 0) return ret;
795                         }
796                         break;
797                     case 23:
798                         {   int ret = slice_from_s(z, 2, s_21); /* <-, line 277 */
799                             if (ret < 0) return ret;
800                         }
801                         break;
802                     case 24:
803                         {   int ret = slice_from_s(z, 2, s_22); /* <-, line 278 */
804                             if (ret < 0) return ret;
805                         }
806                         break;
807                     case 25:
808                         {   int ret = slice_from_s(z, 2, s_23); /* <-, line 279 */
809                             if (ret < 0) return ret;
810                         }
811                         break;
812                     case 26:
813                         {   int ret = slice_from_s(z, 2, s_24); /* <-, line 280 */
814                             if (ret < 0) return ret;
815                         }
816                         break;
817                     case 27:
818                         {   int ret = slice_from_s(z, 2, s_25); /* <-, line 281 */
819                             if (ret < 0) return ret;
820                         }
821                         break;
822                     case 28:
823                         {   int ret = slice_from_s(z, 2, s_26); /* <-, line 282 */
824                             if (ret < 0) return ret;
825                         }
826                         break;
827                     case 29:
828                         {   int ret = slice_from_s(z, 2, s_27); /* <-, line 283 */
829                             if (ret < 0) return ret;
830                         }
831                         break;
832                     case 30:
833                         {   int ret = slice_from_s(z, 2, s_28); /* <-, line 284 */
834                             if (ret < 0) return ret;
835                         }
836                         break;
837                     case 31:
838                         {   int ret = slice_from_s(z, 2, s_29); /* <-, line 285 */
839                             if (ret < 0) return ret;
840                         }
841                         break;
842                     case 32:
843                         {   int ret = slice_from_s(z, 2, s_30); /* <-, line 286 */
844                             if (ret < 0) return ret;
845                         }
846                         break;
847                     case 33:
848                         {   int ret = slice_from_s(z, 2, s_31); /* <-, line 287 */
849                             if (ret < 0) return ret;
850                         }
851                         break;
852                     case 34:
853                         {   int ret = slice_from_s(z, 2, s_32); /* <-, line 288 */
854                             if (ret < 0) return ret;
855                         }
856                         break;
857                     case 35:
858                         {   int ret = slice_from_s(z, 2, s_33); /* <-, line 289 */
859                             if (ret < 0) return ret;
860                         }
861                         break;
862                     case 36:
863                         {   int ret = slice_from_s(z, 2, s_34); /* <-, line 290 */
864                             if (ret < 0) return ret;
865                         }
866                         break;
867                     case 37:
868                         {   int ret = slice_from_s(z, 2, s_35); /* <-, line 291 */
869                             if (ret < 0) return ret;
870                         }
871                         break;
872                     case 38:
873                         {   int ret = slice_from_s(z, 2, s_36); /* <-, line 292 */
874                             if (ret < 0) return ret;
875                         }
876                         break;
877                     case 39:
878                         {   int ret = slice_from_s(z, 2, s_37); /* <-, line 293 */
879                             if (ret < 0) return ret;
880                         }
881                         break;
882                     case 40:
883                         {   int ret = slice_from_s(z, 2, s_38); /* <-, line 294 */
884                             if (ret < 0) return ret;
885                         }
886                         break;
887                     case 41:
888                         {   int ret = slice_from_s(z, 2, s_39); /* <-, line 295 */
889                             if (ret < 0) return ret;
890                         }
891                         break;
892                     case 42:
893                         {   int ret = slice_from_s(z, 2, s_40); /* <-, line 296 */
894                             if (ret < 0) return ret;
895                         }
896                         break;
897                     case 43:
898                         {   int ret = slice_from_s(z, 2, s_41); /* <-, line 297 */
899                             if (ret < 0) return ret;
900                         }
901                         break;
902                     case 44:
903                         {   int ret = slice_from_s(z, 2, s_42); /* <-, line 298 */
904                             if (ret < 0) return ret;
905                         }
906                         break;
907                     case 45:
908                         {   int ret = slice_from_s(z, 2, s_43); /* <-, line 299 */
909                             if (ret < 0) return ret;
910                         }
911                         break;
912                     case 46:
913                         {   int ret = slice_from_s(z, 2, s_44); /* <-, line 300 */
914                             if (ret < 0) return ret;
915                         }
916                         break;
917                     case 47:
918                         {   int ret = slice_from_s(z, 2, s_45); /* <-, line 301 */
919                             if (ret < 0) return ret;
920                         }
921                         break;
922                     case 48:
923                         {   int ret = slice_from_s(z, 4, s_46); /* <-, line 304 */
924                             if (ret < 0) return ret;
925                         }
926                         break;
927                     case 49:
928                         {   int ret = slice_from_s(z, 4, s_47); /* <-, line 305 */
929                             if (ret < 0) return ret;
930                         }
931                         break;
932                     case 50:
933                         {   int ret = slice_from_s(z, 4, s_48); /* <-, line 306 */
934                             if (ret < 0) return ret;
935                         }
936                         break;
937                     case 51:
938                         {   int ret = slice_from_s(z, 4, s_49); /* <-, line 307 */
939                             if (ret < 0) return ret;
940                         }
941                         break;
942                 }
943                 goto lab2;
944             lab3:
945                 z->c = c3;
946                 {   int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
947                     if (ret < 0) goto lab1;
948                     z->c = ret; /* next, line 312 */
949                 }
950             }
951         lab2:
952             continue;
953         lab1:
954             z->c = c2;
955             break;
956         }
957         z->c = c1;
958     }
959     return 1;
960 }
961 
r_Normalize_post(struct SN_env * z)962 static int r_Normalize_post(struct SN_env * z) { /* forwardmode */
963     int among_var;
964     {   int c1 = z->c; /* do, line 318 */
965         z->lb = z->c; z->c = z->l; /* backwards, line 320 */
966 
967         z->ket = z->c; /* [, line 321 */
968         if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((124 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0; /* substring, line 321 */
969         if (!(find_among_b(z, a_1, 5))) goto lab0;
970         z->bra = z->c; /* ], line 321 */
971         {   int ret = slice_from_s(z, 2, s_50); /* <-, line 322 */
972             if (ret < 0) return ret;
973         }
974         z->c = z->lb;
975     lab0:
976         z->c = c1;
977     }
978     {   int c2 = z->c; /* do, line 329 */
979 /* repeat, line 329 */
980 
981         while(1) {            int c3 = z->c;
982             {   int c4 = z->c; /* or, line 338 */
983                 z->bra = z->c; /* [, line 332 */
984                 if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((124 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab4; /* substring, line 332 */
985                 among_var = find_among(z, a_2, 5);
986                 if (!(among_var)) goto lab4;
987                 z->ket = z->c; /* ], line 332 */
988                 switch (among_var) { /* among, line 332 */
989                     case 1:
990                         {   int ret = slice_from_s(z, 2, s_51); /* <-, line 333 */
991                             if (ret < 0) return ret;
992                         }
993                         break;
994                     case 2:
995                         {   int ret = slice_from_s(z, 2, s_52); /* <-, line 334 */
996                             if (ret < 0) return ret;
997                         }
998                         break;
999                     case 3:
1000                         {   int ret = slice_from_s(z, 2, s_53); /* <-, line 335 */
1001                             if (ret < 0) return ret;
1002                         }
1003                         break;
1004                 }
1005                 goto lab3;
1006             lab4:
1007                 z->c = c4;
1008                 {   int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
1009                     if (ret < 0) goto lab2;
1010                     z->c = ret; /* next, line 339 */
1011                 }
1012             }
1013         lab3:
1014             continue;
1015         lab2:
1016             z->c = c3;
1017             break;
1018         }
1019         z->c = c2;
1020     }
1021     return 1;
1022 }
1023 
r_Checks1(struct SN_env * z)1024 static int r_Checks1(struct SN_env * z) { /* forwardmode */
1025     int among_var;
1026     z->bra = z->c; /* [, line 345 */
1027     if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0; /* substring, line 345 */
1028     among_var = find_among(z, a_3, 4);
1029     if (!(among_var)) return 0;
1030     z->ket = z->c; /* ], line 345 */
1031     switch (among_var) { /* among, line 345 */
1032         case 1:
1033             if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 346 */
1034             z->B[0] = 1; /* set is_noun, line 346 */
1035             z->B[1] = 0; /* unset is_verb, line 346 */
1036             z->B[2] = 1; /* set is_defined, line 346 */
1037             break;
1038         case 2:
1039             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 347 */
1040             z->B[0] = 1; /* set is_noun, line 347 */
1041             z->B[1] = 0; /* unset is_verb, line 347 */
1042             z->B[2] = 1; /* set is_defined, line 347 */
1043             break;
1044     }
1045     return 1;
1046 }
1047 
r_Prefix_Step1(struct SN_env * z)1048 static int r_Prefix_Step1(struct SN_env * z) { /* forwardmode */
1049     int among_var;
1050     z->bra = z->c; /* [, line 354 */
1051     if (z->c + 3 >= z->l || z->p[z->c + 3] >> 5 != 5 || !((188 >> (z->p[z->c + 3] & 0x1f)) & 1)) return 0; /* substring, line 354 */
1052     among_var = find_among(z, a_4, 5);
1053     if (!(among_var)) return 0;
1054     z->ket = z->c; /* ], line 354 */
1055     switch (among_var) { /* among, line 354 */
1056         case 1:
1057             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 355 */
1058             {   int ret = slice_from_s(z, 2, s_54); /* <-, line 355 */
1059                 if (ret < 0) return ret;
1060             }
1061             break;
1062         case 2:
1063             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 356 */
1064             {   int ret = slice_from_s(z, 2, s_55); /* <-, line 356 */
1065                 if (ret < 0) return ret;
1066             }
1067             break;
1068         case 3:
1069             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 358 */
1070             {   int ret = slice_from_s(z, 2, s_56); /* <-, line 358 */
1071                 if (ret < 0) return ret;
1072             }
1073             break;
1074         case 4:
1075             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 359 */
1076             {   int ret = slice_from_s(z, 2, s_57); /* <-, line 359 */
1077                 if (ret < 0) return ret;
1078             }
1079             break;
1080     }
1081     return 1;
1082 }
1083 
r_Prefix_Step2(struct SN_env * z)1084 static int r_Prefix_Step2(struct SN_env * z) { /* forwardmode */
1085     {   int c1 = z->c; /* not, line 365 */
1086         if (!(eq_s(z, 4, s_58))) goto lab0; /* literal, line 365 */
1087         return 0;
1088     lab0:
1089         z->c = c1;
1090     }
1091     {   int c2 = z->c; /* not, line 366 */
1092         if (!(eq_s(z, 4, s_59))) goto lab1; /* literal, line 366 */
1093         return 0;
1094     lab1:
1095         z->c = c2;
1096     }
1097     z->bra = z->c; /* [, line 367 */
1098     if (z->c + 1 >= z->l || (z->p[z->c + 1] != 129 && z->p[z->c + 1] != 136)) return 0; /* substring, line 367 */
1099     if (!(find_among(z, a_5, 2))) return 0;
1100     z->ket = z->c; /* ], line 367 */
1101     if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 368 */
1102     {   int ret = slice_del(z); /* delete, line 368 */
1103         if (ret < 0) return ret;
1104     }
1105     return 1;
1106 }
1107 
r_Prefix_Step3a_Noun(struct SN_env * z)1108 static int r_Prefix_Step3a_Noun(struct SN_env * z) { /* forwardmode */
1109     int among_var;
1110     z->bra = z->c; /* [, line 374 */
1111     if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0; /* substring, line 374 */
1112     among_var = find_among(z, a_6, 4);
1113     if (!(among_var)) return 0;
1114     z->ket = z->c; /* ], line 374 */
1115     switch (among_var) { /* among, line 374 */
1116         case 1:
1117             if (!(len_utf8(z->p) > 5)) return 0; /* $(<integer expression> > <integer expression>), line 375 */
1118             {   int ret = slice_del(z); /* delete, line 375 */
1119                 if (ret < 0) return ret;
1120             }
1121             break;
1122         case 2:
1123             if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 376 */
1124             {   int ret = slice_del(z); /* delete, line 376 */
1125                 if (ret < 0) return ret;
1126             }
1127             break;
1128     }
1129     return 1;
1130 }
1131 
r_Prefix_Step3b_Noun(struct SN_env * z)1132 static int r_Prefix_Step3b_Noun(struct SN_env * z) { /* forwardmode */
1133     int among_var;
1134     {   int c1 = z->c; /* not, line 381 */
1135         if (!(eq_s(z, 4, s_60))) goto lab0; /* literal, line 381 */
1136         return 0;
1137     lab0:
1138         z->c = c1;
1139     }
1140     z->bra = z->c; /* [, line 382 */
1141     if (z->c + 1 >= z->l || (z->p[z->c + 1] != 168 && z->p[z->c + 1] != 131)) return 0; /* substring, line 382 */
1142     among_var = find_among(z, a_7, 3);
1143     if (!(among_var)) return 0;
1144     z->ket = z->c; /* ], line 382 */
1145     switch (among_var) { /* among, line 382 */
1146         case 1:
1147             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 383 */
1148             {   int ret = slice_del(z); /* delete, line 383 */
1149                 if (ret < 0) return ret;
1150             }
1151             break;
1152         case 2:
1153             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 385 */
1154             {   int ret = slice_from_s(z, 2, s_61); /* <-, line 385 */
1155                 if (ret < 0) return ret;
1156             }
1157             break;
1158         case 3:
1159             if (!(len_utf8(z->p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 386 */
1160             {   int ret = slice_from_s(z, 2, s_62); /* <-, line 386 */
1161                 if (ret < 0) return ret;
1162             }
1163             break;
1164     }
1165     return 1;
1166 }
1167 
r_Prefix_Step3_Verb(struct SN_env * z)1168 static int r_Prefix_Step3_Verb(struct SN_env * z) { /* forwardmode */
1169     int among_var;
1170     z->bra = z->c; /* [, line 392 */
1171     among_var = find_among(z, a_8, 4); /* substring, line 392 */
1172     if (!(among_var)) return 0;
1173     z->ket = z->c; /* ], line 392 */
1174     switch (among_var) { /* among, line 392 */
1175         case 1:
1176             if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 394 */
1177             {   int ret = slice_from_s(z, 2, s_63); /* <-, line 394 */
1178                 if (ret < 0) return ret;
1179             }
1180             break;
1181         case 2:
1182             if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 395 */
1183             {   int ret = slice_from_s(z, 2, s_64); /* <-, line 395 */
1184                 if (ret < 0) return ret;
1185             }
1186             break;
1187         case 3:
1188             if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 396 */
1189             {   int ret = slice_from_s(z, 2, s_65); /* <-, line 396 */
1190                 if (ret < 0) return ret;
1191             }
1192             break;
1193         case 4:
1194             if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 397 */
1195             {   int ret = slice_from_s(z, 2, s_66); /* <-, line 397 */
1196                 if (ret < 0) return ret;
1197             }
1198             break;
1199     }
1200     return 1;
1201 }
1202 
r_Prefix_Step4_Verb(struct SN_env * z)1203 static int r_Prefix_Step4_Verb(struct SN_env * z) { /* forwardmode */
1204     z->bra = z->c; /* [, line 402 */
1205     if (z->c + 5 >= z->l || z->p[z->c + 5] != 170) return 0; /* substring, line 402 */
1206     if (!(find_among(z, a_9, 3))) return 0;
1207     z->ket = z->c; /* ], line 402 */
1208     if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 403 */
1209     z->B[1] = 1; /* set is_verb, line 403 */
1210     z->B[0] = 0; /* unset is_noun, line 403 */
1211     {   int ret = slice_from_s(z, 6, s_67); /* <-, line 403 */
1212         if (ret < 0) return ret;
1213     }
1214     return 1;
1215 }
1216 
r_Suffix_Noun_Step1a(struct SN_env * z)1217 static int r_Suffix_Noun_Step1a(struct SN_env * z) { /* backwardmode */
1218     int among_var;
1219     z->ket = z->c; /* [, line 411 */
1220     among_var = find_among_b(z, a_10, 10); /* substring, line 411 */
1221     if (!(among_var)) return 0;
1222     z->bra = z->c; /* ], line 411 */
1223     switch (among_var) { /* among, line 411 */
1224         case 1:
1225             if (!(len_utf8(z->p) >= 4)) return 0; /* $(<integer expression> >= <integer expression>), line 412 */
1226             {   int ret = slice_del(z); /* delete, line 412 */
1227                 if (ret < 0) return ret;
1228             }
1229             break;
1230         case 2:
1231             if (!(len_utf8(z->p) >= 5)) return 0; /* $(<integer expression> >= <integer expression>), line 413 */
1232             {   int ret = slice_del(z); /* delete, line 413 */
1233                 if (ret < 0) return ret;
1234             }
1235             break;
1236         case 3:
1237             if (!(len_utf8(z->p) >= 6)) return 0; /* $(<integer expression> >= <integer expression>), line 414 */
1238             {   int ret = slice_del(z); /* delete, line 414 */
1239                 if (ret < 0) return ret;
1240             }
1241             break;
1242     }
1243     return 1;
1244 }
1245 
r_Suffix_Noun_Step1b(struct SN_env * z)1246 static int r_Suffix_Noun_Step1b(struct SN_env * z) { /* backwardmode */
1247     z->ket = z->c; /* [, line 418 */
1248     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 134) return 0; /* substring, line 418 */
1249     if (!(find_among_b(z, a_11, 1))) return 0;
1250     z->bra = z->c; /* ], line 418 */
1251     if (!(len_utf8(z->p) > 5)) return 0; /* $(<integer expression> > <integer expression>), line 419 */
1252     {   int ret = slice_del(z); /* delete, line 419 */
1253         if (ret < 0) return ret;
1254     }
1255     return 1;
1256 }
1257 
r_Suffix_Noun_Step2a(struct SN_env * z)1258 static int r_Suffix_Noun_Step2a(struct SN_env * z) { /* backwardmode */
1259     z->ket = z->c; /* [, line 424 */
1260     if (!(find_among_b(z, a_12, 3))) return 0; /* substring, line 424 */
1261     z->bra = z->c; /* ], line 424 */
1262     if (!(len_utf8(z->p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 425 */
1263     {   int ret = slice_del(z); /* delete, line 425 */
1264         if (ret < 0) return ret;
1265     }
1266     return 1;
1267 }
1268 
r_Suffix_Noun_Step2b(struct SN_env * z)1269 static int r_Suffix_Noun_Step2b(struct SN_env * z) { /* backwardmode */
1270     z->ket = z->c; /* [, line 430 */
1271     if (z->c - 3 <= z->lb || z->p[z->c - 1] != 170) return 0; /* substring, line 430 */
1272     if (!(find_among_b(z, a_13, 1))) return 0;
1273     z->bra = z->c; /* ], line 430 */
1274     if (!(len_utf8(z->p) >= 5)) return 0; /* $(<integer expression> >= <integer expression>), line 431 */
1275     {   int ret = slice_del(z); /* delete, line 431 */
1276         if (ret < 0) return ret;
1277     }
1278     return 1;
1279 }
1280 
r_Suffix_Noun_Step2c1(struct SN_env * z)1281 static int r_Suffix_Noun_Step2c1(struct SN_env * z) { /* backwardmode */
1282     z->ket = z->c; /* [, line 436 */
1283     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 170) return 0; /* substring, line 436 */
1284     if (!(find_among_b(z, a_14, 1))) return 0;
1285     z->bra = z->c; /* ], line 436 */
1286     if (!(len_utf8(z->p) >= 4)) return 0; /* $(<integer expression> >= <integer expression>), line 437 */
1287     {   int ret = slice_del(z); /* delete, line 437 */
1288         if (ret < 0) return ret;
1289     }
1290     return 1;
1291 }
1292 
r_Suffix_Noun_Step2c2(struct SN_env * z)1293 static int r_Suffix_Noun_Step2c2(struct SN_env * z) { /* backwardmode */
1294     z->ket = z->c; /* [, line 441 */
1295     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 169) return 0; /* substring, line 441 */
1296     if (!(find_among_b(z, a_15, 1))) return 0;
1297     z->bra = z->c; /* ], line 441 */
1298     if (!(len_utf8(z->p) >= 4)) return 0; /* $(<integer expression> >= <integer expression>), line 442 */
1299     {   int ret = slice_del(z); /* delete, line 442 */
1300         if (ret < 0) return ret;
1301     }
1302     return 1;
1303 }
1304 
r_Suffix_Noun_Step3(struct SN_env * z)1305 static int r_Suffix_Noun_Step3(struct SN_env * z) { /* backwardmode */
1306     z->ket = z->c; /* [, line 446 */
1307     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 138) return 0; /* substring, line 446 */
1308     if (!(find_among_b(z, a_16, 1))) return 0;
1309     z->bra = z->c; /* ], line 446 */
1310     if (!(len_utf8(z->p) >= 3)) return 0; /* $(<integer expression> >= <integer expression>), line 447 */
1311     {   int ret = slice_del(z); /* delete, line 447 */
1312         if (ret < 0) return ret;
1313     }
1314     return 1;
1315 }
1316 
r_Suffix_Verb_Step1(struct SN_env * z)1317 static int r_Suffix_Verb_Step1(struct SN_env * z) { /* backwardmode */
1318     int among_var;
1319     z->ket = z->c; /* [, line 452 */
1320     among_var = find_among_b(z, a_17, 12); /* substring, line 452 */
1321     if (!(among_var)) return 0;
1322     z->bra = z->c; /* ], line 452 */
1323     switch (among_var) { /* among, line 452 */
1324         case 1:
1325             if (!(len_utf8(z->p) >= 4)) return 0; /* $(<integer expression> >= <integer expression>), line 453 */
1326             {   int ret = slice_del(z); /* delete, line 453 */
1327                 if (ret < 0) return ret;
1328             }
1329             break;
1330         case 2:
1331             if (!(len_utf8(z->p) >= 5)) return 0; /* $(<integer expression> >= <integer expression>), line 454 */
1332             {   int ret = slice_del(z); /* delete, line 454 */
1333                 if (ret < 0) return ret;
1334             }
1335             break;
1336         case 3:
1337             if (!(len_utf8(z->p) >= 6)) return 0; /* $(<integer expression> >= <integer expression>), line 455 */
1338             {   int ret = slice_del(z); /* delete, line 455 */
1339                 if (ret < 0) return ret;
1340             }
1341             break;
1342     }
1343     return 1;
1344 }
1345 
r_Suffix_Verb_Step2a(struct SN_env * z)1346 static int r_Suffix_Verb_Step2a(struct SN_env * z) { /* backwardmode */
1347     int among_var;
1348     z->ket = z->c; /* [, line 459 */
1349     among_var = find_among_b(z, a_18, 11); /* substring, line 459 */
1350     if (!(among_var)) return 0;
1351     z->bra = z->c; /* ], line 459 */
1352     switch (among_var) { /* among, line 459 */
1353         case 1:
1354             if (!(len_utf8(z->p) >= 4)) return 0; /* $(<integer expression> >= <integer expression>), line 460 */
1355             {   int ret = slice_del(z); /* delete, line 460 */
1356                 if (ret < 0) return ret;
1357             }
1358             break;
1359         case 2:
1360             if (!(len_utf8(z->p) >= 5)) return 0; /* $(<integer expression> >= <integer expression>), line 462 */
1361             {   int ret = slice_del(z); /* delete, line 462 */
1362                 if (ret < 0) return ret;
1363             }
1364             break;
1365         case 3:
1366             if (!(len_utf8(z->p) > 5)) return 0; /* $(<integer expression> > <integer expression>), line 463 */
1367             {   int ret = slice_del(z); /* delete, line 463 */
1368                 if (ret < 0) return ret;
1369             }
1370             break;
1371         case 4:
1372             if (!(len_utf8(z->p) >= 6)) return 0; /* $(<integer expression> >= <integer expression>), line 464 */
1373             {   int ret = slice_del(z); /* delete, line 464 */
1374                 if (ret < 0) return ret;
1375             }
1376             break;
1377     }
1378     return 1;
1379 }
1380 
r_Suffix_Verb_Step2b(struct SN_env * z)1381 static int r_Suffix_Verb_Step2b(struct SN_env * z) { /* backwardmode */
1382     z->ket = z->c; /* [, line 469 */
1383     if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 133 && z->p[z->c - 1] != 167)) return 0; /* substring, line 469 */
1384     if (!(find_among_b(z, a_19, 2))) return 0;
1385     z->bra = z->c; /* ], line 469 */
1386     if (!(len_utf8(z->p) >= 5)) return 0; /* $(<integer expression> >= <integer expression>), line 470 */
1387     {   int ret = slice_del(z); /* delete, line 470 */
1388         if (ret < 0) return ret;
1389     }
1390     return 1;
1391 }
1392 
r_Suffix_Verb_Step2c(struct SN_env * z)1393 static int r_Suffix_Verb_Step2c(struct SN_env * z) { /* backwardmode */
1394     int among_var;
1395     z->ket = z->c; /* [, line 476 */
1396     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 136) return 0; /* substring, line 476 */
1397     among_var = find_among_b(z, a_20, 2);
1398     if (!(among_var)) return 0;
1399     z->bra = z->c; /* ], line 476 */
1400     switch (among_var) { /* among, line 476 */
1401         case 1:
1402             if (!(len_utf8(z->p) >= 4)) return 0; /* $(<integer expression> >= <integer expression>), line 477 */
1403             {   int ret = slice_del(z); /* delete, line 477 */
1404                 if (ret < 0) return ret;
1405             }
1406             break;
1407         case 2:
1408             if (!(len_utf8(z->p) >= 6)) return 0; /* $(<integer expression> >= <integer expression>), line 478 */
1409             {   int ret = slice_del(z); /* delete, line 478 */
1410                 if (ret < 0) return ret;
1411             }
1412             break;
1413     }
1414     return 1;
1415 }
1416 
r_Suffix_All_alef_maqsura(struct SN_env * z)1417 static int r_Suffix_All_alef_maqsura(struct SN_env * z) { /* backwardmode */
1418     z->ket = z->c; /* [, line 483 */
1419     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 137) return 0; /* substring, line 483 */
1420     if (!(find_among_b(z, a_21, 1))) return 0;
1421     z->bra = z->c; /* ], line 483 */
1422     {   int ret = slice_from_s(z, 2, s_68); /* <-, line 484 */
1423         if (ret < 0) return ret;
1424     }
1425     return 1;
1426 }
1427 
arabic_UTF_8_stem(struct SN_env * z)1428 extern int arabic_UTF_8_stem(struct SN_env * z) { /* forwardmode */
1429     z->B[0] = 1; /* set is_noun, line 493 */
1430     z->B[1] = 1; /* set is_verb, line 494 */
1431     z->B[2] = 0; /* unset is_defined, line 495 */
1432     {   int c1 = z->c; /* do, line 498 */
1433         {   int ret = r_Checks1(z); /* call Checks1, line 498 */
1434             if (ret < 0) return ret;
1435         }
1436         z->c = c1;
1437     }
1438     /* do, line 501 */
1439     {   int ret = r_Normalize_pre(z); /* call Normalize_pre, line 501 */
1440         if (ret < 0) return ret;
1441     }
1442     z->lb = z->c; z->c = z->l; /* backwards, line 504 */
1443 
1444     {   int m2 = z->l - z->c; (void)m2; /* do, line 506 */
1445         {   int m3 = z->l - z->c; (void)m3; /* or, line 520 */
1446             if (!(z->B[1])) goto lab2; /* Boolean test is_verb, line 509 */
1447             {   int m4 = z->l - z->c; (void)m4; /* or, line 515 */
1448                 {   int i = 1;
1449                     while(1) {                        int m5 = z->l - z->c; (void)m5;
1450                         {   int ret = r_Suffix_Verb_Step1(z); /* call Suffix_Verb_Step1, line 512 */
1451                             if (ret == 0) goto lab5;
1452                             if (ret < 0) return ret;
1453                         }
1454                         i--;
1455                         continue;
1456                     lab5:
1457                         z->c = z->l - m5;
1458                         break;
1459                     }
1460                     if (i > 0) goto lab4;
1461                 }
1462                 {   int m6 = z->l - z->c; (void)m6; /* or, line 513 */
1463                     {   int ret = r_Suffix_Verb_Step2a(z); /* call Suffix_Verb_Step2a, line 513 */
1464                         if (ret == 0) goto lab7;
1465                         if (ret < 0) return ret;
1466                     }
1467                     goto lab6;
1468                 lab7:
1469                     z->c = z->l - m6;
1470                     {   int ret = r_Suffix_Verb_Step2c(z); /* call Suffix_Verb_Step2c, line 513 */
1471                         if (ret == 0) goto lab8;
1472                         if (ret < 0) return ret;
1473                     }
1474                     goto lab6;
1475                 lab8:
1476                     z->c = z->l - m6;
1477                     {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
1478                         if (ret < 0) goto lab4;
1479                         z->c = ret; /* next, line 513 */
1480                     }
1481                 }
1482             lab6:
1483                 goto lab3;
1484             lab4:
1485                 z->c = z->l - m4;
1486                 {   int ret = r_Suffix_Verb_Step2b(z); /* call Suffix_Verb_Step2b, line 515 */
1487                     if (ret == 0) goto lab9;
1488                     if (ret < 0) return ret;
1489                 }
1490                 goto lab3;
1491             lab9:
1492                 z->c = z->l - m4;
1493                 {   int ret = r_Suffix_Verb_Step2a(z); /* call Suffix_Verb_Step2a, line 516 */
1494                     if (ret == 0) goto lab2;
1495                     if (ret < 0) return ret;
1496                 }
1497             }
1498         lab3:
1499             goto lab1;
1500         lab2:
1501             z->c = z->l - m3;
1502             if (!(z->B[0])) goto lab10; /* Boolean test is_noun, line 521 */
1503             {   int m7 = z->l - z->c; (void)m7; /* try, line 524 */
1504                 {   int m8 = z->l - z->c; (void)m8; /* or, line 526 */
1505                     {   int ret = r_Suffix_Noun_Step2c2(z); /* call Suffix_Noun_Step2c2, line 525 */
1506                         if (ret == 0) goto lab13;
1507                         if (ret < 0) return ret;
1508                     }
1509                     goto lab12;
1510                 lab13:
1511                     z->c = z->l - m8;
1512                     /* not, line 526 */
1513                     if (!(z->B[2])) goto lab15; /* Boolean test is_defined, line 526 */
1514                     goto lab14;
1515                 lab15:
1516                     {   int ret = r_Suffix_Noun_Step1a(z); /* call Suffix_Noun_Step1a, line 526 */
1517                         if (ret == 0) goto lab14;
1518                         if (ret < 0) return ret;
1519                     }
1520                     {   int m9 = z->l - z->c; (void)m9; /* or, line 528 */
1521                         {   int ret = r_Suffix_Noun_Step2a(z); /* call Suffix_Noun_Step2a, line 527 */
1522                             if (ret == 0) goto lab17;
1523                             if (ret < 0) return ret;
1524                         }
1525                         goto lab16;
1526                     lab17:
1527                         z->c = z->l - m9;
1528                         {   int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 528 */
1529                             if (ret == 0) goto lab18;
1530                             if (ret < 0) return ret;
1531                         }
1532                         goto lab16;
1533                     lab18:
1534                         z->c = z->l - m9;
1535                         {   int ret = r_Suffix_Noun_Step2c1(z); /* call Suffix_Noun_Step2c1, line 529 */
1536                             if (ret == 0) goto lab19;
1537                             if (ret < 0) return ret;
1538                         }
1539                         goto lab16;
1540                     lab19:
1541                         z->c = z->l - m9;
1542                         {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
1543                             if (ret < 0) goto lab14;
1544                             z->c = ret; /* next, line 530 */
1545                         }
1546                     }
1547                 lab16:
1548                     goto lab12;
1549                 lab14:
1550                     z->c = z->l - m8;
1551                     {   int ret = r_Suffix_Noun_Step1b(z); /* call Suffix_Noun_Step1b, line 531 */
1552                         if (ret == 0) goto lab20;
1553                         if (ret < 0) return ret;
1554                     }
1555                     {   int m10 = z->l - z->c; (void)m10; /* or, line 533 */
1556                         {   int ret = r_Suffix_Noun_Step2a(z); /* call Suffix_Noun_Step2a, line 532 */
1557                             if (ret == 0) goto lab22;
1558                             if (ret < 0) return ret;
1559                         }
1560                         goto lab21;
1561                     lab22:
1562                         z->c = z->l - m10;
1563                         {   int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 533 */
1564                             if (ret == 0) goto lab23;
1565                             if (ret < 0) return ret;
1566                         }
1567                         goto lab21;
1568                     lab23:
1569                         z->c = z->l - m10;
1570                         {   int ret = r_Suffix_Noun_Step2c1(z); /* call Suffix_Noun_Step2c1, line 534 */
1571                             if (ret == 0) goto lab20;
1572                             if (ret < 0) return ret;
1573                         }
1574                     }
1575                 lab21:
1576                     goto lab12;
1577                 lab20:
1578                     z->c = z->l - m8;
1579                     /* not, line 535 */
1580                     if (!(z->B[2])) goto lab25; /* Boolean test is_defined, line 535 */
1581                     goto lab24;
1582                 lab25:
1583                     {   int ret = r_Suffix_Noun_Step2a(z); /* call Suffix_Noun_Step2a, line 535 */
1584                         if (ret == 0) goto lab24;
1585                         if (ret < 0) return ret;
1586                     }
1587                     goto lab12;
1588                 lab24:
1589                     z->c = z->l - m8;
1590                     {   int ret = r_Suffix_Noun_Step2b(z); /* call Suffix_Noun_Step2b, line 536 */
1591                         if (ret == 0) { z->c = z->l - m7; goto lab11; }
1592                         if (ret < 0) return ret;
1593                     }
1594                 }
1595             lab12:
1596             lab11:
1597                 ;
1598             }
1599             {   int ret = r_Suffix_Noun_Step3(z); /* call Suffix_Noun_Step3, line 538 */
1600                 if (ret == 0) goto lab10;
1601                 if (ret < 0) return ret;
1602             }
1603             goto lab1;
1604         lab10:
1605             z->c = z->l - m3;
1606             {   int ret = r_Suffix_All_alef_maqsura(z); /* call Suffix_All_alef_maqsura, line 544 */
1607                 if (ret == 0) goto lab0;
1608                 if (ret < 0) return ret;
1609             }
1610         }
1611     lab1:
1612     lab0:
1613         z->c = z->l - m2;
1614     }
1615     z->c = z->lb;
1616     {   int c11 = z->c; /* do, line 549 */
1617         {   int c12 = z->c; /* try, line 550 */
1618             {   int ret = r_Prefix_Step1(z); /* call Prefix_Step1, line 550 */
1619                 if (ret == 0) { z->c = c12; goto lab27; }
1620                 if (ret < 0) return ret;
1621             }
1622         lab27:
1623             ;
1624         }
1625         {   int c13 = z->c; /* try, line 551 */
1626             {   int ret = r_Prefix_Step2(z); /* call Prefix_Step2, line 551 */
1627                 if (ret == 0) { z->c = c13; goto lab28; }
1628                 if (ret < 0) return ret;
1629             }
1630         lab28:
1631             ;
1632         }
1633         {   int c14 = z->c; /* or, line 553 */
1634             {   int ret = r_Prefix_Step3a_Noun(z); /* call Prefix_Step3a_Noun, line 552 */
1635                 if (ret == 0) goto lab30;
1636                 if (ret < 0) return ret;
1637             }
1638             goto lab29;
1639         lab30:
1640             z->c = c14;
1641             if (!(z->B[0])) goto lab31; /* Boolean test is_noun, line 553 */
1642             {   int ret = r_Prefix_Step3b_Noun(z); /* call Prefix_Step3b_Noun, line 553 */
1643                 if (ret == 0) goto lab31;
1644                 if (ret < 0) return ret;
1645             }
1646             goto lab29;
1647         lab31:
1648             z->c = c14;
1649             if (!(z->B[1])) goto lab26; /* Boolean test is_verb, line 554 */
1650             {   int c15 = z->c; /* try, line 554 */
1651                 {   int ret = r_Prefix_Step3_Verb(z); /* call Prefix_Step3_Verb, line 554 */
1652                     if (ret == 0) { z->c = c15; goto lab32; }
1653                     if (ret < 0) return ret;
1654                 }
1655             lab32:
1656                 ;
1657             }
1658             {   int ret = r_Prefix_Step4_Verb(z); /* call Prefix_Step4_Verb, line 554 */
1659                 if (ret == 0) goto lab26;
1660                 if (ret < 0) return ret;
1661             }
1662         }
1663     lab29:
1664     lab26:
1665         z->c = c11;
1666     }
1667     /* do, line 559 */
1668     {   int ret = r_Normalize_post(z); /* call Normalize_post, line 559 */
1669         if (ret < 0) return ret;
1670     }
1671     return 1;
1672 }
1673 
arabic_UTF_8_create_env(void)1674 extern struct SN_env * arabic_UTF_8_create_env(void) { return SN_create_env(0, 0, 3); }
1675 
arabic_UTF_8_close_env(struct SN_env * z)1676 extern void arabic_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
1677 
1678