Merge: No old style accessors
[nit.git] / contrib / nitcc / src / autom.nit
index feac320..c20f3df 100644 (file)
@@ -278,6 +278,35 @@ class Automaton
                return res
        end
 
+       # Reverse an automaton in place
+       fun reverse
+       do
+               for s in states do
+                       var tmp = s.ins
+                       s.ins = s.outs
+                       s.outs = tmp
+                       for t in s.outs do
+                               var tmp2 = t.from
+                               t.from = t.to
+                               t.to = tmp2
+                       end
+               end
+               var st = start
+               if accept.length == 1 then
+                       start = accept.first
+               else
+                       var st2 = new State
+                       start = st2
+                       states.add(st2)
+
+                       for s in accept do
+                               st2.add_trans(s, null)
+                       end
+               end
+               accept.clear
+               accept.add(st)
+       end
+
        # Generate a minimal DFA
        # REQUIRE: self is a DFA
        fun to_minimal_dfa: Automaton
@@ -331,7 +360,6 @@ class Automaton
                                end
                        end
                end
-                       print '2'
 
                for s1 in states do for s2 in states do
                        if distincts[s1].has(s2) then continue
@@ -359,6 +387,8 @@ class Automaton
                                        f.write("{token.name.escape_to_c}\\n")
                                end
                                f.write("\"")
+                       else
+                               f.write(",label=\"\"")
                        end
                        f.write("];\n")
                        var outs = new HashMap[State, Array[nullable TSymbol]]
@@ -579,7 +609,7 @@ private class DFAGenerator
 
                for s in automaton.states do
                        var  n = names[s]
-                       add("class DFAState{n}\n")
+                       add("private class DFAState{n}\n")
                        add("\tsuper DFAState\n")
                        if automaton.accept.has(s) then
                                var token