#pragma once #include #include #include #include "Forest.h" namespace Moses { namespace Syntax { namespace F2S { class TopologicalSorter { public: void Sort(const Forest &, std::vector &); private: typedef boost::unordered_set VertexSet; void BuildPredSets(const Forest &); void Visit(const Forest::Vertex &, std::vector &); boost::unordered_set m_visited; boost::unordered_map m_predSets; }; } // namespace F2S } // namespace Syntax } // namespace Moses