From 24034efc7b1333b27f1161871ece27b7ea226248 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Pecka?= <tomaspecka@gmail.com>
Date: Thu, 16 Jan 2014 16:34:24 +0100
Subject: [PATCH] Build for are2fa

---
 .../src/conversions/re2fa/Brzozowski.cpp      | 14 +++++++
 .../src/conversions/re2fa/Brzozowski.h        |  3 ++
 .../src/conversions/re2fa/Glushkov.cpp        | 13 +++++++
 aconversions/src/conversions/re2fa/Glushkov.h | 16 +++++++-
 aconversions/src/conversions/re2fa/Makefile   | 26 ++++++++++---
 .../conversions/re2fa/are2fa.brzozowski.cpp   | 37 +++++++++++++++++++
 .../src/conversions/re2fa/are2fa.glushkov.cpp | 37 +++++++++++++++++++
 .../re2fa/{are2fa.cpp => are2fa.thompson.cpp} |  8 ----
 8 files changed, 140 insertions(+), 14 deletions(-)
 create mode 100644 aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp
 create mode 100644 aconversions/src/conversions/re2fa/are2fa.glushkov.cpp
 rename aconversions/src/conversions/re2fa/{are2fa.cpp => are2fa.thompson.cpp} (74%)

diff --git a/aconversions/src/conversions/re2fa/Brzozowski.cpp b/aconversions/src/conversions/re2fa/Brzozowski.cpp
index 479ffb37f1..ba42a73b5d 100644
--- a/aconversions/src/conversions/re2fa/Brzozowski.cpp
+++ b/aconversions/src/conversions/re2fa/Brzozowski.cpp
@@ -7,7 +7,21 @@
 
 #include "Brzozowski.h"
 
+using namespace automaton;
+using namespace regexp;
+
 namespace conversions
 {
 
+Brzozowski::Brzozowski( const RegExp & re ) : AbstractREtoFAConverter( re )
+{
+
+}
+
+const FSM Brzozowski::convert( void )
+{
+    return m_fsm;
+}
+
+
 } /* namespace conversions */
diff --git a/aconversions/src/conversions/re2fa/Brzozowski.h b/aconversions/src/conversions/re2fa/Brzozowski.h
index cae0c27c9a..3da6f85cd9 100644
--- a/aconversions/src/conversions/re2fa/Brzozowski.h
+++ b/aconversions/src/conversions/re2fa/Brzozowski.h
@@ -18,6 +18,9 @@ namespace conversions
  */
 class Brzozowski : public AbstractREtoFAConverter
 {
+public:
+    Brzozowski( const regexp::RegExp & re );
+    const automaton::FSM convert( void );
 };
 
 } /* namespace conversions */
diff --git a/aconversions/src/conversions/re2fa/Glushkov.cpp b/aconversions/src/conversions/re2fa/Glushkov.cpp
index be1c514c89..c784a226a5 100644
--- a/aconversions/src/conversions/re2fa/Glushkov.cpp
+++ b/aconversions/src/conversions/re2fa/Glushkov.cpp
@@ -7,7 +7,20 @@
 
 #include "Glushkov.h"
 
+using namespace automaton;
+using namespace regexp;
+
 namespace conversions
 {
 
+Glushkov::Glushkov( const RegExp & re ) : AbstractREtoFAConverter( re )
+{
+
+}
+
+const FSM Glushkov::convert( void )
+{
+    return m_fsm;
+}
+
 } /* namespace conversions */
diff --git a/aconversions/src/conversions/re2fa/Glushkov.h b/aconversions/src/conversions/re2fa/Glushkov.h
index 6032ce3f91..5da8240f33 100644
--- a/aconversions/src/conversions/re2fa/Glushkov.h
+++ b/aconversions/src/conversions/re2fa/Glushkov.h
@@ -8,6 +8,9 @@
 #ifndef GLUSHKOV_H_
 #define GLUSHKOV_H_
 
+#include <regexp/RegExp.h>
+#include <regexp/RegExpSymbol.h>
+
 #include "AbstractREtoFAConverter.h"
 
 namespace conversions
@@ -18,9 +21,20 @@ namespace conversions
  */
 class Glushkov : public AbstractREtoFAConverter
 {
+public:
+    Glushkov( const regexp::RegExp & re );
+    const automaton::FSM convert( void );
+
+private:
+    struct Struct
+    {
+        regexp::RegExpSymbol & m_symbol;
+        int m_i;
+
+        std::string constructStateName();
+    };
 };
 
 } /* namespace conversions */
 
-
 #endif /* GLUSHKOV_H_ */
diff --git a/aconversions/src/conversions/re2fa/Makefile b/aconversions/src/conversions/re2fa/Makefile
index 7f78a561d2..fd14edb345 100644
--- a/aconversions/src/conversions/re2fa/Makefile
+++ b/aconversions/src/conversions/re2fa/Makefile
@@ -1,12 +1,28 @@
-EXECUTABLE=are2fa
+all: are2fa.glushkov are2fa.brzozowski are2fa.thompson
+#	cp are2fa.glushkov $(BIN_DIR)
+#	cp are2fa.brzozowski $(BIN_DIR)
+	cp are2fa.thompson $(BIN_DIR)
 
-all: $(EXECUTABLE).o AbstractREtoFAConverter.o Brzozowski.o Glushkov.o Thompson.o AutomatonUtils.o ConversionException.o
-	$(LD) $(LDFLAGS) $^ -o $(EXECUTABLE)
-	cp $(EXECUTABLE) $(BIN_DIR)
+#are2fa.glushkov: are2fa.glushkov.o Glushkov.o AbstractREtoFAConverter.o
+#	$(LD) $(LDFLAGS) $^ -o $@
 
-$(EXECUTABLE).o: are2fa.cpp Brzozowski.h AbstractREtoFAConverter.h Glushkov.h Thompson.h
+#are2fa.brzozowski: are2fa.brzozowski.o Brzozowski.o AbstractREtoFAConverter.o
+#	$(LD) $(LDFLAGS) $^ -o $@
+
+are2fa.thompson: are2fa.thompson.o Thompson.o AbstractREtoFAConverter.o AutomatonUtils.o ConversionException.o
+	$(LD) $(LDFLAGS) $^ -o $@
+
+
+are2fa.brzozowski.o: are2fa.brzozowski.cpp Brzozowski.h AbstractREtoFAConverter.h
+	$(CXX) $(CXXFLAGS) $< -o $@
+
+are2fa.glushkov.o: are2fa.glushkov.cpp Glushkov.h AbstractREtoFAConverter.h
+	$(CXX) $(CXXFLAGS) $< -o $@
+
+are2fa.thompson.o: are2fa.thompson.cpp Thompson.h AbstractREtoFAConverter.h
 	$(CXX) $(CXXFLAGS) $< -o $@
 
+
 AbstractREtoFAConverter.o: AbstractREtoFAConverter.cpp AbstractREtoFAConverter.h
 	$(CXX) $(CXXFLAGS) $< -o $@
 
diff --git a/aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp b/aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp
new file mode 100644
index 0000000000..e23912e899
--- /dev/null
+++ b/aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp
@@ -0,0 +1,37 @@
+#include <iostream>
+
+#include <AlibException.h>
+#include <automaton/AutomatonPrinter.h>
+#include <regexp/RegExp.h>
+#include <regexp/RegExpParser.h>
+#include <sax/SaxInterface.h>
+
+#include "Brzozowski.h"
+
+
+using namespace std;
+using namespace automaton;
+using namespace regexp;
+using namespace alib;
+using namespace conversions;
+
+int main(int argc, char** argv)
+{
+    try
+    {
+        list<Token> tokens;
+        string input(istreambuf_iterator<char>(cin), (istreambuf_iterator<char>()));
+        SaxInterface::parseMemory(input, tokens);
+        RegExp re = RegExpParser::parse(tokens);
+
+        Brzozowski conv( re );
+        conv.convert( ).toXML( cout );
+    }
+    catch( AlibException & e )
+    {
+        cout << e.what() << endl;
+        return 1;
+    }
+
+    return 0;
+}
diff --git a/aconversions/src/conversions/re2fa/are2fa.glushkov.cpp b/aconversions/src/conversions/re2fa/are2fa.glushkov.cpp
new file mode 100644
index 0000000000..9fb57c5d65
--- /dev/null
+++ b/aconversions/src/conversions/re2fa/are2fa.glushkov.cpp
@@ -0,0 +1,37 @@
+#include <iostream>
+
+#include <AlibException.h>
+#include <automaton/AutomatonPrinter.h>
+#include <regexp/RegExp.h>
+#include <regexp/RegExpParser.h>
+#include <sax/SaxInterface.h>
+
+#include "Glushkov.h"
+
+
+using namespace std;
+using namespace automaton;
+using namespace regexp;
+using namespace alib;
+using namespace conversions;
+
+int main(int argc, char** argv)
+{
+    try
+    {
+        list<Token> tokens;
+        string input(istreambuf_iterator<char>(cin), (istreambuf_iterator<char>()));
+        SaxInterface::parseMemory(input, tokens);
+        RegExp re = RegExpParser::parse(tokens);
+
+        Glushkov conv( re );
+        conv.convert( ).toXML( cout );
+    }
+    catch( AlibException & e )
+    {
+        cout << e.what() << endl;
+        return 1;
+    }
+
+    return 0;
+}
diff --git a/aconversions/src/conversions/re2fa/are2fa.cpp b/aconversions/src/conversions/re2fa/are2fa.thompson.cpp
similarity index 74%
rename from aconversions/src/conversions/re2fa/are2fa.cpp
rename to aconversions/src/conversions/re2fa/are2fa.thompson.cpp
index 167925f02f..0535c949d1 100644
--- a/aconversions/src/conversions/re2fa/are2fa.cpp
+++ b/aconversions/src/conversions/re2fa/are2fa.thompson.cpp
@@ -1,11 +1,3 @@
-//============================================================================
-// Name        : are2fa.cpp
-// Author      : Tomas Pecka
-// Version     :
-// Copyright   :
-// Description :
-//============================================================================
-
 #include <iostream>
 
 #include <AlibException.h>
-- 
GitLab