promql/parse.go
func ParseMetricSelector(input string) (m []*labels.Matcher, err error) {
	p := newParser(input)
	defer p.recover(&err)

	name := ""
	if t := p.peek().typ; t == ItemMetricIdentifier || t == ItemIdentifier {
		name = p.next().val
	}
	vs := p.VectorSelector(name)
	if p.peek().typ != ItemEOF {
		p.errorf("could not parse remaining input %.15q...", p.lex.input[p.lex.lastPos:])
	}
	return vs.LabelMatchers, nil
}
func ParseMetricSelector(input string) (m []*labels.Matcher, err error) {
	p := newParser(input)
	defer p.recover(&err)

	name := ""
	if t := p.peek().typ; t == ItemMetricIdentifier || t == ItemIdentifier {
		name = p.next().val
	}
	vs := p.VectorSelector(name)
	if p.peek().typ != ItemEOF {
		p.errorf("could not parse remaining input %.15q...", p.lex.input[p.lex.lastPos:])
	}
	return vs.LabelMatchers, nil
}
func ParseMetricSelector ( input string ) ( m [ ] * labels . Matcher , err error ) { p := newParser ( input ) defer p . recover ( & err ) name := " " if t := p . peek ( ) . typ ; t == ItemMetricIdentifier || t == ItemIdentifier { name = p . next ( ) . val } vs := p . VectorSelector ( name ) if p . peek ( ) . typ != ItemEOF { p . errorf ( " " , p . lex . input [ p . lex . lastPos : ] ) } return vs . LabelMatchers , nil }
// ParseMetricSelector parses the provided textual metric selector into a list of
// label matchers.
ParseMetricSelector parses the provided textual metric selector into a list of label matchers .