From 0eecaa627927989e20e782af6eaa107b8aae01c3 Mon Sep 17 00:00:00 2001
From: Jan Vesely <janvesely@janvesely.net>
Date: Fri, 13 Dec 2013 15:30:22 +0100
Subject: [PATCH] clean vpa determinization

---
 adeterminize.vpa/src/VPADeterminizer.cpp | 104 +++++++++++++++++------
 adeterminize.vpa/src/VPADeterminizer.h   |  22 +++--
 2 files changed, 91 insertions(+), 35 deletions(-)

diff --git a/adeterminize.vpa/src/VPADeterminizer.cpp b/adeterminize.vpa/src/VPADeterminizer.cpp
index f26ba90800..2fac2f4515 100644
--- a/adeterminize.vpa/src/VPADeterminizer.cpp
+++ b/adeterminize.vpa/src/VPADeterminizer.cpp
@@ -3,15 +3,17 @@
 namespace determinization {
     
 const Symbol VPADeterminizer::BOTTOM_OF_STACK_SYMBOL("⊥");
-    
+
 
 string VPADeterminizer::buildStateName(const SComponent& s, const RComponent& r) {
     string name = "{";
-    for (set<StatesPair>::const_iterator statePair = s.statesPairs.begin(); statePair != s.statesPairs.end(); statePair++) {
-        if (statePair != s.statesPairs.begin()) {
+    for (set<StatesPair>::const_iterator statesPair = s.statesPairs.begin();
+            statesPair != s.statesPairs.end();
+            statesPair++) {
+        if (statesPair != s.statesPairs.begin()) {
             name += ", ";
         }
-        name += "('" + statePair->state1.getName() + "', '" + statePair->state2.getName() + "')";
+        name += "('" + statesPair->state1.getName() + "', '" + statesPair->state2.getName() + "')";
     }
     name += "}, {";
     for (set<State>::const_iterator state = r.states.begin(); state != r.states.end(); state++) {
@@ -58,7 +60,9 @@ void VPADeterminizer::divideInputAlphabet() {
     set<Symbol> alphabet = this->nondeterministicVPA->getInputAlphabet();
     set<TransitionPDA> transitions = this->nondeterministicVPA->getTransitions();
     for (set<Symbol>::iterator input = alphabet.begin(); input != alphabet.end(); input++) {
-        for (set<TransitionPDA>::iterator transition = transitions.begin(); transition != transitions.end(); transition++) {
+        for (set<TransitionPDA>::iterator transition = transitions.begin();
+                transition != transitions.end();
+                transition++) {
             if (transition->getInput() == *input) {
                 if (transition->getPush().size() != 0) {
                     this->callSymbols.insert(*input);
@@ -98,7 +102,9 @@ void VPADeterminizer::buildStackAlphabet() {
     for (int i = 0; i < possibleSSize; i++) {
         set<StatesPair> statesPairsSet;
         int mask = 1;
-        for (vector<StatesPair>::iterator statesPair = possibleStatesPairs.begin(); statesPair != possibleStatesPairs.end(); statesPair++) {
+        for (vector<StatesPair>::iterator statesPair = possibleStatesPairs.begin();
+                statesPair != possibleStatesPairs.end();
+                statesPair++) {
             if ((i & mask) != 0) {
                 statesPairsSet.insert(*statesPair);
             }
@@ -158,7 +164,9 @@ PDA* VPADeterminizer::determinize() {
     
     while (true) {
         StateData* unmarkedStateData = NULL;
-        for (map<string, StateData>::iterator stateIter = this->states.begin(); stateIter != this->states.end(); stateIter++) {
+        for (map<string, StateData>::iterator stateIter = this->states.begin();
+                stateIter != this->states.end();
+                stateIter++) {
             if (!stateIter->second.isMarked) {
                 unmarkedStateData = &stateIter->second;
                 unmarkedStateData->isMarked = true;
@@ -170,11 +178,17 @@ PDA* VPADeterminizer::determinize() {
         }
         
         // Internal symbols
-        for (set<Symbol>::iterator internalSymbol = this->internalSymbols.begin(); internalSymbol != this->internalSymbols.end(); internalSymbol++) {
+        for (set<Symbol>::iterator internalSymbol = this->internalSymbols.begin();
+                internalSymbol != this->internalSymbols.end();
+                internalSymbol++) {
             SComponent s;
             SComponent& oldS = unmarkedStateData->s;
-            for (set<StatesPair>::iterator statesPair = oldS.statesPairs.begin(); statesPair != oldS.statesPairs.end(); statesPair++) {
-                for (set<TransitionPDA>::iterator transition = transitions.begin(); transition != transitions.end(); transition++) {
+            for (set<StatesPair>::iterator statesPair = oldS.statesPairs.begin();
+                    statesPair != oldS.statesPairs.end();
+                    statesPair++) {
+                for (set<TransitionPDA>::iterator transition = transitions.begin();
+                        transition != transitions.end();
+                        transition++) {
                     if (transition->getFrom() == statesPair->state2 && transition->getInput() == *internalSymbol) {
                         s.statesPairs.insert(StatesPair(statesPair->state1, transition->getTo()));
                     }
@@ -182,8 +196,12 @@ PDA* VPADeterminizer::determinize() {
             }
             RComponent r;
             RComponent& oldR = unmarkedStateData->r;
-            for (set<State>::iterator state = oldR.states.begin(); state != oldR.states.end(); state++) {
-                for (set<TransitionPDA>::iterator transition = transitions.begin(); transition != transitions.end(); transition++) {
+            for (set<State>::iterator state = oldR.states.begin();
+                    state != oldR.states.end();
+                    state++) {
+                for (set<TransitionPDA>::iterator transition = transitions.begin();
+                        transition != transitions.end();
+                        transition++) {
                     if (transition->getFrom() == *state && transition->getInput() == *internalSymbol) {
                         r.states.insert(transition->getTo());
                     }
@@ -195,11 +213,17 @@ PDA* VPADeterminizer::determinize() {
         }
         
         // Call symbols
-        for (set<Symbol>::iterator callSymbol = this->callSymbols.begin(); callSymbol != this->callSymbols.end(); callSymbol++) {
+        for (set<Symbol>::iterator callSymbol = this->callSymbols.begin();
+                callSymbol != this->callSymbols.end();
+                callSymbol++) {
             RComponent r;
             RComponent& oldR = unmarkedStateData->r;
-            for (set<State>::iterator state = oldR.states.begin(); state != oldR.states.end(); state++) {
-                for (set<TransitionPDA>::iterator transition = transitions.begin(); transition != transitions.end(); transition++) {
+            for (set<State>::iterator state = oldR.states.begin();
+                    state != oldR.states.end();
+                    state++) {
+                for (set<TransitionPDA>::iterator transition = transitions.begin();
+                        transition != transitions.end();
+                        transition++) {
                     if (transition->getFrom() == *state && transition->getInput() == *callSymbol) {
                         r.states.insert(transition->getTo());
                     }
@@ -214,24 +238,36 @@ PDA* VPADeterminizer::determinize() {
         }
         
         // Return symbols
-        for (set<Symbol>::iterator returnSymbol = this->returnSymbols.begin(); returnSymbol != this->returnSymbols.end(); returnSymbol++) {
+        for (set<Symbol>::iterator returnSymbol = this->returnSymbols.begin();
+                returnSymbol != this->returnSymbols.end();
+                returnSymbol++) {
             SComponent& oldS = unmarkedStateData->s;
             RComponent& oldR = unmarkedStateData->r;
             
             // Empty stack
             list<Symbol> bottomOfStack(1, BOTTOM_OF_STACK_SYMBOL);
             SComponent s;
-            for (set<StatesPair>::iterator statesPair = oldS.statesPairs.begin(); statesPair != oldS.statesPairs.end(); statesPair++) {
-                for (set<TransitionPDA>::iterator transition = transitions.begin(); transition != transitions.end(); transition++) {
-                    if (transition->getFrom() == statesPair->state2 && transition->getInput() == *returnSymbol && transition->getPop() == bottomOfStack) {
+            for (set<StatesPair>::iterator statesPair = oldS.statesPairs.begin();
+                    statesPair != oldS.statesPairs.end();
+                    statesPair++) {
+                for (set<TransitionPDA>::iterator transition = transitions.begin();
+                        transition != transitions.end();
+                        transition++) {
+                    if (transition->getFrom() == statesPair->state2 && transition->getInput() == *returnSymbol &&
+                            transition->getPop() == bottomOfStack) {
                         s.statesPairs.insert(StatesPair(statesPair->state1, transition->getTo()));
                     }
                 }
             }
             RComponent r;
-            for (set<State>::iterator state = oldR.states.begin(); state != oldR.states.end(); state++) {
-                for (set<TransitionPDA>::iterator transition = transitions.begin(); transition != transitions.end(); transition++) {
-                    if (transition->getFrom() == *state && transition->getInput() == *returnSymbol && transition->getPop() == bottomOfStack) {
+            for (set<State>::iterator state = oldR.states.begin();
+                    state != oldR.states.end();
+                    state++) {
+                for (set<TransitionPDA>::iterator transition = transitions.begin();
+                        transition != transitions.end();
+                        transition++) {
+                    if (transition->getFrom() == *state && transition->getInput() == *returnSymbol &&
+                            transition->getPop() == bottomOfStack) {
                         r.states.insert(transition->getTo());
                     }
                 }
@@ -245,14 +281,22 @@ PDA* VPADeterminizer::determinize() {
             }
             
             // Otherwise
-            for (set<Symbol>::iterator callSymbol = this->callSymbols.begin(); callSymbol != this->callSymbols.end(); callSymbol++) {
+            for (set<Symbol>::iterator callSymbol = this->callSymbols.begin();
+                    callSymbol != this->callSymbols.end();
+                    callSymbol++) {
                 set<StatesPair> update;
-                for (set<StatesPair>::iterator oldSStatesPair = oldS.statesPairs.begin(); oldSStatesPair != oldS.statesPairs.end(); oldSStatesPair++) {
+                for (set<StatesPair>::iterator oldSStatesPair = oldS.statesPairs.begin();
+                        oldSStatesPair != oldS.statesPairs.end();
+                        oldSStatesPair++) {
                     if (oldR.states.find(oldSStatesPair->state2) != oldR.states.end()) {
                         const State& state1 = oldSStatesPair->state1;
                         const State& state2 = oldSStatesPair->state2;
-                        for (set<TransitionPDA>::iterator transitionPush = transitions.begin(); transitionPush != transitions.end(); transitionPush++) {
-                            for (set<TransitionPDA>::iterator transitionPop = transitions.begin(); transitionPop != transitions.end(); transitionPop++) {
+                        for (set<TransitionPDA>::iterator transitionPush = transitions.begin();
+                                transitionPush != transitions.end();
+                                transitionPush++) {
+                            for (set<TransitionPDA>::iterator transitionPop = transitions.begin();
+                                    transitionPop != transitions.end();
+                                    transitionPop++) {
                                 if (transitionPush->getInput() == *callSymbol && transitionPush->getTo() == state1 &&
                                         transitionPop->getInput() == *returnSymbol && transitionPop->getFrom() == state2 &&
                                         transitionPush->getPush() == transitionPop->getPop()) {
@@ -274,7 +318,9 @@ PDA* VPADeterminizer::determinize() {
                     
                     RComponent r;
                     SComponent s;
-                    for (set<StatesPair>::iterator updateItem = update.begin(); updateItem != update.end(); updateItem++) {
+                    for (set<StatesPair>::iterator updateItem = update.begin();
+                            updateItem != update.end();
+                            updateItem++) {
                         if (stackR.states.find(updateItem->state1) != stackR.states.end()) {
                             r.states.insert(updateItem->state2);
                         }
@@ -303,7 +349,9 @@ PDA* VPADeterminizer::determinize() {
     }
     
     // Final states
-    for (map<string, StateData>::iterator stateIter = this->states.begin(); stateIter != this->states.end(); stateIter++) {
+    for (map<string, StateData>::iterator stateIter = this->states.begin();
+            stateIter != this->states.end();
+            stateIter++) {
         const StateData& stateData = stateIter->second;
         if (DeterminizationUtils::containSomeFinalStateOfAutomaton(stateData.r.states, *this->nondeterministicVPA)) {
             this->deterministicVPA->addFinalState(stateData.state);
diff --git a/adeterminize.vpa/src/VPADeterminizer.h b/adeterminize.vpa/src/VPADeterminizer.h
index 521258f741..1ddcfcbfce 100644
--- a/adeterminize.vpa/src/VPADeterminizer.h
+++ b/adeterminize.vpa/src/VPADeterminizer.h
@@ -26,7 +26,9 @@ protected:
         State state1;
         State state2;
         
-        StatesPair(const State& state1, const State& state2) : state1(state1), state2(state2) { }
+        StatesPair(const State& state1, const State& state2)
+                : state1(state1),
+                  state2(state2) {}
         
         bool operator < (const StatesPair& other) const {
             return state1 < other.state1 || state1 == other.state1 && state2 < other.state2;
@@ -44,13 +46,15 @@ protected:
     struct SComponent {
         set<StatesPair> statesPairs;
         SComponent() {}
-        SComponent(const set<StatesPair>& statesPairs) : statesPairs(statesPairs) {}
+        SComponent(const set<StatesPair>& statesPairs)
+                : statesPairs(statesPairs) {}
     };
     
     struct RComponent {
         set<State> states;
         RComponent() {}
-        RComponent(const set<State>& states) : states(states) {}
+        RComponent(const set<State>& states)
+                : states(states) {}
     };
     
     struct StateData {
@@ -59,16 +63,20 @@ protected:
         RComponent r;
         bool isMarked;
         
-        StateData(const State& state, const SComponent& s, const RComponent& r) : s(s), r(r), state(state) {
-            this->isMarked = false;
-        }
+        StateData(const State& state, const SComponent& s, const RComponent& r)
+                : s(s),
+                  r(r),
+                  state(state),
+                  isMarked(false) {}
     };
     
     struct PartialStackData {
         SComponent s;
         RComponent r;
         
-        PartialStackData(const SComponent& s, const RComponent& r) : s(s), r(r) {}
+        PartialStackData(const SComponent& s, const RComponent& r)
+                : s(s),
+                  r(r) {}
     };
     
     PDA* nondeterministicVPA;
-- 
GitLab