public ParseResult ParseWord(string word) { CheckDisposed(); var results = new StringBuilder(m_xample.ParseWord(word)); results = results.Replace("DB_REF_HERE", "'0'"); results = results.Replace("<...>", "[...]"); var wordformElem = XElement.Parse(results.ToString()); string errorMessage = null; var exceptionElem = wordformElem.Element("Exception"); if (exceptionElem != null) { var totalAnalysesValue = (string) exceptionElem.Attribute("totalAnalyses"); switch ((string) exceptionElem.Attribute("code")) { case "ReachedMaxAnalyses": errorMessage = String.Format(ParserCoreStrings.ksReachedMaxAnalysesAllowed, totalAnalysesValue); break; case "ReachedMaxBufferSize": errorMessage = String.Format(ParserCoreStrings.ksReachedMaxInternalBufferSize, totalAnalysesValue); break; } } else { errorMessage = (string) wordformElem.Element("Error"); } ParseResult result; using (new WorkerThreadReadHelper(m_cache.ServiceLocator.GetInstance<IWorkerThreadReadHandler>())) { var analyses = new List<ParseAnalysis>(); foreach (XElement analysisElem in wordformElem.Descendants("WfiAnalysis")) { var morphs = new List<ParseMorph>(); bool skip = false; foreach (XElement morphElem in analysisElem.Descendants("Morph")) { ParseMorph morph; if (!TryCreateParseMorph(m_cache, morphElem, out morph)) { skip = true; break; } if (morph != null) morphs.Add(morph); } if (!skip && morphs.Count > 0) analyses.Add(new ParseAnalysis(morphs)); } result = new ParseResult(analyses, errorMessage); } return result; }
protected override string ParseWord(string form, int hvoWordform) { return(CompleteAmpleResults(m_xample.ParseWord(form), hvoWordform)); }