debugging parser

This commit is contained in:
Owen Williams 2023-12-08 13:53:39 -05:00
parent f66850c0fe
commit 8d1f6ecd77
5 changed files with 3580 additions and 3589 deletions

View file

@ -21,7 +21,6 @@ import (
"github.com/prometheus/common/model"
"github.com/stretchr/testify/require"
"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/model/exemplar"
"github.com/prometheus/prometheus/model/labels"
)
@ -302,10 +301,10 @@ foo_total 17.0 1520879607.789 # {id="counter-test"} 5`
}
func TestUTF8OpenMetricsParse(t *testing.T) {
model.NameValidationScheme = model.UTF8Validation
defer func(){
model.NameValidationScheme = model.LegacyValidation
}()
// model.NameValidationScheme = model.UTF8Validation
// defer func(){
// model.NameValidationScheme = model.LegacyValidation
// }()
input := `# HELP "go.gc_duration_seconds" A summary of the GC invocation durations.
# TYPE "go.gc_duration_seconds" summary

View file

@ -219,10 +219,10 @@ testmetric{label="\"bar\""} 1`
}
func TestUTF8PromParse(t *testing.T) {
model.NameValidationScheme = model.UTF8Validation
defer func() {
model.NameValidationScheme = model.LegacyValidation
}()
// model.NameValidationScheme = model.UTF8Validation
// defer func() {
// model.NameValidationScheme = model.LegacyValidation
// }()
input := `# HELP "go.gc_duration_seconds" A summary of the GC invocation durations.
# TYPE "go.gc_duration_seconds" summary

View file

@ -586,7 +586,10 @@ label_matcher : IDENTIFIER match_op STRING
| string_identifier match_op STRING
{ $$ = yylex.(*parser).newLabelMatcher($1, $2, $3); }
| string_identifier
{ $$ = yylex.(*parser).newMetricNameMatcher($1); }
{
// metric name matcher!
$$ = yylex.(*parser).newMetricNameMatcher($1);
}
| IDENTIFIER match_op error
{ yylex.(*parser).unexpected("label matching", "string"); $$ = nil}
| IDENTIFIER error
@ -609,7 +612,10 @@ metric : metric_identifier label_set
metric_identifier: AVG | BOTTOMK | BY | COUNT | COUNT_VALUES | GROUP | IDENTIFIER | LAND | LOR | LUNLESS | MAX | METRIC_IDENTIFIER | MIN | OFFSET | QUANTILE | STDDEV | STDVAR | SUM | TOPK | WITHOUT | START | END;
label_set : LEFT_BRACE label_set_list RIGHT_BRACE
{ $$ = labels.New($2...) }
{
// LEFT_BRACE label_set_list RIGHT_BRACE
$$ = labels.New($2...)
}
| LEFT_BRACE label_set_list COMMA RIGHT_BRACE
{ $$ = labels.New($2...) }
| LEFT_BRACE RIGHT_BRACE
@ -628,7 +634,17 @@ label_set_list : label_set_list COMMA label_set_item
;
label_set_item : IDENTIFIER EQL STRING
{ $$ = labels.Label{Name: $1.Val, Value: yylex.(*parser).unquoteString($3.Val) } }
{
// ident eq string
$$ = labels.Label{Name: $1.Val, Value: yylex.(*parser).unquoteString($3.Val) } }
// | STRING EQL STRING
// {
// // string eq string
// $$ = labels.Label{Name: yylex.(*parser).unquoteString($3.Val), Value: yylex.(*parser).unquoteString($3.Val) } }
// | STRING
// {
// // looks good?
// $$ = labels.Label{Name: labels.MetricName, Value: yylex.(*parser).unquoteString($1.Val) } }
| IDENTIFIER EQL error
{ yylex.(*parser).unexpected("label set", "string"); $$ = labels.Label{}}
| IDENTIFIER error
@ -909,6 +925,7 @@ string_literal : STRING
string_identifier : STRING
{
// string_identifier
$$ = Item{
Typ: METRIC_IDENTIFIER,
Pos: $1.PositionRange().Start,

View file

@ -1458,6 +1458,7 @@ yydefault:
case 93:
yyDollar = yyS[yypt-1 : yypt+1]
{
// metric name matcher!
yyVAL.matcher = yylex.(*parser).newMetricNameMatcher(yyDollar[1].item)
}
case 94:
@ -1493,6 +1494,7 @@ yydefault:
case 121:
yyDollar = yyS[yypt-3 : yypt+1]
{
// LEFT_BRACE label_set_list RIGHT_BRACE
yyVAL.labels = labels.New(yyDollar[2].lblList...)
}
case 122:
@ -1529,6 +1531,7 @@ yydefault:
case 128:
yyDollar = yyS[yypt-3 : yypt+1]
{
// ident eq string
yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)}
}
case 129:
@ -1829,6 +1832,7 @@ yydefault:
case 226:
yyDollar = yyS[yypt-1 : yypt+1]
{
// string_identifier
yyVAL.item = Item{
Typ: METRIC_IDENTIFIER,
Pos: yyDollar[1].item.PositionRange().Start,

File diff suppressed because it is too large Load diff