diff Implab/Automaton/DummyAlphabet.cs @ 163:419aa51b04fd ref20160224

JSON moved to Formats namespace Working in RegularDFA
author cin
date Wed, 24 Feb 2016 20:12:52 +0300
parents
children ec35731ae299
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Automaton/DummyAlphabet.cs	Wed Feb 24 20:12:52 2016 +0300
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Implab.Automaton {
+    public class DummyAlphabet : IAlphabet<int> {
+        readonly int m_size;
+        public DummyAlphabet(int size) {
+            Safe.ArgumentAssert(size > 0);
+            m_size = 0;
+        }
+
+        #region IAlphabet implementation
+
+        public List<int>[] CreateReverseMap() {
+            Enumerable.Range(0, m_size).ToArray();
+        }
+
+        public int[] Reclassify(IAlphabetBuilder<int> newAlphabet, IEnumerable<IEnumerable<int>> classes) {
+            Safe.ArgumentNotNull(newAlphabet, "newAlphabet");
+            Safe.ArgumentNotNull(classes, "classes");
+            var map = new int[m_size];
+            foreach (var cls in classes) {
+                var newid = newAlphabet.DefineClass(cls);
+                foreach (var id in cls)
+                    map[id] = newid;
+            }
+
+            return map;
+        }
+
+        public int Translate(int symobl) {
+            Safe.ArgumentInRange(symobl, 0, m_size, "symbol");
+            return symobl;
+        }
+
+        public int Count {
+            get {
+                return m_size;
+            }
+        }
+
+        #endregion
+    }
+}
+