diff --git a/CMakeLists.txt b/CMakeLists.txt index db8dc50..5be6ab5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,9 @@ include_directories( set(CMAKE_CXX_STANDARD 17) -set(SOURCE_FILES) +set(SOURCE_FILES + src/regular/RegularTree.cpp + ) set(TEST_FILES) diff --git a/include/regular/RegularTree.hpp b/include/regular/RegularTree.hpp new file mode 100644 index 0000000..02dd856 --- /dev/null +++ b/include/regular/RegularTree.hpp @@ -0,0 +1,31 @@ +#pragma once +#include +#include +#include +#include +#include + +namespace regular { +class RegularTree { + public: + class Node { + public: + Node(); + + void Parse(const std::string&); + void Parse(const std::string_view); + + enum class Type { + Addition, Concatenation + }; + std::variant>, std::string> value; + Type type; + private: + }; + + RegularTree(const std::string&); + + private: + Node node_; +}; +} diff --git a/src/main.cpp b/src/main.cpp index a03be09..14eb3b0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,7 @@ #include +#include "regular/RegularTree.hpp" int main() { - std::cout << "hello world"; + using namespace regular; + RegularTree reg_tree("(ab)*"); } diff --git a/src/regular/RegularTree.cpp b/src/regular/RegularTree.cpp new file mode 100644 index 0000000..96128e8 --- /dev/null +++ b/src/regular/RegularTree.cpp @@ -0,0 +1,22 @@ +#include "regular/RegularTree.hpp" +#include + +namespace regular { +RegularTree::Node::Node() {} + +void RegularTree::Node::Parse(const std::string& regular) { + Parse(std::string_view(regular.c_str(), regular.size())); +} + +void RegularTree::Node::Parse(const std::string_view regular) { + const int n = regular.size(); + for (int i = 0; i < n; ++i) { + std::cout << regular[i]; + } + std::cout << std::endl; +} + +RegularTree::RegularTree(const std::string& regular) { + node_.Parse(regular); +} +}