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)) {