Mercurial > pub > ImplabNet
annotate Implab/Parsing/EDFADefinition.cs @ 156:97fbbf816844 v2
Promises: SignalXXX methods merged into SignalHandler method.
Components: RunnableComponent In progress
author | cin |
---|---|
date | Mon, 15 Feb 2016 04:22:15 +0300 |
parents | c0bf853aa04f |
children | 948c015a9011 |
rev | line source |
---|---|
55 | 1 using Implab; |
2 using System; | |
3 | |
4 namespace Implab.Parsing { | |
5 public class EDFADefinition<T> : DFADefinitionBase where T : struct, IConvertible { | |
156
97fbbf816844
Promises: SignalXXX methods merged into SignalHandler method.
cin
parents:
55
diff
changeset
|
6 readonly EnumAlphabet<T> m_alphabet; |
55 | 7 |
8 public EnumAlphabet<T> Alphabet { | |
9 get { return m_alphabet; } | |
10 } | |
11 | |
156
97fbbf816844
Promises: SignalXXX methods merged into SignalHandler method.
cin
parents:
55
diff
changeset
|
12 public EDFADefinition(EnumAlphabet<T> alphabet) { |
55 | 13 Safe.ArgumentNotNull(alphabet, "alphabet"); |
14 m_alphabet = alphabet; | |
15 } | |
16 | |
17 public override int AlphabetSize { | |
18 get { return m_alphabet.Count; } | |
19 } | |
20 | |
21 public EDFADefinition<T> Optimize() { | |
22 var optimized = new EDFADefinition<T>(new EnumAlphabet<T>()); | |
23 Optimize(optimized, m_alphabet, optimized.Alphabet); | |
24 | |
25 return optimized; | |
26 } | |
27 | |
28 public void PrintDFA() { | |
29 PrintDFA(m_alphabet); | |
30 } | |
31 } | |
32 } |