variable property
Parser<Expression?>
get
variable
Implementation
Parser<Expression?> get variable => groupOrIdentifier
.seq((memberArgument.cast() | indexArgument | callArgument).star())
.map((l) {
var a = l[0] as Expression?;
var b = l[1] as List;
return b.fold(a, (Expression? object, argument) {
if (argument is Identifier) {
return MemberExpression(object, argument);
}
if (argument is Expression) {
return IndexExpression(object, argument);
}
if (argument is List<Expression>) {
return CallExpression(object, argument);
}
throw ArgumentError('Invalid type ${argument.runtimeType}');
});
});