public GroupPattern() { this.pattern = ""; this.stemAlpha = STEM_ALPHA.X_X; this.stemTime = STEM_TIME.UNSET; this.stemCount = 0; }
public STEM_ALPHA BoundingAlpha(STEM_TIME stemTime) { STEM_ALPHA start, end, bound; start = this.StartingAlpha(stemTime); end = this.EndingAlpha(stemTime); bound = STEM_ALPHA.X_X; if (start == STEM_ALPHA.A_X && end == STEM_ALPHA.X_A) { bound = STEM_ALPHA.A_A; } else if (start == STEM_ALPHA.A_X && end == STEM_ALPHA.X_B) { bound = STEM_ALPHA.A_B; } else if (start == STEM_ALPHA.B_X && end == STEM_ALPHA.X_A) { bound = STEM_ALPHA.B_A; } else if (start == STEM_ALPHA.B_X && end == STEM_ALPHA.X_B) { bound = STEM_ALPHA.B_B; } return(bound); }
public STEM_ALPHA StartingAlpha(STEM_TIME stemTime) { switch (stemTime) { case STEM_TIME.MAZI: return(this.alph_start_mazi); case STEM_TIME.MOZARE: return(this.alph_start_moza); default: break; } return(STEM_ALPHA.X_X); }
public STEM_ALPHA EndingAlpha(STEM_TIME stemTime) /* only for present stem */ { switch (stemTime) { case STEM_TIME.MAZI: return(alph_end_mazi); case STEM_TIME.MOZARE: return(alph_end_moza); default: break; } return(STEM_ALPHA.X_X); }
public string GetTail(STEM_TIME st) { string stem = ""; switch (st) { case STEM_TIME.MAZI: stem = this.pastStem; break; case STEM_TIME.MOZARE: stem = this.presentStem; break; } stem = stem.Substring(1); return(stem); }
public STEM_TIME getStemTime() { STEM_TIME st = STEM_TIME.UNSET; switch (this.getTenseTime()) { case ENUM_TENSE_TIME.MAZI_E_SADE: case ENUM_TENSE_TIME.MAZI_E_ESTEMRARI: case ENUM_TENSE_TIME.MAZI_E_BAEID: case ENUM_TENSE_TIME.MAZI_E_MOSTAMAR: case ENUM_TENSE_TIME.MAZI_E_SADEYE_NAGHLI: case ENUM_TENSE_TIME.MAZI_E_ESTEMRARIE_NAGHLI: case ENUM_TENSE_TIME.MAZI_E_BAEIDE_NAGHLI: case ENUM_TENSE_TIME.MAZI_E_MOSTAMARE_NAGHLI: case ENUM_TENSE_TIME.MAZI_E_ELTEZAMI: case ENUM_TENSE_TIME.AYANDE: st = STEM_TIME.MAZI; break; case ENUM_TENSE_TIME.MOZARE_E_EKHBARI: case ENUM_TENSE_TIME.MOZARE_E_MOSTAMAR: case ENUM_TENSE_TIME.MOZARE_E_ELTEZAMI: case ENUM_TENSE_TIME.AMR: switch (this.getTensePassivity()) { case ENUM_TENSE_PASSIVITY.ACTIVE: st = STEM_TIME.MOZARE; break; case ENUM_TENSE_PASSIVITY.PASSIVE: st = STEM_TIME.MAZI; break; } break; default: break; } return(st); }
public GroupPattern GetStemPatten(STEM_TIME st, STEM_ALPHA vs, ENUM_VERB_TYPE verb_type, ENUM_PATTERN_GENERALITY generality) { GroupPattern dp = new GroupPattern(); dp.stemAlpha = vs; dp.stemTime = st; string generalVerb = ".{2,4}"; switch (st) { case STEM_TIME.MAZI: switch (vs) { case STEM_ALPHA.A_X: case STEM_ALPHA.A_B: case STEM_ALPHA.A_A: if (generality == ENUM_PATTERN_GENERALITY.EXPLICIT) { this.entrys.ForEach(delegate(VerbEntry ve) { if ((ve.StartingAlpha(STEM_TIME.MAZI) == STEM_ALPHA.A_X) && (ve.verbType == verb_type)) { dp.addUnit(ve.GetTail(STEM_TIME.MAZI)); } }); dp.pattern = "[آا](?:" + dp.pattern + ")"; } else { dp.pattern = "[آا](?:" + generalVerb + ")"; } break; case STEM_ALPHA.B_X: case STEM_ALPHA.B_B: case STEM_ALPHA.B_A: if (generality == ENUM_PATTERN_GENERALITY.EXPLICIT) { this.entrys.ForEach(delegate(VerbEntry ve) { if ((ve.StartingAlpha(STEM_TIME.MAZI) == STEM_ALPHA.B_X) && (ve.verbType == verb_type)) { dp.addUnit(ve.pastStem); } }); } else { dp.pattern = generalVerb; } break; default: break; } break; case STEM_TIME.MOZARE: switch (vs) { case STEM_ALPHA.A_B: if (generality == ENUM_PATTERN_GENERALITY.EXPLICIT) { this.entrys.ForEach(delegate(VerbEntry ve) { if ((ve.BoundingAlpha(STEM_TIME.MOZARE) == STEM_ALPHA.A_B) && (ve.verbType == verb_type)) { dp.addUnit(ve.GetTail(STEM_TIME.MOZARE)); } }); dp.pattern = "[آا](?:" + dp.pattern + ")"; } else { dp.pattern = "[آا](?:" + generalVerb + ")"; } break; case STEM_ALPHA.A_A: if (generality == ENUM_PATTERN_GENERALITY.EXPLICIT) { this.entrys.ForEach(delegate(VerbEntry ve) { if ((ve.BoundingAlpha(STEM_TIME.MOZARE) == STEM_ALPHA.A_A) && (ve.verbType == verb_type)) { dp.addUnit(ve.GetTail(STEM_TIME.MOZARE)); } }); dp.pattern = "[آا](?:" + dp.pattern + ")"; } else { dp.pattern = "[آا](?:" + generalVerb + ")"; } break; case STEM_ALPHA.B_B: if (generality == ENUM_PATTERN_GENERALITY.EXPLICIT) { this.entrys.ForEach(delegate(VerbEntry ve) { if ((ve.BoundingAlpha(STEM_TIME.MOZARE) == STEM_ALPHA.B_B) && (ve.verbType == verb_type)) { dp.addUnit(ve.presentStem); } }); } else { dp.pattern = generalVerb; } break; case STEM_ALPHA.B_A: if (generality == ENUM_PATTERN_GENERALITY.EXPLICIT) { this.entrys.ForEach(delegate(VerbEntry ve) { if ((ve.BoundingAlpha(STEM_TIME.MOZARE) == STEM_ALPHA.B_A) && (ve.verbType == verb_type)) { dp.addUnit(ve.presentStem); } }); } else { dp.pattern = "[آا](?:" + generalVerb + ")"; } break; default: break; } break; } return(dp); }