MCPcopy
hub / github.com/qax-os/excelize / parseOperatorPrefixToken

Method parseOperatorPrefixToken

calc.go:1394–1424  ·  view source on GitHub ↗

parseOperatorPrefixToken parse operator prefix token.

(optStack, opdStack *Stack, token efp.Token)

Source from the content-addressed store, hash-verified

1392
1393// parseOperatorPrefixToken parse operator prefix token.
1394func (f *File) parseOperatorPrefixToken(optStack, opdStack *Stack, token efp.Token) (err error) {
1395 if optStack.Len() == 0 {
1396 optStack.Push(token)
1397 return
1398 }
1399 tokenPriority := getPriority(token)
1400 topOpt := optStack.Peek().(efp.Token)
1401 topOptPriority := getPriority(topOpt)
1402 if topOpt.TValue == "-" && topOpt.TType == efp.TokenTypeOperatorPrefix && token.TValue == "-" && token.TType == efp.TokenTypeOperatorPrefix {
1403 optStack.Pop()
1404 return
1405 }
1406 if tokenPriority > topOptPriority {
1407 optStack.Push(token)
1408 return
1409 }
1410 for tokenPriority <= topOptPriority {
1411 optStack.Pop()
1412 if err = calculate(opdStack, topOpt); err != nil {
1413 return
1414 }
1415 if optStack.Len() > 0 {
1416 topOpt = optStack.Peek().(efp.Token)
1417 topOptPriority = getPriority(topOpt)
1418 continue
1419 }
1420 break
1421 }
1422 optStack.Push(token)
1423 return
1424}
1425
1426// isFunctionStartToken determine if the token is function start.
1427func isFunctionStartToken(token efp.Token) bool {

Callers 1

parseTokenMethod · 0.95

Calls 6

getPriorityFunction · 0.85
calculateFunction · 0.85
LenMethod · 0.80
PushMethod · 0.80
PeekMethod · 0.80
PopMethod · 0.80

Tested by

no test coverage detected