ifStatement method
Parser<IfNode>
ifStatement(
)
inherited
Implementation
Parser<IfNode> ifStatement() =>
seq5(
ref0(ifToken),
ref0(expression),
seq2(ref1(token, ':'), ref0(suite)).map2((_, s) => s),
ref0(elifClause).star(),
ref0(elseClause).optional(),
).map5((_, test, body, elifs, elseBody) {
var currentElse = elseBody ?? const <StatementNode>[];
for (var i = elifs.length - 1; i >= 0; i--) {
final elif = elifs[i];
currentElse = [
IfNode(test: elif.test, body: elif.body, orelse: currentElse),
];
}
return IfNode(test: test, body: body, orelse: currentElse);
});