| 55 | 1 using Implab; | 
|  | 2 using System; | 
|  | 3 using System.Collections.Generic; | 
|  | 4 using System.Linq; | 
|  | 5 using System.Text; | 
|  | 6 using System.Threading.Tasks; | 
|  | 7 | 
|  | 8 namespace Implab.Parsing { | 
|  | 9     public class CDFADefinition : DFADefinitionBase { | 
|  | 10         Alphabet m_alphabet; | 
|  | 11 | 
|  | 12         public Alphabet Alphabet { | 
|  | 13             get { return m_alphabet; } | 
|  | 14         } | 
|  | 15 | 
|  | 16         public override int AlphabetSize { | 
|  | 17             get { return m_alphabet.Count; } | 
|  | 18         } | 
|  | 19 | 
|  | 20         public CDFADefinition(Alphabet alphabet): base() { | 
|  | 21             Safe.ArgumentNotNull(alphabet, "alphabet"); | 
|  | 22             m_alphabet = alphabet; | 
|  | 23         } | 
|  | 24 | 
|  | 25         public CDFADefinition Optimize() { | 
|  | 26             var optimized = new CDFADefinition(new Alphabet()); | 
|  | 27 | 
|  | 28             Optimize(optimized, m_alphabet, optimized.Alphabet); | 
|  | 29             return optimized; | 
|  | 30         } | 
|  | 31 | 
|  | 32         public void PrintDFA() { | 
|  | 33             PrintDFA(m_alphabet); | 
|  | 34         } | 
|  | 35     } | 
|  | 36 } |