private ICommand ParseForInCommand()
{
string name = this.ParseName();
bool isvar = false;
if (name == "var")
{
name = this.ParseName();
isvar = true;
}
this.Parse(TokenType.Name, "in");
IExpression values = this.ParseExpression();
this.Parse(TokenType.Delimiter, ")");
ICommand command = this.ParseCommand();
ICommand forcmd = new ForEachCommand(name, values, command);
if (!isvar)
return forcmd;
// TODO review if var command should be hoisted
ICommand cmds = new CompositeCommand(new List<ICommand>() { new VarCommand(name), forcmd });
return cmds;
}