conditionalExpression method

Parser<ExpressionNode> conditionalExpression()
inherited

Conditional expression: test_or_expr if test else expr.

Implementation

Parser<ExpressionNode> conditionalExpression() =>
    seq2(
      ref0(disjunction),
      seq3(
        ref0(ifToken),
        ref0(disjunction),
        seq2(ref0(elseToken), ref0(singleExpression)).map2((_, e) => e),
      ).optional(),
    ).map2((body, orelsePart) {
      if (orelsePart == null) return body;
      final test = orelsePart.$2;
      final orelse = orelsePart.$3;
      return IfExpNode(test: test, body: body, orelse: orelse);
    });