Основываясь на мой комментарий здесь простая реализация:
var before = "for i in 0..10 loop";
var after = Translate(before);
function Translate(command) {
var tokens = command.split(" ");
if (tokens.length != 5)
return "ERROR: invalid command (wrong number of tokens)";
if (tokens[0] != "for" || tokens[2] != "in" || tokens[4] != "loop")
return "ERROR: invalid command (syntax error)";
var indices = tokens[3].split("..");
if (indices.length != 2)
return "ERROR: invalid command (invalid indices format)";
var startIndex = parseInt(indices[0], 10);
var endIndex = parseInt(indices[1], 10);
if (isNaN(startIndex) || isNaN(endIndex))
return "ERROR: invalid command (illegal indices)";
var varName = tokens[1];
return "for (var " + varName + "=" + startIndex + "; " + varName + "<" + endIndex + "; " + varName + "++)";
}
Live test case.
Это не идеально, например, вы можете дополнительно проверить имя переменной является легальным т.е. начинаться с английской буквы, а не зарезервированное слово и т.д.
Если это цикл будет выполнение? Почему это в строке? – Purag
Не очень сложный, предполагая, что шаблон исправлен - ** для ** [имя переменной] ** в ** [начальный индекс] ** .. ** [конечный индекс] ** цикл ** - полужирный - фиксированный слова. Если это так, просто разделите пространство и возьмите нужные вещи. –
Нет его не выполняет. Я пытаюсь преобразовать код в js. – Rckt