Based on my comment here is simple implementation:
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.
It's not perfect, for example you can further check the variable name is legal i.e. start with English letter, not a reserved word etc.
0..10needi<=10in JS? (Or am I misinterpreting the starting language?)