code: function() {
          var ch = exprICode(index),
            start = index,
            identifier;
  
          if (isIdentifierStart(ch)) {
            index++;
          } else {
            throwError("Unexpected " + exprI(index), index);
          }
  
          while (index < length) {
            ch = exprICode(index);
            if (isIdentifierPart(ch)) {
              index++;
            } else {
              break;
            }
          }
          identifier = expr.slice(start, index);
  
          if (literals.hasOwnProperty(identifier)) {
            return {
              type: code.LITERAL,
              value: literals[identifier],
              raw: identifier
            };
          } else if (identifier === this_str) {
            return { type: code.THIS_EXP };
          } else {
            return {
              type: code.IDENTIFIER,
              name: identifier
            };
          }
        }
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