Mercurial > pub > ImplabNet
annotate 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 |
rev | line source |
---|---|
55 | 1 using Implab; |
2 using System; | |
3 | |
4 namespace Implab.Parsing { | |
158 | 5 public class EDFADefinition<T> : DFADefinition 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 | |
158 | 12 public EDFADefinition(EnumAlphabet<T> alphabet) : base(alphabet.Count) { |
55 | 13 m_alphabet = alphabet; |
14 } | |
15 | |
157 | 16 public void DefineTransition(int s1, int s2, T input) { |
17 DefineTransition(s1, s2, m_alphabet.Translate(input)); | |
18 } | |
19 | |
55 | 20 public EDFADefinition<T> Optimize() { |
160 | 21 |
22 return (EDFADefinition<T>)Optimize(alphabet => new EDFADefinition<T>((EnumAlphabet<T>)alphabet), m_alphabet, new EnumAlphabet<T>()); | |
55 | 23 } |
24 | |
25 public void PrintDFA() { | |
26 PrintDFA(m_alphabet); | |
27 } | |
28 } | |
29 } |