code: function consumeParenthesised(parser, string) {
      var nesting = 0;
      for (var n = 0; n < string.length; n++) {
        if (/\s|,/.test(string[n]) && nesting == 0) {
          break;
        } else if (string[n] == '(') {
          nesting++;
        } else if (string[n] == ')') {
          nesting--;
          if (nesting == 0)
            n++;
          if (nesting <= 0)
            break;
        }
      }
      var parsed = parser(string.substr(0, n));
      return parsed == undefined ? undefined : [parsed, string.substr(n)];
    }
docs: Consumes a token or expression with balanced parentheses