xapian-core  2.1.0
persian.cc
Go to the documentation of this file.
1 /* Generated from persian.sbl by Snowball 3.1.1 - https://snowballstem.org/ */
2 
3 #include <config.h>
4 
5 #define SNOWBALL_RUNTIME_THROW_EXCEPTIONS
6 #include "persian.h"
7 
8 #include <stddef.h>
9 
11 
12 static const symbol s_0[] = { 0xDA, 0xA9 };
13 static const symbol s_1[] = { 0xDB, 0x8C };
14 static const symbol s_2[] = { 0xD9, 0x87 };
15 static const symbol s_3[] = { 0xD8, 0xA7 };
16 static const symbol s_4[] = { 0xD9, 0x88 };
17 static const symbol s_5[] = { 0xE2, 0x80, 0x8C };
18 static const symbol s_6[] = { 0xD8, 0xAE, 0xD8, 0xA8, 0xD8, 0xB1 };
19 static const symbol s_7[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA, 0xD8, 0xA7, 0xD8, 0xAF };
20 static const symbol s_8[] = { 0xD8, 0xB1, 0xD9, 0x81, 0xD8, 0xAA };
21 static const symbol s_9[] = { 0xD8, 0xAF };
22 static const symbol s_10[] = { 0xD8, 0xAA };
23 
24 static const symbol s_0_1[1] = { ' ' };
25 static const symbol s_0_2[2] = { 0xD8, 0xA3 };
26 static const symbol s_0_3[2] = { 0xD8, 0xA4 };
27 static const symbol s_0_4[2] = { 0xD8, 0xA5 };
28 static const symbol s_0_5[2] = { 0xD8, 0xA6 };
29 static const symbol s_0_6[2] = { 0xD8, 0xA9 };
30 static const symbol s_0_7[2] = { 0xD9, 0x83 };
31 static const symbol s_0_8[2] = { 0xD9, 0x8A };
32 static const symbol s_0_9[2] = { 0xDB, 0x81 };
33 static const symbol s_0_10[3] = { 0xE2, 0x80, 0x8D };
34 static const struct among a_0[11] = {
35 { 0, 0, 0, 7, 0},
36 { 1, s_0_1, -1, 6, 0},
37 { 2, s_0_2, -2, 4, 0},
38 { 2, s_0_3, -3, 5, 0},
39 { 2, s_0_4, -4, 4, 0},
40 { 2, s_0_5, -5, 2, 0},
41 { 2, s_0_6, -6, 3, 0},
42 { 2, s_0_7, -7, 1, 0},
43 { 2, s_0_8, -8, 2, 0},
44 { 2, s_0_9, -9, 3, 0},
45 { 3, s_0_10, -10, 6, 0}
46 };
47 
48 static const symbol s_1_0[7] = { 0xD9, 0x85, 0xDB, 0x8C, 0xE2, 0x80, 0x8C };
49 static const symbol s_1_1[9] = { 0xD9, 0x86, 0xD9, 0x85, 0xDB, 0x8C, 0xE2, 0x80, 0x8C };
50 static const struct among a_1[2] = {
51 { 7, s_1_0, 0, 2, 0},
52 { 9, s_1_1, 0, 1, 0}
53 };
54 
55 static const symbol s_2_0[6] = { 0xD9, 0x88, 0xD8, 0xA7, 0xD9, 0x86 };
56 static const symbol s_2_1[8] = { 0xD8, 0xB3, 0xD8, 0xAA, 0xD8, 0xA7, 0xD9, 0x86 };
57 static const symbol s_2_2[6] = { 0xD8, 0xB1, 0xD8, 0xA7, 0xD9, 0x86 };
58 static const symbol s_2_3[6] = { 0xD8, 0xB3, 0xD8, 0xA7, 0xD9, 0x86 };
59 static const struct among a_2[4] = {
60 { 6, s_2_0, 0, -1, 0},
61 { 8, s_2_1, 0, -1, 0},
62 { 6, s_2_2, 0, -1, 0},
63 { 6, s_2_3, 0, -1, 0}
64 };
65 
66 static const symbol s_3_0[10] = { 0xDA, 0xAF, 0xDB, 0x8C, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x86 };
67 static const symbol s_3_1[10] = { 0xD8, 0xA2, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
68 static const symbol s_3_2[12] = { 0xD9, 0x85, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
69 static const symbol s_3_3[12] = { 0xD8, 0xB3, 0xD9, 0x84, 0xDB, 0x8C, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
70 static const symbol s_3_4[10] = { 0xD8, 0xA7, 0xDB, 0x8C, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
71 static const symbol s_3_5[10] = { 0xD9, 0xBE, 0xDB, 0x8C, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
72 static const symbol s_3_6[14] = { 0xD8, 0xB3, 0xD8, 0xA7, 0xD8, 0xAE, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
73 static const symbol s_3_7[8] = { 0xD8, 0xB1, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
74 static const symbol s_3_8[12] = { 0xD9, 0x82, 0xD9, 0x87, 0xD8, 0xB1, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
75 static const symbol s_3_9[10] = { 0xDA, 0xA9, 0xD8, 0xB1, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
76 static const symbol s_3_10[10] = { 0xD8, 0xAF, 0xD8, 0xB1, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
77 static const symbol s_3_11[12] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xB2, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
78 static const symbol s_3_12[12] = { 0xD8, 0xB3, 0xD8, 0xA7, 0xD8, 0xB2, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
79 static const symbol s_3_13[10] = { 0xD8, 0xA2, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x86 };
80 static const symbol s_3_14[10] = { 0xDB, 0x8C, 0xD9, 0x88, 0xD9, 0x86, 0xD8, 0xA7, 0xD9, 0x86 };
81 static const symbol s_3_15[10] = { 0xD9, 0x84, 0xD8, 0xA8, 0xD9, 0x86, 0xD8, 0xA7, 0xD9, 0x86 };
82 static const symbol s_3_16[12] = { 0xD8, 0xA7, 0xD8, 0xB5, 0xD9, 0x81, 0xD9, 0x87, 0xD8, 0xA7, 0xD9, 0x86 };
83 static const symbol s_3_17[10] = { 0xD9, 0xBE, 0xD8, 0xA7, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x86 };
84 static const symbol s_3_18[8] = { 0xD8, 0xA8, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x86 };
85 static const symbol s_3_19[10] = { 0xD8, 0xAC, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x86 };
86 static const symbol s_3_20[10] = { 0xD8, 0xA7, 0xD9, 0x85, 0xDA, 0xA9, 0xD8, 0xA7, 0xD9, 0x86 };
87 static const symbol s_3_21[18] = { 0xD8, 0xA2, 0xD8, 0xB0, 0xD8, 0xB1, 0xD8, 0xA8, 0xD8, 0xA7, 0xDB, 0x8C, 0xD8, 0xAC, 0xD8, 0xA7, 0xD9, 0x86 };
88 static const symbol s_3_22[10] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAF, 0xD8, 0xA7, 0xD9, 0x86 };
89 static const symbol s_3_23[12] = { 0xD8, 0xAE, 0xD8, 0xA7, 0xD9, 0x86, 0xD8, 0xAF, 0xD8, 0xA7, 0xD9, 0x86 };
90 static const symbol s_3_24[10] = { 0xD8, 0xB2, 0xD9, 0x86, 0xD8, 0xAF, 0xD8, 0xA7, 0xD9, 0x86 };
91 static const symbol s_3_25[10] = { 0xD9, 0x85, 0xDB, 0x8C, 0xD8, 0xB2, 0xD8, 0xA7, 0xD9, 0x86 };
92 static const symbol s_3_26[14] = { 0xD8, 0xA2, 0xD8, 0xAA, 0xD8, 0xB4, 0xD9, 0x81, 0xD8, 0xB4, 0xD8, 0xA7, 0xD9, 0x86 };
93 static const symbol s_3_27[8] = { 0xD9, 0x86, 0xD8, 0xB4, 0xD8, 0xA7, 0xD9, 0x86 };
94 static const symbol s_3_28[10] = { 0xD8, 0xA7, 0xDB, 0x8C, 0xD8, 0xB4, 0xD8, 0xA7, 0xD9, 0x86 };
95 static const symbol s_3_29[12] = { 0xD9, 0xBE, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xB4, 0xD8, 0xA7, 0xD9, 0x86 };
96 static const symbol s_3_30[12] = { 0xDA, 0xA9, 0xD9, 0x87, 0xDA, 0xA9, 0xD8, 0xB4, 0xD8, 0xA7, 0xD9, 0x86 };
97 static const symbol s_3_31[12] = { 0xD8, 0xAF, 0xD8, 0xB1, 0xD8, 0xAE, 0xD8, 0xB4, 0xD8, 0xA7, 0xD9, 0x86 };
98 static const symbol s_3_32[10] = { 0xD8, 0xB3, 0xD9, 0x84, 0xD8, 0xB7, 0xD8, 0xA7, 0xD9, 0x86 };
99 static const struct among a_3[33] = {
100 { 10, s_3_0, 0, 1, 0},
101 { 10, s_3_1, 0, 1, 0},
102 { 12, s_3_2, 0, 1, 0},
103 { 12, s_3_3, 0, 1, 0},
104 { 10, s_3_4, 0, 1, 0},
105 { 10, s_3_5, 0, 1, 0},
106 { 14, s_3_6, 0, 1, 0},
107 { 8, s_3_7, 0, 1, 0},
108 { 12, s_3_8, -1, 1, 0},
109 { 10, s_3_9, -2, 1, 0},
110 { 10, s_3_10, -3, 1, 0},
111 { 12, s_3_11, 0, 1, 0},
112 { 12, s_3_12, 0, 1, 0},
113 { 10, s_3_13, 0, 1, 0},
114 { 10, s_3_14, 0, 1, 0},
115 { 10, s_3_15, 0, 1, 0},
116 { 12, s_3_16, 0, 1, 0},
117 { 10, s_3_17, 0, 1, 0},
118 { 8, s_3_18, 0, 1, 0},
119 { 10, s_3_19, 0, 1, 0},
120 { 10, s_3_20, 0, 1, 0},
121 { 18, s_3_21, 0, 1, 0},
122 { 10, s_3_22, 0, 1, 0},
123 { 12, s_3_23, 0, 1, 0},
124 { 10, s_3_24, 0, 1, 0},
125 { 10, s_3_25, 0, 1, 0},
126 { 14, s_3_26, 0, 1, 0},
127 { 8, s_3_27, 0, 1, 0},
128 { 10, s_3_28, 0, 1, 0},
129 { 12, s_3_29, 0, 1, 0},
130 { 12, s_3_30, 0, 1, 0},
131 { 12, s_3_31, 0, 1, 0},
132 { 10, s_3_32, 0, 1, 0}
133 };
134 
135 static const symbol s_4_0[12] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xA7, 0xD8, 0xAA, 0xDB, 0x8C, 0xD8, 0xAF };
136 static const symbol s_4_1[10] = { 0xD8, 0xA7, 0xD8, 0xAE, 0xD8, 0xA8, 0xD8, 0xA7, 0xD8, 0xB1 };
137 static const struct among a_4[2] = {
138 { 12, s_4_0, 0, 2, 0},
139 { 10, s_4_1, 0, 1, 0}
140 };
141 
142 static const symbol s_5_0[4] = { 0xD8, 0xA7, 0xD9, 0x85 };
143 static const symbol s_5_1[4] = { 0xDB, 0x8C, 0xD9, 0x86 };
144 static const symbol s_5_2[8] = { 0xD8, 0xAA, 0xD8, 0xB1, 0xDB, 0x8C, 0xD9, 0x86 };
145 static const symbol s_5_3[4] = { 0xD8, 0xA7, 0xD9, 0x86 };
146 static const symbol s_5_4[6] = { 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x86 };
147 static const symbol s_5_5[6] = { 0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x86 };
148 static const symbol s_5_6[6] = { 0xDA, 0xAF, 0xD8, 0xA7, 0xD9, 0x86 };
149 static const symbol s_5_7[6] = { 0xD8, 0xA7, 0xD9, 0x86, 0xD9, 0x87 };
150 static const symbol s_5_8[6] = { 0xDA, 0xAF, 0xD8, 0xA7, 0xD9, 0x87 };
151 static const symbol s_5_9[6] = { 0xD8, 0xA7, 0xD9, 0x86, 0xDB, 0x8C };
152 static const symbol s_5_10[4] = { 0xDB, 0x8C, 0xDB, 0x8C };
153 static const symbol s_5_11[6] = { 0xD9, 0x87, 0xD8, 0xA7, 0xDB, 0x8C };
154 static const symbol s_5_12[4] = { 0xDA, 0xAF, 0xDB, 0x8C };
155 static const symbol s_5_13[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
156 static const symbol s_5_14[6] = { 0xD9, 0x86, 0xD8, 0xA7, 0xDA, 0xA9 };
157 static const symbol s_5_15[4] = { 0xDB, 0x8C, 0xD8, 0xAA };
158 static const symbol s_5_16[4] = { 0xD8, 0xA7, 0xD8, 0xAA };
159 static const symbol s_5_17[6] = { 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAF };
160 static const symbol s_5_18[6] = { 0xD9, 0x88, 0xD8, 0xA7, 0xD8, 0xB1 };
161 static const symbol s_5_19[6] = { 0xDA, 0xAF, 0xD8, 0xA7, 0xD8, 0xB1 };
162 static const symbol s_5_20[4] = { 0xD8, 0xAA, 0xD8, 0xB1 };
163 static const symbol s_5_21[4] = { 0xD8, 0xA7, 0xD8, 0xB4 };
164 static const struct among a_5[22] = {
165 { 4, s_5_0, 0, 1, 0},
166 { 4, s_5_1, 0, 1, 0},
167 { 8, s_5_2, -1, 1, 0},
168 { 4, s_5_3, 0, 1, 0},
169 { 6, s_5_4, -1, 1, 0},
170 { 6, s_5_5, -2, 1, 0},
171 { 6, s_5_6, -3, 1, 0},
172 { 6, s_5_7, 0, 1, 0},
173 { 6, s_5_8, 0, 1, 0},
174 { 6, s_5_9, 0, 1, 0},
175 { 4, s_5_10, 0, 1, 0},
176 { 6, s_5_11, 0, 1, 0},
177 { 4, s_5_12, 0, 1, 0},
178 { 4, s_5_13, 0, 1, 0},
179 { 6, s_5_14, 0, 1, 0},
180 { 4, s_5_15, 0, 1, 0},
181 { 4, s_5_16, 0, 1, 0},
182 { 6, s_5_17, 0, 1, 0},
183 { 6, s_5_18, 0, 1, 0},
184 { 6, s_5_19, 0, 1, 0},
185 { 4, s_5_20, 0, 2, 0},
186 { 4, s_5_21, 0, 1, 0}
187 };
188 
189 static const symbol s_6_0[4] = { 0xDB, 0x8C, 0xD9, 0x85 };
190 static const symbol s_6_1[6] = { 0xD8, 0xA7, 0xDB, 0x8C, 0xD9, 0x85 };
191 static const symbol s_6_2[4] = { 0xD8, 0xA7, 0xDB, 0x8C };
192 static const symbol s_6_3[6] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA };
193 static const symbol s_6_4[6] = { 0xD8, 0xA7, 0xD9, 0x86, 0xD8, 0xAF };
194 static const symbol s_6_5[4] = { 0xDB, 0x8C, 0xD8, 0xAF };
195 static const symbol s_6_6[6] = { 0xD8, 0xA7, 0xDB, 0x8C, 0xD8, 0xAF };
196 static const symbol s_6_7[4] = { 0xD8, 0xA7, 0xD8, 0xB3 };
197 static const struct among a_6[8] = {
198 { 4, s_6_0, 0, 1, 0},
199 { 6, s_6_1, -1, 1, 0},
200 { 4, s_6_2, 0, 1, 0},
201 { 6, s_6_3, 0, 1, 0},
202 { 6, s_6_4, 0, 1, 0},
203 { 4, s_6_5, 0, 1, 0},
204 { 6, s_6_6, -1, 1, 0},
205 { 4, s_6_7, 0, 1, 0}
206 };
207 
208 static const symbol s_7_0[2] = { 0xD9, 0x85 };
209 static const symbol s_7_1[4] = { 0xDB, 0x8C, 0xD9, 0x85 };
210 static const symbol s_7_2[10] = { 0xD8, 0xB1, 0xD9, 0x81, 0xD8, 0xAA, 0xDB, 0x8C, 0xD9, 0x85 };
211 static const symbol s_7_3[4] = { 0xD8, 0xA7, 0xD9, 0x85 };
212 static const symbol s_7_4[8] = { 0xD8, 0xB1, 0xD9, 0x81, 0xD8, 0xAA, 0xD9, 0x85 };
213 static const symbol s_7_5[4] = { 0xD8, 0xA7, 0xD9, 0x86 };
214 static const symbol s_7_6[4] = { 0xD8, 0xAA, 0xD9, 0x87 };
215 static const symbol s_7_7[4] = { 0xD8, 0xAF, 0xD9, 0x87 };
216 static const symbol s_7_8[6] = { 0xD9, 0x86, 0xD8, 0xAF, 0xD9, 0x87 };
217 static const symbol s_7_9[8] = { 0xD8, 0xB1, 0xD9, 0x81, 0xD8, 0xAA, 0xDB, 0x8C };
218 static const symbol s_7_10[2] = { 0xD8, 0xAF };
219 static const symbol s_7_11[6] = { 0xD8, 0xA7, 0xD9, 0x86, 0xD8, 0xAF };
220 static const symbol s_7_12[12] = { 0xD8, 0xB1, 0xD9, 0x81, 0xD8, 0xAA, 0xD8, 0xA7, 0xD9, 0x86, 0xD8, 0xAF };
221 static const symbol s_7_13[4] = { 0xDB, 0x8C, 0xD8, 0xAF };
222 static const symbol s_7_14[10] = { 0xD8, 0xB1, 0xD9, 0x81, 0xD8, 0xAA, 0xDB, 0x8C, 0xD8, 0xAF };
223 static const struct among a_7[15] = {
224 { 2, s_7_0, 0, 1, 0},
225 { 4, s_7_1, -1, 1, 0},
226 { 10, s_7_2, -1, 2, 0},
227 { 4, s_7_3, -3, 1, 0},
228 { 8, s_7_4, -4, 2, 0},
229 { 4, s_7_5, 0, 3, 0},
230 { 4, s_7_6, 0, 5, 0},
231 { 4, s_7_7, 0, 4, 0},
232 { 6, s_7_8, -1, 3, 0},
233 { 8, s_7_9, 0, 2, 0},
234 { 2, s_7_10, 0, 1, 0},
235 { 6, s_7_11, -1, 1, 0},
236 { 12, s_7_12, -1, 2, 0},
237 { 4, s_7_13, -3, 1, 0},
238 { 10, s_7_14, -1, 2, 0}
239 };
240 
242  int among_var;
243  int i_p1;
244  bool b_remove_verb_person_endings;
245  bool b_saw_present_prefix;
246  b_saw_present_prefix = false;
247  {
248  int v_1 = z->c;
249  while (1) {
250  int v_2 = z->c;
251  z->bra = z->c;
252  among_var = find_among(z, a_0, 11, 0);
253  z->ket = z->c;
254  switch (among_var) {
255  case 1:
256  slice_from_s(z, 2, s_0);
257  break;
258  case 2:
259  slice_from_s(z, 2, s_1);
260  break;
261  case 3:
262  slice_from_s(z, 2, s_2);
263  break;
264  case 4:
265  slice_from_s(z, 2, s_3);
266  break;
267  case 5:
268  slice_from_s(z, 2, s_4);
269  break;
270  case 6:
271  slice_del(z);
272  break;
273  case 7:
274  {
275  int ret = skip_utf8(z->p, z->c, z->l, 1);
276  if (ret < 0) goto lab1;
277  z->c = ret;
278  }
279  break;
280  }
281  continue;
282  lab1:
283  z->c = v_2;
284  break;
285  }
286  z->c = v_1;
287  }
288  {
289  int v_3 = z->c;
290  z->bra = z->c;
291  if (z->c + 6 >= z->l || (z->p[z->c + 6] != 140 && z->p[z->c + 6] != 226)) goto lab2;
292  among_var = find_among(z, a_1, 2, 0);
293  if (!among_var) goto lab2;
294  z->ket = z->c;
295  switch (among_var) {
296  case 1:
297  {
298  int ret = skip_utf8(z->p, z->c, z->l, 2);
299  if (ret < 0) goto lab2;
300  z->c = ret;
301  }
302  b_saw_present_prefix = true;
303  break;
304  case 2:
305  {
306  int ret = skip_utf8(z->p, z->c, z->l, 2);
307  if (ret < 0) goto lab2;
308  z->c = ret;
309  }
310  slice_del(z);
311  b_saw_present_prefix = true;
312  break;
313  }
314  lab2:
315  z->c = v_3;
316  }
317  {
318  int v_4 = z->c;
319  while (1) {
320  int v_5 = z->c;
321  while (1) {
322  int v_6 = z->c;
323  z->bra = z->c;
324  if (!(eq_s(z, 3, s_5))) goto lab5;
325  z->ket = z->c;
326  slice_del(z);
327  z->c = v_6;
328  break;
329  lab5:
330  z->c = v_6;
331  {
332  int ret = skip_utf8(z->p, z->c, z->l, 1);
333  if (ret < 0) goto lab4;
334  z->c = ret;
335  }
336  }
337  continue;
338  lab4:
339  z->c = v_5;
340  break;
341  }
342  z->c = v_4;
343  }
344  i_p1 = z->l;
345  {
346  int v_7 = z->c;
347  {
348  int ret = skip_utf8(z->p, z->c, z->l, 3);
349  if (ret < 0) goto lab6;
350  z->c = ret;
351  }
352  i_p1 = z->c;
353  lab6:
354  z->c = v_7;
355  }
356  z->lb = z->c; z->c = z->l;
357  while (1) {
358  int v_8 = z->l - z->c;
359  {
360  int v_9 = z->l - z->c;
361  b_remove_verb_person_endings = false;
362  if (!b_saw_present_prefix) goto lab8;
363  b_remove_verb_person_endings = true;
364  lab8:
365  {
366  int v_10 = z->l - z->c;
367  if (z->c - 7 <= z->lb || z->p[z->c - 1] != 134) goto lab9;
368  if (!find_among_b(z, a_3, 33, 0)) goto lab9;
369  if (z->c > z->lb) goto lab9;
370  goto lab7;
371  lab9:
372  z->c = z->l - v_10;
373  }
374  {
375  int v_11 = z->l - z->c;
376  if (z->c - 5 <= z->lb || z->p[z->c - 1] != 134) goto lab10;
377  if (!find_among_b(z, a_2, 4, 0)) goto lab10;
378  goto lab7;
379  lab10:
380  z->c = z->l - v_11;
381  }
382  do {
383  int v_12 = z->l - z->c;
384  do {
385  int v_13 = z->l - z->c;
386  z->ket = z->c;
387  if (z->c - 9 <= z->lb || (z->p[z->c - 1] != 175 && z->p[z->c - 1] != 177)) goto lab12;
388  among_var = find_among_b(z, a_4, 2, 0);
389  if (!among_var) goto lab12;
390  z->bra = z->c;
391  switch (among_var) {
392  case 1:
393  slice_from_s(z, 6, s_6);
394  break;
395  case 2:
396  slice_from_s(z, 10, s_7);
397  break;
398  }
399  break;
400  lab12:
401  z->c = z->l - v_13;
402  {
403  int v_14;
404  if (z->c < i_p1) goto lab11;
405  v_14 = z->lb; z->lb = i_p1;
406  z->ket = z->c;
407  among_var = find_among_b(z, a_5, 22, 0);
408  if (!among_var) { z->lb = v_14; goto lab11; }
409  z->bra = z->c;
410  switch (among_var) {
411  case 1:
412  slice_del(z);
413  break;
414  case 2:
415  if (z->c <= z->lb) { z->lb = v_14; goto lab11; }
416  slice_del(z);
417  break;
418  }
419  z->lb = v_14;
420  }
421  } while (0);
422  break;
423  lab11:
424  z->c = z->l - v_12;
425  do {
426  int v_15 = z->l - z->c;
427  z->ket = z->c;
428  if (!find_among_b(z, a_6, 8, 0)) goto lab13;
429  z->bra = z->c;
430  if (i_p1 > z->c) goto lab13;
431  slice_del(z);
432  break;
433  lab13:
434  z->c = z->l - v_15;
435  z->ket = z->c;
436  among_var = find_among_b(z, a_7, 15, 0);
437  if (!among_var) goto lab7;
438  z->bra = z->c;
439  switch (among_var) {
440  case 1:
441  if (!b_remove_verb_person_endings) goto lab7;
442  if (i_p1 > z->c) goto lab7;
443  slice_del(z);
444  break;
445  case 2:
446  slice_from_s(z, 6, s_8);
447  break;
448  case 3:
449  if (i_p1 > z->c) goto lab7;
450  slice_del(z);
451  b_remove_verb_person_endings = true;
452  break;
453  case 4:
454  if (z->c <= z->lb) goto lab7;
455  slice_from_s(z, 2, s_9);
456  b_remove_verb_person_endings = true;
457  break;
458  case 5:
459  if (z->c <= z->lb) goto lab7;
460  slice_from_s(z, 2, s_10);
461  b_remove_verb_person_endings = true;
462  break;
463  }
464  } while (0);
465  } while (0);
466  z->c = z->l - v_9;
467  }
468  continue;
469  lab7:
470  z->c = z->l - v_8;
471  break;
472  }
473  z->c = z->lb;
474  return 1;
475 }
unsigned char symbol
Definition: api.h:4
static int stem(struct SN_env *z)
Definition: persian.cc:241
static const symbol s_7_2[10]
Definition: persian.cc:210
static const symbol s_2[]
Definition: persian.cc:14
static const symbol s_0_4[2]
Definition: persian.cc:27
static const struct among a_3[33]
Definition: persian.cc:99
static const symbol s_6_6[6]
Definition: persian.cc:195
static const symbol s_0_5[2]
Definition: persian.cc:28
static const symbol s_4[]
Definition: persian.cc:16
static const symbol s_6_3[6]
Definition: persian.cc:192
static const symbol s_7_13[4]
Definition: persian.cc:221
static const symbol s_5_11[6]
Definition: persian.cc:153
static const symbol s_3_14[10]
Definition: persian.cc:80
static const symbol s_3_6[14]
Definition: persian.cc:72
Xapian::Internal::Snowball::Persian::SN_local SN_local
Definition: persian.cc:10
static const symbol s_0_8[2]
Definition: persian.cc:31
static const symbol s_0_10[3]
Definition: persian.cc:33
static const symbol s_3_0[10]
Definition: persian.cc:66
static const symbol s_3_16[12]
Definition: persian.cc:82
static const symbol s_5_0[4]
Definition: persian.cc:142
static const symbol s_3_30[12]
Definition: persian.cc:96
static const symbol s_7_14[10]
Definition: persian.cc:222
static const symbol s_3_12[12]
Definition: persian.cc:78
static const symbol s_6_1[6]
Definition: persian.cc:190
static const symbol s_3_23[12]
Definition: persian.cc:89
static const symbol s_6_7[4]
Definition: persian.cc:196
static const symbol s_3_29[12]
Definition: persian.cc:95
static const struct among a_7[15]
Definition: persian.cc:223
static const symbol s_5_2[8]
Definition: persian.cc:144
static const struct among a_6[8]
Definition: persian.cc:197
static const symbol s_5_18[6]
Definition: persian.cc:160
static const symbol s_3_18[8]
Definition: persian.cc:84
static const symbol s_2_1[8]
Definition: persian.cc:56
static const symbol s_6[]
Definition: persian.cc:18
static const symbol s_7_4[8]
Definition: persian.cc:212
static const symbol s_7_1[4]
Definition: persian.cc:209
static const symbol s_5_17[6]
Definition: persian.cc:159
static const symbol s_3[]
Definition: persian.cc:15
static const symbol s_0_7[2]
Definition: persian.cc:30
static const symbol s_3_1[10]
Definition: persian.cc:67
static const symbol s_3_8[12]
Definition: persian.cc:74
static const symbol s_3_31[12]
Definition: persian.cc:97
static const symbol s_7_9[8]
Definition: persian.cc:217
static const symbol s_6_2[4]
Definition: persian.cc:191
static const symbol s_7_0[2]
Definition: persian.cc:208
static const symbol s_3_5[10]
Definition: persian.cc:71
static const symbol s_3_10[10]
Definition: persian.cc:76
static const symbol s_7_6[4]
Definition: persian.cc:214
static const symbol s_7[]
Definition: persian.cc:19
static const symbol s_4_1[10]
Definition: persian.cc:136
static const symbol s_3_20[10]
Definition: persian.cc:86
static const symbol s_3_13[10]
Definition: persian.cc:79
static const symbol s_4_0[12]
Definition: persian.cc:135
static const symbol s_3_21[18]
Definition: persian.cc:87
static const symbol s_1_0[7]
Definition: persian.cc:48
static const symbol s_3_24[10]
Definition: persian.cc:90
static const symbol s_7_3[4]
Definition: persian.cc:211
static const symbol s_7_8[6]
Definition: persian.cc:216
static const symbol s_2_3[6]
Definition: persian.cc:58
static const struct among a_1[2]
Definition: persian.cc:50
static const symbol s_3_22[10]
Definition: persian.cc:88
static const symbol s_3_27[8]
Definition: persian.cc:93
static const symbol s_5_6[6]
Definition: persian.cc:148
static const symbol s_7_7[4]
Definition: persian.cc:215
static const symbol s_7_11[6]
Definition: persian.cc:219
static const symbol s_5_4[6]
Definition: persian.cc:146
static const symbol s_5_3[4]
Definition: persian.cc:145
static const symbol s_3_7[8]
Definition: persian.cc:73
static const symbol s_5_5[6]
Definition: persian.cc:147
static const symbol s_3_28[10]
Definition: persian.cc:94
static const struct among a_4[2]
Definition: persian.cc:137
static const symbol s_10[]
Definition: persian.cc:22
static const symbol s_5_12[4]
Definition: persian.cc:154
static const symbol s_6_4[6]
Definition: persian.cc:193
static const symbol s_5_8[6]
Definition: persian.cc:150
static const struct among a_2[4]
Definition: persian.cc:59
static const symbol s_1[]
Definition: persian.cc:13
static const symbol s_5_21[4]
Definition: persian.cc:163
static const symbol s_2_0[6]
Definition: persian.cc:55
static const symbol s_5_13[4]
Definition: persian.cc:155
static const symbol s_3_11[12]
Definition: persian.cc:77
static const symbol s_5_10[4]
Definition: persian.cc:152
static const symbol s_7_12[12]
Definition: persian.cc:220
static const struct among a_5[22]
Definition: persian.cc:164
static const struct among a_0[11]
Definition: persian.cc:34
static const symbol s_5_19[6]
Definition: persian.cc:161
static const symbol s_7_5[4]
Definition: persian.cc:213
static const symbol s_0_6[2]
Definition: persian.cc:29
static const symbol s_3_9[10]
Definition: persian.cc:75
static const symbol s_0_1[1]
Definition: persian.cc:24
static const symbol s_3_26[14]
Definition: persian.cc:92
static const symbol s_3_32[10]
Definition: persian.cc:98
static const symbol s_5_7[6]
Definition: persian.cc:149
static const symbol s_3_17[10]
Definition: persian.cc:83
static const symbol s_5_16[4]
Definition: persian.cc:158
static const symbol s_3_4[10]
Definition: persian.cc:70
static const symbol s_0_2[2]
Definition: persian.cc:25
static const symbol s_6_0[4]
Definition: persian.cc:189
static const symbol s_3_25[10]
Definition: persian.cc:91
static const symbol s_3_19[10]
Definition: persian.cc:85
static const symbol s_2_2[6]
Definition: persian.cc:57
static const symbol s_0_3[2]
Definition: persian.cc:26
static const symbol s_5_14[6]
Definition: persian.cc:156
static const symbol s_7_10[2]
Definition: persian.cc:218
static const symbol s_3_2[12]
Definition: persian.cc:68
static const symbol s_8[]
Definition: persian.cc:20
static const symbol s_9[]
Definition: persian.cc:21
static const symbol s_5_9[6]
Definition: persian.cc:151
static const symbol s_0_9[2]
Definition: persian.cc:32
static const symbol s_6_5[4]
Definition: persian.cc:194
static const symbol s_5[]
Definition: persian.cc:17
static const symbol s_3_15[10]
Definition: persian.cc:81
static const symbol s_5_20[4]
Definition: persian.cc:162
static const symbol s_3_3[12]
Definition: persian.cc:69
static const symbol s_5_1[4]
Definition: persian.cc:143
static const symbol s_0[]
Definition: persian.cc:12
static const symbol s_5_15[4]
Definition: persian.cc:157
static const symbol s_1_1[9]
Definition: persian.cc:49
SNOWBALL_ERR slice_from_s(struct SN_env *z, int s_size, const symbol *s)
int eq_s(struct SN_env *z, int s_size, const symbol *s)
int find_among_b(struct SN_env *z, const struct among *v, int v_size, int(*call_among_func)(struct SN_env *))
SNOWBALL_ERR slice_del(struct SN_env *z)
int skip_utf8(const symbol *p, int c, int limit, int n)
int find_among(struct SN_env *z, const struct among *v, int v_size, int(*call_among_func)(struct SN_env *))
Definition: api.h:12
int lb
Definition: api.h:14
symbol * p
Definition: api.h:13
int ket
Definition: api.h:14
int c
Definition: api.h:14
int bra
Definition: api.h:14
int l
Definition: api.h:14
Definition: header.h:295