cascadeSection method
Implementation
Parser<ExpressionNode> cascadeSection() => [
// Cascaded index: ..[i]
seq3(ref1(token, '['), ref0(expression), ref1(token, ']')).map3(
(_, idx, _) =>
IndexExpressionNode(target: const ThisExpressionNode(), index: idx),
),
// Cascaded method call or property access
seq3(
ref0(identifier),
ref0(typeArguments).optionalWith(const <TypeNode>[]),
ref0(argumentList).optional(),
).map3((name, typeArgs, args) {
final prop = PropertyAccessNode(
target: const ThisExpressionNode(),
propertyName: name,
);
if (args != null) {
return InvocationExpressionNode(
target: prop,
typeArguments: typeArgs,
arguments: args,
);
}
return prop;
}),
].toChoiceParser();