#pragma once #include #include #include namespace NFA { class NFATree { public: class Vertex { public: Vertex(); Vertex(bool is_finale, bool is_start); bool IsFinal() const; bool IsStart() const; void SetFinal(bool value); void SetStart(bool value); std::map>> transitions; private: bool is_final_ = false; bool is_start_ = false; }; void RemoveVertex(std::shared_ptr); void RemoveFinalVertex(std::shared_ptr); void RemoveStartVertex(std::shared_ptr); void Composition(NFATree&&, std::vector> start_vertexes, std::vector> final_vertexes); private: std::vector> vertexes_; std::vector> final_vertexes_; std::vector> start_vertexes_; }; }