statementCase method

Parser<CaseStatementNode> statementCase()

Implementation

Parser<CaseStatementNode> statementCase() =>
    seq5(
      ref1(token, 'case'),
      ref0(expression),
      ref1(token, 'of'),
      seq3(
            ref0(constant)
                .plusSeparated(ref1(token, ','))
                .map((sep) => sep.elements),
            ref1(token, ':'),
            ref0(statement),
          )
          .map3(
            (consts, _, stmt) =>
                CaseElementNode(constants: consts, statement: stmt),
          )
          .plusSeparated(ref1(token, ';'))
          .map((sep) => sep.elements),
      ref1(token, 'end'),
    ).map5(
      (_, expr, _, cases, _) =>
          CaseStatementNode(expression: expr, cases: cases),
    );