italian_stemmer.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. # Generated by Snowball 2.2.0 - https://snowballstem.org/
  2. from .basestemmer import BaseStemmer
  3. from .among import Among
  4. class ItalianStemmer(BaseStemmer):
  5. '''
  6. This class implements the stemming algorithm defined by a snowball script.
  7. Generated by Snowball 2.2.0 - https://snowballstem.org/
  8. '''
  9. a_0 = [
  10. Among(u"", -1, 7),
  11. Among(u"qu", 0, 6),
  12. Among(u"\u00E1", 0, 1),
  13. Among(u"\u00E9", 0, 2),
  14. Among(u"\u00ED", 0, 3),
  15. Among(u"\u00F3", 0, 4),
  16. Among(u"\u00FA", 0, 5)
  17. ]
  18. a_1 = [
  19. Among(u"", -1, 3),
  20. Among(u"I", 0, 1),
  21. Among(u"U", 0, 2)
  22. ]
  23. a_2 = [
  24. Among(u"la", -1, -1),
  25. Among(u"cela", 0, -1),
  26. Among(u"gliela", 0, -1),
  27. Among(u"mela", 0, -1),
  28. Among(u"tela", 0, -1),
  29. Among(u"vela", 0, -1),
  30. Among(u"le", -1, -1),
  31. Among(u"cele", 6, -1),
  32. Among(u"gliele", 6, -1),
  33. Among(u"mele", 6, -1),
  34. Among(u"tele", 6, -1),
  35. Among(u"vele", 6, -1),
  36. Among(u"ne", -1, -1),
  37. Among(u"cene", 12, -1),
  38. Among(u"gliene", 12, -1),
  39. Among(u"mene", 12, -1),
  40. Among(u"sene", 12, -1),
  41. Among(u"tene", 12, -1),
  42. Among(u"vene", 12, -1),
  43. Among(u"ci", -1, -1),
  44. Among(u"li", -1, -1),
  45. Among(u"celi", 20, -1),
  46. Among(u"glieli", 20, -1),
  47. Among(u"meli", 20, -1),
  48. Among(u"teli", 20, -1),
  49. Among(u"veli", 20, -1),
  50. Among(u"gli", 20, -1),
  51. Among(u"mi", -1, -1),
  52. Among(u"si", -1, -1),
  53. Among(u"ti", -1, -1),
  54. Among(u"vi", -1, -1),
  55. Among(u"lo", -1, -1),
  56. Among(u"celo", 31, -1),
  57. Among(u"glielo", 31, -1),
  58. Among(u"melo", 31, -1),
  59. Among(u"telo", 31, -1),
  60. Among(u"velo", 31, -1)
  61. ]
  62. a_3 = [
  63. Among(u"ando", -1, 1),
  64. Among(u"endo", -1, 1),
  65. Among(u"ar", -1, 2),
  66. Among(u"er", -1, 2),
  67. Among(u"ir", -1, 2)
  68. ]
  69. a_4 = [
  70. Among(u"ic", -1, -1),
  71. Among(u"abil", -1, -1),
  72. Among(u"os", -1, -1),
  73. Among(u"iv", -1, 1)
  74. ]
  75. a_5 = [
  76. Among(u"ic", -1, 1),
  77. Among(u"abil", -1, 1),
  78. Among(u"iv", -1, 1)
  79. ]
  80. a_6 = [
  81. Among(u"ica", -1, 1),
  82. Among(u"logia", -1, 3),
  83. Among(u"osa", -1, 1),
  84. Among(u"ista", -1, 1),
  85. Among(u"iva", -1, 9),
  86. Among(u"anza", -1, 1),
  87. Among(u"enza", -1, 5),
  88. Among(u"ice", -1, 1),
  89. Among(u"atrice", 7, 1),
  90. Among(u"iche", -1, 1),
  91. Among(u"logie", -1, 3),
  92. Among(u"abile", -1, 1),
  93. Among(u"ibile", -1, 1),
  94. Among(u"usione", -1, 4),
  95. Among(u"azione", -1, 2),
  96. Among(u"uzione", -1, 4),
  97. Among(u"atore", -1, 2),
  98. Among(u"ose", -1, 1),
  99. Among(u"ante", -1, 1),
  100. Among(u"mente", -1, 1),
  101. Among(u"amente", 19, 7),
  102. Among(u"iste", -1, 1),
  103. Among(u"ive", -1, 9),
  104. Among(u"anze", -1, 1),
  105. Among(u"enze", -1, 5),
  106. Among(u"ici", -1, 1),
  107. Among(u"atrici", 25, 1),
  108. Among(u"ichi", -1, 1),
  109. Among(u"abili", -1, 1),
  110. Among(u"ibili", -1, 1),
  111. Among(u"ismi", -1, 1),
  112. Among(u"usioni", -1, 4),
  113. Among(u"azioni", -1, 2),
  114. Among(u"uzioni", -1, 4),
  115. Among(u"atori", -1, 2),
  116. Among(u"osi", -1, 1),
  117. Among(u"anti", -1, 1),
  118. Among(u"amenti", -1, 6),
  119. Among(u"imenti", -1, 6),
  120. Among(u"isti", -1, 1),
  121. Among(u"ivi", -1, 9),
  122. Among(u"ico", -1, 1),
  123. Among(u"ismo", -1, 1),
  124. Among(u"oso", -1, 1),
  125. Among(u"amento", -1, 6),
  126. Among(u"imento", -1, 6),
  127. Among(u"ivo", -1, 9),
  128. Among(u"it\u00E0", -1, 8),
  129. Among(u"ist\u00E0", -1, 1),
  130. Among(u"ist\u00E8", -1, 1),
  131. Among(u"ist\u00EC", -1, 1)
  132. ]
  133. a_7 = [
  134. Among(u"isca", -1, 1),
  135. Among(u"enda", -1, 1),
  136. Among(u"ata", -1, 1),
  137. Among(u"ita", -1, 1),
  138. Among(u"uta", -1, 1),
  139. Among(u"ava", -1, 1),
  140. Among(u"eva", -1, 1),
  141. Among(u"iva", -1, 1),
  142. Among(u"erebbe", -1, 1),
  143. Among(u"irebbe", -1, 1),
  144. Among(u"isce", -1, 1),
  145. Among(u"ende", -1, 1),
  146. Among(u"are", -1, 1),
  147. Among(u"ere", -1, 1),
  148. Among(u"ire", -1, 1),
  149. Among(u"asse", -1, 1),
  150. Among(u"ate", -1, 1),
  151. Among(u"avate", 16, 1),
  152. Among(u"evate", 16, 1),
  153. Among(u"ivate", 16, 1),
  154. Among(u"ete", -1, 1),
  155. Among(u"erete", 20, 1),
  156. Among(u"irete", 20, 1),
  157. Among(u"ite", -1, 1),
  158. Among(u"ereste", -1, 1),
  159. Among(u"ireste", -1, 1),
  160. Among(u"ute", -1, 1),
  161. Among(u"erai", -1, 1),
  162. Among(u"irai", -1, 1),
  163. Among(u"isci", -1, 1),
  164. Among(u"endi", -1, 1),
  165. Among(u"erei", -1, 1),
  166. Among(u"irei", -1, 1),
  167. Among(u"assi", -1, 1),
  168. Among(u"ati", -1, 1),
  169. Among(u"iti", -1, 1),
  170. Among(u"eresti", -1, 1),
  171. Among(u"iresti", -1, 1),
  172. Among(u"uti", -1, 1),
  173. Among(u"avi", -1, 1),
  174. Among(u"evi", -1, 1),
  175. Among(u"ivi", -1, 1),
  176. Among(u"isco", -1, 1),
  177. Among(u"ando", -1, 1),
  178. Among(u"endo", -1, 1),
  179. Among(u"Yamo", -1, 1),
  180. Among(u"iamo", -1, 1),
  181. Among(u"avamo", -1, 1),
  182. Among(u"evamo", -1, 1),
  183. Among(u"ivamo", -1, 1),
  184. Among(u"eremo", -1, 1),
  185. Among(u"iremo", -1, 1),
  186. Among(u"assimo", -1, 1),
  187. Among(u"ammo", -1, 1),
  188. Among(u"emmo", -1, 1),
  189. Among(u"eremmo", 54, 1),
  190. Among(u"iremmo", 54, 1),
  191. Among(u"immo", -1, 1),
  192. Among(u"ano", -1, 1),
  193. Among(u"iscano", 58, 1),
  194. Among(u"avano", 58, 1),
  195. Among(u"evano", 58, 1),
  196. Among(u"ivano", 58, 1),
  197. Among(u"eranno", -1, 1),
  198. Among(u"iranno", -1, 1),
  199. Among(u"ono", -1, 1),
  200. Among(u"iscono", 65, 1),
  201. Among(u"arono", 65, 1),
  202. Among(u"erono", 65, 1),
  203. Among(u"irono", 65, 1),
  204. Among(u"erebbero", -1, 1),
  205. Among(u"irebbero", -1, 1),
  206. Among(u"assero", -1, 1),
  207. Among(u"essero", -1, 1),
  208. Among(u"issero", -1, 1),
  209. Among(u"ato", -1, 1),
  210. Among(u"ito", -1, 1),
  211. Among(u"uto", -1, 1),
  212. Among(u"avo", -1, 1),
  213. Among(u"evo", -1, 1),
  214. Among(u"ivo", -1, 1),
  215. Among(u"ar", -1, 1),
  216. Among(u"ir", -1, 1),
  217. Among(u"er\u00E0", -1, 1),
  218. Among(u"ir\u00E0", -1, 1),
  219. Among(u"er\u00F2", -1, 1),
  220. Among(u"ir\u00F2", -1, 1)
  221. ]
  222. g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1]
  223. g_AEIO = [17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2]
  224. g_CG = [17]
  225. I_p2 = 0
  226. I_p1 = 0
  227. I_pV = 0
  228. def __r_prelude(self):
  229. v_1 = self.cursor
  230. while True:
  231. v_2 = self.cursor
  232. try:
  233. self.bra = self.cursor
  234. among_var = self.find_among(ItalianStemmer.a_0)
  235. if among_var == 0:
  236. raise lab0()
  237. self.ket = self.cursor
  238. if among_var == 1:
  239. if not self.slice_from(u"\u00E0"):
  240. return False
  241. elif among_var == 2:
  242. if not self.slice_from(u"\u00E8"):
  243. return False
  244. elif among_var == 3:
  245. if not self.slice_from(u"\u00EC"):
  246. return False
  247. elif among_var == 4:
  248. if not self.slice_from(u"\u00F2"):
  249. return False
  250. elif among_var == 5:
  251. if not self.slice_from(u"\u00F9"):
  252. return False
  253. elif among_var == 6:
  254. if not self.slice_from(u"qU"):
  255. return False
  256. else:
  257. if self.cursor >= self.limit:
  258. raise lab0()
  259. self.cursor += 1
  260. continue
  261. except lab0: pass
  262. self.cursor = v_2
  263. break
  264. self.cursor = v_1
  265. while True:
  266. v_3 = self.cursor
  267. try:
  268. try:
  269. while True:
  270. v_4 = self.cursor
  271. try:
  272. if not self.in_grouping(ItalianStemmer.g_v, 97, 249):
  273. raise lab3()
  274. self.bra = self.cursor
  275. try:
  276. v_5 = self.cursor
  277. try:
  278. if not self.eq_s(u"u"):
  279. raise lab5()
  280. self.ket = self.cursor
  281. if not self.in_grouping(ItalianStemmer.g_v, 97, 249):
  282. raise lab5()
  283. if not self.slice_from(u"U"):
  284. return False
  285. raise lab4()
  286. except lab5: pass
  287. self.cursor = v_5
  288. if not self.eq_s(u"i"):
  289. raise lab3()
  290. self.ket = self.cursor
  291. if not self.in_grouping(ItalianStemmer.g_v, 97, 249):
  292. raise lab3()
  293. if not self.slice_from(u"I"):
  294. return False
  295. except lab4: pass
  296. self.cursor = v_4
  297. raise lab2()
  298. except lab3: pass
  299. self.cursor = v_4
  300. if self.cursor >= self.limit:
  301. raise lab1()
  302. self.cursor += 1
  303. except lab2: pass
  304. continue
  305. except lab1: pass
  306. self.cursor = v_3
  307. break
  308. return True
  309. def __r_mark_regions(self):
  310. self.I_pV = self.limit
  311. self.I_p1 = self.limit
  312. self.I_p2 = self.limit
  313. v_1 = self.cursor
  314. try:
  315. try:
  316. v_2 = self.cursor
  317. try:
  318. if not self.in_grouping(ItalianStemmer.g_v, 97, 249):
  319. raise lab2()
  320. try:
  321. v_3 = self.cursor
  322. try:
  323. if not self.out_grouping(ItalianStemmer.g_v, 97, 249):
  324. raise lab4()
  325. if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249):
  326. raise lab4()
  327. self.cursor += 1
  328. raise lab3()
  329. except lab4: pass
  330. self.cursor = v_3
  331. if not self.in_grouping(ItalianStemmer.g_v, 97, 249):
  332. raise lab2()
  333. if not self.go_in_grouping(ItalianStemmer.g_v, 97, 249):
  334. raise lab2()
  335. self.cursor += 1
  336. except lab3: pass
  337. raise lab1()
  338. except lab2: pass
  339. self.cursor = v_2
  340. if not self.out_grouping(ItalianStemmer.g_v, 97, 249):
  341. raise lab0()
  342. try:
  343. v_4 = self.cursor
  344. try:
  345. if not self.out_grouping(ItalianStemmer.g_v, 97, 249):
  346. raise lab6()
  347. if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249):
  348. raise lab6()
  349. self.cursor += 1
  350. raise lab5()
  351. except lab6: pass
  352. self.cursor = v_4
  353. if not self.in_grouping(ItalianStemmer.g_v, 97, 249):
  354. raise lab0()
  355. if self.cursor >= self.limit:
  356. raise lab0()
  357. self.cursor += 1
  358. except lab5: pass
  359. except lab1: pass
  360. self.I_pV = self.cursor
  361. except lab0: pass
  362. self.cursor = v_1
  363. v_5 = self.cursor
  364. try:
  365. if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249):
  366. raise lab7()
  367. self.cursor += 1
  368. if not self.go_in_grouping(ItalianStemmer.g_v, 97, 249):
  369. raise lab7()
  370. self.cursor += 1
  371. self.I_p1 = self.cursor
  372. if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249):
  373. raise lab7()
  374. self.cursor += 1
  375. if not self.go_in_grouping(ItalianStemmer.g_v, 97, 249):
  376. raise lab7()
  377. self.cursor += 1
  378. self.I_p2 = self.cursor
  379. except lab7: pass
  380. self.cursor = v_5
  381. return True
  382. def __r_postlude(self):
  383. while True:
  384. v_1 = self.cursor
  385. try:
  386. self.bra = self.cursor
  387. among_var = self.find_among(ItalianStemmer.a_1)
  388. if among_var == 0:
  389. raise lab0()
  390. self.ket = self.cursor
  391. if among_var == 1:
  392. if not self.slice_from(u"i"):
  393. return False
  394. elif among_var == 2:
  395. if not self.slice_from(u"u"):
  396. return False
  397. else:
  398. if self.cursor >= self.limit:
  399. raise lab0()
  400. self.cursor += 1
  401. continue
  402. except lab0: pass
  403. self.cursor = v_1
  404. break
  405. return True
  406. def __r_RV(self):
  407. if not self.I_pV <= self.cursor:
  408. return False
  409. return True
  410. def __r_R1(self):
  411. if not self.I_p1 <= self.cursor:
  412. return False
  413. return True
  414. def __r_R2(self):
  415. if not self.I_p2 <= self.cursor:
  416. return False
  417. return True
  418. def __r_attached_pronoun(self):
  419. self.ket = self.cursor
  420. if self.find_among_b(ItalianStemmer.a_2) == 0:
  421. return False
  422. self.bra = self.cursor
  423. among_var = self.find_among_b(ItalianStemmer.a_3)
  424. if among_var == 0:
  425. return False
  426. if not self.__r_RV():
  427. return False
  428. if among_var == 1:
  429. if not self.slice_del():
  430. return False
  431. else:
  432. if not self.slice_from(u"e"):
  433. return False
  434. return True
  435. def __r_standard_suffix(self):
  436. self.ket = self.cursor
  437. among_var = self.find_among_b(ItalianStemmer.a_6)
  438. if among_var == 0:
  439. return False
  440. self.bra = self.cursor
  441. if among_var == 1:
  442. if not self.__r_R2():
  443. return False
  444. if not self.slice_del():
  445. return False
  446. elif among_var == 2:
  447. if not self.__r_R2():
  448. return False
  449. if not self.slice_del():
  450. return False
  451. v_1 = self.limit - self.cursor
  452. try:
  453. self.ket = self.cursor
  454. if not self.eq_s_b(u"ic"):
  455. self.cursor = self.limit - v_1
  456. raise lab0()
  457. self.bra = self.cursor
  458. if not self.__r_R2():
  459. self.cursor = self.limit - v_1
  460. raise lab0()
  461. if not self.slice_del():
  462. return False
  463. except lab0: pass
  464. elif among_var == 3:
  465. if not self.__r_R2():
  466. return False
  467. if not self.slice_from(u"log"):
  468. return False
  469. elif among_var == 4:
  470. if not self.__r_R2():
  471. return False
  472. if not self.slice_from(u"u"):
  473. return False
  474. elif among_var == 5:
  475. if not self.__r_R2():
  476. return False
  477. if not self.slice_from(u"ente"):
  478. return False
  479. elif among_var == 6:
  480. if not self.__r_RV():
  481. return False
  482. if not self.slice_del():
  483. return False
  484. elif among_var == 7:
  485. if not self.__r_R1():
  486. return False
  487. if not self.slice_del():
  488. return False
  489. v_2 = self.limit - self.cursor
  490. try:
  491. self.ket = self.cursor
  492. among_var = self.find_among_b(ItalianStemmer.a_4)
  493. if among_var == 0:
  494. self.cursor = self.limit - v_2
  495. raise lab1()
  496. self.bra = self.cursor
  497. if not self.__r_R2():
  498. self.cursor = self.limit - v_2
  499. raise lab1()
  500. if not self.slice_del():
  501. return False
  502. if among_var == 1:
  503. self.ket = self.cursor
  504. if not self.eq_s_b(u"at"):
  505. self.cursor = self.limit - v_2
  506. raise lab1()
  507. self.bra = self.cursor
  508. if not self.__r_R2():
  509. self.cursor = self.limit - v_2
  510. raise lab1()
  511. if not self.slice_del():
  512. return False
  513. except lab1: pass
  514. elif among_var == 8:
  515. if not self.__r_R2():
  516. return False
  517. if not self.slice_del():
  518. return False
  519. v_3 = self.limit - self.cursor
  520. try:
  521. self.ket = self.cursor
  522. if self.find_among_b(ItalianStemmer.a_5) == 0:
  523. self.cursor = self.limit - v_3
  524. raise lab2()
  525. self.bra = self.cursor
  526. if not self.__r_R2():
  527. self.cursor = self.limit - v_3
  528. raise lab2()
  529. if not self.slice_del():
  530. return False
  531. except lab2: pass
  532. else:
  533. if not self.__r_R2():
  534. return False
  535. if not self.slice_del():
  536. return False
  537. v_4 = self.limit - self.cursor
  538. try:
  539. self.ket = self.cursor
  540. if not self.eq_s_b(u"at"):
  541. self.cursor = self.limit - v_4
  542. raise lab3()
  543. self.bra = self.cursor
  544. if not self.__r_R2():
  545. self.cursor = self.limit - v_4
  546. raise lab3()
  547. if not self.slice_del():
  548. return False
  549. self.ket = self.cursor
  550. if not self.eq_s_b(u"ic"):
  551. self.cursor = self.limit - v_4
  552. raise lab3()
  553. self.bra = self.cursor
  554. if not self.__r_R2():
  555. self.cursor = self.limit - v_4
  556. raise lab3()
  557. if not self.slice_del():
  558. return False
  559. except lab3: pass
  560. return True
  561. def __r_verb_suffix(self):
  562. if self.cursor < self.I_pV:
  563. return False
  564. v_2 = self.limit_backward
  565. self.limit_backward = self.I_pV
  566. self.ket = self.cursor
  567. if self.find_among_b(ItalianStemmer.a_7) == 0:
  568. self.limit_backward = v_2
  569. return False
  570. self.bra = self.cursor
  571. if not self.slice_del():
  572. return False
  573. self.limit_backward = v_2
  574. return True
  575. def __r_vowel_suffix(self):
  576. v_1 = self.limit - self.cursor
  577. try:
  578. self.ket = self.cursor
  579. if not self.in_grouping_b(ItalianStemmer.g_AEIO, 97, 242):
  580. self.cursor = self.limit - v_1
  581. raise lab0()
  582. self.bra = self.cursor
  583. if not self.__r_RV():
  584. self.cursor = self.limit - v_1
  585. raise lab0()
  586. if not self.slice_del():
  587. return False
  588. self.ket = self.cursor
  589. if not self.eq_s_b(u"i"):
  590. self.cursor = self.limit - v_1
  591. raise lab0()
  592. self.bra = self.cursor
  593. if not self.__r_RV():
  594. self.cursor = self.limit - v_1
  595. raise lab0()
  596. if not self.slice_del():
  597. return False
  598. except lab0: pass
  599. v_2 = self.limit - self.cursor
  600. try:
  601. self.ket = self.cursor
  602. if not self.eq_s_b(u"h"):
  603. self.cursor = self.limit - v_2
  604. raise lab1()
  605. self.bra = self.cursor
  606. if not self.in_grouping_b(ItalianStemmer.g_CG, 99, 103):
  607. self.cursor = self.limit - v_2
  608. raise lab1()
  609. if not self.__r_RV():
  610. self.cursor = self.limit - v_2
  611. raise lab1()
  612. if not self.slice_del():
  613. return False
  614. except lab1: pass
  615. return True
  616. def _stem(self):
  617. v_1 = self.cursor
  618. self.__r_prelude()
  619. self.cursor = v_1
  620. self.__r_mark_regions()
  621. self.limit_backward = self.cursor
  622. self.cursor = self.limit
  623. v_3 = self.limit - self.cursor
  624. self.__r_attached_pronoun()
  625. self.cursor = self.limit - v_3
  626. v_4 = self.limit - self.cursor
  627. try:
  628. try:
  629. v_5 = self.limit - self.cursor
  630. try:
  631. if not self.__r_standard_suffix():
  632. raise lab2()
  633. raise lab1()
  634. except lab2: pass
  635. self.cursor = self.limit - v_5
  636. if not self.__r_verb_suffix():
  637. raise lab0()
  638. except lab1: pass
  639. except lab0: pass
  640. self.cursor = self.limit - v_4
  641. v_6 = self.limit - self.cursor
  642. self.__r_vowel_suffix()
  643. self.cursor = self.limit - v_6
  644. self.cursor = self.limit_backward
  645. v_7 = self.cursor
  646. self.__r_postlude()
  647. self.cursor = v_7
  648. return True
  649. class lab0(BaseException): pass
  650. class lab1(BaseException): pass
  651. class lab2(BaseException): pass
  652. class lab3(BaseException): pass
  653. class lab4(BaseException): pass
  654. class lab5(BaseException): pass
  655. class lab6(BaseException): pass
  656. class lab7(BaseException): pass