comparison Implab/Automaton/RegularExpressions/RegularDFABuilder.cs @ 170:181119ef3b39 ref20160224

DFA refactoring, rx based dfa.
author cin
date Fri, 04 Mar 2016 01:56:31 +0300
parents e227e78d72e4
children
comparison
equal deleted inserted replaced
169:54270c2f29f2 170:181119ef3b39
120 m_lastpos = new HashSet<int>(new[] { m_idx }); 120 m_lastpos = new HashSet<int>(new[] { m_idx });
121 Followpos(m_idx); 121 Followpos(m_idx);
122 m_ends.Add(m_idx, token.Tag); 122 m_ends.Add(m_idx, token.Tag);
123 } 123 }
124 124
125 public void BuildDFA(IDFATableBuilder<TTag> dfa) { 125 public void BuildDFA(IDFATableBuilder dfa) {
126 Safe.ArgumentNotNull(dfa,"dfa"); 126 Safe.ArgumentNotNull(dfa,"dfa");
127 127
128 var states = new MapAlphabet<HashSet<int>>(new CustomEqualityComparer<HashSet<int>>( 128 var states = new MapAlphabet<HashSet<int>>(new CustomEqualityComparer<HashSet<int>>(
129 (x, y) => x.SetEquals(y), 129 (x, y) => x.SetEquals(y),
130 x => x.Sum(n => n.GetHashCode()) 130 x => x.Sum(n => n.GetHashCode())
163 if (tags != null && tags.Length > 0) 163 if (tags != null && tags.Length > 0)
164 dfa.MarkFinalState(s2, tags); 164 dfa.MarkFinalState(s2, tags);
165 165
166 queue.Enqueue(next); 166 queue.Enqueue(next);
167 } 167 }
168 dfa.DefineTransition(s1, s2, a); 168 dfa.Add(new AutomatonTransition(s1, s2, a));
169 } 169 }
170 } 170 }
171 } 171 }
172 } 172 }
173 173