whole_func_string: function consume_string (proc_stack) {
    let delim = proc_stack.tAccept();
    let str = delim;
  
    let escaping = 0;
    let done = false;
  
    while (!done) {
      let c = proc_stack.tAccept();
      if (c == "\\") {
        escaping ^= 1;
  
      } else {
        if (c == delim && !escaping) {
          done = true;
  
        } else if (c == "\r" || c == "\n") {
          if (!escaping) {
            throw new SyntaxError(`Unterminated JavaScript string`);
          }
          if (c == "\r" && proc_stack.tPeek() == "\n") {
            proc_stack.tSkip();
          }
        }
  
        escaping = 0;
      }
  
      str += c;
    }
  
    return str;
  }
func_code_string: function consume_string (proc_stack) {
    let delim = proc_stack.tAccept();
    let str = delim;
  
    let escaping = 0;
    let done = false;
  
    while (!done) {
      let c = proc_stack.tAccept();
      if (c == "\\") {
        escaping ^= 1;
  
      } else {
        if (c == delim && !escaping) {
          done = true;
  
        } else if (c == "\r" || c == "\n") {
          if (!escaping) {
            throw new SyntaxError(`Unterminated JavaScript string`);
          }
          if (c == "\r" && proc_stack.tPeek() == "\n") {
            proc_stack.tSkip();
          }
        }
  
        escaping = 0;
      }
  
      str += c;
    }
  
    return str;
  }
func_documentation_string: Called on match `"` or `'`