| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #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; |
| | }; |
| |
|
| | } |
| |
|