code: func (p *parser) subqueryOrRangeSelector(expr Expr, checkRange bool) Expr {
  	ctx := "subquery selector"
  	if checkRange {
  		ctx = "range/subquery selector"
  	}
  
  	p.next()
  
  	var erange time.Duration
  	var err error
  
  	erangeStr := p.expect(ItemDuration, ctx).val
  	erange, err = parseDuration(erangeStr)
  	if err != nil {
  		p.error(err)
  	}
  
  	var itm item
  	if checkRange {
  		itm = p.expectOneOf(ItemRightBracket, ItemColon, ctx)
  		if itm.typ == ItemRightBracket {
  			// Range selector.
  			vs, ok := expr.(*VectorSelector)
  			if !ok {
  				p.errorf("range specification must be preceded by a metric selector, but follows a %T instead", expr)
  			}
  			return &MatrixSelector{
  				Name:          vs.Name,
  				LabelMatchers: vs.LabelMatchers,
  				Range:         erange,
  			}
  		}
  	} else {
  		itm = p.expect(ItemColon, ctx)
  	}
  
  	// Subquery.
  	var estep time.Duration
  
  	itm = p.expectOneOf(ItemRightBracket, ItemDuration, ctx)
  	if itm.typ == ItemDuration {
  		estepStr := itm.val
  		estep, err = parseDuration(estepStr)
  		if err != nil {
  			p.error(err)
  		}
  		p.expect(ItemRightBracket, ctx)
  	}
  
  	return &SubqueryExpr{
  		Expr:  expr,
  		Range: erange,
  		Step:  estep,
  	}
  }
docs: // subqueryOrRangeSelector parses a Subquery based on given Expr (or)
  // a Matrix (a.k.a. range) selector based on a given Vector selector.
  //
  //		<Vector_selector> '[' <duration> ']' | <Vector_selector> '[' <duration> ':' [<duration>] ']'
  //