lib/MissMatch.js
function parseProperties(node) {
    consume(); // '('

    while(true) {
      clear();
      /**
       * Properties always have to start with '.' or ':'
       * o(.x, :y) matches an object with at least an owned property
       * 'x' and a owned or inherited property 'y'. 
       */
      if(peek() === '.') {
        parseProperty(node,false);  // own property
      } else if(peek() === ':') {
        parseProperty(node,true);   // prototype property
      } else {
        unexpectedTokenException('. or :');
      }
      clear();

      if(peek() !== ',') {
        break;
      }
      consume(); // ','
    }
  }
function parseProperties(node) {
    consume(); // '('

    while(true) {
      clear();
      /**
       * Properties always have to start with '.' or ':'
       * o(.x, :y) matches an object with at least an owned property
       * 'x' and a owned or inherited property 'y'. 
       */
      if(peek() === '.') {
        parseProperty(node,false);  // own property
      } else if(peek() === ':') {
        parseProperty(node,true);   // prototype property
      } else {
        unexpectedTokenException('. or :');
      }
      clear();

      if(peek() !== ',') {
        break;
      }
      consume(); // ','
    }
  }
Parse the property list of an object pattern.