tryStatement method
Implementation
Parser<StatementNode> tryStatement() =>
seq5(
ref0(tryToken),
seq2(ref1(token, ':'), ref0(suite)).map2((_, s) => s),
[
ref0(exceptStarHandler).plus(),
ref0(exceptHandler).star(),
].toChoiceParser(),
ref0(elseClause).optional(),
ref0(finallyClause).optional(),
).map5((_, body, handlers, orelse, finalbody) {
final parsedHandlers = handlers;
final isTryStar =
parsedHandlers.isNotEmpty &&
parsedHandlers.first.name?.startsWith('*') == true;
if (isTryStar) {
return TryStarNode(
body: body,
handlers: parsedHandlers,
orelse: orelse ?? const [],
finalbody: finalbody ?? const [],
);
}
return TryNode(
body: body,
handlers: parsedHandlers,
orelse: orelse ?? const [],
finalbody: finalbody ?? const [],
);
});