   # referenced as property names here, so you can still do `jQuery.is()` even
   # though `is` means `===` otherwise.
   identifierToken: ->
-    return false unless id = @match IDENTIFIER
+    return false unless match = IDENTIFIER.exec @chunk
+    id = match[0]
     @i += id.length
     if id is 'all' and @tag() is 'FOR'
       @token 'ALL', id

  prev: (index) ->
    @tokens[@tokens.length - (index or 1)]

  # Attempt to match a string against the current chunk, returning the indexed
  # match if successful, and `false` otherwise.
  match: (regex, index) ->
    if m = @chunk.match regex then m[index or 0] else false

  # Are we in the midst of an unfinished expression?
  unfinished: ->
    (prev  = @prev 2 ) and prev[0] isnt '.' and

  # Keeps track of the level of indentation, because a single outdent token
  # can close multiple indents, so we need to know how far in we happen to be.
  lineToken: ->
    return false unless match = MULTI_DENT.exec @chunk
    indent = match[0]
    @line += count indent, '\n'
    @i    += indent.length
    prev = @prev 2
