#pragma once #include #include "PatternApplicationTrie.h" #include "SymbolRange.h" namespace Moses { namespace Syntax { namespace S2T { class SymbolRangeCalculator { public: void Calc(const PatternApplicationKey &, int, int, std::vector &); private: // Provides contextual information used in determining a symbol's range. struct AuxSymbolInfo { int distanceToNextTerminal; int distanceToPrevTerminal; }; void FillInTerminalRanges(const PatternApplicationKey &, std::vector &); void FillInAuxSymbolInfo(const std::vector &); void FillInGapRanges(const PatternApplicationKey &, int, int, std::vector &); std::vector m_auxSymbolInfo; }; } // namespace S2T } // namespace Syntax } // namespace Moses