MCPcopy Index your code
hub / github.com/uber/aresdb / parseCase

Method parseCase

query/expr/parser.go:476–518  ·  view source on GitHub ↗

Assumes CASE token has been scanned.

()

Source from the content-addressed store, hash-verified

474
475// Assumes CASE token has been scanned.
476func (p *Parser) parseCase() (*Case, error) {
477 var kase Case
478 var err error
479 tok, pos, lit := p.scanIgnoreWhitespace()
480 for tok == WHEN {
481 var cond WhenThen
482
483 cond.When, err = p.ParseExpr(0)
484 if err != nil {
485 return nil, err
486 }
487
488 tok, pos, lit = p.scanIgnoreWhitespace()
489 if tok != THEN {
490 return nil, newParseError(tokstr(tok, lit), []string{"THEN"}, pos)
491 }
492
493 cond.Then, err = p.ParseExpr(0)
494 if err != nil {
495 return nil, err
496 }
497
498 kase.WhenThens = append(kase.WhenThens, cond)
499 tok, pos, lit = p.scanIgnoreWhitespace()
500 }
501
502 if len(kase.WhenThens) == 0 {
503 return nil, newParseError(tokstr(tok, lit), []string{"WHEN"}, pos)
504 }
505
506 if tok == ELSE {
507 kase.Else, err = p.ParseExpr(0)
508 if err != nil {
509 return nil, err
510 }
511 tok, pos, lit = p.scanIgnoreWhitespace()
512 }
513
514 if tok != END {
515 return nil, newParseError(tokstr(tok, lit), []string{"END"}, pos)
516 }
517 return &kase, nil
518}
519
520// parseCall parses a function call.
521// This function assumes the function name and LPAREN have been consumed.

Callers 1

parseUnaryExprMethod · 0.95

Calls 4

scanIgnoreWhitespaceMethod · 0.95
ParseExprMethod · 0.95
newParseErrorFunction · 0.85
tokstrFunction · 0.85

Tested by

no test coverage detected