view Implab/Parsing/EDFADefinition.cs @ 160:5802131432e4 v2

fixed regression: race condition in Promise DFA refactoring
author cin
date Thu, 18 Feb 2016 19:38:54 +0300
parents 130781364799
children
line wrap: on
line source

using Implab;
using System;

namespace Implab.Parsing {
    public class EDFADefinition<T> : DFADefinition where T : struct, IConvertible {
        readonly EnumAlphabet<T> m_alphabet;

        public EnumAlphabet<T> Alphabet { 
            get { return m_alphabet; }
        }

        public EDFADefinition(EnumAlphabet<T> alphabet) : base(alphabet.Count) {
            m_alphabet = alphabet;
        }

        public void DefineTransition(int s1, int s2, T input) {
            DefineTransition(s1, s2, m_alphabet.Translate(input));
        }

        public EDFADefinition<T> Optimize() {
            
            return (EDFADefinition<T>)Optimize(alphabet => new EDFADefinition<T>((EnumAlphabet<T>)alphabet), m_alphabet, new EnumAlphabet<T>());
        }

        public void PrintDFA() {
            PrintDFA(m_alphabet);
        }
    }
}