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