private string ifThen(string[] keyWords) { if (turingMachine == null) { return("Error: Необходимо сначала инициализировать машину! / if\\"); } int thenIndex; int currentq = 0; int nextq = qcount; int dimension = 1; string currentvalue = string.Empty; string nextvalue = string.Empty; Moves move = Moves.StayHere; for (thenIndex = 1; thenIndex < keyWords.Length; ++thenIndex) { if (keyWords[thenIndex].Equals("then")) { break; } } if (thenIndex >= keyWords.Length) { return("Error: Не найдено ключевое слово then! / if\\"); } for (int i = 1; i < thenIndex; ++i) { switch (keyWords[i]) { case "q": case "currentq": if (i + 1 >= keyWords.Length) { return("Error: Не указано значение параметра q! / if\\"); } if (!(int.TryParse(keyWords[i + 1], out currentq) && currentq >= 0)) { return("Error: Значением параметра q должно быть целое положительное число или 0! / if\\"); } if (currentq >= qcount) { return("Error: Значение параметра q должно быть меньше количества состояний! / if\\"); } ++i; break; case "v": case "value": case "currentvalue": if (i + 1 >= keyWords.Length) { return("Error: Не указано значение параметра value! / if\\"); } currentvalue = keyWords[i + 1]; ++i; break; } } if (currentvalue.Length == 0) { return("Error: Необходимо указать value! / if\\"); } for (int i = thenIndex + 1; i < keyWords.Length; ++i) { switch (keyWords[i]) { case "q": case "nextq": if (i + 1 >= keyWords.Length) { return("Error: Не указано значение параметра q! / then\\"); } if (!(int.TryParse(keyWords[i + 1], out nextq) && nextq >= 0)) { return("Error: Значением параметра q должно быть целое положительное число или 0! / then\\"); } if (nextq >= qcount) { return("Error: Значение параметра q должно быть меньше количества состояний! / then\\"); } ++i; break; case "v": case "value": case "nextvalue": if (i + 1 >= keyWords.Length) { return("Error: Не указано значение параметра value! / then\\"); } nextvalue = keyWords[i + 1]; ++i; break; case "d": case "dimension": if (i + 1 >= keyWords.Length) { return("Error: Не указано значение параметра dimension! / then\\"); } if (!(int.TryParse(keyWords[i + 1], out dimension) && dimension > 0 && dimension <= dimensions)) { return("Error: Значением параметра dimension должно быть целое положительное число, которое меньше или равно dimensions! / then\\"); } ++i; break; case "r": case "right": case "moveright": move = Moves.Right; break; case "l": case "left": case "moveleft": move = Moves.Left; break; case "s": case "stop": move = Moves.Stop; break; } } if (nextvalue.Length == 0) { return("Error: Необходимо указать value! / then\\"); } return(turingMachine.addCommand(currentq, currentvalue, nextq, nextvalue, dimension, move)); }