예제 #1
0
        public ENUM_TENSE_TIME getTenseTime()
        {
            Int32 mask = Convert.ToInt32(ENUM_TENSE_TIME.INVALID);

            ENUM_TENSE_TIME vtt = (ENUM_TENSE_TIME)(this.ID & mask);

            switch (vtt)
            {
            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.MOZARE_E_EKHBARI:
            case ENUM_TENSE_TIME.MOZARE_E_MOSTAMAR:
            case ENUM_TENSE_TIME.MOZARE_E_ELTEZAMI:
            case ENUM_TENSE_TIME.AYANDE:
            case ENUM_TENSE_TIME.AMR:
                return(vtt);

            default:
                return(ENUM_TENSE_TIME.INVALID);
            }
        }
예제 #2
0
 public void setTense(ENUM_TENSE_TIME time, ENUM_TENSE_PASSIVITY passivity,
                      ENUM_TENSE_POSITIVITY positivity)
 {
     this.resetVerb();
     this.setTenseTime(time);
     this.setTensePassivity(passivity);
     this.setTensePositivity(positivity);
     this.setTenseType(ENUM_VERB_TYPE.SADE);
 }
예제 #3
0
        public string GetStem(ENUM_TENSE_TIME time, ENUM_TENSE_PASSIVITY passivity)
        {
            string verbStem = "";

            switch (time)
            {
            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:
                verbStem = this.pastStem;
                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 (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbStem = this.presentStem;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbStem = this.pastStem;
                    break;

                default:
                    verbStem = "";
                    break;
                }
                break;

            default:
                verbStem = "";
                break;
            }
            return(verbStem);
        }
예제 #4
0
        private PRONOUN_TYPE getPronounType()
        {
            PRONOUN_TYPE    pt;
            ENUM_TENSE_TIME time = this.getTenseTime();

            switch (time)
            {
            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:
                pt = PRONOUN_TYPE.MAZI;
                break;

            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:
                pt = PRONOUN_TYPE.NAGHLI;
                break;

            case ENUM_TENSE_TIME.MAZI_E_ELTEZAMI:
            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.AYANDE:
                pt = PRONOUN_TYPE.MOZARE;
                break;

            case ENUM_TENSE_TIME.AMR:
                pt = PRONOUN_TYPE.AMR;
                break;

            default:
                pt = PRONOUN_TYPE.INVALID;
                break;
            }

            return(pt);
        }
예제 #5
0
        private string printPositivity()
        {
            ENUM_TENSE_TIME       time       = this.getTenseTime();
            ENUM_TENSE_POSITIVITY positivity = this.getTensePositivity();

            switch (time)
            {
            case ENUM_TENSE_TIME.MAZI_E_SADE:
            case ENUM_TENSE_TIME.MAZI_E_SADEYE_NAGHLI:
                switch (positivity)
                {
                case ENUM_TENSE_POSITIVITY.POSITIVE:
                    return("");

                case ENUM_TENSE_POSITIVITY.NEGATIVE:
                    return("ن");

                case ENUM_TENSE_POSITIVITY.UNUSUAL_POSITIVE:
                    return("ب");

                case ENUM_TENSE_POSITIVITY.UNUSUAL_NEGATIVE:
                    return("م");

                default:
                    return("");
                }

            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_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.MOZARE_E_EKHBARI:
            case ENUM_TENSE_TIME.MOZARE_E_MOSTAMAR:
            case ENUM_TENSE_TIME.AYANDE:
                switch (positivity)
                {
                case ENUM_TENSE_POSITIVITY.POSITIVE:
                    return("");

                case ENUM_TENSE_POSITIVITY.NEGATIVE:
                    return("ن");

                default:
                    return("");
                }

            case ENUM_TENSE_TIME.MOZARE_E_ELTEZAMI:
            case ENUM_TENSE_TIME.AMR:
                switch (positivity)
                {
                case ENUM_TENSE_POSITIVITY.POSITIVE:
                    return("ب");

                case ENUM_TENSE_POSITIVITY.NEGATIVE:
                    return("ن");

                case ENUM_TENSE_POSITIVITY.UNUSUAL_POSITIVE:
                    return("");

                case ENUM_TENSE_POSITIVITY.UNUSUAL_NEGATIVE:
                    return("م");

                default:
                    return("");
                }

            default:
                return("");
            }
        }
예제 #6
0
        private string printPronoun()
        {
            ENUM_TENSE_TIME   time   = this.getTenseTime();
            ENUM_TENSE_PERSON person = this.getTensePerson();

            PRONOUN_TYPE pt      = this.getPronounType();
            string       postfix = "";

            switch (pt)
            {
            case PRONOUN_TYPE.MAZI:
                switch (person)
                {
                case ENUM_TENSE_PERSON.SINGULAR_FIRST:
                    postfix = "م";
                    break;

                case ENUM_TENSE_PERSON.SINGULAR_SECOND:
                    postfix = "ی";
                    break;

                case ENUM_TENSE_PERSON.SINGULAR_THIRD:
                    postfix = "";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_FIRST:
                    postfix = "یم";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_SECOND:
                    postfix = "ید";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_THIRD:
                    postfix = "ند";
                    break;

                default:
                    postfix = "";
                    break;
                }
                break;

            case PRONOUN_TYPE.MOZARE:
                switch (person)
                {
                case ENUM_TENSE_PERSON.SINGULAR_FIRST:
                    postfix = "م";
                    break;

                case ENUM_TENSE_PERSON.SINGULAR_SECOND:
                    postfix = "ی";
                    break;

                case ENUM_TENSE_PERSON.SINGULAR_THIRD:
                    postfix = "د";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_FIRST:
                    postfix = "یم";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_SECOND:
                    postfix = "ید";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_THIRD:
                    postfix = "ند";
                    break;

                default:
                    postfix = "";
                    break;
                }
                break;

            case PRONOUN_TYPE.NAGHLI:
                switch (person)
                {
                case ENUM_TENSE_PERSON.SINGULAR_FIRST:
                    postfix = "‌ام";
                    break;

                case ENUM_TENSE_PERSON.SINGULAR_SECOND:
                    postfix = "‌ای";
                    break;

                case ENUM_TENSE_PERSON.SINGULAR_THIRD:
                    postfix = " است";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_FIRST:
                    postfix = "‌ایم";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_SECOND:
                    postfix = "‌اید";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_THIRD:
                    postfix = "‌اند";
                    break;

                default:
                    postfix = "";
                    break;
                }
                break;

            case PRONOUN_TYPE.AMR:
                switch (person)
                {
                case ENUM_TENSE_PERSON.SINGULAR_SECOND:
                    postfix = "";
                    break;

                case ENUM_TENSE_PERSON.PLURAL_SECOND:
                    postfix = "ید";
                    break;

                default:
                    postfix = "";
                    break;
                }
                break;

            default:
                break;
            }

            return(postfix);
        }
예제 #7
0
 public void setTenseTime(ENUM_TENSE_TIME time)
 {
     this.ID  = this.ID & ~Convert.ToInt32(ENUM_TENSE_TIME.INVALID);
     this.ID |= Convert.ToInt32(time);
 }
예제 #8
0
 public Verb(ENUM_TENSE_TIME time, ENUM_TENSE_PASSIVITY passivity,
             ENUM_TENSE_POSITIVITY positivity, ENUM_TENSE_PERSON person)
 {
     this.setTense(time, passivity, positivity, person);
 }
예제 #9
0
        public string PrintVerb()
        {
            string verbWord = "";
            ENUM_TENSE_PASSIVITY passivity = this.getTensePassivity();
            ENUM_TENSE_TIME      time      = this.getTenseTime();

            string positivity = this.printPositivity();
            string pronoun    = this.printPronoun();

            switch (time)
            {
            case ENUM_TENSE_TIME.MAZI_E_SADE:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + this.printStem(positivity, pronoun) + pronoun + this.printObjectPronoun();
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "شد" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_ESTEMRARI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + "می‌" + this.printStem("می‌", pronoun) + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "می‌شد" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_BAEID:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + this.printStem(positivity, "ه بود") + "ه بود" + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "شده بود" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_MOSTAMAR:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = "داشت" + pronoun + " " + printFelyar() + printPishvand() + positivity + "می‌" + this.printStem("می‌", pronoun) + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = "داشت" + pronoun + " " + printFelyar() + printPishvand() + this.passiveHole(this.printStem(" ", "ه ") + "ه ") + positivity + "می‌شد" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_SADEYE_NAGHLI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + this.printStem(positivity, "ه") + "ه" + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "شده" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_ESTEMRARIE_NAGHLI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + "می‌" + this.printStem("می‌", "ه") + "ه" + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "می‌شده" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_BAEIDE_NAGHLI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + this.printStem(positivity, "ه بوده") + "ه بوده" + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "شده بوده" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_MOSTAMARE_NAGHLI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = "داشته" + pronoun + " " + printFelyar() + printPishvand() + positivity + "می‌" + this.printStem("می‌", "ه") + "ه" + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = "داشته" + pronoun + " " + printFelyar() + printPishvand() + this.passiveHole(this.printStem(" ", "ه ") + "ه ") + positivity + "می‌شده" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MAZI_E_ELTEZAMI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + this.printStem(positivity, "ه باش") + "ه باش" + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "شده باش" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MOZARE_E_EKHBARI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + "می‌" + this.printStem("می‌", pronoun) + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "می‌شو" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MOZARE_E_MOSTAMAR:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = "دار" + pronoun + " " + printFelyar() + printPishvand() + positivity + "می‌" + this.printStem("می‌", pronoun) + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = "دار" + pronoun + " " + printFelyar() + printPishvand() + this.passiveHole(this.printStem(" ", "ه ") + "ه ") + positivity + "می‌شو" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.MOZARE_E_ELTEZAMI:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + this.printStem(positivity, pronoun) + pronoun;
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "شو" + pronoun;
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.AYANDE:
                switch (passivity)
                {
                case ENUM_TENSE_PASSIVITY.ACTIVE:
                    verbWord = printFelyar() + printPishvand() + positivity + "خواه" + pronoun + " " + this.printStem(" ", "");
                    break;

                case ENUM_TENSE_PASSIVITY.PASSIVE:
                    verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "خواه" + pronoun + " شد";
                    break;

                default:
                    break;
                }
                break;

            case ENUM_TENSE_TIME.AMR:
                if (this.getTensePerson() == ENUM_TENSE_PERSON.SINGULAR_SECOND ||
                    this.getTensePerson() == ENUM_TENSE_PERSON.PLURAL_SECOND)
                {
                    switch (passivity)
                    {
                    case ENUM_TENSE_PASSIVITY.ACTIVE:
                        verbWord = printFelyar() + printPishvand() + positivity + this.printStem(positivity, pronoun) + pronoun;
                        break;

                    case ENUM_TENSE_PASSIVITY.PASSIVE:
                        verbWord = printFelyar() + printPishvand() + this.passiveHole(this.printStem("", "ه ") + "ه ") + positivity + "شو" + pronoun;
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    verbWord = "";
                }
                break;

            default:
                verbWord = "";
                break;
            }

            return(verbWord);
        }