(pos Pos)
| 332 | } |
| 333 | |
| 334 | func (p *Parser) parseUnaryExpr(pos Pos) (Expr, error) { |
| 335 | op := p.last() |
| 336 | switch { |
| 337 | case p.matchTokenKind(TokenKindPlus), |
| 338 | p.matchTokenKind(TokenKindMinus), |
| 339 | p.matchKeyword(KeywordNot): |
| 340 | _ = p.lexer.consumeToken() |
| 341 | default: |
| 342 | return p.parseColumnExpr(pos) |
| 343 | } |
| 344 | |
| 345 | expr, err := p.parseColumnExpr(p.Pos()) |
| 346 | if err != nil { |
| 347 | return nil, err |
| 348 | } |
| 349 | |
| 350 | return &UnaryExpr{ |
| 351 | UnaryPos: pos, |
| 352 | Kind: TokenKind(op.ToString()), |
| 353 | Expr: expr, |
| 354 | }, nil |
| 355 | |
| 356 | } |
| 357 | |
| 358 | func (p *Parser) peekTokenKind(kind TokenKind) bool { |
| 359 | if p.lexer.isEOF() { |
no test coverage detected