(pos Pos, precedence int)
| 224 | } |
| 225 | |
| 226 | func (p *Parser) parseSubExpr(pos Pos, precedence int) (Expr, error) { |
| 227 | expr, err := p.parseUnaryExpr(pos) |
| 228 | if err != nil { |
| 229 | return nil, err |
| 230 | } |
| 231 | for !p.lexer.isEOF() { |
| 232 | nextPrecedence := p.getNextPrecedence() |
| 233 | if nextPrecedence <= precedence { |
| 234 | return expr, nil |
| 235 | } |
| 236 | // parse binary operation |
| 237 | expr, err = p.parseInfix(expr, nextPrecedence) |
| 238 | if err != nil { |
| 239 | return nil, err |
| 240 | } |
| 241 | } |
| 242 | return expr, nil |
| 243 | } |
| 244 | |
| 245 | func (p *Parser) parseTernaryExpr(condition Expr) (*TernaryOperation, error) { |
| 246 | if err := p.expectTokenKind(TokenKindQuestionMark); err != nil { |
no test coverage detected