comparison Implab/Automaton/RegularExpressions/RegularDFA.cs @ 176:0c3c69fe225b ref20160224

rewritten the text scanner
author cin
date Tue, 22 Mar 2016 18:58:40 +0300
parents 92d5278d1b10
children a0ff6a0e9c44
comparison
equal deleted inserted replaced
175:96a89dcb4060 176:0c3c69fe225b
34 public TTag[] GetStateTag(int s) { 34 public TTag[] GetStateTag(int s) {
35 TTag[] tags; 35 TTag[] tags;
36 return m_tags.TryGetValue(s, out tags) ? tags : new TTag[0]; 36 return m_tags.TryGetValue(s, out tags) ? tags : new TTag[0];
37 } 37 }
38 38
39 public new DFAStateDescriptor<TTag>[] CreateTransitionTable() { 39 public TTag[][] CreateTagTable() {
40 var table = new DFAStateDescriptor<TTag>[StateCount]; 40 var table = new TTag[StateCount][];
41 41
42 foreach (var t in this) { 42 foreach (var pair in m_tags)
43 if (table[t.s1].transitions == null) 43 table[pair.Key] = pair.Value;
44 table[t.s1] = new DFAStateDescriptor<TTag>(AlphabetSize, IsFinalState(t.s1), GetStateTag(t.s1));
45 if (table[t.s2].transitions == null)
46 table[t.s2] = new DFAStateDescriptor<TTag>(AlphabetSize, IsFinalState(t.s2), GetStateTag(t.s2));
47 table[t.s1].transitions[t.edge] = t.s2;
48 }
49 44
50 return table; 45 return table;
51 } 46 }
52 47
53 /// <summary> 48 /// <summary>