using Implab; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Implab.Parsing { public class EDFADefinition : DFADefinitionBase where T : struct, IConvertible { EnumAlphabet m_alphabet; public EnumAlphabet Alphabet { get { return m_alphabet; } } public EDFADefinition(EnumAlphabet alphabet) : base() { Safe.ArgumentNotNull(alphabet, "alphabet"); m_alphabet = alphabet; } public override int AlphabetSize { get { return m_alphabet.Count; } } public EDFADefinition Optimize() { var optimized = new EDFADefinition(new EnumAlphabet()); Optimize(optimized, m_alphabet, optimized.Alphabet); return optimized; } public void PrintDFA() { PrintDFA(m_alphabet); } } }