class Sass::Engine

def parse_for(line, root, text)

def parse_for(line, root, text)
  var, from_expr, to_name, to_expr = text.scan(/^([^\s]+)\s+from\s+(.+)\s+(to|through)\s+(.+)$/).first
  if var.nil? # scan failed, try to figure out why for error message
    if text !~ /^[^\s]+/
      expected = "variable name"
    elsif text !~ /^[^\s]+\s+from\s+.+/
      expected = "'from <expr>'"
    else
      expected = "'to <expr>' or 'through <expr>'"
    end
    raise SyntaxError.new("Invalid for directive '@for #{text}': expected #{expected}.")
  end
  raise SyntaxError.new("Invalid variable \"#{var}\".") unless var =~ Script::VALIDATE
  if var.slice!(0) == ?!
    offset = line.offset + line.text.index("!" + var) + 1
    Script.var_warning(var, @line, offset, @options[:filename])
  end
  parsed_from = parse_script(from_expr, :offset => line.offset + line.text.index(from_expr))
  parsed_to = parse_script(to_expr, :offset => line.offset + line.text.index(to_expr))
  Tree::ForNode.new(var, parsed_from, parsed_to, to_name == 'to')
end