From 7023d46c56c106e2a2640b90c62e6c2777b87f8a Mon Sep 17 00:00:00 2001 From: MaxanRus Date: Wed, 6 Oct 2021 11:11:51 +0300 Subject: [PATCH] add readme --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ src/main.cpp | 3 ++- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c18d217 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# Formalang +```c++ +#include "regular/RegularTree.hpp" +#include "NFA/NFAGraph.hpp" +#include "DFA/DFAGraph.hpp" +#include "converters/RegularToNFA.hpp" +#include "converters/NFAToDFA.hpp" +#include "converters/DFAToFDFA.hpp" +#include "converters/DFAToMinDFA.hpp" +#include "converters/DFAToRegular.hpp" +#include "converters/InvertFDFA.hpp" + +using namespace regular; +using namespace NFA; +using namespace DFA; +using namespace converters; +``` +так можно подключить все что есть в моей программе. +```c++ +RegularTree r("a*"); // Регулярное выражение +NFAGraph NFA_tree = RegularToNFAGraph(std::move(r)); // В НКА +DFAGraph DFA_graph = NFAGraphToDFAGraph(std::move(NFA_tree)); // В ДКА +DFA_graph = DFAGraphToMinDFAGraph(std::move(DFA_graph)); // Минимизация +DFA_graph.Print(); // Мой вывод +DFA_graph.CreateDotFile("2.dot"); // Вывод в dot файл +std::string reg = DFAGraphToRegular(std::move(DFA_graph)); // В регулярку +``` +Такой вывод в регулярку как показано в прошлом примере сделает много лишних скобок, если мы хотим привести к более нормальному виду, то можно сделать так +```c++ +RegularTree(reg).ToString() // Получится более красивая регулярка +``` +Про сами регулярки + * - это плюс и звезда Клини. Их можно писать после слов, или после скобок. +abacaba* ~ (abacaba)\*. a(b)a\* ~ a(b)(a)\*. Для сложения языков используется |. Символом пустого слова является пробел. + +Примеры регулярок + +a* + +a(b)+a + +(a|b)* diff --git a/src/main.cpp b/src/main.cpp index 30193c9..701fd02 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,7 @@ #include #include "regular/RegularTree.hpp" +#include "NFA/NFAGraph.hpp" +#include "DFA/DFAGraph.hpp" #include "converters/RegularToNFA.hpp" #include "converters/NFAToDFA.hpp" #include "converters/DFAToFDFA.hpp" @@ -7,7 +9,6 @@ #include "converters/DFAToRegular.hpp" #include "converters/InvertFDFA.hpp" -using namespace regular; using namespace regular; using namespace NFA; using namespace DFA;