code: function() {
          var str = "",
            quote = exprI(index++),
            closed = false,
            ch;
  
          while (index < length) {
            ch = exprI(index++);
            if (ch === quote) {
              closed = true;
              break;
            } else if (ch === "\\") {
              // Check for all of the common escape codes
              ch = exprI(index++);
              switch (ch) {
                case "n":
                  str += "\n";
                  break;
                case "r":
                  str += "\r";
                  break;
                case "t":
                  str += "\t";
                  break;
                case "b":
                  str += "\b";
                  break;
                case "f":
                  str += "\f";
                  break;
                case "v":
                  str += "\x0B";
                  break;
                default:
                  str += "\\" + ch;
              }
            } else {
              str += ch;
            }
          }
  
          if (!closed) {
            throwError('Unclosed quote after "' + str + '"', index);
          }
  
          return {
            type: code.LITERAL,
            value: str,
            raw: quote + str + quote
          };
        }
docs: `index` stores the character number we are currently at while `length` is a constant All of the gobbles below will modify `index` as we move along