 
   # Matches JavaScript interpolated directly into the source via backticks.
   jsToken: ->
-    return false unless @chunk.charAt(0) is '`' and script = @match JSTOKEN
-    @token 'JS', script.slice 1, -1
+    return false unless @chunk.charAt(0) is '`' and match = JSTOKEN.exec @chunk
+    @token 'JS', (script = match[0]).slice 1, -1
     @i += script.length
     true
 

    @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 (@chunk = code[@i..])
      @extractNextToken()
    @closeIndentation()
    return @tokens if o.rewrite is off
    (new Rewriter).rewrite @tokens

  # At every position, run through this list of attempted matches,
  # short-circuiting if any of them succeed. Their order determines precedence:
  # `@literalToken` is the fallback catch-all.
  extractNextToken: ->
    @identifierToken() or
    @commentToken()    or
    @whitespaceToken() or
    @lineToken()       or
    @heredocToken()    or
    @stringToken()     or
    @numberToken()     or
    @regexToken()      or
    @jsToken()         or
    @literalToken()

  # Tokenizers
  # ----------

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