code: func (p *parser) parsePartial() *ast.PartialStatement {
  	// OPEN_PARTIAL
  	tok := p.shift()
  
  	result := ast.NewPartialStatement(tok.Pos, tok.Line)
  
  	// partialName
  	result.Name = p.parsePartialName()
  
  	// param* hash?
  	result.Params, result.Hash = p.parseExpressionParamsHash()
  
  	// CLOSE
  	tokClose := p.shift()
  	if tokClose.Kind != lexer.TokenClose {
  		errExpected(lexer.TokenClose, tokClose)
  	}
  
  	result.Strip = ast.NewStrip(tok.Val, tokClose.Val)
  
  	return result
  }
docs: // partial : OPEN_PARTIAL partialName param* hash? CLOSE