@@ -148,7 +148,7 @@ func toOp(v any) (operator, error) {
148
148
}
149
149
150
150
func (op operator ) hasOpenBracket () bool {
151
- return strings .HasSuffix (string (op ), "(" )
151
+ return strings .HasSuffix (string (op ), "(" ) // it's used to support functions like "sum("
152
152
}
153
153
154
154
func (op operator ) isComma () bool {
@@ -227,28 +227,28 @@ func (e *Eval) Exec(tokens ...any) (ret Num, err error) {
227
227
case op .hasOpenBracket ():
228
228
e .stackOp .push (op )
229
229
case op .isCloseBracket (), op .isComma ():
230
- var sop operator
230
+ var stackTopOp operator
231
231
for {
232
- sop = e .stackOp .peek ()
233
- if sop .hasOpenBracket () || sop .isComma () {
232
+ stackTopOp = e .stackOp .peek ()
233
+ if stackTopOp .hasOpenBracket () || stackTopOp .isComma () {
234
234
break
235
235
}
236
236
e .applyOp ()
237
237
}
238
238
if op .isCloseBracket () {
239
239
nums := []Num {e .stackNum .pop ()}
240
240
for ! e .stackOp .peek ().hasOpenBracket () {
241
- sop = e .stackOp .pop ()
242
- if ! sop .isComma () {
241
+ stackTopOp = e .stackOp .pop ()
242
+ if ! stackTopOp .isComma () {
243
243
return Num {}, ExprError {"bracket doesn't match" , tokens , nil }
244
244
}
245
245
nums = append (nums , e .stackNum .pop ())
246
246
}
247
247
for i , j := 0 , len (nums )- 1 ; i < j ; i , j = i + 1 , j - 1 {
248
248
nums [i ], nums [j ] = nums [j ], nums [i ] // reverse nums slice, to get the right order for arguments
249
249
}
250
- sop = e .stackOp .pop ()
251
- fn := string (sop [:len (sop )- 1 ])
250
+ stackTopOp = e .stackOp .pop ()
251
+ fn := string (stackTopOp [:len (stackTopOp )- 1 ])
252
252
if fn == "" {
253
253
if len (nums ) != 1 {
254
254
return Num {}, ExprError {"too many values in one bracket" , tokens , nil }
@@ -264,8 +264,8 @@ func (e *Eval) Exec(tokens ...any) (ret Num, err error) {
264
264
}
265
265
default :
266
266
for len (e .stackOp .elems ) > 0 && len (e .stackNum .elems ) > 0 {
267
- sop := e .stackOp .peek ()
268
- if sop .isComma () || precedence (sop , op ) < 0 {
267
+ stackTopOp := e .stackOp .peek ()
268
+ if stackTopOp .isComma () || precedence (stackTopOp , op ) < 0 {
269
269
break
270
270
}
271
271
e .applyOp ()
0 commit comments