code: def _at_while(self, calculator, rule, scope, block):
          
          first_condition = condition = calculator.calculate(block.argument)
          while condition:
              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
              self.manage_children(inner_rule, scope)
              condition = calculator.calculate(block.argument)
          rule.options['@if'] = first_condition
docs: Implements @while