#pragma once #include #include #include #include #include namespace regular { class RegularTree { public: class Node { public: enum class Type { Addition, Concatenation, Word }; enum class Modifier { Plus, Star, None }; Node(); Node(Type); void Parse(const std::string&); void Print() const; std::vector> children; std::string word; Type type; Modifier modifier = Modifier::None; private: void ParseCurrentType(const std::string_view); void Print(int nesting_level) const; }; RegularTree(const std::string&); const Node& GetNode() const; void Print() const; private: Node node_; }; }