parseOperatorPrefixToken parse operator prefix token.
(optStack, opdStack *Stack, token efp.Token)
| 1392 | |
| 1393 | // parseOperatorPrefixToken parse operator prefix token. |
| 1394 | func (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. |
| 1427 | func isFunctionStartToken(token efp.Token) bool { |
no test coverage detected