blob: 6dcbe63f6cbcda943b36dc7eaa366342f8adb4c6 [file] [log] [blame]
import '../../core/parser.dart';
/// Abstract parser that parses a list of things in some way.
abstract class ListParser<T, R> extends Parser<R> {
ListParser(Iterable<Parser<T>> children)
: children = List<Parser<T>>.of(children, growable: false);
/// The children parsers being delegated to.
@override
final List<Parser<T>> children;
@override
void replace(Parser source, Parser target) {
super.replace(source, target);
for (var i = 0; i < children.length; i++) {
if (children[i] == source) {
children[i] = target as Parser<T>;
}
}
}
}