Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }