(node Node)
| 364 | } |
| 365 | |
| 366 | func (p *Parser) parseConditional(node Node) Node { |
| 367 | var expr1, expr2 Node |
| 368 | for p.current.Is(Operator, "?") && p.err == nil { |
| 369 | p.next() |
| 370 | |
| 371 | if !p.current.Is(Operator, ":") { |
| 372 | expr1 = p.parseExpression(0) |
| 373 | p.expect(Operator, ":") |
| 374 | expr2 = p.parseExpression(0) |
| 375 | } else { |
| 376 | p.next() |
| 377 | expr1 = node |
| 378 | expr2 = p.parseExpression(0) |
| 379 | } |
| 380 | |
| 381 | node = p.createNode(&ConditionalNode{ |
| 382 | Ternary: true, |
| 383 | Cond: node, |
| 384 | Exp1: expr1, |
| 385 | Exp2: expr2, |
| 386 | }, p.current.Location) |
| 387 | if node == nil { |
| 388 | return nil |
| 389 | } |
| 390 | } |
| 391 | return node |
| 392 | } |
| 393 | |
| 394 | func (p *Parser) parsePrimary() Node { |
| 395 | token := p.current |
no test coverage detected