code: def _at_for(self, calculator, rule, scope, block):
          
          var, _, name = block.argument.partition(' from ')
          frm, _, through = name.partition(' through ')
          if through:
              inclusive = True
          else:
              inclusive = False
              frm, _, through = frm.partition(' to ')
          frm = calculator.calculate(frm)
          through = calculator.calculate(through)
          try:
              frm = int(float(frm))
              through = int(float(through))
          except ValueError:
              return
  
          if frm > through:
              # DEVIATION: allow reversed '@for .. from .. through' (same as enumerate() and range())
              frm, through = through, frm
              rev = reversed
          else:
              rev = lambda x: x
          var = var.strip()
          var = calculator.do_glob_math(var)
          var = normalize_var(var)
  
          inner_rule = rule.copy()
          inner_rule.unparsed_contents = block.unparsed_contents
          if not self.should_scope_loop_in_rule(inner_rule):
              # DEVIATION: Allow not creating a new namespace
              inner_rule.namespace = rule.namespace
  
          if inclusive:
              through += 1
          for i in rev(range(frm, through)):
              inner_rule.namespace.set_variable(var, Number(i))
              self.manage_children(inner_rule, scope)
docs: Implements @for