comparison Implab/Automaton/RegularExpressions/RegularDFA.cs @ 182:76e8f2ba12b8 ref20160224

pretty print DFA, the minimization is still buggy
author cin
date Thu, 24 Mar 2016 18:52:10 +0300
parents b2b6a6640aa3
children 4f82e0f161c3
comparison
equal deleted inserted replaced
181:b2b6a6640aa3 182:76e8f2ba12b8
64 64
65 // make the alphabet for the new DFA 65 // make the alphabet for the new DFA
66 // skip all unclassified symbols 66 // skip all unclassified symbols
67 foreach (var pair in alphaMap.Where(x => x.Value != 0)) 67 foreach (var pair in alphaMap.Where(x => x.Value != 0))
68 alphabet.DefineClass(m_alphabet.GetSymbols(pair.Key), pair.Value); 68 alphabet.DefineClass(m_alphabet.GetSymbols(pair.Key), pair.Value);
69
70 var orig = ToString();
71 var opt = dfa.ToString();
69 72
70 return dfa; 73 return dfa;
71 } 74 }
72 75
73 protected override IEnumerable<HashSet<int>> GroupFinalStates() { 76 protected override IEnumerable<HashSet<int>> GroupFinalStates() {
76 x => x.Sum(it => x.GetHashCode()) 79 x => x.Sum(it => x.GetHashCode())
77 ); 80 );
78 return FinalStates.GroupBy(x => m_tags[x], arrayComparer).Select(g => new HashSet<int>(g)); 81 return FinalStates.GroupBy(x => m_tags[x], arrayComparer).Select(g => new HashSet<int>(g));
79 } 82 }
80 83
84 public override string ToString() {
85 var states = new MapAlphabet<string>(false, null);
86
87 for (int i = 0; i < StateCount; i++)
88 states.DefineSymbol(string.Format("s{0}", i), i);
89
90 return string.Format("//[RegularDFA {1} x {2}]\n{0}", PrintDFA(InputAlphabet, states),StateCount, AlphabetSize);
91 }
92
81 } 93 }
82 } 94 }
83 95