Beispiel #1
0
        private static ExtractionResult Extract(string input)
        {
            var result = Parser.Parse(input);
            var succ   = Assert.IsType <ParseResult.Success>(result);

            return(IdentifierExtractor.Extract(succ.Sentences));
        }
        EvaluateQueries(ParseResult.Success parseResult)
        {
            var extracted = IdentifierExtractor.Extract(parseResult.Sentences);
            var results   = new List <QueryResponse>();

            var queriesByScenarios = new Dictionary <int, List <Sentence <int> > >();

            foreach (var sentence in extracted.Sentences)
            {
                switch (sentence)
                {
                case Sentence <int> .ScenarioDefinition scenario:
                    queriesByScenarios.Add(scenario.Name, new List <Sentence <int> >());
                    break;

                case IQuerySentence <int> query:
                    queriesByScenarios[query.Scenario].Add((Sentence <int>)query);
                    break;
                }
            }

            var modelsByScenario = new Dictionary <int, SimpleModelSaver>();

            foreach (var entry in queriesByScenarios)
            {
                var modelSaver = new SimpleModelSaver();
                var alg        = new Algorithm(extracted, entry.Key, entry.Value, modelSaver);
                results.AddRange(alg.FindModels());
                modelsByScenario.Add(entry.Key, modelSaver);
            }

            var queryResults = results
                               .OrderBy(r => ((IList <Sentence <int> >)extracted.Sentences).IndexOf(r.Query))
                               .ToList();

            return(queryResults, modelsByScenario, extracted);
        }