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