public void LoadMachine(string description) { description = MachineGear.RemoveString(description, Environment.NewLine); description = MachineGear.RemoveString(description, "{"); description = MachineGear.RemoveString(description, "\t"); List <String> refine = new List <string>(); foreach (String m in description.Split('}')) { if (m.Length > 1) { refine.Add(m); } } String[] allMachines = refine.ToArray(); foreach (String m in allMachines) { String[] desc = m.Split('#'); string machineName = desc[0]; Alphabet alph = new Alphabet(); string mDesc = desc[4]; foreach (char c in desc[1]) { alph.InsertSymbol(c); } int nStates = int.Parse(desc[2]); List <State> states = new List <State>(); desc[4] = MachineGear.ReplaceString(desc[4], "def", ":"); String[] rawDFunctions = desc[4].Split(':'); for (int i = 0; i < rawDFunctions.Length; i++) { rawDFunctions[i] = MachineGear.RemoveString(rawDFunctions[i], " "); } foreach (string dFuncString in rawDFunctions) { List <DeltaFunction> functions = new List <DeltaFunction>(); if (dFuncString.Length > 2) { if (dFuncString.Contains("void")) { states.Add(new State()); } else { string[] atomicFuncString = dFuncString.Split(';'); foreach (string function in atomicFuncString) { if (!function.Contains("void") && function.Length > 3) { string[] aChar = function.Split(','); List <char> fchar = new List <char>(); foreach (string s in aChar) { if (s.Length == 1) { fchar.Add(char.Parse(s)); } } DeltaFunction df = new DeltaFunction(fchar[0], fchar[1], fchar[2], int.Parse(fchar[3] + "")); functions.Add(df); } } states.Add(new State(functions)); } } } states[int.Parse(desc[2])].DefineIdentity(Constants.FINAL); states[int.Parse(desc[1])].DefineInitial(); } }