public static bool AnalyseIlya( EvaluationContext <Word> evaluationContext, Evaluator <Word, SentenceContext> evaluator) { if (string.Join(" ", evaluationContext.Words.Select(word => word.Value)) == "il y a") { evaluationContext.AddSentencePartList(new TimespanIntroductionPart(evaluationContext.Words)); return(true); } return(false); }
public static bool AnalyzeSubjectAttribute(EvaluationContext <Word> evaluationContext, Evaluator <Word, SentenceContext> evaluator) { var words = evaluationContext.Words.ToList(); if (words.Count() != 1 || !words.Single().KnownMatchingCategories.Any(category => category.Type == WordCategoryType.Adjective)) { throw new UnrecognizedPhraseException(); } evaluationContext.AddSentencePartList(new SubjectAttribute(words)); return(true); }
public static bool AnalyzeCopuleVerb(EvaluationContext <Word> evaluationContext, Evaluator <Word, SentenceContext> evaluator) { var words = evaluationContext.Words.ToList(); if (words.Count() != 1 || !words.Single().KnownMatchingCategories.Any(category => category.Type == WordCategoryType.Verb && (category as Verb).VerbId == "être")) { throw new UnrecognizedPhraseException(); } evaluationContext.AddSentencePartList(new VerbPart(words.Single())); return(true); }
public static bool AnalyzeTimespan( EvaluationContext <Word> evaluationContext, Evaluator <Word, SentenceContext> evaluator) { var isValid = evaluationContext.Words .Take(evaluationContext.Words.Count() - 1) .All(word => word.KnownMatchingCategories.Any(category => category.Type == WordCategoryType.Adverb && new[] { AdverbType.Superlative, AdverbType.Comparative }.Contains((category as Adverb).AdverbType))) && evaluationContext .Words .Last() .KnownMatchingCategories .Any(category => category.Type == WordCategoryType.Adverb && (category as Adverb).AdverbType == AdverbType.Timespan); if (isValid) { evaluationContext.AddSentencePartList(new TimespanSentencePart(evaluationContext.Words)); return(true); } return(false); }