#pragma once #include #include #include #include "Forest.h" namespace MosesTraining { namespace Syntax { namespace PostprocessEgretForests { 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 PostprocessEgretForests } // namespace Syntax } // namespace MosesTraining