##// END OF EJS Templates
DFA refactoring
DFA refactoring

File last commit:

r160:5802131432e4 v2
r161:2a8466f0cb8a v2
Show More
EDFADefinition.cs
29 lines | 880 B | text/x-csharp | CSharpLexer
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);
}
}
}