MCPcopy Index your code
hub / github.com/expr-lang/expr / parseConditional

Method parseConditional

parser/parser.go:366–392  ·  view source on GitHub ↗
(node Node)

Source from the content-addressed store, hash-verified

364}
365
366func (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
394func (p *Parser) parsePrimary() Node {
395 token := p.current

Callers 1

parseExpressionMethod · 0.95

Calls 5

nextMethod · 0.95
parseExpressionMethod · 0.95
expectMethod · 0.95
createNodeMethod · 0.95
IsMethod · 0.80

Tested by

no test coverage detected