code: func (p *Parser) object() (ast.Node, error) {
  	defer un(trace(p, "ParseType"))
  	tok := p.scan()
  
  	switch tok.Type {
  	case token.NUMBER, token.FLOAT, token.BOOL, token.STRING, token.HEREDOC:
  		return p.literalType()
  	case token.LBRACE:
  		return p.objectType()
  	case token.LBRACK:
  		return p.listType()
  	case token.COMMENT:
  		// implement comment
  	case token.EOF:
  		return nil, errEofToken
  	}
  
  	return nil, &PosError{
  		Pos: tok.Pos,
  		Err: fmt.Errorf("Unknown token: %+v", tok),
  	}
  }
docs: // object parses any type of object, such as number, bool, string, object or
  // list.