add readme

This commit is contained in:
MaxanRus 2021-10-06 11:11:51 +03:00
parent f715234f41
commit 7023d46c56
2 changed files with 43 additions and 1 deletions

41
README.md Normal file
View file

@ -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)*

View file

@ -1,5 +1,7 @@
#include <iostream> #include <iostream>
#include "regular/RegularTree.hpp" #include "regular/RegularTree.hpp"
#include "NFA/NFAGraph.hpp"
#include "DFA/DFAGraph.hpp"
#include "converters/RegularToNFA.hpp" #include "converters/RegularToNFA.hpp"
#include "converters/NFAToDFA.hpp" #include "converters/NFAToDFA.hpp"
#include "converters/DFAToFDFA.hpp" #include "converters/DFAToFDFA.hpp"
@ -7,7 +9,6 @@
#include "converters/DFAToRegular.hpp" #include "converters/DFAToRegular.hpp"
#include "converters/InvertFDFA.hpp" #include "converters/InvertFDFA.hpp"
using namespace regular;
using namespace regular; using namespace regular;
using namespace NFA; using namespace NFA;
using namespace DFA; using namespace DFA;