code: function(termination) {
          var ch_i,
            args = [],
            node,
            closed = false;
          while (index < length) {
            gobbleSpaces();
            ch_i = exprICode(index);
            if (ch_i === termination) {
              // done parsing
              closed = true;
              index++;
              break;
            } else if (ch_i === COMMA_CODE) {
              // between expressions
              index++;
            } else {
              node = gobbleExpression();
              if (!node || node.type === code.COMPOUND) {
                throwError("Expected comma", index);
              }
              args.push(node);
            }
          }
          if (!closed) {
            throwError("Expected " + String.fromCharCode(termination), index);
          }
          return args;
        }
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