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