1 /* Generated by Snowball 2.1.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, 0xA8 }; 420 static const symbol s_7_2[4] = { 0xD9, 0x83, 0xD9, 0x83 }; 421 422 static const struct among a_7[3] = 423 { 424 { 2, s_7_0, -1, 1, 0}, 425 { 4, s_7_1, 0, 2, 0}, 426 { 4, s_7_2, -1, 3, 0} 427 }; 428 429 static const symbol s_8_0[4] = { 0xD8, 0xB3, 0xD8, 0xA3 }; 430 static const symbol s_8_1[4] = { 0xD8, 0xB3, 0xD8, 0xAA }; 431 static const symbol s_8_2[4] = { 0xD8, 0xB3, 0xD9, 0x86 }; 432 static const symbol s_8_3[4] = { 0xD8, 0xB3, 0xD9, 0x8A }; 433 434 static const struct among a_8[4] = 435 { 436 { 4, s_8_0, -1, 4, 0}, 437 { 4, s_8_1, -1, 2, 0}, 438 { 4, s_8_2, -1, 3, 0}, 439 { 4, s_8_3, -1, 1, 0} 440 }; 441 442 static const symbol s_9_0[6] = { 0xD8, 0xAA, 0xD8, 0xB3, 0xD8, 0xAA }; 443 static const symbol s_9_1[6] = { 0xD9, 0x86, 0xD8, 0xB3, 0xD8, 0xAA }; 444 static const symbol s_9_2[6] = { 0xD9, 0x8A, 0xD8, 0xB3, 0xD8, 0xAA }; 445 446 static const struct among a_9[3] = 447 { 448 { 6, s_9_0, -1, 1, 0}, 449 { 6, s_9_1, -1, 1, 0}, 450 { 6, s_9_2, -1, 1, 0} 451 }; 452 453 static const symbol s_10_0[2] = { 0xD9, 0x83 }; 454 static const symbol s_10_1[4] = { 0xD9, 0x83, 0xD9, 0x85 }; 455 static const symbol s_10_2[4] = { 0xD9, 0x87, 0xD9, 0x85 }; 456 static const symbol s_10_3[4] = { 0xD9, 0x87, 0xD9, 0x86 }; 457 static const symbol s_10_4[2] = { 0xD9, 0x87 }; 458 static const symbol s_10_5[2] = { 0xD9, 0x8A }; 459 static const symbol s_10_6[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7 }; 460 static const symbol s_10_7[6] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7 }; 461 static const symbol s_10_8[4] = { 0xD9, 0x86, 0xD8, 0xA7 }; 462 static const symbol s_10_9[4] = { 0xD9, 0x87, 0xD8, 0xA7 }; 463 464 static const struct among a_10[10] = 465 { 466 { 2, s_10_0, -1, 1, 0}, 467 { 4, s_10_1, -1, 2, 0}, 468 { 4, s_10_2, -1, 2, 0}, 469 { 4, s_10_3, -1, 2, 0}, 470 { 2, s_10_4, -1, 1, 0}, 471 { 2, s_10_5, -1, 1, 0}, 472 { 6, s_10_6, -1, 3, 0}, 473 { 6, s_10_7, -1, 3, 0}, 474 { 4, s_10_8, -1, 2, 0}, 475 { 4, s_10_9, -1, 2, 0} 476 }; 477 478 static const symbol s_11_0[2] = { 0xD9, 0x86 }; 479 480 static const struct among a_11[1] = 481 { 482 { 2, s_11_0, -1, 1, 0} 483 }; 484 485 static const symbol s_12_0[2] = { 0xD9, 0x88 }; 486 static const symbol s_12_1[2] = { 0xD9, 0x8A }; 487 static const symbol s_12_2[2] = { 0xD8, 0xA7 }; 488 489 static const struct among a_12[3] = 490 { 491 { 2, s_12_0, -1, 1, 0}, 492 { 2, s_12_1, -1, 1, 0}, 493 { 2, s_12_2, -1, 1, 0} 494 }; 495 496 static const symbol s_13_0[4] = { 0xD8, 0xA7, 0xD8, 0xAA }; 497 498 static const struct among a_13[1] = 499 { 500 { 4, s_13_0, -1, 1, 0} 501 }; 502 503 static const symbol s_14_0[2] = { 0xD8, 0xAA }; 504 505 static const struct among a_14[1] = 506 { 507 { 2, s_14_0, -1, 1, 0} 508 }; 509 510 static const symbol s_15_0[2] = { 0xD8, 0xA9 }; 511 512 static const struct among a_15[1] = 513 { 514 { 2, s_15_0, -1, 1, 0} 515 }; 516 517 static const symbol s_16_0[2] = { 0xD9, 0x8A }; 518 519 static const struct among a_16[1] = 520 { 521 { 2, s_16_0, -1, 1, 0} 522 }; 523 524 static const symbol s_17_0[2] = { 0xD9, 0x83 }; 525 static const symbol s_17_1[4] = { 0xD9, 0x83, 0xD9, 0x85 }; 526 static const symbol s_17_2[4] = { 0xD9, 0x87, 0xD9, 0x85 }; 527 static const symbol s_17_3[4] = { 0xD9, 0x83, 0xD9, 0x86 }; 528 static const symbol s_17_4[4] = { 0xD9, 0x87, 0xD9, 0x86 }; 529 static const symbol s_17_5[2] = { 0xD9, 0x87 }; 530 static const symbol s_17_6[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x88 }; 531 static const symbol s_17_7[4] = { 0xD9, 0x86, 0xD9, 0x8A }; 532 static const symbol s_17_8[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7 }; 533 static const symbol s_17_9[6] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7 }; 534 static const symbol s_17_10[4] = { 0xD9, 0x86, 0xD8, 0xA7 }; 535 static const symbol s_17_11[4] = { 0xD9, 0x87, 0xD8, 0xA7 }; 536 537 static const struct among a_17[12] = 538 { 539 { 2, s_17_0, -1, 1, 0}, 540 { 4, s_17_1, -1, 2, 0}, 541 { 4, s_17_2, -1, 2, 0}, 542 { 4, s_17_3, -1, 2, 0}, 543 { 4, s_17_4, -1, 2, 0}, 544 { 2, s_17_5, -1, 1, 0}, 545 { 6, s_17_6, -1, 3, 0}, 546 { 4, s_17_7, -1, 2, 0}, 547 { 6, s_17_8, -1, 3, 0}, 548 { 6, s_17_9, -1, 3, 0}, 549 { 4, s_17_10, -1, 2, 0}, 550 { 4, s_17_11, -1, 2, 0} 551 }; 552 553 static const symbol s_18_0[2] = { 0xD9, 0x86 }; 554 static const symbol s_18_1[4] = { 0xD9, 0x88, 0xD9, 0x86 }; 555 static const symbol s_18_2[4] = { 0xD9, 0x8A, 0xD9, 0x86 }; 556 static const symbol s_18_3[4] = { 0xD8, 0xA7, 0xD9, 0x86 }; 557 static const symbol s_18_4[4] = { 0xD8, 0xAA, 0xD9, 0x86 }; 558 static const symbol s_18_5[2] = { 0xD9, 0x8A }; 559 static const symbol s_18_6[2] = { 0xD8, 0xA7 }; 560 static const symbol s_18_7[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xA7 }; 561 static const symbol s_18_8[4] = { 0xD9, 0x86, 0xD8, 0xA7 }; 562 static const symbol s_18_9[4] = { 0xD8, 0xAA, 0xD8, 0xA7 }; 563 static const symbol s_18_10[2] = { 0xD8, 0xAA }; 564 565 static const struct among a_18[11] = 566 { 567 { 2, s_18_0, -1, 1, 0}, 568 { 4, s_18_1, 0, 3, 0}, 569 { 4, s_18_2, 0, 3, 0}, 570 { 4, s_18_3, 0, 3, 0}, 571 { 4, s_18_4, 0, 2, 0}, 572 { 2, s_18_5, -1, 1, 0}, 573 { 2, s_18_6, -1, 1, 0}, 574 { 6, s_18_7, 6, 4, 0}, 575 { 4, s_18_8, 6, 2, 0}, 576 { 4, s_18_9, 6, 2, 0}, 577 { 2, s_18_10, -1, 1, 0} 578 }; 579 580 static const symbol s_19_0[4] = { 0xD8, 0xAA, 0xD9, 0x85 }; 581 static const symbol s_19_1[4] = { 0xD9, 0x88, 0xD8, 0xA7 }; 582 583 static const struct among a_19[2] = 584 { 585 { 4, s_19_0, -1, 1, 0}, 586 { 4, s_19_1, -1, 1, 0} 587 }; 588 589 static const symbol s_20_0[2] = { 0xD9, 0x88 }; 590 static const symbol s_20_1[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x88 }; 591 592 static const struct among a_20[2] = 593 { 594 { 2, s_20_0, -1, 1, 0}, 595 { 6, s_20_1, 0, 2, 0} 596 }; 597 598 static const symbol s_21_0[2] = { 0xD9, 0x89 }; 599 600 static const struct among a_21[1] = 601 { 602 { 2, s_21_0, -1, 1, 0} 603 }; 604 605 static const symbol s_0[] = { '0' }; 606 static const symbol s_1[] = { '1' }; 607 static const symbol s_2[] = { '2' }; 608 static const symbol s_3[] = { '3' }; 609 static const symbol s_4[] = { '4' }; 610 static const symbol s_5[] = { '5' }; 611 static const symbol s_6[] = { '6' }; 612 static const symbol s_7[] = { '7' }; 613 static const symbol s_8[] = { '8' }; 614 static const symbol s_9[] = { '9' }; 615 static const symbol s_10[] = { 0xD8, 0xA1 }; 616 static const symbol s_11[] = { 0xD8, 0xA3 }; 617 static const symbol s_12[] = { 0xD8, 0xA5 }; 618 static const symbol s_13[] = { 0xD8, 0xA6 }; 619 static const symbol s_14[] = { 0xD8, 0xA2 }; 620 static const symbol s_15[] = { 0xD8, 0xA4 }; 621 static const symbol s_16[] = { 0xD8, 0xA7 }; 622 static const symbol s_17[] = { 0xD8, 0xA8 }; 623 static const symbol s_18[] = { 0xD8, 0xA9 }; 624 static const symbol s_19[] = { 0xD8, 0xAA }; 625 static const symbol s_20[] = { 0xD8, 0xAB }; 626 static const symbol s_21[] = { 0xD8, 0xAC }; 627 static const symbol s_22[] = { 0xD8, 0xAD }; 628 static const symbol s_23[] = { 0xD8, 0xAE }; 629 static const symbol s_24[] = { 0xD8, 0xAF }; 630 static const symbol s_25[] = { 0xD8, 0xB0 }; 631 static const symbol s_26[] = { 0xD8, 0xB1 }; 632 static const symbol s_27[] = { 0xD8, 0xB2 }; 633 static const symbol s_28[] = { 0xD8, 0xB3 }; 634 static const symbol s_29[] = { 0xD8, 0xB4 }; 635 static const symbol s_30[] = { 0xD8, 0xB5 }; 636 static const symbol s_31[] = { 0xD8, 0xB6 }; 637 static const symbol s_32[] = { 0xD8, 0xB7 }; 638 static const symbol s_33[] = { 0xD8, 0xB8 }; 639 static const symbol s_34[] = { 0xD8, 0xB9 }; 640 static const symbol s_35[] = { 0xD8, 0xBA }; 641 static const symbol s_36[] = { 0xD9, 0x81 }; 642 static const symbol s_37[] = { 0xD9, 0x82 }; 643 static const symbol s_38[] = { 0xD9, 0x83 }; 644 static const symbol s_39[] = { 0xD9, 0x84 }; 645 static const symbol s_40[] = { 0xD9, 0x85 }; 646 static const symbol s_41[] = { 0xD9, 0x86 }; 647 static const symbol s_42[] = { 0xD9, 0x87 }; 648 static const symbol s_43[] = { 0xD9, 0x88 }; 649 static const symbol s_44[] = { 0xD9, 0x89 }; 650 static const symbol s_45[] = { 0xD9, 0x8A }; 651 static const symbol s_46[] = { 0xD9, 0x84, 0xD8, 0xA7 }; 652 static const symbol s_47[] = { 0xD9, 0x84, 0xD8, 0xA3 }; 653 static const symbol s_48[] = { 0xD9, 0x84, 0xD8, 0xA5 }; 654 static const symbol s_49[] = { 0xD9, 0x84, 0xD8, 0xA2 }; 655 static const symbol s_50[] = { 0xD8, 0xA1 }; 656 static const symbol s_51[] = { 0xD8, 0xA7 }; 657 static const symbol s_52[] = { 0xD9, 0x88 }; 658 static const symbol s_53[] = { 0xD9, 0x8A }; 659 static const symbol s_54[] = { 0xD8, 0xA3 }; 660 static const symbol s_55[] = { 0xD8, 0xA2 }; 661 static const symbol s_56[] = { 0xD8, 0xA7 }; 662 static const symbol s_57[] = { 0xD8, 0xA5 }; 663 static const symbol s_58[] = { 0xD9, 0x81, 0xD8, 0xA7 }; 664 static const symbol s_59[] = { 0xD9, 0x88, 0xD8, 0xA7 }; 665 static const symbol s_60[] = { 0xD8, 0xA8, 0xD8, 0xA7 }; 666 static const symbol s_61[] = { 0xD8, 0xA8 }; 667 static const symbol s_62[] = { 0xD9, 0x83 }; 668 static const symbol s_63[] = { 0xD9, 0x8A }; 669 static const symbol s_64[] = { 0xD8, 0xAA }; 670 static const symbol s_65[] = { 0xD9, 0x86 }; 671 static const symbol s_66[] = { 0xD8, 0xA3 }; 672 static const symbol s_67[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA }; 673 static const symbol s_68[] = { 0xD9, 0x8A }; 674 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 { int c1 = z->c; 1084 if (!(eq_s(z, 4, s_58))) goto lab0; 1085 return 0; 1086 lab0: 1087 z->c = c1; 1088 } 1089 { int c2 = z->c; 1090 if (!(eq_s(z, 4, s_59))) goto lab1; 1091 return 0; 1092 lab1: 1093 z->c = c2; 1094 } 1095 z->bra = z->c; 1096 if (z->c + 1 >= z->l || (z->p[z->c + 1] != 129 && z->p[z->c + 1] != 136)) return 0; 1097 if (!(find_among(z, a_5, 2))) return 0; 1098 z->ket = z->c; 1099 if (!(len_utf8(z->p) > 3)) return 0; 1100 { int ret = slice_del(z); 1101 if (ret < 0) return ret; 1102 } 1103 return 1; 1104 } 1105 1106 static int r_Prefix_Step3a_Noun(struct SN_env * z) { 1107 int among_var; 1108 z->bra = z->c; 1109 if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0; 1110 among_var = find_among(z, a_6, 4); 1111 if (!(among_var)) return 0; 1112 z->ket = z->c; 1113 switch (among_var) { 1114 case 1: 1115 if (!(len_utf8(z->p) > 5)) return 0; 1116 { int ret = slice_del(z); 1117 if (ret < 0) return ret; 1118 } 1119 break; 1120 case 2: 1121 if (!(len_utf8(z->p) > 4)) return 0; 1122 { int ret = slice_del(z); 1123 if (ret < 0) return ret; 1124 } 1125 break; 1126 } 1127 return 1; 1128 } 1129 1130 static int r_Prefix_Step3b_Noun(struct SN_env * z) { 1131 int among_var; 1132 { int c1 = z->c; 1133 if (!(eq_s(z, 4, s_60))) goto lab0; 1134 return 0; 1135 lab0: 1136 z->c = c1; 1137 } 1138 z->bra = z->c; 1139 if (z->c + 1 >= z->l || (z->p[z->c + 1] != 168 && z->p[z->c + 1] != 131)) return 0; 1140 among_var = find_among(z, a_7, 3); 1141 if (!(among_var)) return 0; 1142 z->ket = z->c; 1143 switch (among_var) { 1144 case 1: 1145 if (!(len_utf8(z->p) > 3)) return 0; 1146 { int ret = slice_del(z); 1147 if (ret < 0) return ret; 1148 } 1149 break; 1150 case 2: 1151 if (!(len_utf8(z->p) > 3)) return 0; 1152 { int ret = slice_from_s(z, 2, s_61); 1153 if (ret < 0) return ret; 1154 } 1155 break; 1156 case 3: 1157 if (!(len_utf8(z->p) > 3)) return 0; 1158 { int ret = slice_from_s(z, 2, s_62); 1159 if (ret < 0) return ret; 1160 } 1161 break; 1162 } 1163 return 1; 1164 } 1165 1166 static int r_Prefix_Step3_Verb(struct SN_env * z) { 1167 int among_var; 1168 z->bra = z->c; 1169 among_var = find_among(z, a_8, 4); 1170 if (!(among_var)) return 0; 1171 z->ket = z->c; 1172 switch (among_var) { 1173 case 1: 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 2: 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 case 3: 1186 if (!(len_utf8(z->p) > 4)) return 0; 1187 { int ret = slice_from_s(z, 2, s_65); 1188 if (ret < 0) return ret; 1189 } 1190 break; 1191 case 4: 1192 if (!(len_utf8(z->p) > 4)) return 0; 1193 { int ret = slice_from_s(z, 2, s_66); 1194 if (ret < 0) return ret; 1195 } 1196 break; 1197 } 1198 return 1; 1199 } 1200 1201 static int r_Prefix_Step4_Verb(struct SN_env * z) { 1202 z->bra = z->c; 1203 if (z->c + 5 >= z->l || z->p[z->c + 5] != 170) return 0; 1204 if (!(find_among(z, a_9, 3))) return 0; 1205 z->ket = z->c; 1206 if (!(len_utf8(z->p) > 4)) return 0; 1207 z->I[1] = 1; 1208 z->I[2] = 0; 1209 { int ret = slice_from_s(z, 6, s_67); 1210 if (ret < 0) return ret; 1211 } 1212 return 1; 1213 } 1214 1215 static int r_Suffix_Noun_Step1a(struct SN_env * z) { 1216 int among_var; 1217 z->ket = z->c; 1218 among_var = find_among_b(z, a_10, 10); 1219 if (!(among_var)) return 0; 1220 z->bra = z->c; 1221 switch (among_var) { 1222 case 1: 1223 if (!(len_utf8(z->p) >= 4)) return 0; 1224 { int ret = slice_del(z); 1225 if (ret < 0) return ret; 1226 } 1227 break; 1228 case 2: 1229 if (!(len_utf8(z->p) >= 5)) return 0; 1230 { int ret = slice_del(z); 1231 if (ret < 0) return ret; 1232 } 1233 break; 1234 case 3: 1235 if (!(len_utf8(z->p) >= 6)) return 0; 1236 { int ret = slice_del(z); 1237 if (ret < 0) return ret; 1238 } 1239 break; 1240 } 1241 return 1; 1242 } 1243 1244 static int r_Suffix_Noun_Step1b(struct SN_env * z) { 1245 z->ket = z->c; 1246 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 134) return 0; 1247 if (!(find_among_b(z, a_11, 1))) return 0; 1248 z->bra = z->c; 1249 if (!(len_utf8(z->p) > 5)) return 0; 1250 { int ret = slice_del(z); 1251 if (ret < 0) return ret; 1252 } 1253 return 1; 1254 } 1255 1256 static int r_Suffix_Noun_Step2a(struct SN_env * z) { 1257 z->ket = z->c; 1258 if (!(find_among_b(z, a_12, 3))) return 0; 1259 z->bra = z->c; 1260 if (!(len_utf8(z->p) > 4)) 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_Step2b(struct SN_env * z) { 1268 z->ket = z->c; 1269 if (z->c - 3 <= z->lb || z->p[z->c - 1] != 170) return 0; 1270 if (!(find_among_b(z, a_13, 1))) return 0; 1271 z->bra = z->c; 1272 if (!(len_utf8(z->p) >= 5)) 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_Step2c1(struct SN_env * z) { 1280 z->ket = z->c; 1281 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 170) return 0; 1282 if (!(find_among_b(z, a_14, 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_Step2c2(struct SN_env * z) { 1292 z->ket = z->c; 1293 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 169) return 0; 1294 if (!(find_among_b(z, a_15, 1))) return 0; 1295 z->bra = z->c; 1296 if (!(len_utf8(z->p) >= 4)) 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_Noun_Step3(struct SN_env * z) { 1304 z->ket = z->c; 1305 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 138) return 0; 1306 if (!(find_among_b(z, a_16, 1))) return 0; 1307 z->bra = z->c; 1308 if (!(len_utf8(z->p) >= 3)) return 0; 1309 { int ret = slice_del(z); 1310 if (ret < 0) return ret; 1311 } 1312 return 1; 1313 } 1314 1315 static int r_Suffix_Verb_Step1(struct SN_env * z) { 1316 int among_var; 1317 z->ket = z->c; 1318 among_var = find_among_b(z, a_17, 12); 1319 if (!(among_var)) return 0; 1320 z->bra = z->c; 1321 switch (among_var) { 1322 case 1: 1323 if (!(len_utf8(z->p) >= 4)) return 0; 1324 { int ret = slice_del(z); 1325 if (ret < 0) return ret; 1326 } 1327 break; 1328 case 2: 1329 if (!(len_utf8(z->p) >= 5)) return 0; 1330 { int ret = slice_del(z); 1331 if (ret < 0) return ret; 1332 } 1333 break; 1334 case 3: 1335 if (!(len_utf8(z->p) >= 6)) return 0; 1336 { int ret = slice_del(z); 1337 if (ret < 0) return ret; 1338 } 1339 break; 1340 } 1341 return 1; 1342 } 1343 1344 static int r_Suffix_Verb_Step2a(struct SN_env * z) { 1345 int among_var; 1346 z->ket = z->c; 1347 among_var = find_among_b(z, a_18, 11); 1348 if (!(among_var)) return 0; 1349 z->bra = z->c; 1350 switch (among_var) { 1351 case 1: 1352 if (!(len_utf8(z->p) >= 4)) return 0; 1353 { int ret = slice_del(z); 1354 if (ret < 0) return ret; 1355 } 1356 break; 1357 case 2: 1358 if (!(len_utf8(z->p) >= 5)) return 0; 1359 { int ret = slice_del(z); 1360 if (ret < 0) return ret; 1361 } 1362 break; 1363 case 3: 1364 if (!(len_utf8(z->p) > 5)) return 0; 1365 { int ret = slice_del(z); 1366 if (ret < 0) return ret; 1367 } 1368 break; 1369 case 4: 1370 if (!(len_utf8(z->p) >= 6)) return 0; 1371 { int ret = slice_del(z); 1372 if (ret < 0) return ret; 1373 } 1374 break; 1375 } 1376 return 1; 1377 } 1378 1379 static int r_Suffix_Verb_Step2b(struct SN_env * z) { 1380 z->ket = z->c; 1381 if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 133 && z->p[z->c - 1] != 167)) return 0; 1382 if (!(find_among_b(z, a_19, 2))) return 0; 1383 z->bra = z->c; 1384 if (!(len_utf8(z->p) >= 5)) return 0; 1385 { int ret = slice_del(z); 1386 if (ret < 0) return ret; 1387 } 1388 return 1; 1389 } 1390 1391 static int r_Suffix_Verb_Step2c(struct SN_env * z) { 1392 int among_var; 1393 z->ket = z->c; 1394 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 136) return 0; 1395 among_var = find_among_b(z, a_20, 2); 1396 if (!(among_var)) return 0; 1397 z->bra = z->c; 1398 switch (among_var) { 1399 case 1: 1400 if (!(len_utf8(z->p) >= 4)) return 0; 1401 { int ret = slice_del(z); 1402 if (ret < 0) return ret; 1403 } 1404 break; 1405 case 2: 1406 if (!(len_utf8(z->p) >= 6)) return 0; 1407 { int ret = slice_del(z); 1408 if (ret < 0) return ret; 1409 } 1410 break; 1411 } 1412 return 1; 1413 } 1414 1415 static int r_Suffix_All_alef_maqsura(struct SN_env * z) { 1416 z->ket = z->c; 1417 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 137) return 0; 1418 if (!(find_among_b(z, a_21, 1))) return 0; 1419 z->bra = z->c; 1420 { int ret = slice_from_s(z, 2, s_68); 1421 if (ret < 0) return ret; 1422 } 1423 return 1; 1424 } 1425 1426 extern int arabic_UTF_8_stem(struct SN_env * z) { 1427 z->I[2] = 1; 1428 z->I[1] = 1; 1429 z->I[0] = 0; 1430 { int c1 = z->c; 1431 { int ret = r_Checks1(z); 1432 if (ret < 0) return ret; 1433 } 1434 z->c = c1; 1435 } 1436 1437 { int ret = r_Normalize_pre(z); 1438 if (ret < 0) return ret; 1439 } 1440 z->lb = z->c; z->c = z->l; 1441 1442 { int m2 = z->l - z->c; (void)m2; 1443 { int m3 = z->l - z->c; (void)m3; 1444 if (!(z->I[1])) goto lab2; 1445 { int m4 = z->l - z->c; (void)m4; 1446 { int i = 1; 1447 while(1) { 1448 int m5 = z->l - z->c; (void)m5; 1449 { int ret = r_Suffix_Verb_Step1(z); 1450 if (ret == 0) goto lab5; 1451 if (ret < 0) return ret; 1452 } 1453 i--; 1454 continue; 1455 lab5: 1456 z->c = z->l - m5; 1457 break; 1458 } 1459 if (i > 0) goto lab4; 1460 } 1461 { int m6 = z->l - z->c; (void)m6; 1462 { int ret = r_Suffix_Verb_Step2a(z); 1463 if (ret == 0) goto lab7; 1464 if (ret < 0) return ret; 1465 } 1466 goto lab6; 1467 lab7: 1468 z->c = z->l - m6; 1469 { int ret = r_Suffix_Verb_Step2c(z); 1470 if (ret == 0) goto lab8; 1471 if (ret < 0) return ret; 1472 } 1473 goto lab6; 1474 lab8: 1475 z->c = z->l - m6; 1476 { int ret = skip_b_utf8(z->p, z->c, z->lb, 1); 1477 if (ret < 0) goto lab4; 1478 z->c = ret; 1479 } 1480 } 1481 lab6: 1482 goto lab3; 1483 lab4: 1484 z->c = z->l - m4; 1485 { int ret = r_Suffix_Verb_Step2b(z); 1486 if (ret == 0) goto lab9; 1487 if (ret < 0) return ret; 1488 } 1489 goto lab3; 1490 lab9: 1491 z->c = z->l - m4; 1492 { int ret = r_Suffix_Verb_Step2a(z); 1493 if (ret == 0) goto lab2; 1494 if (ret < 0) return ret; 1495 } 1496 } 1497 lab3: 1498 goto lab1; 1499 lab2: 1500 z->c = z->l - m3; 1501 if (!(z->I[2])) goto lab10; 1502 { int m7 = z->l - z->c; (void)m7; 1503 { int m8 = z->l - z->c; (void)m8; 1504 { int ret = r_Suffix_Noun_Step2c2(z); 1505 if (ret == 0) goto lab13; 1506 if (ret < 0) return ret; 1507 } 1508 goto lab12; 1509 lab13: 1510 z->c = z->l - m8; 1511 1512 if (!(z->I[0])) goto lab15; 1513 goto lab14; 1514 lab15: 1515 { int ret = r_Suffix_Noun_Step1a(z); 1516 if (ret == 0) goto lab14; 1517 if (ret < 0) return ret; 1518 } 1519 { int m9 = z->l - z->c; (void)m9; 1520 { int ret = r_Suffix_Noun_Step2a(z); 1521 if (ret == 0) goto lab17; 1522 if (ret < 0) return ret; 1523 } 1524 goto lab16; 1525 lab17: 1526 z->c = z->l - m9; 1527 { int ret = r_Suffix_Noun_Step2b(z); 1528 if (ret == 0) goto lab18; 1529 if (ret < 0) return ret; 1530 } 1531 goto lab16; 1532 lab18: 1533 z->c = z->l - m9; 1534 { int ret = r_Suffix_Noun_Step2c1(z); 1535 if (ret == 0) goto lab19; 1536 if (ret < 0) return ret; 1537 } 1538 goto lab16; 1539 lab19: 1540 z->c = z->l - m9; 1541 { int ret = skip_b_utf8(z->p, z->c, z->lb, 1); 1542 if (ret < 0) goto lab14; 1543 z->c = ret; 1544 } 1545 } 1546 lab16: 1547 goto lab12; 1548 lab14: 1549 z->c = z->l - m8; 1550 { int ret = r_Suffix_Noun_Step1b(z); 1551 if (ret == 0) goto lab20; 1552 if (ret < 0) return ret; 1553 } 1554 { int m10 = z->l - z->c; (void)m10; 1555 { int ret = r_Suffix_Noun_Step2a(z); 1556 if (ret == 0) goto lab22; 1557 if (ret < 0) return ret; 1558 } 1559 goto lab21; 1560 lab22: 1561 z->c = z->l - m10; 1562 { int ret = r_Suffix_Noun_Step2b(z); 1563 if (ret == 0) goto lab23; 1564 if (ret < 0) return ret; 1565 } 1566 goto lab21; 1567 lab23: 1568 z->c = z->l - m10; 1569 { int ret = r_Suffix_Noun_Step2c1(z); 1570 if (ret == 0) goto lab20; 1571 if (ret < 0) return ret; 1572 } 1573 } 1574 lab21: 1575 goto lab12; 1576 lab20: 1577 z->c = z->l - m8; 1578 1579 if (!(z->I[0])) goto lab25; 1580 goto lab24; 1581 lab25: 1582 { int ret = r_Suffix_Noun_Step2a(z); 1583 if (ret == 0) goto lab24; 1584 if (ret < 0) return ret; 1585 } 1586 goto lab12; 1587 lab24: 1588 z->c = z->l - m8; 1589 { int ret = r_Suffix_Noun_Step2b(z); 1590 if (ret == 0) { z->c = z->l - m7; goto lab11; } 1591 if (ret < 0) return ret; 1592 } 1593 } 1594 lab12: 1595 lab11: 1596 ; 1597 } 1598 { int ret = r_Suffix_Noun_Step3(z); 1599 if (ret == 0) goto lab10; 1600 if (ret < 0) return ret; 1601 } 1602 goto lab1; 1603 lab10: 1604 z->c = z->l - m3; 1605 { int ret = r_Suffix_All_alef_maqsura(z); 1606 if (ret == 0) goto lab0; 1607 if (ret < 0) return ret; 1608 } 1609 } 1610 lab1: 1611 lab0: 1612 z->c = z->l - m2; 1613 } 1614 z->c = z->lb; 1615 { int c11 = z->c; 1616 { int c12 = z->c; 1617 { int ret = r_Prefix_Step1(z); 1618 if (ret == 0) { z->c = c12; goto lab27; } 1619 if (ret < 0) return ret; 1620 } 1621 lab27: 1622 ; 1623 } 1624 { int c13 = z->c; 1625 { int ret = r_Prefix_Step2(z); 1626 if (ret == 0) { z->c = c13; goto lab28; } 1627 if (ret < 0) return ret; 1628 } 1629 lab28: 1630 ; 1631 } 1632 { int c14 = z->c; 1633 { int ret = r_Prefix_Step3a_Noun(z); 1634 if (ret == 0) goto lab30; 1635 if (ret < 0) return ret; 1636 } 1637 goto lab29; 1638 lab30: 1639 z->c = c14; 1640 if (!(z->I[2])) goto lab31; 1641 { int ret = r_Prefix_Step3b_Noun(z); 1642 if (ret == 0) goto lab31; 1643 if (ret < 0) return ret; 1644 } 1645 goto lab29; 1646 lab31: 1647 z->c = c14; 1648 if (!(z->I[1])) goto lab26; 1649 { int c15 = z->c; 1650 { int ret = r_Prefix_Step3_Verb(z); 1651 if (ret == 0) { z->c = c15; goto lab32; } 1652 if (ret < 0) return ret; 1653 } 1654 lab32: 1655 ; 1656 } 1657 { int ret = r_Prefix_Step4_Verb(z); 1658 if (ret == 0) goto lab26; 1659 if (ret < 0) return ret; 1660 } 1661 } 1662 lab29: 1663 lab26: 1664 z->c = c11; 1665 } 1666 1667 { int ret = r_Normalize_post(z); 1668 if (ret < 0) return ret; 1669 } 1670 return 1; 1671 } 1672 1673 extern struct SN_env * arabic_UTF_8_create_env(void) { return SN_create_env(0, 3); } 1674 1675 extern void arabic_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } 1676 1677