(requireKeyword bool)
| 591 | } |
| 592 | |
| 593 | func (p *Parser) parseInterval(requireKeyword bool) (*IntervalExpr, error) { |
| 594 | var intervalPos Pos |
| 595 | if requireKeyword { |
| 596 | intervalPos = p.Pos() |
| 597 | if err := p.expectKeyword(KeywordInterval); err != nil { |
| 598 | return nil, err |
| 599 | } |
| 600 | } |
| 601 | expr, err := p.parseExpr(p.Pos()) |
| 602 | if err != nil { |
| 603 | return nil, err |
| 604 | } |
| 605 | |
| 606 | unit, err := p.parseIdent() |
| 607 | if err != nil { |
| 608 | return nil, err |
| 609 | } |
| 610 | if !intervalUnits.Contains(strings.ToUpper(unit.Name)) { |
| 611 | return nil, fmt.Errorf("unknown interval type: <%q>", unit.Name) |
| 612 | } |
| 613 | return &IntervalExpr{ |
| 614 | IntervalPos: intervalPos, |
| 615 | Expr: expr, |
| 616 | Unit: unit, |
| 617 | }, nil |
| 618 | } |
| 619 | |
| 620 | func (p *Parser) parseFunctionExpr(_ Pos) (*FunctionExpr, error) { |
| 621 | // parse function name |
no test coverage detected