| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #pragma once |
|
|
| #include "moses/ChartRuleLookupManager.h" |
| #include "moses/ChartTranslationOptionList.h" |
| #include "moses/NonTerminal.h" |
| #include "moses/TranslationModel/RuleTable/UTrieNode.h" |
| #include "moses/TranslationModel/RuleTable/UTrie.h" |
| #include "moses/StaticData.h" |
| #include "ApplicableRuleTrie.h" |
| #include "StackLattice.h" |
| #include "StackLatticeBuilder.h" |
| #include "StackLatticeSearcher.h" |
| #include "VarSpanTrieBuilder.h" |
|
|
| #include <memory> |
| #include <vector> |
|
|
| namespace Moses |
| { |
|
|
| class InputType; |
| class ChartCellCollectionBase; |
| class ChartHypothesisCollection; |
| class Range; |
|
|
| |
| |
| class Scope3Parser : public ChartRuleLookupManager |
| { |
| public: |
| Scope3Parser(const ChartParser &parser, |
| const ChartCellCollectionBase &cellColl, |
| const RuleTableUTrie &ruleTable, |
| size_t maxChartSpan) |
| : ChartRuleLookupManager(parser, cellColl) |
| , m_ruleTable(ruleTable) |
| , m_maxChartSpan(maxChartSpan) { |
| Init(); |
| } |
|
|
| void GetChartRuleCollection( |
| const InputPath &inputPath, |
| size_t last, |
| ChartParserCallback &outColl); |
|
|
| private: |
| |
| struct MatchCallback { |
| public: |
| MatchCallback(const Range &range, ChartParserCallback &out) |
| : m_range(range) , m_out(out) |
| { } |
|
|
| void operator()(const StackVec &stackVec) { |
| m_out.Add(*m_tpc, stackVec, m_range); |
| } |
| const Range &m_range; |
| ChartParserCallback &m_out; |
| TargetPhraseCollection::shared_ptr m_tpc; |
| }; |
|
|
| void Init(); |
| void InitRuleApplicationVector(); |
| void FillSentenceMap(SentenceMap &); |
| void AddRulesToCells(const ApplicableRuleTrie &, std::pair<int, int>, int, |
| int); |
|
|
| const RuleTableUTrie &m_ruleTable; |
| std::vector<std::vector<std::vector< |
| std::pair<const UTrieNode *, const VarSpanNode *> > > > m_ruleApplications; |
| std::auto_ptr<VarSpanNode> m_varSpanTrie; |
| StackVec m_emptyStackVec; |
| const size_t m_maxChartSpan; |
| StackLattice m_lattice; |
| StackLatticeBuilder m_latticeBuilder; |
| std::vector<VarSpanNode::NonTermRange> m_ranges; |
| std::vector<std::vector<bool> > m_quickCheckTable; |
| }; |
|
|
| } |
|
|