Mercurial > pub > ImplabNet
diff Implab/Parsing/DFADefinitionBase.cs @ 156:97fbbf816844 v2
Promises: SignalXXX methods merged into SignalHandler method.
Components: RunnableComponent In progress
author | cin |
---|---|
date | Mon, 15 Feb 2016 04:22:15 +0300 |
parents | c0bf853aa04f |
children |
line wrap: on
line diff
--- a/Implab/Parsing/DFADefinitionBase.cs Fri Feb 12 16:24:24 2016 +0300 +++ b/Implab/Parsing/DFADefinitionBase.cs Mon Feb 15 04:22:15 2016 +0300 @@ -15,7 +15,7 @@ DFAStateDescriptior[] m_statesArray; - public DFADefinitionBase() { + protected DFADefinitionBase() { m_states = new List<DFAStateDescriptior>(); m_states.Add(new DFAStateDescriptior()); @@ -47,7 +47,7 @@ public int AddState(int[] tag) { var index = m_states.Count; - bool final = tag == null || tag.Length == 0 ? false : true; + bool final = tag != null && tag.Length != 0; m_states.Add(new DFAStateDescriptior { final = final, transitions = new int[AlphabetSize], @@ -139,7 +139,7 @@ // строим карты соотвествия оптимальных состояний с оригинальными - var initialState = optimalStates.Where(x => x.Contains(INITIAL_STATE)).Single(); + var initialState = optimalStates.Single(x => x.Contains(INITIAL_STATE)); // карта получения оптимального состояния по соотвествующему ему простому состоянию int[] reveseOptimalMap = new int[m_states.Count]; @@ -184,10 +184,8 @@ foreach (var term in A) { // ищем все переходы класса по символу term var s2 = reveseOptimalMap[ - optimalMap[s].Select(x => m_states[x].transitions[term]) // все элементарные состояния, куда переходит класс s - .Where(x => x != 0) // только допустимые - .FirstOrDefault() // первое допустимое элементарное состояние, если есть - ]; + optimalMap[s].Select(x => m_states[x].transitions[term]).FirstOrDefault(x => x != 0) // первое допустимое элементарное состояние, если есть + ]; HashSet<int> A2; if (!classes.TryGetValue(s2, out A2)) {