|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
#include <queue> |
|
#include <cstddef> |
|
#include <string> |
|
#include <deque> |
|
#include "../ManagerBase.h" |
|
#include "Stacks.h" |
|
#include "InputPaths.h" |
|
#include "Misc.h" |
|
|
|
namespace Moses2 |
|
{ |
|
|
|
namespace SCFG |
|
{ |
|
class SymbolBind; |
|
class TargetPhraseImpl; |
|
class SymbolBindElement; |
|
|
|
class Manager: public Moses2::ManagerBase |
|
{ |
|
public: |
|
Manager(System &sys, const TranslationTask &task, const std::string &inputStr, |
|
long translationId); |
|
|
|
virtual ~Manager(); |
|
void Decode(); |
|
std::string OutputBest() const; |
|
std::string OutputNBest(); |
|
std::string OutputTransOpt(); |
|
|
|
const InputPaths &GetInputPaths() const { |
|
return m_inputPaths; |
|
} |
|
|
|
QueueItemRecycler &GetQueueItemRecycler() { |
|
return m_queueItemRecycler; |
|
} |
|
|
|
const Stacks &GetStacks() const { |
|
return m_stacks; |
|
} |
|
|
|
protected: |
|
Stacks m_stacks; |
|
SCFG::InputPaths m_inputPaths; |
|
|
|
void InitActiveChart(SCFG::InputPath &path); |
|
void Lookup(SCFG::InputPath &path); |
|
void LookupUnary(SCFG::InputPath &path); |
|
void Decode(SCFG::InputPath &path, Stack &stack); |
|
|
|
void ExpandHypo( |
|
const SCFG::InputPath &path, |
|
const SCFG::SymbolBind &symbolBind, |
|
const SCFG::TargetPhraseImpl &tp, |
|
Stack &stack); |
|
|
|
bool IncrPrevHypoIndices( |
|
Vector<size_t> &prevHyposIndices, |
|
size_t ind, |
|
const std::vector<const SymbolBindElement*> ntEles); |
|
|
|
|
|
Queue m_queue; |
|
SeenPositions m_seenPositions; |
|
|
|
QueueItemRecycler m_queueItemRecycler; |
|
|
|
void CreateQueue( |
|
const SCFG::InputPath &path, |
|
const SymbolBind &symbolBind, |
|
const SCFG::TargetPhrases &tps); |
|
}; |
|
|
|
} |
|
} |
|
|
|
|