     @i += heregex.length
     unless ~body.indexOf '#{'
       re = body.replace(HEREGEX_OMIT, '').replace(/\//g, '\\/')
-      @token 'REGEX', "/#{  re or '(?:)' }/#{flags}"
+      @token 'REGEX', "/#{ re or '(?:)' }/#{flags}"
       return true
     @token 'IDENTIFIER', 'RegExp'
     @tokens.push ['CALL_START', '(']
-    @interpolateString "\"#{body}\"", regex: yes, heregex: yes
+    tokens = []
+    for [tag, value] in @interpolateString('"' + body + '"', regex: yes)
+      if tag is 'TOKENS'
+        tokens.push value...
+      else
+        continue unless value = value.slice(1, -1).replace HEREGEX_OMIT, ''
+        tokens.push ['STRING', '"' + value.replace(/[\\\"]/g, '\\$&') + '"']
+      tokens.push ['+', '+']
+    tokens.pop()
+    @tokens.push ['STRING', '""'], ['+', '+'] unless tokens[0]?[0] is 'STRING'
+    @tokens.push tokens...
     @tokens.push [',', ','], ['STRING', '"' + flags + '"'] if flags
     @tokens.push ['CALL_END', ')']
     true

  # interpolations within strings, ad infinitum.
  balancedString: (str, delimited, options) ->
    options or= {}
    slash = delimited[0][0] is '/'
    levels = []
    i = 0
    slen = str.length

JSTOKEN    = /^`[^\\`]*(?:\\.[^\\`]*)*`/

# Regex-matching-regexes.
REGEX = /// ^
  / (?!\s)  # disallow leading whitespace
  (?: [^ [ / \n \\ ]+  # every other things
    | \\.              # anything escaped
    | \[ ( [^\\\]]+ | \\. )* ]  # character class
  )+
  / [imgy]{0,4} (?![A-Za-z])
///
HEREGEX      = /^\/{3}([\s\S]+?)\/{3}([imgy]{0,4})(?![A-Za-z])/
HEREGEX_OMIT = /\s+(?:#.*)?/g

