Skip to content

Commit 11910fb

Browse files
committed
Fix solution to not allow "= ="
1 parent 570390a commit 11910fb

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

pkg/ottl/grammar.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package ottl // import "github.com/open-telemetry/opentelemetry-collector-contri
66
import (
77
"encoding/hex"
88
"fmt"
9-
"strings"
109

1110
"github.com/alecthomas/participle/v2/lexer"
1211
)
@@ -144,9 +143,8 @@ var compareOpTable = map[string]compareOp{
144143

145144
// Capture is how the parser converts an operator string to a compareOp.
146145
func (c *compareOp) Capture(values []string) error {
147-
op, ok := compareOpTable[strings.Join(values, "")]
146+
op, ok := compareOpTable[values[0]]
148147
if !ok {
149-
150148
return fmt.Errorf("'%s' is not a valid operator", values[0])
151149
}
152150
*c = op
@@ -176,7 +174,7 @@ func (c *compareOp) String() string {
176174
// comparison represents an optional boolean condition.
177175
type comparison struct {
178176
Left value `parser:"@@"`
179-
Op compareOp `parser:"@(OpComparison | Equal Equal)"`
177+
Op compareOp `parser:"@OpComparison"`
180178
Right value `parser:"@@"`
181179
}
182180

@@ -220,7 +218,7 @@ type converter struct {
220218
}
221219

222220
type argument struct {
223-
Name string `parser:"(@(Lowercase(Uppercase | Lowercase)*) Equal (?! Equal))?"`
221+
Name string `parser:"(@(Lowercase(Uppercase | Lowercase)*) Equal)?"`
224222
Value value `parser:"@@"`
225223
}
226224

@@ -436,14 +434,14 @@ func buildLexer() *lexer.StatefulDefinition {
436434
{Name: `Float`, Pattern: `[-+]?\d*\.\d+([eE][-+]?\d+)?`},
437435
{Name: `Int`, Pattern: `[-+]?\d+`},
438436
{Name: `String`, Pattern: `"(\\"|[^"])*"`},
439-
{Name: `Equal`, Pattern: `=`},
440437
{Name: `OpNot`, Pattern: `\b(not)\b`},
441438
{Name: `OpOr`, Pattern: `\b(or)\b`},
442439
{Name: `OpAnd`, Pattern: `\b(and)\b`},
443-
{Name: `OpComparison`, Pattern: `!=|>=|<=|>|<`},
440+
{Name: `OpComparison`, Pattern: `==|!=|>=|<=|>|<`},
444441
{Name: `OpAddSub`, Pattern: `\+|\-`},
445442
{Name: `OpMultDiv`, Pattern: `\/|\*`},
446443
{Name: `Boolean`, Pattern: `\b(true|false)\b`},
444+
{Name: `Equal`, Pattern: `=`},
447445
{Name: `LParen`, Pattern: `\(`},
448446
{Name: `RParen`, Pattern: `\)`},
449447
{Name: `Punct`, Pattern: `[,.\[\]]`},

pkg/ottl/lexer_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ func Test_lexer(t *testing.T) {
3838
}},
3939
{"basic_equality", "3==4.9", false, []result{
4040
{"Int", "3"},
41-
{"Equal", "="},
42-
{"Equal", "="},
41+
{"OpComparison", "=="},
4342
{"Float", "4.9"},
4443
}},
4544
{"basic_inequality", "3!=4.9", false, []result{

0 commit comments

Comments
 (0)