public override IParsedPhrase ConceptToPhrase(Context context, Concept concept, POSTagger tagger, GrammarParser parser)
        {
            Verbs.Person person = Verbs.Person.ThirdSingle;

            object start = context.LookupDefaulted <object>("$check", null);

            if (start != null && start is Datum)
            {
                Datum noundat = KnowledgeUtilities.GetClosestDatum(memory, (Datum)start, Relations.Relation.Subject);
                person = nouns.GetPerson(noundat.Right.Name);
            }

            return(Relations.ConjugateToPhrase(memory, conjugate, person, concept));
        }
Esempio n. 2
0
        // compase a conjugation of the verb to have
        public static string ComposeToHave(Verbs.Person person, Verbs.Convert convert)
        {
            if (convert == Verbs.Convert.ext_Ved)
            {
                return("had");
            }
            if (convert == Verbs.Convert.ext_Vs)
            {
                return((person == Verbs.Person.ThirdSingle) ? "has" : "have");
            }
            if (convert == Verbs.Convert.ext_Ving)
            {
                return("having");
            }
            if (convert == Verbs.Convert.ext_Ven)
            {
                return("had");
            }

            return("have");
        }
Esempio n. 3
0
        // compose a conjugation of the verb to do
        public static string ComposeToDo(Verbs.Person person, Verbs.Convert convert)
        {
            if (convert == Verbs.Convert.ext_Ved)
            {
                return("did");
            }
            if (convert == Verbs.Convert.ext_Vs)
            {
                return(person == Verbs.Person.ThirdSingle ? "does" : "do");
            }
            if (convert == Verbs.Convert.ext_Ving)
            {
                return("doing");
            }
            if (convert == Verbs.Convert.ext_Ven)
            {
                return("done");
            }

            return("do");
        }
Esempio n. 4
0
        //  compse a conjugation of the verb to be
        public static string ComposeToBe(Verbs.Person person, Verbs.Convert convert)
        {
            if (convert == Verbs.Convert.ext_Ved)
            {
                return((person == Verbs.Person.FirstSingle || person == Verbs.Person.ThirdSingle) ? "was" : "were");
            }
            if (convert == Verbs.Convert.ext_Vs)
            {
                return(person == Verbs.Person.FirstSingle ? "am" : (person == Verbs.Person.ThirdSingle ? "is" : "are"));
            }
            if (convert == Verbs.Convert.ext_Ving)
            {
                return("being");
            }
            if (convert == Verbs.Convert.ext_Ven)
            {
                return("been");
            }

            return("be");
        }
Esempio n. 5
0
        public static string ConjugateToTense(Memory memory, string verb, Verbs.Person person, Concept right, Verbs verbs)
        {
            if (right == memory.past)
            {
                return(verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Ved));
            }
            if (right == memory.now)
            {
                return(verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Vs));
            }
            if (right == memory.future)
            {
                return("will " + verbs.ComposePersonable(verb, person, Verbs.Convert.ext_V));
            }

            List <string> parts    = StringUtilities.SplitWords(right.Name, true);
            bool          usedverb = false;

            for (int ii = 0; ii < parts.Count; ii++)
            {
                if (parts[ii] == "en")
                {
                    parts[ii] = verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Ven);
                    usedverb  = true;
                }
                else if (parts[ii] == "ing")
                {
                    parts[ii] = verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Ving);
                    usedverb  = true;
                }
            }
            if (!usedverb)
            {
                parts.Add(verbs.InputToBase(verb));
            }
            return(StringUtilities.JoinWords(parts));
        }
Esempio n. 6
0
        // inflect a verb, appropriate to a given person for irregulars
        public string ComposePersonable(string verb, Verbs.Person person, Verbs.Convert convert)
        {
            if (Verbs.IsToBe(verb))
            {
                return(Verbs.ComposeToBe(person, convert));
            }
            if (Verbs.IsToDo(verb))
            {
                return(Verbs.ComposeToDo(person, convert));
            }
            if (Verbs.IsToHave(verb))
            {
                return(Verbs.ComposeToHave(person, convert));
            }

            if (convert == Verbs.Convert.ext_Vs && person != Verbs.Person.ThirdSingle)
            {
                return(InflectVerb(verb, Verbs.Convert.ext_V));
            }
            else
            {
                return(InflectVerb(verb, convert));
            }
        }
Esempio n. 7
0
        public static IParsedPhrase ConjugateToPhrase(Memory memory, IrregularVerbVariable.ConjugateVerb conjugate, Verbs.Person person, Concept right)
        {
            if (right == memory.past)
            {
                return(new WordPhrase(conjugate(person, Verbs.Convert.ext_Ved), "VBD"));
            }
            else if (right == memory.now)
            {
                return(new WordPhrase(conjugate(person, Verbs.Convert.ext_Vs), "VBZ"));
            }
            else if (right == memory.future)
            {
                return(new WordPhrase("will " + conjugate(person, Verbs.Convert.ext_V), "VB"));
            }

            List <string> parts    = StringUtilities.SplitWords(right.Name, true);
            bool          usedverb = false;

            for (int ii = 0; ii < parts.Count; ii++)
            {
                if (parts[ii] == "en")
                {
                    parts[ii] = conjugate(person, Verbs.Convert.ext_Ven);
                    usedverb  = true;
                }
                else if (parts[ii] == "ing")
                {
                    parts[ii] = conjugate(person, Verbs.Convert.ext_Ving);
                    usedverb  = true;
                }
            }
            if (!usedverb)
            {
                parts.Add(conjugate(person, Verbs.Convert.ext_V));
            }

            List <IParsedPhrase> branches = new List <IParsedPhrase>();

            branches.Add(new WordPhrase(StringUtilities.JoinWords(parts), "VB"));
            return(new GroupPhrase("VP", branches));
        }