From 8cb4a48e2e528054685080ffcc4ed424a026e153 Mon Sep 17 00:00:00 2001 From: Tobias Guggenmos Date: Mon, 16 Dec 2019 14:58:47 +0100 Subject: [PATCH] PromQL: Parse label sets using the generated parser (#6432) * Add grammar for label_sets * Parse label Sets using the generated parser * Allow trailing commas for label sets and selectors * Add test to trigger all possible error messages for label matchers Signed-off-by: Tobias Guggenmos --- promql/generated_parser.y | 80 +++++++++--- promql/generated_parser.y.go | 229 +++++++++++++++++++++++++---------- promql/parse.go | 89 +------------- promql/parse_test.go | 35 +++++- 4 files changed, 262 insertions(+), 171 deletions(-) diff --git a/promql/generated_parser.y b/promql/generated_parser.y index f8aa530686..6eecbdbb9a 100644 --- a/promql/generated_parser.y +++ b/promql/generated_parser.y @@ -20,10 +20,13 @@ %} %union { - node Node - item Item - matchers []*labels.Matcher - matcher *labels.Matcher + node Node + item Item + matchers []*labels.Matcher + matcher *labels.Matcher + labelSet []labels.Label + label labels.Label + labels labels.Labels } @@ -102,6 +105,7 @@ %token startSymbolsStart // Start symbols for the generated parser. %token START_LABELS +%token START_LABEL_SET %token startSymbolsEnd %type label_matchers label_match_list @@ -109,30 +113,40 @@ %type match_op +%type label_set +%type label_set_list +%type