##// END OF EJS Templates
sync
sync

File last commit:

r157:948c015a9011 v2
r157:948c015a9011 v2
Show More
EDFADefinition.cs
36 lines | 1.0 KiB | text/x-csharp | CSharpLexer
using Implab;
using System;
namespace Implab.Parsing {
public class EDFADefinition<T> : DFADefinitionBase where T : struct, IConvertible {
readonly EnumAlphabet<T> m_alphabet;
public EnumAlphabet<T> Alphabet {
get { return m_alphabet; }
}
public EDFADefinition(EnumAlphabet<T> alphabet) {
Safe.ArgumentNotNull(alphabet, "alphabet");
m_alphabet = alphabet;
}
public override int AlphabetSize {
get { return m_alphabet.Count; }
}
public void DefineTransition(int s1, int s2, T input) {
DefineTransition(s1, s2, m_alphabet.Translate(input));
}
public EDFADefinition<T> Optimize() {
var optimized = new EDFADefinition<T>(new EnumAlphabet<T>());
Optimize(optimized, m_alphabet, optimized.Alphabet);
return optimized;
}
public void PrintDFA() {
PrintDFA(m_alphabet);
}
}
}