isomorfeus-ferret 0.12.4 → 0.12.5

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