Mercurial > pub > ImplabNet
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 + } +} +