comparison Implab/Automaton/MapAlphabet.cs @ 172:92d5278d1b10 ref20160224

Working on text scanner
author cin
date Mon, 14 Mar 2016 01:19:38 +0300
parents 0f70905b4652
children 0c3c69fe225b
comparison
equal deleted inserted replaced
171:0f70905b4652 172:92d5278d1b10
36 public int DefineClass(IEnumerable<T> symbols, int cls) { 36 public int DefineClass(IEnumerable<T> symbols, int cls) {
37 Safe.ArgumentAssert(cls >= 0, "cls"); 37 Safe.ArgumentAssert(cls >= 0, "cls");
38 Safe.ArgumentNotNull(symbols, "symbols"); 38 Safe.ArgumentNotNull(symbols, "symbols");
39 39
40 m_nextCls = Math.Max(cls + 1, m_nextCls); 40 m_nextCls = Math.Max(cls + 1, m_nextCls);
41 symbols = symbols.Distinct();
42 41
43 foreach (var symbol in symbols) 42 foreach (var symbol in symbols)
44 m_map[symbol] = cls; 43 m_map[symbol] = cls;
45 return cls; 44 return cls;
46 } 45 }
66 65
67 public bool Contains(T symbol) { 66 public bool Contains(T symbol) {
68 return m_supportUnclassified || m_map.ContainsKey(symbol); 67 return m_supportUnclassified || m_map.ContainsKey(symbol);
69 } 68 }
70 69
70
71 public IEnumerable<T> GetSymbols(int cls) {
72 return m_map.Where(p => p.Value == cls).Select(p => p.Key);
73 }
71 #endregion 74 #endregion
72 } 75 }
73 } 76 }
74 77