     @outdebt = 0            # The under-outdentation at the current level.
     @indents = []           # The stack of all current indentation levels.
     @tokens  = []           # Stream of parsed tokens in the form ['TYPE', value, line]
-    while @i < @code.length
-      @chunk = @code[@i..]
+    while (@chunk = code[@i..])
       @extractNextToken()
     @closeIndentation()
     return @tokens if o.rewrite is off

    @i += id.length
    forcedIdentifier = @tagAccessor() or @match ASSIGNED, 1
    tag = 'IDENTIFIER'
    tag = id.toUpperCase() if include(JS_KEYWORDS, id) or (not forcedIdentifier and include(COFFEE_KEYWORDS, id))
    tag = 'LEADING_WHEN'   if tag is 'WHEN' and include LINE_BREAK, @tag()
    tag = 'ALL'            if id is 'all' and @tag() is 'FOR'
    tag = 'UNARY'          if include UNARY, tag
    if include(JS_FORBIDDEN, id)
      if forcedIdentifier
        tag = 'STRING'
        id  = "\"#{id}\""

    @i += regex.length + flags.length
    true

  # Matches a token in which the passed delimiter pairs must be correctly
  # balanced (ie. strings, JS literals).
  balancedToken: (delimited...) ->
    @balancedString @chunk, delimited
