statementCase method
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),
);