Package qutrub ::
Package libqutrub ::
Module classverb
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 """
24 Verb Class for conjugation
25 @author: Taha Zerrouki
26 @contact: taha dot zerrouki at gmail dot com
27 @copyright: Arabtechies, Arabeyes, Taha Zerrouki
28 @license: GPL
29 @date:2009/06/02
30 @version: 0.9
31 """
32 import copy
33 from ar_ctype import *
34 from ar_verb import *
35 from verb_const import *
36 from conjugatedisplay import *
37 import sys,re,string
38 import pyarabic.araby as araby
39
41 """
42 A Class to represent a conjugated stem
43 """
44
45
46
47 tense=u"";
48 """ the actual tense"""
49 letters=u"";
50 """ letters of the conjugated stem"""
51 marks=u"";
52 """ marks of the conjugated stem"""
54 """
55 init method
56 @param tense: the given tense;
57 @type tense: unicode.
58 @param letters: the word letters;
59 @type letters: unicode.
60 @param marks: the word marks;
61 @type marks: unicode.
62 """
63 self.tense=tense;
64 self.letters=letters;
65 self.marks=marks;
66
68 """
69 Verb Class: represent a verb, prepare it to be conjugated and store the conjugation result
70 """
71 verb=u"";
72
73 internal_verb=u"";
74 word_letters=u"";
75 word_marks=u"";
76 unvocalized=u"";
77 vlength=0;
78 vtype=u"";
79 future_type=u'';
80 transitive=u"";
81 hamza_zaida=False;
82
83
84 future_form=u"";
85 conj_display=None;
86 tab_conjug_stem=None;
87
88
90 """
91 init method
92 @param verb: the given verb;
93 @type verb: unicode.
94 @param transitive: the verb is transitive or not;
95 @type transitive: Boolean.
96 @param future_type: The mark of the third radical letter in the verb, used for triletiral verb only. Default value is Fatha;
97 @type future_type: unicode; one arabic letter (Fatha, Damma, Kasra).
98 """
99 self.verb=verb;
100 self.internal_verb=normalize(verb);
101 self.future_type=future_type;
102 (self.word_letters,self.word_marks)=uniformate_verb(verb);
103
104 self.past_haraka=araby.secondlastChar(self.word_marks);
105 self.word_marks=uniformate_alef_origin(self.word_marks,self.internal_verb,self.future_type);
106
107 self.transitive=transitive;
108 self.hamza_zaida=False;
109
110
111
112 self.tab_conjug_stem={};
113 verb=self.verb;
114
115 tab_type=[u"",u"",u"",u"فعل ثلاثي",u"فعل رباعي",u"فعل خماسي",u"فعل سداسي",u"فعل سباعي",u"فعل ثماني",u"فعل تساعي"];
116 verb=normalize(verb);
117
118 self.unvocalized=araby.stripHarakat(verb);
119 verb_nm=self.unvocalized;
120 self.vlength=len(verb_nm);
121 self.vtype=tab_type[self.vlength];
122
123
124 self.hamza_zaida=self.is_hamza_zaida(verb_nm);
125
126
127
128
129
130
131
132
133
134
135 self.prepare_past_stem();
136 self.prepare_passive_past_stem();
137 if self.is_irregular_verb():
138 self.prepare_irregular_future_and_imperative_stem();
139
140 else:
141 self.prepare_future_and_imperative_stem();
142
143
144
145 self.conj_display=conjugatedisplay(self.verb);
146 if self.transitive :
147 self.conj_display.add_attribut(u"اللزوم/التعدي",u"متعدي");
148 else :
149 self.conj_display.add_attribut(u"اللزوم/التعدي",u"لازم");
150 self.conj_display.add_attribut(u"الفعل",self.verb);
151 self.conj_display.add_attribut(u"نوع الفعل",self.vtype);
152 self.future_form=self.conjugate_tense_pronoun(TenseFuture,PronounHuwa);
153 self.conj_display.set_future_form(self.future_form);
154 if self.transitive : self.conj_display.settransitive();
155 self.conj_display.setbab(self.future_type);
156
157
158
159
161 """
162 Set the display mode as:
163 - 'Text':
164 - 'HTML':
165 - 'HTMLColoredDiacritics':
166 - 'DICT':
167 - 'CSV':
168 - 'GUI':
169 - 'TABLE':
170 - 'XML':
171 - 'TeX':
172 - 'ROWS':
173 @param mode: the given mode to display result;
174 """
175 self.conj_display.setmode(mode)
176
178 """
179 Get The conjugation display class with result.
180 @return: an object with result.
181 @rtype: conjugatedisplay class;
182 """
183 return copy.copy(self.conj_display)
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
206 """
207 Function to determine if the first HAMZA in the verb is not original
208 ترجع إذا كانت الهمزة الأولى في الفعل غير أصليةDetermine if the verb starts with Hamza and the Teh is not original like أضرب
209 @param verb_normalized_unvocalized: the unvovalized form f the verb.
210 @type verb_normalized_unvocalized: unicde;
211 @return: return True if the start Teh is not original
212 @rtype: boolean;
213 """
214
215
216
217
218
219
220
221
222 verb=verb_normalized_unvocalized;
223 if len(verb)!=4 or not verb.startswith(HAMZA) :return False;
224 elif len(verb)==4 and verb.startswith(HAMZA) and verb[1]!=ALEF and verb[2]!=SHADDA:
225 return True;
226 else : return False;
227
229 """
230 Treat Harakat to be homogenized with letters in conjugation.
231 إذا كان طول الحركات ألأصلية للفعل أقل من طول حركات الماضي المبني للمجهول
232 هذا يعني وجود حركة طويلة
233 نقوم بتحويل الحركة الطويلة إلى ما يوافقها
234
235 @param original_harakat: given original harakatof the verb.
236 @type original_harakat: unicode.
237 @param applied_harakat: given harakat to be applied to verb.
238 @type applied_harakat: unicode.
239 @return: nesw harakat to be applied to the verb.
240 @rtype: unicode.
241 """
242 marks=original_harakat;
243 new_marks=applied_harakat;
244
245
246
247 if len(marks)<len(new_marks):
248 alef_haraka_pos=marks.find(ALEF_HARAKA);
249 if alef_haraka_pos<0:
250 alef_haraka_pos=marks.find(ALEF_WAW_HARAKA);
251 if alef_haraka_pos<0:
252 alef_haraka_pos=marks.find(ALEF_YEH_HARAKA);
253 if alef_haraka_pos>=0 and alef_haraka_pos+1<len(new_marks):
254 first=new_marks[alef_haraka_pos];
255 second=new_marks[alef_haraka_pos+1];
256 changed_haraka=tab_homogenize_alef_haraka[first][second];
257 new_marks=new_marks[:alef_haraka_pos]+changed_haraka+new_marks[alef_haraka_pos+2:]
258 return new_marks;
259
260
261
262
264 """
265 Prepare the conjugation stems for future tenses (future, jussive, subjective) and imperative tense. Those stems will be concatenated with conjugation affixes. This function store results in self.tab_conjug_stem. This function prepare conjugation stems for the following tenses:
266 - TenseFuture : تصريف الفعل المضارع
267 - TenseJussiveFuture : تصريف الفعل المضارع المجزوم
268 - TenseSubjunctiveFuture : تصريف الفعل المضارع المنصوب
269 - TenseConfirmedFuture: المضارع المؤكد الثقيل
270 - TensePassiveFuture :تصريف الفعل المضارع المبني للمجهول
271 - TensePassiveJussiveFuture: تصريف الفعل المضارع المجزوم المني للمجهول
272 - TensePassiveSubjunctiveFuture:تصريف الفعل المضارع المنصوب
273 - TensePassiveConfirmedFuture:المضارع المؤكد الثقيل المنبي للمجهول
274 - TenseImperative:الفعل الامر
275 - TenseConfirmedImperative: الفعل الامر المؤكد.
276 """
277 letters=self.word_letters;
278 marks=self.word_marks;
279 future_letters=letters;
280
281 if self.vlength==3:
282 first_future_mark=FATHA;
283 first_passive_future_mark=DAMMA;
284 future_marks=SUKUN+self.future_type+FATHA;
285 passive_future_marks=SUKUN+FATHA+FATHA;
286
287
288
289
290 elif self.vlength==4:
291 first_future_mark=DAMMA;
292 first_passive_future_mark=DAMMA;
293 future_marks=FATHA+SUKUN+KASRA+DAMMA;
294 passive_future_marks=FATHA+SUKUN+FATHA+DAMMA;
295
296 elif self.vlength==5:
297 first_future_mark=FATHA;
298 first_passive_future_mark=DAMMA;
299 if letters.startswith(TEH):
300 future_marks=FATHA+FATHA+SUKUN+FATHA+DAMMA;
301 passive_future_marks=FATHA+FATHA+SUKUN+FATHA+DAMMA;
302 else :
303 future_marks=FATHA+SUKUN+FATHA+KASRA+DAMMA;
304 passive_future_marks=FATHA+SUKUN+FATHA+FATHA+DAMMA;
305
306 elif self.vlength==6:
307 first_future_mark=FATHA;
308 first_passive_future_mark=DAMMA;
309 future_marks=FATHA+SUKUN+FATHA+SUKUN+KASRA+DAMMA;
310 passive_future_marks=FATHA+SUKUN+FATHA+SUKUN+FATHA+DAMMA;
311
312
313
314
315 if len(marks)<len(future_marks):
316 future_marks=self.homogenize_harakat(marks,future_marks)
317 passive_future_marks=self.homogenize_harakat(marks,passive_future_marks)
318 imp_marks=future_marks;
319 imp_letters=future_letters;
320
321 if letters.startswith(ALEF) or self.hamza_zaida:
322 future_letters=letters[1:];
323 future_marks=future_marks[1:]
324 passive_future_marks=passive_future_marks[1:];
325 passive_letters=letters[1:];
326
327 elif self.vlength==3 and self.word_letters.startswith(WAW) and (self.future_type==KASRA or (self.future_type==FATHA and self.word_marks==FATHA+FATHA+FATHA and not self.word_letters.endswith(SHADDA))):
328 future_letters=letters[1:];
329 future_marks=future_marks[1:]
330
331 passive_letters=letters;
332 else:
333 future_letters=letters;
334 passive_letters=letters;
335 new_marks=first_future_mark+future_marks;
336 passive_marks=first_passive_future_mark+passive_future_marks;
337
338
339 if imp_letters.startswith(ALEF):
340 imp_letters=letters[1:];
341 imp_marks=imp_marks[1:]
342 elif self.vlength==3 and self.word_letters.startswith(WAW) and (self.future_type==KASRA or (self.future_type==FATHA and self.word_marks==FATHA+FATHA+FATHA)):
343 imp_letters=letters[1:];
344 imp_marks=imp_marks[1:]
345 else:
346 imp_letters=letters;
347
348
349
350
351 if self.vlength==3 and passive_letters.endswith(ALEF_MAMDUDA):
352 passive_letters=passive_letters[:-1]+ALEF_MAKSURA;
353
354
355
356
357
358 self.tab_conjug_stem[TenseFuture]=conjug_stem(TenseFuture,future_letters,new_marks);
359
360 self.tab_conjug_stem[TenseJussiveFuture]=conjug_stem(TenseJussiveFuture,future_letters,new_marks);
361 self.tab_conjug_stem[TenseSubjunctiveFuture]=conjug_stem(TenseSubjunctiveFuture,future_letters,new_marks);
362
363 self.tab_conjug_stem[TenseConfirmedFuture]=conjug_stem(TenseConfirmedFuture,future_letters,new_marks);
364
365
366 self.tab_conjug_stem[TensePassiveFuture]=conjug_stem(TensePassiveFuture,passive_letters,passive_marks);
367
368 self.tab_conjug_stem[TensePassiveJussiveFuture]=conjug_stem(TensePassiveJussiveFuture,passive_letters,passive_marks);
369 self.tab_conjug_stem[TensePassiveSubjunctiveFuture]=conjug_stem(TensePassiveSubjunctiveFuture,passive_letters,passive_marks);
370
371 self.tab_conjug_stem[TensePassiveConfirmedFuture]=conjug_stem(TensePassiveConfirmedFuture,passive_letters,passive_marks);
372
373
374 self.tab_conjug_stem[TenseImperative]=conjug_stem(TenseImperative,imp_letters,imp_marks);
375
376 self.tab_conjug_stem[TenseConfirmedImperative]=conjug_stem(TenseConfirmedImperative,imp_letters,imp_marks);
377
378
380 """
381 Prepare the conjugation stems for past tense.
382 Those stems will be concatenated with conjugation affixes.
383 This function store results in self.tab_conjug_stem. This function prepare conjugation stems for the following tenses:
384 - TensePast: الفعل الماضي.
385 """
386 self.past_stem=self.internal_verb;
387 self.tab_conjug_stem[TensePast]=conjug_stem(TensePast,self.word_letters,self.word_marks);
388
389
425
427 """
428 Conjugate a verb in a given tense with a pronoun.
429 @param tense: given tense;
430 @type tense: unicode name of the tense;
431 @param pronoun: given pronoun;
432 @type pronoun: unicode name of the pronoun;
433 @return: conjugated verb;
434 @rtype: unicode;
435 """
436
437 pre_val=TableTensePronoun[tense][pronoun][0];
438
439 suf_val=TableTensePronoun[tense][pronoun][1];
440 stem_l=self.tab_conjug_stem[tense].letters;
441 stem_m=self.tab_conjug_stem[tense].marks;
442
443
444
445
446 if pre_val!=u"":
447 pre_val_l=pre_val;
448 pre_val_m=stem_m[0];
449 stem_m=stem_m[1:];
450 else:
451 pre_val_l=u"";
452 pre_val_m=u"";
453
454
455
456 suf_val=TATWEEL+suf_val;
457
458 (suf_val_l,suf_val_m)=uniformate_suffix(suf_val);
459
460 conj_l=pre_val_l+stem_l+suf_val_l;
461
462 conj_m=pre_val_m+stem_m[:-1]+suf_val_m;
463
464 conj_l=pre_val_l+stem_l+suf_val_l[1:];
465
466
467 conj_m=treat_sukun2(conj_l,conj_m,self.future_type);
468
469 conj=standard2(conj_l,conj_m);
470 return conj;
471
472
473
474
475
476
477
479 """
480 Conjugate a verb with a list of tenses.
481 @param listtense: given tense;
482 @type listtense: list of unicode;
483 @return: conjugated verb ;
484 @rtype: the type is given according to the display mode;
485 """
486 for tense in listtense:
487 if tense==TensePast:
488 conj_ana=self.conjugate_tense_pronoun(tense,PronounAna);
489 self.conj_display.add(tense,PronounAna,conj_ana);
490 conj_ana_without_last_mark=conj_ana[:-1];
491 self.conj_display.add(tense,PronounAnta,conj_ana_without_last_mark+FATHA);
492 self.conj_display.add(tense,PronounAnti,conj_ana_without_last_mark+KASRA);
493 self.conj_display.add(tense,PronounAntuma,conj_ana+MEEM+FATHA+ALEF);
494 self.conj_display.add(tense,PronounAntuma_f,conj_ana+MEEM+FATHA+ALEF);
495 self.conj_display.add(tense,PronounAntum,conj_ana+MEEM);
496 self.conj_display.add(tense,PronounAntunna,conj_ana+NOON+SHADDA+FATHA)
497 self.conj_display.add(tense,PronounAna,conj_ana);
498
499 conj_nahnu=self.conjugate_tense_pronoun(tense,PronounNahnu);
500 self.conj_display.add(tense,PronounNahnu,conj_nahnu);
501
502 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
503 self.conj_display.add(tense,PronounHunna,conj_hunna);
504
505 conj_huma=self.conjugate_tense_pronoun(tense,PronounHuma);
506 self.conj_display.add(tense,PronounHuma,conj_huma);
507
508 conj_hum=self.conjugate_tense_pronoun(tense,PronounHum);
509 self.conj_display.add(tense,PronounHum,conj_hum);
510
511 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
512 self.conj_display.add(tense,PronounHunna,conj_hunna);
513
514 conj_huwa=self.conjugate_tense_pronoun(tense,PronounHuwa);
515 self.conj_display.add(tense,PronounHuwa,conj_huwa);
516 conj_hya=self.conjugate_tense_pronoun(tense,PronounHya);
517 self.conj_display.add(tense,PronounHya,conj_hya);
518 self.conj_display.add(tense,PronounHuma_f,conj_hya[:-1]+FATHA+ALEF);
519 elif tense ==TensePassivePast:
520 conj_ana=self.conjugate_tense_pronoun(tense,PronounAna);
521 self.conj_display.add(tense,PronounAna,conj_ana);
522 conj_ana_without_last_mark=conj_ana[:-1];
523 self.conj_display.add(tense,PronounAnta,conj_ana_without_last_mark+FATHA);
524 self.conj_display.add(tense,PronounAnti,conj_ana_without_last_mark+KASRA);
525 self.conj_display.add(tense,PronounAntuma,conj_ana+MEEM+FATHA+ALEF);
526 self.conj_display.add(tense,PronounAntuma_f,conj_ana+MEEM+FATHA+ALEF);
527 self.conj_display.add(tense,PronounAntum,conj_ana+MEEM);
528 self.conj_display.add(tense,PronounAntunna,conj_ana+NOON+SHADDA+FATHA)
529 self.conj_display.add(tense,PronounAna,conj_ana);
530
531 conj_nahnu=self.conjugate_tense_pronoun(tense,PronounNahnu);
532 self.conj_display.add(tense,PronounNahnu,conj_nahnu);
533
534 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
535 self.conj_display.add(tense,PronounHunna,conj_hunna);
536
537 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
538 self.conj_display.add(tense,PronounHunna,conj_hunna);
539
540 conj_huwa=self.conjugate_tense_pronoun(tense,PronounHuwa);
541 self.conj_display.add(tense,PronounHuwa,conj_huwa);
542
543 if conj_huwa.endswith(YEH+HAMZA+FATHA) :
544 self.conj_display.add(tense,PronounHya,conj_huwa[:-2]+YEH_HAMZA+FATHA+TEH+SUKUN);
545 self.conj_display.add(tense,PronounHuma_f,conj_huwa[:-2]+YEH_HAMZA+FATHA+TEH+FATHA+ALEF);
546
547 self.conj_display.add(tense,PronounHuma,conj_huwa[:-2]+YEH_HAMZA+FATHA+ALEF);
548
549
550 self.conj_display.add(tense,PronounHum,conj_huwa[:-2]+YEH_HAMZA+DAMMA+WAW+ALEF);
551
552 else :
553 self.conj_display.add(tense,PronounHya,conj_huwa+TEH+SUKUN);
554 self.conj_display.add(tense,PronounHuma_f,conj_huwa+TEH+FATHA+ALEF);
555 self.conj_display.add(tense,PronounHuma,conj_huwa+ALEF);
556 if conj_huwa.endswith(KASRA+YEH+FATHA):
557 self.conj_display.add(tense,PronounHum,conj_huwa[:-3]+DAMMA+WAW+ALEF);
558 else:
559 self.conj_display.add(tense,PronounHum,conj_huwa[:-1]+DAMMA+WAW+ALEF);
560 elif tense in (TenseFuture,TensePassiveFuture,TenseJussiveFuture,TenseSubjunctiveFuture,TenseConfirmedFuture,TensePassiveJussiveFuture,TensePassiveSubjunctiveFuture,TensePassiveConfirmedFuture):
561 conj_ana=self.conjugate_tense_pronoun(tense,PronounAna);
562 self.conj_display.add(tense,PronounAna,conj_ana);
563
564 conj_anta=self.conjugate_tense_pronoun(tense,PronounAnta);
565 self.conj_display.add(tense,PronounAnta,conj_anta);
566 conj_anta_without_future_letter=conj_anta[1:];
567
568 self.conj_display.add(tense,PronounNahnu,NOON+conj_anta_without_future_letter);
569 self.conj_display.add(tense,PronounHuwa,YEH+conj_anta_without_future_letter);
570 self.conj_display.add(tense,PronounHya,TEH+conj_anta_without_future_letter);
571
572 conj_anti=self.conjugate_tense_pronoun(tense,PronounAnti);
573 self.conj_display.add(tense,PronounAnti,conj_anti);
574
575 conj_antuma=self.conjugate_tense_pronoun(tense,PronounAntuma);
576 self.conj_display.add(tense,PronounAntuma,conj_antuma);
577 self.conj_display.add(tense,PronounAntuma_f,conj_antuma);
578 self.conj_display.add(tense,PronounHuma_f,conj_antuma);
579 self.conj_display.add(tense,PronounHuma,YEH+conj_antuma[1:]);
580
581 conj_antum=self.conjugate_tense_pronoun(tense,PronounAntum);
582 self.conj_display.add(tense,PronounAntum,conj_antum);
583 self.conj_display.add(tense,PronounHum,YEH+conj_antum[1:]);
584
585 conj_antunna=self.conjugate_tense_pronoun(tense,PronounAntunna);
586 self.conj_display.add(tense,PronounAntunna,conj_antunna);
587 self.conj_display.add(tense,PronounHunna,YEH+conj_antunna[1:]);
588 elif tense ==TenseImperative or tense ==TenseConfirmedImperative:
589 for pron in ImperativePronouns:
590 conj=self.conjugate_tense_pronoun(tense,pron);
591 self.conj_display.add(tense,pron,conj);
592 if not self.transitive:
593 for tense in TablePassiveTense:
594 for pron in PronounsTableNotPassiveForUntransitive:
595 self.conj_display.add(tense,pron,u"");
596
597 result=self.conj_display.display(self.conj_display.mode,listtense);
598 if result: return result;
599
600
601
602
603
604
605
606
608 """
609 Return True if the verb is irregular, founded in the irregular verb table
610 إرجاع إّذا كان الفعل ضاذا.
611 الأفعال العربية الخاصة هي
612 رأى، أكل أمر سأل،
613 ج- إذا كان يتصرف من باب (مَنَعَ يَمْنَعُ)، تحذف واوه, نحو: وَضَعَ، يَضَعُ، وَجَأَ يَجَأُ، وَدَعَ يَدَعُ، وَزَعَ يَزَعُ، وَضَأَ يَضَأُ، وَطَأَ يَطَأُ، وَقَعَ يَقَعُ، وَلَغَ يَلَغُ، وَهَبَ يَهَبُ، عدا خمسة أفعال هي: (وَبَأ)، و(وَبَهَ)، و(وَجَعَ)، و(وَسَعَ)، و(وَهَلَ)، فلا تحذف منها الواو؛ فنقول: يَوْبَأُ، يَوْبَهُ، يَوْجَعُ، يَوْسَعُ، يَوْهَلُ. الأفعال (وَبَأ)، و(وَبَهَ)، و(وَجَعَ)، و(وَسَعَ)، و(وَهَلَ)، الفعل وبَأ يوبأ
614
615 @return:True if irregular;
616 @rtype: Boolean;
617 """
618 if len(self.word_letters)!=3: return False;
619 else:
620
621 key=self.word_letters+self.past_haraka+self.future_type
622 if IrregularVerbsConjug.has_key(key ):
623 return True;
624
625
626 return False;
627
640
653
666
667
668
669
670
671
673 """
674 Prepare the conjugation stems for future tenses (future, jussive, subjective) and imperative tense.
675 Those stems will be concatenated with conjugation affixes.
676 """
677
678 if self.is_irregular_verb():
679 (l,m)=self.get_irregular_future_stem();
680
681
682 self.tab_conjug_stem[TenseFuture]=conjug_stem(TenseFuture,l,m);
683 self.tab_conjug_stem[TenseJussiveFuture]=conjug_stem(TenseJussiveFuture,l,m);
684 self.tab_conjug_stem[TenseSubjunctiveFuture]=conjug_stem(TenseSubjunctiveFuture,l,m);
685 self.tab_conjug_stem[TenseConfirmedFuture]=conjug_stem(TenseConfirmedFuture,l,m);
686
687
688 (l1,m1)=self.get_irregular_passivefuture_stem();
689
690 self.tab_conjug_stem[TensePassiveFuture]=conjug_stem(TensePassiveFuture,l1,m1);
691 self.tab_conjug_stem[TensePassiveJussiveFuture]=conjug_stem(TensePassiveJussiveFuture,l1,m1);
692 self.tab_conjug_stem[TensePassiveSubjunctiveFuture]=conjug_stem(TensePassiveSubjunctiveFuture,l1,m1);
693 self.tab_conjug_stem[TensePassiveConfirmedFuture]=conjug_stem(TensePassiveConfirmedFuture,l1,m1);
694
695
696 (l2,m2)=self.get_irregular_imperative_stem();
697 self.tab_conjug_stem[TenseImperative]=conjug_stem(TenseImperative,l2,m2);
698 self.tab_conjug_stem[TenseConfirmedImperative]=conjug_stem(TenseConfirmedImperative,l2,m2);
699
700 return False;
701